-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Haskell COM support library -- -- Supporting for writing COM/Automation clients in Haskell, and for -- packaging up your Haskell code behind a COM-callable veneer. -- -- Some examples of how to use the package can be found at -- http://haskell.forkio.com/com-examples @package hcom @version 0.0.0.4 module System.Win32.Com.HDirect.PointerPrim primNoFree :: Ptr () -> IO () primFreeBSTR :: Ptr () -> IO () primFreeMemory :: Ptr () -> IO () finalNoFree :: Ptr () finalFreeMemory :: Ptr () primAllocMemory :: Word32 -> IO (Ptr ()) primFinalise :: Ptr () -> Ptr () -> IO () -- | This module is part of HaskellDirect (H/Direct), providing helper -- functions over Ptrs + allocation/freeing of memory via malloc/free or -- the COM task allocator. module System.Win32.Com.HDirect.Pointer -- | A value of type Ptr a represents a pointer to an -- object, or an array of objects, which may be marshalled to or from -- Haskell values of type a. -- -- The type a will often be an instance of class Storable -- which provides the marshalling operations. However this is not -- essential, and you can provide your own operations to access the -- pointer. For example you might write small foreign functions to get or -- set the fields of a C struct. data Ptr a allocMemory :: Word32 -> IO (Ptr a) -- | Use stackFrame when the allocated chunk have a limited and -- known lifetime. stackFrame :: Word32 -> (Ptr a -> IO b) -> IO b writeSeqAtDec :: Word32 -> [Ptr a -> IO ()] -> Ptr a -> IO () freeMemory :: Ptr a -> IO () freeBSTR :: Ptr a -> IO () freeWith :: (Ptr a -> IO ()) -> Ptr a -> IO () freeWithC :: Finalizer () -> Ptr a -> IO () primNoFree :: Ptr () -> IO () finalNoFree :: Ptr () finalFreeMemory :: Ptr () makeFO :: Ptr a -> FunPtr (Ptr a -> IO ()) -> IO (ForeignPtr b) -- | Stubs for marshalling and unmarshalling primitive types, as used by -- HaskellDirect-generated code. module System.Win32.Com.HDirect.HDirect class Flags a (.+.) :: Flags a => a -> a -> a infixl 5 .+. type Byte = Word8 type Octet = Byte type Wchar_t = Word16 type Hyper = Int64 foreignPtrToPtr :: ForeignPtr a -> Ptr a marshallInt :: Int -> IO Int unmarshallInt :: Int -> IO Int writeInt :: Ptr Int -> Int -> IO () readInt :: Ptr Int -> IO Int sizeofInt :: Word32 marshallInt8 :: Int8 -> IO Int8 unmarshallInt8 :: Int8 -> IO Int8 writeInt8 :: Ptr Int8 -> Int8 -> IO () readInt8 :: Ptr Int8 -> IO Int8 sizeofInt8 :: Word32 marshallInt16 :: Int16 -> IO Int16 unmarshallInt16 :: Int16 -> IO Int16 writeInt16 :: Ptr Int16 -> Int16 -> IO () readInt16 :: Ptr Int16 -> IO Int16 sizeofInt16 :: Word32 marshallInt32 :: Int32 -> IO Int32 unmarshallInt32 :: Int32 -> IO Int32 writeInt32 :: Ptr Int32 -> Int32 -> IO () readInt32 :: Ptr Int32 -> IO Int32 sizeofInt32 :: Word32 marshallInt64 :: Int64 -> IO Int64 unmarshallInt64 :: Int64 -> IO Int64 writeInt64 :: Ptr Int64 -> Int64 -> IO () readInt64 :: Ptr Int64 -> IO Int64 sizeofInt64 :: Word32 marshallHyper :: Hyper -> IO Int64 unmarshallHyper :: Int64 -> IO Hyper writeHyper :: Ptr Hyper -> Hyper -> IO () readHyper :: Ptr Hyper -> IO Hyper sizeofHyper :: Word32 writeInteger :: Ptr Integer -> Integer -> IO () readInteger :: Ptr Integer -> IO Integer marshallInteger :: Integer -> IO (Int32, Int32) unmarshallInteger :: (Int32, Int32) -> IO Integer marshallUInteger :: Integer -> IO (Int32, Int32) unmarshallUInteger :: (Int32, Int32) -> IO Integer readUInteger :: Ptr Integer -> IO Integer writeUInteger :: Ptr Integer -> Integer -> IO () marshallChar :: Char -> IO Char unmarshallChar :: Char -> IO Char writeChar :: Ptr Char -> Char -> IO () readChar :: Ptr Char -> IO Char sizeofChar :: Word32 marshallWchar_t :: Wchar_t -> IO Wchar_t unmarshallWchar_t :: Wchar_t -> IO Wchar_t writeWchar_t :: Ptr Wchar_t -> Wchar_t -> IO () readWchar_t :: Ptr Wchar_t -> IO Wchar_t sizeofWchar_t :: Word32 marshallByte :: Byte -> IO Byte unmarshallByte :: Byte -> IO Byte writeByte :: Ptr Byte -> Byte -> IO () readByte :: Ptr Byte -> IO Byte sizeofByte :: Word32 marshallWord8 :: Word8 -> IO Word8 unmarshallWord8 :: Word8 -> IO Word8 writeWord8 :: Ptr Word8 -> Word8 -> IO () readWord8 :: Ptr Word8 -> IO Word8 sizeofWord8 :: Word32 marshallWord16 :: Word16 -> IO Word16 unmarshallWord16 :: Word16 -> IO Word16 writeWord16 :: Ptr Word16 -> Word16 -> IO () readWord16 :: Ptr Word16 -> IO Word16 sizeofWord16 :: Word32 marshallWord32 :: Word32 -> IO Word32 unmarshallWord32 :: Word32 -> IO Word32 writeWord32 :: Ptr Word32 -> Word32 -> IO () readWord32 :: Ptr Word32 -> IO Word32 sizeofWord32 :: Word32 marshallWord64 :: Word64 -> IO Word64 unmarshallWord64 :: Word64 -> IO Word64 writeWord64 :: Ptr Word64 -> Word64 -> IO () readWord64 :: Ptr Word64 -> IO Word64 sizeofWord64 :: Word32 marshallDouble :: Double -> IO Double unmarshallDouble :: Double -> IO Double writeDouble :: Ptr Double -> Double -> IO () readDouble :: Ptr Double -> IO Double sizeofDouble :: Word32 writeFloat :: Ptr Float -> Float -> IO () readFloat :: Ptr Float -> IO Float sizeofFloat :: Word32 marshallBool :: Bool -> IO Int32 unmarshallBool :: Int32 -> IO Bool writeBool :: Ptr Bool -> Bool -> IO () readBool :: Ptr Bool -> IO Bool sizeofBool :: Word32 addNCastPtr :: Ptr a -> Word32 -> Ptr b derefPtr :: Ptr (Ptr a) -> IO (Ptr a) indexPtr :: Ptr (Ptr a) -> Int -> IO (Ptr a) allocOutPtr :: IO (Ptr a) allocBytes :: Int -> IO (Ptr a) allocWords :: Int -> IO (Ptr a) alloc_malloc :: Word32 -> IO (Ptr a) free_malloc :: Ptr a -> IO () free :: Ptr a -> IO () alloc :: Word32 -> IO (Ptr a) doThenFree :: (Ptr a -> IO ()) -> (Ptr b -> IO c) -> Ptr d -> IO c trivialFree :: a -> IO () fillIn :: Int -> (Ptr a -> IO ()) -> IO (Ptr a) marshallPtr :: Ptr a -> IO (Ptr a) unmarshallPtr :: Ptr a -> IO (Ptr a) writePtr :: Ptr (Ptr a) -> Ptr a -> IO () readPtr :: Ptr a -> IO (Ptr b) writefptr :: Ptr b -> ForeignPtr a -> IO () marshallunique :: IO (Ptr a) -> (Ptr a -> a -> IO ()) -> Maybe a -> IO (Ptr a) marshallMaybe :: (a -> IO b) -> b -> Maybe a -> IO b writeMaybe :: (Ptr a -> a -> IO ()) -> Ptr (Maybe a) -> Maybe a -> IO () readMaybe :: (Ptr a -> IO b) -> Ptr a -> IO (Maybe b) writeunique :: IO (Ptr a) -> (Ptr a -> a -> IO ()) -> Ptr (Maybe a) -> Maybe a -> IO () writeunique_fun :: IO (Ptr a) -> (Ptr (Ptr a) -> a -> IO ()) -> Ptr (Maybe a) -> Maybe a -> IO () unmarshallunique :: (Ptr a -> IO a) -> Ptr a -> IO (Maybe a) readunique :: (Ptr a -> IO a) -> Ptr b -> IO (Maybe a) freeunique :: (Ptr a -> IO ()) -> Ptr (Ptr a) -> IO () marshallunique_ptr :: Maybe (Ptr a) -> IO (Ptr a) marshallref :: IO (Ptr a) -> (Ptr a -> a -> IO ()) -> a -> IO (Ptr a) writeref :: IO (Ptr a) -> (Ptr a -> a -> IO ()) -> Ptr (Ptr a) -> a -> IO () unmarshallref :: (Ptr a -> IO b) -> Ptr a -> IO b readref :: (Ptr a -> IO a) -> Ptr (Ptr a) -> IO a freeref :: (Ptr b -> IO ()) -> Ptr a -> IO () writeenum16 :: (b -> IO Int16) -> Ptr Int16 -> b -> IO () readenum16 :: (Int16 -> IO a) -> Ptr Int16 -> IO a marshallEnum16 :: Enum a => a -> IO Int16 unmarshallEnum16 :: Enum a => Int16 -> IO a marshallEnum32 :: Enum a => a -> IO Int32 unmarshallEnum32 :: Enum a => Int32 -> IO a writeEnum32 :: Enum a => Ptr b -> a -> IO () readEnum32 :: Enum a => Ptr b -> IO a writeEnum16 :: Enum a => Ptr b -> a -> IO () readEnum16 :: Enum a => Ptr b -> IO a marshalllist :: Word32 -> (Ptr a -> a -> IO ()) -> [a] -> IO (Ptr b) unmarshalllist :: Word32 -> Word32 -> Word32 -> (Ptr any -> IO a) -> Ptr b -> IO [a] unmarshallSingle :: (Ptr a -> IO a) -> Ptr a -> IO [a] writelist :: Bool -> Word32 -> (Ptr a -> a -> IO ()) -> Ptr [a] -> [a] -> IO () readlist :: Word32 -> Word32 -> (Ptr a -> IO a) -> Ptr [a] -> IO [a] freelist :: Word32 -> Word32 -> (Ptr a -> IO ()) -> Ptr [a] -> IO () marshallString :: String -> IO (Ptr String) marshallBString :: Int -> String -> IO (Ptr String) unmarshallString :: Ptr String -> IO String unmarshallBString :: Int -> Ptr String -> IO String readString :: Ptr (Ptr String) -> IO String readBString :: Int -> Ptr (Ptr String) -> IO String writeString :: Bool -> Ptr String -> String -> IO () writeBString :: Bool -> Int -> Ptr a -> String -> IO () freeString :: Ptr String -> IO () marshallSequence :: (Ptr a -> a -> IO ()) -> (Ptr a -> IO ()) -> Word32 -> Maybe Word32 -> [a] -> IO (Ptr a) unmarshallSequence :: Eq a => (Ptr (Ptr a) -> IO a) -> (Ptr (Ptr a) -> IO Bool) -> Word32 -> Maybe Word32 -> Ptr (Ptr a) -> IO [a] readSequence :: Eq a => (Ptr (Ptr a) -> IO a) -> (Ptr (Ptr a) -> IO Bool) -> Word32 -> Maybe Word32 -> Ptr (Ptr a) -> IO [a] writeSequence :: Eq a => Bool -> (Ptr a -> a -> IO ()) -> (Ptr a -> IO ()) -> Word32 -> Maybe Word32 -> Ptr a -> [a] -> IO () freeSequence :: Ptr a -> IO () marshallblist :: Word32 -> Word32 -> (Ptr a -> a -> IO ()) -> [a] -> IO (Ptr [a]) writeblist :: Word32 -> Word32 -> (Ptr a -> a -> IO ()) -> Ptr [a] -> [a] -> IO () readblist :: Word32 -> Word32 -> (Ptr a -> IO a) -> Ptr a -> IO [a] word16ToInt32 :: Word16 -> Int32 word32ToInt32 :: Word32 -> Int32 int32ToWord32 :: Int32 -> Word32 int16ToWord32 :: Int16 -> Word32 intToChar :: Int -> Char charToInt32 :: Char -> Int32 word32ToChar :: Word32 -> Char charToWord32 :: Char -> Word32 toInt32 :: Integral a => a -> Int32 toInt16 :: Integral a => a -> Int16 marshallFO :: ForeignPtr a -> IO (ForeignPtr a) unmarshallFO :: ForeignPtr a -> IO (ForeignPtr a) writeFO :: Ptr (ForeignPtr a) -> ForeignPtr a -> IO () sizeofForeignPtr :: Word32 nullFinaliser :: FunPtr (Ptr a -> IO ()) nullFO :: ForeignPtr a readStablePtr :: Ptr (StablePtr a) -> IO (StablePtr a) marshallStruct :: String -> a -> IO b unmarshallStruct :: String -> a -> IO c marshallUnion :: String -> a -> IO b unmarshallUnion :: String -> a -> b -> IO c marshallPointer :: Ptr a -> IO (Ptr a) unmarshallPointer :: Ptr a -> IO (Ptr a) writePointer :: Ptr (Ptr a) -> Ptr a -> IO () readPointer :: Ptr (Ptr a) -> IO (Ptr a) sizeofPtr :: Word32 primInvokeIt :: (Ptr b -> Ptr a -> IO c) -> Int -> IO (Ptr a) -> IO c primInvokeItFO :: (Ptr b -> Ptr a -> IO c) -> Int -> IO (ForeignPtr a) -> IO c stackStringLen :: Int -> String -> (Ptr String -> IO a) -> IO a enumToFlag :: Enum a => a -> Int enumToInt :: Enum a => a -> Int flagToIntTag :: Int -> Int unboxInt :: Int -> Int# toIntFlag :: Int -> Int -> Int pow2Series :: Int -> Int32 -> [Int32] orList :: [Int] -> Int orFlags :: (Num a, Flags a) => [a] -> a -- | 8-bit signed integer type data Int8 -- | 16-bit signed integer type data Int16 -- | 32-bit signed integer type data Int32 -- | 64-bit signed integer type data Int64 -- | 8-bit unsigned integer type data Word8 -- | 16-bit unsigned integer type data Word16 -- | 32-bit unsigned integer type data Word32 -- | 64-bit unsigned integer type data Word64 -- | The character type Char is an enumeration whose values -- represent Unicode (or equivalently ISO/IEC 10646) code points (i.e. -- characters, see http://www.unicode.org/ for details). This set -- extends the ISO 8859-1 (Latin-1) character set (the first 256 -- characters), which is itself an extension of the ASCII character set -- (the first 128 characters). A character literal in Haskell has type -- Char. -- -- To convert a Char to or from the corresponding Int value -- defined by Unicode, use toEnum and fromEnum from the -- Enum class respectively (or equivalently ord and -- chr). data Char -- | Double-precision floating point numbers. It is desirable that this -- type be at least equal in range and precision to the IEEE -- double-precision type. data Double -- | Single-precision floating point numbers. It is desirable that this -- type be at least equal in range and precision to the IEEE -- single-precision type. data Float data Bool -- | A value of type Ptr a represents a pointer to an -- object, or an array of objects, which may be marshalled to or from -- Haskell values of type a. -- -- The type a will often be an instance of class Storable -- which provides the marshalling operations. However this is not -- essential, and you can provide your own operations to access the -- pointer. For example you might write small foreign functions to get or -- set the fields of a C struct. data Ptr a -- | A stable pointer is a reference to a Haskell expression that is -- guaranteed not to be affected by garbage collection, i.e., it will -- neither be deallocated nor will the value of the stable pointer itself -- change during garbage collection (ordinary references may be relocated -- during garbage collection). Consequently, stable pointers can be -- passed to foreign code, which can treat it as an opaque reference to a -- Haskell value. -- -- A value of type StablePtr a is a stable pointer to a Haskell -- expression of type a. data StablePtr a -- | Obtain the Haskell value referenced by a stable pointer, i.e., the -- same value that was passed to the corresponding call to -- newStablePtr. If the argument to deRefStablePtr has -- already been freed using freeStablePtr, the behaviour of -- deRefStablePtr is undefined. deRefStablePtr :: StablePtr a -> IO a module System.Win32.Com.HDirect.WideString type LPWSTR = WideString type LPCWSTR = WideString newtype WideString WideString :: Ptr Wchar_t -> WideString lengthWideString :: WideString -> Int stackWideString :: String -> (Ptr Wchar_t -> IO a) -> IO a mkWideString :: String -> WideString stringToWide :: String -> IO WideString word16ToWideString :: Word16 -> IO WideString nullWideString :: WideString stackString :: String -> (Int -> Ptr Char -> IO a) -> IO a marshallWideString :: WideString -> IO (Ptr WideString) marshallWideString2 :: String -> IO (Ptr WideString) unmarshallWideString :: Ptr a -> IO WideString unmarshallWideString2 :: Ptr a -> IO String writeWideString :: Ptr WideString -> WideString -> IO () writeWideString2 :: Ptr WideString -> String -> IO () readWideString :: Ptr WideString -> IO WideString readWideString2 :: Ptr WideString -> IO String freeWideString :: Ptr WideString -> IO () freeWString :: WideString -> IO () sizeofWideString :: Word32 wideToStr :: WideString -> IO String wideStringLen :: Ptr Char -> Word32 prim_System_Win32_Com_HDirect_WideString_wideStringLen :: Ptr Char -> IO Word32 wideToString :: Ptr Wchar_t -> IO (Ptr Char, Int32) prim_System_Win32_Com_HDirect_WideString_wideToString :: Ptr Word16 -> Ptr (Ptr Char) -> IO Int32 lenWideString :: Ptr Wchar_t -> IO Int32 prim_System_Win32_Com_HDirect_WideString_lenWideString :: Ptr Word16 -> IO Int32 primStringToWide :: Ptr Char -> Word32 -> Ptr Wchar_t -> Word32 -> IO Int32 prim_System_Win32_Com_HDirect_WideString_primStringToWide :: Ptr Char -> Word32 -> Ptr Word16 -> Word32 -> IO Int32 module System.Win32.Com.Base newtype IUnknown_ a Unknown :: ForeignPtr () -> IUnknown_ a type IUnknown a = IUnknown_ a type HRESULT = Int32 failed :: HRESULT -> Bool ifaceToAddr :: IUnknown a -> Ptr b addrToIPointer :: Bool -> Ptr b -> IO (IUnknown a) marshallIUnknown :: IUnknown a -> IO (ForeignPtr b) checkHR :: HRESULT -> IO () coFailHR :: HRESULT -> IO a newtype ComError ComError :: HRESULT -> ComError data ComException ComException :: ComError -> String -> ComException [comException] :: ComException -> ComError [comExceptionMsg] :: ComException -> String comExceptionHR :: ComException -> HRESULT data SomeCOMException SomeCOMException :: e -> SomeCOMException comToException :: Exception e => e -> SomeException comFromException :: Exception e => SomeException -> Maybe e throwComException :: ComException -> IO a coFailWithHR :: HRESULT -> String -> IO a stringFromHR :: HRESULT -> IO String comInitialize :: IO () prim_System_Win32_Com_Base_comInitialize :: IO Int32 comUnInitialize :: IO () prim_System_Win32_Com_Base_comUnInitialize :: IO () messageBox :: Ptr Char -> Ptr Char -> Word32 -> IO () prim_System_Win32_Com_Base_messageBox :: Ptr Char -> Ptr Char -> Word32 -> IO () type PIID = Ptr () type PCLSID = Ptr () type PGUID = Ptr () primCLSIDFromProgID :: Ptr Char -> PCLSID -> IO () prim_System_Win32_Com_Base_primCLSIDFromProgID :: Ptr Char -> Ptr () -> IO Int32 primProgIDFromCLSID :: ForeignPtr () -> IO (Ptr ()) prim_System_Win32_Com_Base_primProgIDFromCLSID :: Ptr () -> Ptr (Ptr ()) -> IO Int32 primStringToGUID :: Ptr Wchar_t -> Ptr () -> IO () prim_System_Win32_Com_Base_primStringToGUID :: Ptr Word16 -> Ptr () -> IO Int32 primGUIDToString :: ForeignPtr () -> IO (Ptr ()) prim_System_Win32_Com_Base_primGUIDToString :: Ptr () -> Ptr (Ptr ()) -> IO Int32 primCopyGUID :: ForeignPtr () -> PGUID -> IO () prim_System_Win32_Com_Base_primCopyGUID :: Ptr () -> Ptr () -> IO Int32 primNewGUID :: ForeignPtr () -> IO () prim_System_Win32_Com_Base_primNewGUID :: Ptr () -> IO Int32 bindObject :: Ptr Wchar_t -> ForeignPtr () -> IO (Ptr (Ptr ())) prim_System_Win32_Com_Base_bindObject :: Ptr Word16 -> Ptr () -> Ptr (Ptr ()) -> IO Int32 primComEqual :: IUnknown a0 -> IUnknown a1 -> IO Bool prim_System_Win32_Com_Base_primComEqual :: Ptr (IUnknown a) -> Ptr (IUnknown a) -> IO Int32 isEqualGUID :: ForeignPtr () -> ForeignPtr () -> Bool prim_System_Win32_Com_Base_isEqualGUID :: Ptr () -> Ptr () -> IO Int32 lOCALE_USER_DEFAULT :: Word32 prim_System_Win32_Com_Base_lOCALE_USER_DEFAULT :: IO Word32 primCreateTypeLib :: Int32 -> WideString -> IO (Ptr (Ptr ())) prim_System_Win32_Com_Base_primCreateTypeLib :: Int32 -> Ptr WideString -> Ptr (Ptr ()) -> IO Int32 getLastError :: IO Word32 prim_System_Win32_Com_Base_getLastError :: IO Word32 hresultString :: Int32 -> IO (Ptr ()) prim_System_Win32_Com_Base_hresultString :: Int32 -> IO (Ptr ()) coCreateInstance :: ForeignPtr () -> ForeignPtr () -> Int32 -> ForeignPtr () -> Ptr () -> IO () prim_System_Win32_Com_Base_coCreateInstance :: Ptr () -> Ptr () -> Int32 -> Ptr () -> Ptr () -> IO Int32 type ULONG = Word32 type DWORD = Word32 data COAUTHIDENTITY COAUTHIDENTITY :: String -> String -> String -> ULONG -> COAUTHIDENTITY [user] :: COAUTHIDENTITY -> String [domain] :: COAUTHIDENTITY -> String [password] :: COAUTHIDENTITY -> String [flags] :: COAUTHIDENTITY -> ULONG writeCOAUTHIDENTITY :: Ptr COAUTHIDENTITY -> COAUTHIDENTITY -> IO () readCOAUTHIDENTITY :: Ptr COAUTHIDENTITY -> IO COAUTHIDENTITY sizeofCOAUTHIDENTITY :: Word32 data COAUTHINFO COAUTHINFO :: DWORD -> DWORD -> WideString -> DWORD -> DWORD -> Maybe COAUTHIDENTITY -> DWORD -> COAUTHINFO [dwAuthnSvc] :: COAUTHINFO -> DWORD [dwAuthzSvc] :: COAUTHINFO -> DWORD [pwszServerPrincName] :: COAUTHINFO -> WideString [dwAuthnLevel] :: COAUTHINFO -> DWORD [dwImpersonationLevel] :: COAUTHINFO -> DWORD [pAuthIdentityData] :: COAUTHINFO -> Maybe COAUTHIDENTITY [dwCapabilities] :: COAUTHINFO -> DWORD writeCOAUTHINFO :: Ptr COAUTHINFO -> COAUTHINFO -> IO () readCOAUTHINFO :: Ptr COAUTHINFO -> IO COAUTHINFO sizeofCOAUTHINFO :: Word32 data COSERVERINFO COSERVERINFO :: DWORD -> WideString -> Maybe COAUTHINFO -> DWORD -> COSERVERINFO [dwReserved1] :: COSERVERINFO -> DWORD [pwszName] :: COSERVERINFO -> WideString [pAuthInfo] :: COSERVERINFO -> Maybe COAUTHINFO [dwReserved2] :: COSERVERINFO -> DWORD writeCOSERVERINFO :: Ptr COSERVERINFO -> COSERVERINFO -> IO () readCOSERVERINFO :: Ptr COSERVERINFO -> IO COSERVERINFO sizeofCOSERVERINFO :: Word32 data MULTI_QI_PRIM MULTI_QI :: PGUID -> Ptr () -> HRESULT -> MULTI_QI_PRIM [pIID] :: MULTI_QI_PRIM -> PGUID [pItf] :: MULTI_QI_PRIM -> Ptr () [hr] :: MULTI_QI_PRIM -> HRESULT writeMULTI_QI_PRIM :: Ptr MULTI_QI_PRIM -> MULTI_QI_PRIM -> IO () readMULTI_QI_PRIM :: Ptr MULTI_QI_PRIM -> IO MULTI_QI_PRIM sizeofMULTI_QI_PRIM :: Word32 coCreateInstanceEx :: ForeignPtr () -> ForeignPtr () -> DWORD -> Maybe COSERVERINFO -> [MULTI_QI_PRIM] -> IO [MULTI_QI_PRIM] prim_System_Win32_Com_Base_coCreateInstanceEx :: Ptr () -> Ptr () -> Word32 -> Ptr COSERVERINFO -> Word32 -> Ptr MULTI_QI_PRIM -> IO Int32 getActiveObject :: ForeignPtr () -> Ptr () -> Ptr () -> IO () prim_System_Win32_Com_Base_getActiveObject :: Ptr () -> Ptr () -> Ptr () -> IO Int32 primQI :: Ptr () -> Ptr () -> ForeignPtr () -> Ptr (Ptr ()) -> IO () prim_System_Win32_Com_Base_primQI :: Ptr () -> Ptr () -> Ptr () -> Ptr (Ptr ()) -> IO Int32 primAddRef :: Ptr () -> Ptr () -> IO Word32 prim_System_Win32_Com_Base_primAddRef :: Ptr () -> Ptr () -> IO Word32 primRelease :: Ptr () -> Ptr () -> IO Word32 prim_System_Win32_Com_Base_primRelease :: Ptr () -> Ptr () -> IO Word32 primEnumNext :: Ptr () -> Ptr () -> Word32 -> Ptr () -> Ptr () -> IO () prim_System_Win32_Com_Base_primEnumNext :: Ptr () -> Ptr () -> Word32 -> Ptr () -> Ptr () -> IO Int32 primEnumSkip :: Ptr () -> Ptr () -> Word32 -> IO () prim_System_Win32_Com_Base_primEnumSkip :: Ptr () -> Ptr () -> Word32 -> IO Int32 primEnumReset :: Ptr () -> Ptr () -> IO () prim_System_Win32_Com_Base_primEnumReset :: Ptr () -> Ptr () -> IO Int32 primEnumClone :: Ptr () -> Ptr () -> Ptr () -> IO () prim_System_Win32_Com_Base_primEnumClone :: Ptr () -> Ptr () -> Ptr () -> IO Int32 primPersistLoad :: Ptr () -> Ptr () -> Ptr Wchar_t -> Word32 -> IO () prim_System_Win32_Com_Base_primPersistLoad :: Ptr () -> Ptr () -> Ptr Word16 -> Word32 -> IO Int32 primNullIID :: IO (Ptr ()) prim_System_Win32_Com_Base_primNullIID :: IO (Ptr ()) loadTypeLib :: Ptr Wchar_t -> Ptr () -> IO () prim_System_Win32_Com_Base_loadTypeLib :: Ptr Word16 -> Ptr () -> IO Int32 loadTypeLibEx :: Ptr Wchar_t -> Int32 -> Ptr () -> IO () prim_System_Win32_Com_Base_loadTypeLibEx :: Ptr Word16 -> Int32 -> Ptr () -> IO Int32 loadRegTypeLib :: ForeignPtr () -> Int32 -> Int32 -> Int32 -> Ptr () -> IO () prim_System_Win32_Com_Base_loadRegTypeLib :: Ptr () -> Int32 -> Int32 -> Int32 -> Ptr () -> IO Int32 primQueryPathOfRegTypeLib :: ForeignPtr () -> Word16 -> Word16 -> IO (Ptr Wchar_t) prim_System_Win32_Com_Base_primQueryPathOfRegTypeLib :: Ptr () -> Word16 -> Word16 -> IO (Ptr Word16) addrOfReleaseIUnknown :: Ptr () prim_System_Win32_Com_Base_addrOfReleaseIUnknown :: IO (Ptr ()) bstrToStringLen :: Ptr String -> Int32 -> Ptr Char -> IO () prim_System_Win32_Com_Base_bstrToStringLen :: Ptr String -> Int32 -> Ptr Char -> IO Int32 bstrLen :: Ptr String -> Int32 prim_System_Win32_Com_Base_bstrLen :: Ptr String -> IO Int32 stringToBSTR :: Ptr String -> IO (Ptr String) prim_System_Win32_Com_Base_stringToBSTR :: Ptr String -> Ptr String -> IO Int32 getModuleFileName :: Ptr () -> IO String prim_System_Win32_Com_Base_getModuleFileName :: Ptr () -> IO (Ptr String) messagePump :: IO () prim_System_Win32_Com_Base_messagePump :: IO () postQuitMsg :: IO () prim_System_Win32_Com_Base_postQuitMsg :: IO () primOutputDebugString :: String -> IO () prim_System_Win32_Com_Base_primOutputDebugString :: Ptr String -> IO () primGetVersionInfo :: IO (Word32, Word32, Word32) prim_System_Win32_Com_Base_primGetVersionInfo :: Ptr Word32 -> Ptr Word32 -> Ptr Word32 -> IO () coRegisterClassObject :: ForeignPtr () -> ForeignPtr () -> Int32 -> Int32 -> IO Word32 prim_System_Win32_Com_Base_coRegisterClassObject :: Ptr () -> Ptr () -> Int32 -> Int32 -> Ptr Word32 -> IO Int32 instance GHC.Show.Show System.Win32.Com.Base.ComError instance GHC.Show.Show System.Win32.Com.Base.ComException instance GHC.Show.Show System.Win32.Com.Base.SomeCOMException instance GHC.Exception.Type.Exception System.Win32.Com.Base.SomeCOMException instance GHC.Exception.Type.Exception System.Win32.Com.Base.ComException -- | Representing and working with COM's 'exception model' -- (HRESULTs) in Haskell. Failures in COM method calls are -- mapped into Exception Haskell exceptions, providing convenient -- handlers to catch and throw these. module System.Win32.Com.Exception -- | act catchComException (ex -> hdlr ex) performs the -- IO action act, but catches any IO or COM exceptions -- ex, passing them to the handler hdlr. catchComException :: IO a -> (Com_Exception -> IO a) -> IO a catch_ce_ :: IO a -> (Maybe ComException -> IO a) -> IO a -- | Com_Exception is either an IOException or -- ComException; no attempt is made to embed one inside the other. type Com_Exception = Either IOException ComException -- | throwIOComException ex raises/throws the exception -- ex; ex is either an IOException or a -- ComException. throwIOComException :: Com_Exception -> IO a -- | check2HR hr triggers a COM exception if the HRESULT -- hr represent an error condition. The current last -- error value embedded in the exception gives more information about -- cause. check2HR :: HRESULT -> IO () -- | checkBool mbZero raises a COM exception if mbZero is -- equal to...zero. The last error is embedded inside the -- exception. checkBool :: Int32 -> IO () -- | returnHR act runs the IO action act, catching any -- COM exceptions. Success or failure is then mapped back into the -- corresponding HRESULT. In the case of success, s_OK. returnHR :: IO () -> IO HRESULT -- | isCoError e returns True for COM exceptions; -- False for IO exception values. isCoError :: Com_Exception -> Bool -- | coGetException ei picks out the COM exception ei, if -- one. coGetException :: Com_Exception -> Maybe ComException -- | coGetException ei picks out the COM HRESULT from the -- exception, if any. coGetErrorHR :: Com_Exception -> Maybe HRESULT -- | coGetException ei returns a user-friendlier representation of -- the ei exception. coGetErrorString :: Com_Exception -> String printComError :: Com_Exception -> IO () -- | An alias to coGetErrorString. hresultToString :: HRESULT -> IO String coAssert :: Bool -> String -> IO () coOnFail :: IO a -> String -> IO a -- | coFail msg raised the E_FAIL COM exception along -- with the descriptive string msg. coFail :: String -> IO a -- | s_OK and s_FALSE are the boolean values encoded as -- HRESULTs. s_FALSE :: HRESULT -- | s_OK and s_FALSE are the boolean values encoded as -- HRESULTs. s_OK :: HRESULT nOERROR :: HRESULT nO_ERROR :: HRESULT sEVERITY_ERROR :: Int32 sEVERITY_SUCCESS :: Int32 succeeded :: HRESULT -> Bool winErrorToHR :: Int32 -> HRESULT hRESULT_CODE :: HRESULT -> Int32 hRESULT_FACILITY :: HRESULT -> Int32 hRESULT_SEVERITY :: HRESULT -> Int32 mkHRESULT :: Int32 -> Int32 -> Int32 -> HRESULT cAT_E_CATIDNOEXIST :: HRESULT cAT_E_FIRST :: HRESULT cAT_E_LAST :: HRESULT cAT_E_NODESCRIPTION :: HRESULT cLASS_E_CLASSNOTAVAILABLE :: HRESULT cLASS_E_NOAGGREGATION :: HRESULT cLASS_E_NOTLICENSED :: HRESULT cO_E_ACCESSCHECKFAILED :: HRESULT cO_E_ACESINWRONGORDER :: HRESULT cO_E_ACNOTINITIALIZED :: HRESULT cO_E_ALREADYINITIALIZED :: HRESULT cO_E_APPDIDNTREG :: HRESULT cO_E_APPNOTFOUND :: HRESULT cO_E_APPSINGLEUSE :: HRESULT cO_E_BAD_PATH :: HRESULT cO_E_BAD_SERVER_NAME :: HRESULT cO_E_CANTDETERMINECLASS :: HRESULT cO_E_CANT_REMOTE :: HRESULT cO_E_CLASSSTRING :: HRESULT cO_E_CLASS_CREATE_FAILED :: HRESULT cO_E_CLSREG_INCONSISTENT :: HRESULT cO_E_CONVERSIONFAILED :: HRESULT cO_E_CREATEPROCESS_FAILURE :: HRESULT cO_E_DECODEFAILED :: HRESULT cO_E_DLLNOTFOUND :: HRESULT cO_E_ERRORINAPP :: HRESULT cO_E_ERRORINDLL :: HRESULT cO_E_EXCEEDSYSACLLIMIT :: HRESULT cO_E_FAILEDTOCLOSEHANDLE :: HRESULT cO_E_FAILEDTOCREATEFILE :: HRESULT cO_E_FAILEDTOGENUUID :: HRESULT cO_E_FAILEDTOGETSECCTX :: HRESULT cO_E_FAILEDTOGETTOKENINFO :: HRESULT cO_E_FAILEDTOGETWINDIR :: HRESULT cO_E_FAILEDTOIMPERSONATE :: HRESULT cO_E_FAILEDTOOPENPROCESSTOKEN :: HRESULT cO_E_FAILEDTOOPENTHREADTOKEN :: HRESULT cO_E_FAILEDTOQUERYCLIENTBLANKET :: HRESULT cO_E_FAILEDTOSETDACL :: HRESULT cO_E_FIRST :: HRESULT cO_E_IIDREG_INCONSISTENT :: HRESULT cO_E_IIDSTRING :: HRESULT cO_E_INCOMPATIBLESTREAMVERSION :: HRESULT cO_E_INIT_CLASS_CACHE :: HRESULT cO_E_INIT_MEMORY_ALLOCATOR :: HRESULT cO_E_INIT_ONLY_SINGLE_THREADED :: HRESULT cO_E_INIT_RPC_CHANNEL :: HRESULT cO_E_INIT_SCM_EXEC_FAILURE :: HRESULT cO_E_INIT_SCM_FILE_MAPPING_EXISTS :: HRESULT cO_E_INIT_SCM_MAP_VIEW_OF_FILE :: HRESULT cO_E_INIT_SCM_MUTEX_EXISTS :: HRESULT cO_E_INIT_SHARED_ALLOCATOR :: HRESULT cO_E_INIT_TLS :: HRESULT cO_E_INIT_TLS_CHANNEL_CONTROL :: HRESULT cO_E_INIT_TLS_SET_CHANNEL_CONTROL :: HRESULT cO_E_INIT_UNACCEPTED_USER_ALLOCATOR :: HRESULT cO_E_INVALIDSID :: HRESULT cO_E_LAST :: HRESULT cO_E_LAUNCH_PERMSSION_DENIED :: HRESULT cO_E_LOOKUPACCNAMEFAILED :: HRESULT cO_E_LOOKUPACCSIDFAILED :: HRESULT cO_E_MSI_ERROR :: HRESULT cO_E_NETACCESSAPIFAILED :: HRESULT cO_E_NOMATCHINGNAMEFOUND :: HRESULT cO_E_NOMATCHINGSIDFOUND :: HRESULT cO_E_NOTINITIALIZED :: HRESULT cO_E_NOT_SUPPORTED :: HRESULT cO_E_OBJISREG :: HRESULT cO_E_OBJNOTCONNECTED :: HRESULT cO_E_OBJNOTREG :: HRESULT cO_E_OBJSRV_RPC_FAILURE :: HRESULT cO_E_OLE1DDE_DISABLED :: HRESULT cO_E_PATHTOOLONG :: HRESULT cO_E_RELEASED :: HRESULT cO_E_RELOAD_DLL :: HRESULT cO_E_REMOTE_COMMUNICATION_FAILURE :: HRESULT cO_E_RUNAS_CREATEPROCESS_FAILURE :: HRESULT cO_E_RUNAS_LOGON_FAILURE :: HRESULT cO_E_RUNAS_SYNTAX :: HRESULT cO_E_SCM_ERROR :: HRESULT cO_E_SCM_RPC_FAILURE :: HRESULT cO_E_SERVER_EXEC_FAILURE :: HRESULT cO_E_SERVER_START_TIMEOUT :: HRESULT cO_E_SERVER_STOPPING :: HRESULT cO_E_SETSERLHNDLFAILED :: HRESULT cO_E_START_SERVICE_FAILURE :: HRESULT cO_E_TRUSTEEDOESNTMATCHCLIENT :: HRESULT cO_E_WRONGOSFORAPP :: HRESULT cO_E_WRONGTRUSTEENAMESYNTAX :: HRESULT cO_E_WRONG_SERVER_IDENTITY :: HRESULT cO_S_FIRST :: HRESULT cO_S_LAST :: HRESULT cO_S_NOTALLINTERFACES :: HRESULT dISP_E_ARRAYISLOCKED :: HRESULT dISP_E_BADCALLEE :: HRESULT dISP_E_BADINDEX :: HRESULT dISP_E_BADPARAMCOUNT :: HRESULT dISP_E_BADVARTYPE :: HRESULT dISP_E_DIVBYZERO :: HRESULT dISP_E_EXCEPTION :: HRESULT dISP_E_MEMBERNOTFOUND :: HRESULT dISP_E_NONAMEDARGS :: HRESULT dISP_E_NOTACOLLECTION :: HRESULT dISP_E_OVERFLOW :: HRESULT dISP_E_PARAMNOTFOUND :: HRESULT dISP_E_PARAMNOTOPTIONAL :: HRESULT dISP_E_TYPEMISMATCH :: HRESULT dISP_E_UNKNOWNINTERFACE :: HRESULT dISP_E_UNKNOWNLCID :: HRESULT dISP_E_UNKNOWNNAME :: HRESULT dV_E_CLIPFORMAT :: HRESULT dV_E_DVASPECT :: HRESULT dV_E_DVTARGETDEVICE :: HRESULT dV_E_DVTARGETDEVICE_SIZE :: HRESULT dV_E_FORMATETC :: HRESULT dV_E_LINDEX :: HRESULT dV_E_NOIVIEWOBJECT :: HRESULT dV_E_STATDATA :: HRESULT dV_E_STGMEDIUM :: HRESULT dV_E_TYMED :: HRESULT e_ABORT :: HRESULT e_ACCESSDENIED :: HRESULT e_FAIL :: HRESULT e_HANDLE :: HRESULT e_INVALIDARG :: HRESULT e_NOINTERFACE :: HRESULT e_NOTIMPL :: HRESULT e_OUTOFMEMORY :: HRESULT e_PENDING :: HRESULT e_POINTER :: HRESULT e_UNEXPECTED :: HRESULT fACILITY_CERT :: HRESULT fACILITY_CONTROL :: HRESULT fACILITY_DISPATCH :: HRESULT fACILITY_INTERNET :: HRESULT fACILITY_ITF :: HRESULT fACILITY_MEDIASERVER :: HRESULT fACILITY_MSMQ :: HRESULT fACILITY_NT_BIT :: HRESULT fACILITY_NULL :: HRESULT fACILITY_RPC :: HRESULT fACILITY_SETUPAPI :: HRESULT fACILITY_SSPI :: HRESULT fACILITY_STORAGE :: HRESULT fACILITY_WIN32 :: HRESULT fACILITY_WINDOWS :: HRESULT iNPLACE_E_FIRST :: HRESULT iNPLACE_E_LAST :: HRESULT iNPLACE_E_NOTOOLSPACE :: HRESULT iNPLACE_E_NOTUNDOABLE :: HRESULT iNPLACE_S_FIRST :: HRESULT iNPLACE_S_LAST :: HRESULT iNPLACE_S_TRUNCATED :: HRESULT mARSHAL_E_FIRST :: HRESULT mARSHAL_E_LAST :: HRESULT mARSHAL_S_FIRST :: HRESULT mARSHAL_S_LAST :: HRESULT mEM_E_INVALID_LINK :: HRESULT mEM_E_INVALID_ROOT :: HRESULT mEM_E_INVALID_SIZE :: HRESULT mK_E_CANTOPENFILE :: HRESULT mK_E_CONNECTMANUALLY :: HRESULT mK_E_ENUMERATION_FAILED :: HRESULT mK_E_EXCEEDEDDEADLINE :: HRESULT mK_E_FIRST :: HRESULT mK_E_INTERMEDIATEINTERFACENOTSUPPORTED :: HRESULT mK_E_INVALIDEXTENSION :: HRESULT mK_E_LAST :: HRESULT mK_E_MUSTBOTHERUSER :: HRESULT mK_E_NEEDGENERIC :: HRESULT mK_E_NOINVERSE :: HRESULT mK_E_NOOBJECT :: HRESULT mK_E_NOPREFIX :: HRESULT mK_E_NOSTORAGE :: HRESULT mK_E_NOTBINDABLE :: HRESULT mK_E_NOTBOUND :: HRESULT mK_E_NO_NORMALIZED :: HRESULT mK_E_SYNTAX :: HRESULT mK_E_UNAVAILABLE :: HRESULT mK_S_FIRST :: HRESULT mK_S_HIM :: HRESULT mK_S_LAST :: HRESULT mK_S_ME :: HRESULT mK_S_MONIKERALREADYREGISTERED :: HRESULT mK_S_REDUCED_TO_SELF :: HRESULT mK_S_US :: HRESULT oLEOBJ_E_FIRST :: HRESULT oLEOBJ_E_INVALIDVERB :: HRESULT oLEOBJ_E_LAST :: HRESULT oLEOBJ_E_NOVERBS :: HRESULT oLEOBJ_S_CANNOT_DOVERB_NOW :: HRESULT oLEOBJ_S_FIRST :: HRESULT oLEOBJ_S_INVALIDHWND :: HRESULT oLEOBJ_S_INVALIDVERB :: HRESULT oLEOBJ_S_LAST :: HRESULT oLE_E_ADVF :: HRESULT oLE_E_ADVISENOTSUPPORTED :: HRESULT oLE_E_BLANK :: HRESULT oLE_E_CANTCONVERT :: HRESULT oLE_E_CANT_BINDTOSOURCE :: HRESULT oLE_E_CANT_GETMONIKER :: HRESULT oLE_E_CLASSDIFF :: HRESULT oLE_E_ENUM_NOMORE :: HRESULT oLE_E_FIRST :: HRESULT oLE_E_INVALIDHWND :: HRESULT oLE_E_INVALIDRECT :: HRESULT oLE_E_LAST :: HRESULT oLE_E_NOCACHE :: HRESULT oLE_E_NOCONNECTION :: HRESULT oLE_E_NOSTORAGE :: HRESULT oLE_E_NOTRUNNING :: HRESULT oLE_E_NOT_INPLACEACTIVE :: HRESULT oLE_E_OLEVERB :: HRESULT oLE_E_PROMPTSAVECANCELLED :: HRESULT oLE_E_STATIC :: HRESULT oLE_E_WRONGCOMPOBJ :: HRESULT oLE_S_FIRST :: HRESULT oLE_S_LAST :: HRESULT oLE_S_MAC_CLIPFORMAT :: HRESULT oLE_S_STATIC :: HRESULT oLE_S_USEREG :: HRESULT pERSIST_E_NOTSELFSIZING :: HRESULT pERSIST_E_SIZEDEFINITE :: HRESULT pERSIST_E_SIZEINDEFINITE :: HRESULT sTG_E_ABNORMALAPIEXIT :: HRESULT sTG_E_ACCESSDENIED :: HRESULT sTG_E_BADBASEADDRESS :: HRESULT sTG_E_CANTSAVE :: HRESULT sTG_E_DISKISWRITEPROTECTED :: HRESULT sTG_E_DOCFILECORRUPT :: HRESULT sTG_E_EXTANTMARSHALLINGS :: HRESULT sTG_E_FILEALREADYEXISTS :: HRESULT sTG_E_FILENOTFOUND :: HRESULT sTG_E_INCOMPLETE :: HRESULT sTG_E_INSUFFICIENTMEMORY :: HRESULT sTG_E_INUSE :: HRESULT sTG_E_INVALIDFLAG :: HRESULT sTG_E_INVALIDFUNCTION :: HRESULT sTG_E_INVALIDHANDLE :: HRESULT sTG_E_INVALIDHEADER :: HRESULT sTG_E_INVALIDNAME :: HRESULT sTG_E_INVALIDPARAMETER :: HRESULT sTG_E_INVALIDPOINTER :: HRESULT sTG_E_LOCKVIOLATION :: HRESULT sTG_E_MEDIUMFULL :: HRESULT sTG_E_NOMOREFILES :: HRESULT sTG_E_NOTCURRENT :: HRESULT sTG_E_NOTFILEBASEDSTORAGE :: HRESULT sTG_E_OLDDLL :: HRESULT sTG_E_OLDFORMAT :: HRESULT sTG_E_PATHNOTFOUND :: HRESULT sTG_E_PROPSETMISMATCHED :: HRESULT sTG_E_READFAULT :: HRESULT sTG_E_REVERTED :: HRESULT sTG_E_SEEKERROR :: HRESULT sTG_E_SHAREREQUIRED :: HRESULT sTG_E_SHAREVIOLATION :: HRESULT sTG_E_TERMINATED :: HRESULT sTG_E_TOOMANYOPENFILES :: HRESULT sTG_E_UNIMPLEMENTEDFUNCTION :: HRESULT sTG_E_UNKNOWN :: HRESULT sTG_E_WRITEFAULT :: HRESULT sTG_S_BLOCK :: HRESULT sTG_S_CANNOTCONSOLIDATE :: HRESULT sTG_S_CONSOLIDATIONFAILED :: HRESULT sTG_S_CONVERTED :: HRESULT sTG_S_MONITORING :: HRESULT sTG_S_MULTIPLEOPENS :: HRESULT sTG_S_RETRYNOW :: HRESULT tYPE_E_AMBIGUOUSNAME :: HRESULT tYPE_E_BADMODULEKIND :: HRESULT tYPE_E_BUFFERTOOSMALL :: HRESULT tYPE_E_CANTCREATETMPFILE :: HRESULT tYPE_E_CANTLOADLIBRARY :: HRESULT tYPE_E_CIRCULARTYPE :: HRESULT tYPE_E_DLLFUNCTIONNOTFOUND :: HRESULT tYPE_E_DUPLICATEID :: HRESULT tYPE_E_ELEMENTNOTFOUND :: HRESULT tYPE_E_FIELDNOTFOUND :: HRESULT tYPE_E_INCONSISTENTPROPFUNCS :: HRESULT tYPE_E_INVALIDID :: HRESULT tYPE_E_INVALIDSTATE :: HRESULT tYPE_E_INVDATAREAD :: HRESULT tYPE_E_IOERROR :: HRESULT tYPE_E_LIBNOTREGISTERED :: HRESULT tYPE_E_NAMECONFLICT :: HRESULT tYPE_E_OUTOFBOUNDS :: HRESULT tYPE_E_QUALIFIEDNAMEDISALLOWED :: HRESULT tYPE_E_REGISTRYACCESS :: HRESULT tYPE_E_SIZETOOBIG :: HRESULT tYPE_E_TYPEMISMATCH :: HRESULT tYPE_E_UNDEFINEDTYPE :: HRESULT tYPE_E_UNKNOWNLCID :: HRESULT tYPE_E_UNSUPFORMAT :: HRESULT tYPE_E_WRONGTYPEKIND :: HRESULT vIEW_E_DRAW :: HRESULT vIEW_E_FIRST :: HRESULT vIEW_E_LAST :: HRESULT vIEW_S_ALREADY_FROZEN :: HRESULT vIEW_S_FIRST :: HRESULT vIEW_S_LAST :: HRESULT -- | Support library for interacting with base Microsoft COM services and -- API. module System.Win32.Com data IUnknown_ a type IUnknown a = IUnknown_ a -- | Representing interface pointers via IUnknown a, where -- a is the particular IUnknown-extended interface, -- e.g., IUnknown IDispatch_. If the interface pointer is -- just IUnknown, use IUnknown (). -- -- Extend this to IIDs and parameterize them over the interface -- they represent. iidIUnknown :: IID (IUnknown ()) -- | interfaceNULL is the NULL interface pointer. interfaceNULL :: IUnknown a -- | isNullInterface iptr returns True iff iptr -- is the NULL pointer. isNullInterface :: IUnknown a -> Bool -- | The null interface iidNULL :: IID () -- | queryInterface iid iunk queries iunk if it supports -- the iid interface, returning it. Notice that the type -- parameter to the IID matches up with that of the resulting -- interface pointer, giving you type safety - i.e., you can only use the -- interface pointer with methods supported by that interface queryInterface :: IID (IUnknown b) -> IUnknown a -> IO (IUnknown b) -- | addRef iptr increases the reference count of the interface -- pointer iptr. Notice that interface pointers are managed and -- finalized when on the Haskell heap, so manual reference counting is -- not required (and not encouraged as it could prevent the underlying -- object from being properly released, should you forget to decrement -- the ref count with release.) addRef :: IUnknown a -> IO Word32 -- | addRef iptr decrements the reference count of the interface -- pointer iptr. release :: IUnknown a -> IO Word32 withQueryInterface :: IID (IUnknown b) -> IUnknown a -> (IUnknown b -> IO c) -> IO c -- | The # operator permits OO-style method application -- with do syntax: -- --
-- obj # method arg1 arg2 ---- -- is equivalent to method arg1 arg2 obj, so this assumes that -- the COM method wrappers takes the this pointer as the last -- argument. Which the HDirect generated wrappers do and the -- various base method provided by this COM+Automation library. (#) :: a -> (a -> IO b) -> IO b infixl 1 # -- | A variation on (#) where the this pointer is an action -- returning an object reference rather than the reference itself. -- Sometimes useful when you create one-off objects and call methods on -- them: -- --
-- (createObject arg1) ## startUp arg2 ---- -- instead of the wieldier, -- --
-- obj <- createObject arg1 -- obj # startUp arg2 or createObject arg1 >>= (startUp arg2) --(##) :: IO a -> (a -> IO b) -> IO b infixl 0 ## -- | coRun act is the toplevel action combinator to wrap up your -- COM actions in. Takes care of calling coInitialize (and -- un-initialize) for you. coRun :: IO a -> IO a -- | coPerformIO act runs act within an exception handler -- that catches and displays any COM API errors in a message box. For -- debugging purposes, mostly. coPerformIO :: IO a -> IO a coUnsafePerformIO :: IO a -> a coInitialize :: IO () coUnInitialize :: IO () -- | GUID is the Haskell representation for COM GUIDs. data GUID mkGUID :: String -> GUID -- | newGUID generates a new unique GUID. newGUID :: IO GUID -- | stringToGUID "{00000000-0000-0000-C000-0000 0000 0046}" -- translates the COM string representation for GUIDs into an actual -- GUID value. stringToGUID :: String -> IO GUID guidToString :: GUID -> String nullGUID :: GUID -- | Representation of IIDs: Give the interface identifier a type -- parameter, so that when we come to define the Haskell type of -- IUnknown.QueryInterface() we can rely on the type checker to -- ensure that the IID passed to QueryInterface agrees -- with the interface at which we're using the interface pointer that's -- returned data IID a mkIID :: String -> IID a stringToIID :: String -> IID a guidToIID :: GUID -> IID a iidToGUID :: IID a -> GUID castIID :: IID a -> IID b data CLSID mkCLSID :: String -> CLSID stringToCLSID :: String -> CLSID guidToCLSID :: GUID -> CLSID clsidToGUID :: CLSID -> GUID clsidToDisplayName :: CLSID -> String -- | Type libraries are identified by a GUID, the LIBID. type LIBID = GUID mkLIBID :: String -> LIBID type HRESULT = Int32 -- | s_OK and s_FALSE are the boolean values encoded as -- HRESULTs. s_FALSE :: HRESULT -- | s_OK and s_FALSE are the boolean values encoded as -- HRESULTs. s_OK :: HRESULT succeeded :: HRESULT -> Bool failed :: HRESULT -> Bool checkHR :: HRESULT -> IO () -- | checkBool mbZero raises a COM exception if mbZero is -- equal to...zero. The last error is embedded inside the -- exception. checkBool :: Int32 -> IO () -- | returnHR act runs the IO action act, catching any -- COM exceptions. Success or failure is then mapped back into the -- corresponding HRESULT. In the case of success, s_OK. returnHR :: IO () -> IO HRESULT coFailHR :: HRESULT -> IO a coFailWithHR :: HRESULT -> String -> IO a coAssert :: Bool -> String -> IO () coOnFail :: IO a -> String -> IO a -- | coFail msg raised the E_FAIL COM exception along -- with the descriptive string msg. coFail :: String -> IO a -- | isCoError e returns True for COM exceptions; -- False for IO exception values. isCoError :: Com_Exception -> Bool -- | coGetException ei picks out the COM HRESULT from the -- exception, if any. coGetErrorHR :: Com_Exception -> Maybe HRESULT -- | coGetException ei returns a user-friendlier representation of -- the ei exception. coGetErrorString :: Com_Exception -> String -- | An alias to coGetErrorString. hresultToString :: HRESULT -> IO String data ComException ComException :: ComError -> String -> ComException [comException] :: ComException -> ComError [comExceptionMsg] :: ComException -> String -- | act catchComException (ex -> hdlr ex) performs the -- IO action act, but catches any IO or COM exceptions -- ex, passing them to the handler hdlr. catchComException :: IO a -> (Com_Exception -> IO a) -> IO a -- | throwIOComException ex raises/throws the exception -- ex; ex is either an IOException or a -- ComException. throwIOComException :: Com_Exception -> IO a throwComException :: ComException -> IO a -- | coCreateInstance is the basic COM way of creating components. -- It takes a CLSID, an interface to aggregate on, a process -- context and an IID to create an object: -- --
-- coCreateInstance clsidAgentServer interfaceNULL LocalProcess iidIAgent --coCreateInstance :: CLSID -> Maybe (IUnknown b) -> CLSCTX -> IID (IUnknown a) -> IO (IUnknown a) -- | createObject creates an object from its progID: -- createObject Agent.Server. getObject creates -- an object from its progID and initializes it with a given file: -- getObject "spreadsheet.exl" Excel.Application. If the -- filename is empty, getObject calls getActiveObject. -- getActiveObject tries to connect to an already running -- instance of the component: getActiveObject -- Word.Application. getFileObject opens a file or -- url and loads the associated or persistent object in it: -- getFileObject "spreadsheet.spd". coCreateInstance is -- the basic com way of creating components. It takes a CLSID, process -- context and IID to create an object: coCreateInstance -- clsidAgentServer Nothing LocalProcess iidIAgent. -- -- NOTE: prepend co to specify the initial IID, otherwise -- iidIDispatch is used (see Automation for more). coCreateObject :: ProgID -> IID (IUnknown a) -> IO (IUnknown a) -- | Bind to an object via its moniker string or display name. coGetObject :: String -> IID (IUnknown a) -> IO (IUnknown a) -- | Look up and activate the given active/running object. coGetActiveObject :: ProgID -> IID (IUnknown a) -> IO (IUnknown a) -- | Get Object from File and ProgID. coGetFileObject :: String -> ProgID -> IID (IUnknown a) -> IO (IUnknown a) coCreateInstanceEx :: CLSID -> Maybe (IUnknown b) -> CLSCTX -> Maybe COSERVERINFO -> IID (IUnknown a) -> IO (IUnknown a) data COSERVERINFO COSERVERINFO :: DWORD -> WideString -> Maybe COAUTHINFO -> DWORD -> COSERVERINFO [dwReserved1] :: COSERVERINFO -> DWORD [pwszName] :: COSERVERINFO -> WideString [pAuthInfo] :: COSERVERINFO -> Maybe COAUTHINFO [dwReserved2] :: COSERVERINFO -> DWORD data COAUTHIDENTITY COAUTHIDENTITY :: String -> String -> String -> ULONG -> COAUTHIDENTITY [user] :: COAUTHIDENTITY -> String [domain] :: COAUTHIDENTITY -> String [password] :: COAUTHIDENTITY -> String [flags] :: COAUTHIDENTITY -> ULONG data COAUTHINFO COAUTHINFO :: DWORD -> DWORD -> WideString -> DWORD -> DWORD -> Maybe COAUTHIDENTITY -> DWORD -> COAUTHINFO [dwAuthnSvc] :: COAUTHINFO -> DWORD [dwAuthzSvc] :: COAUTHINFO -> DWORD [pwszServerPrincName] :: COAUTHINFO -> WideString [dwAuthnLevel] :: COAUTHINFO -> DWORD [dwImpersonationLevel] :: COAUTHINFO -> DWORD [pAuthIdentityData] :: COAUTHINFO -> Maybe COAUTHIDENTITY [dwCapabilities] :: COAUTHINFO -> DWORD withObject :: IUnknown a -> [IUnknown a -> IO b] -> IO [b] withObject_ :: IUnknown a -> [IUnknown a -> IO b] -> IO () withMethod :: (a -> IUnknown b -> IO c) -> [a] -> IUnknown b -> IO [c] withMethod_ :: (a -> IUnknown b -> IO c) -> [a] -> IUnknown b -> IO () -- | The CLSCTX enumeration is used by comCreateInstance -- to specify execution context in which we'd like to component to be -- created (just use AnyProcess if you're not too fussed..) data CLSCTX CLSCTX_INPROC_SERVER :: CLSCTX CLSCTX_INPROC_HANDLER :: CLSCTX CLSCTX_LOCAL_SERVER :: CLSCTX CLSCTX_INPROC_SERVER16 :: CLSCTX CLSCTX_REMOTE_SERVER :: CLSCTX CLSCTX_INPROC_HANDLER16 :: CLSCTX CLSCTX_INPROC_SERVERX86 :: CLSCTX CLSCTX_INPROC_HANDLERX86 :: CLSCTX LocalProcess :: CLSCTX InProcess :: CLSCTX ServerProcess :: CLSCTX AnyProcess :: CLSCTX -- | ProgIDs are represented in Haskell as mere strings type ProgID = String -- | progIDFromCLSID cid is the dual clsidFromProgID, -- attempting to translate in the other direction. progIDFromCLSID :: CLSID -> IO ProgID -- | clsidFromProgID progid looks up a ProgID and tries -- to translate it into its registered CLSID. Raises an IO -- exception if the ProgID isn't known. clsidFromProgID :: ProgID -> IO CLSID -- | printMessage val shows val in a message box. printMessage :: Show a => a -> IO () -- | putMessage str displays str in an informational -- message box containing an OK button. putMessage :: String -> IO () -- | messageBox msg title flg displays a message box with the -- given title and content. The flg parameter is the bit pattern -- that makes up the MB_* settings you want to use (cf. -- underlying Win32 API documentation for MessageBox.) messageBox :: String -> String -> Word32 -> IO () -- | outputDebugString str adds an outputDebugString :: String -> IO () data OSVersionInfo OSVersionInfo :: Word32 -> Word32 -> Word32 -> OSVersionInfo isWindowsNT :: OSVersionInfo -> Bool isWindows95 :: OSVersionInfo -> Bool isWindows98 :: OSVersionInfo -> Bool versionInfo :: OSVersionInfo ifaceToAddr :: IUnknown a -> Ptr b enumNext :: Word32 -> (Ptr any -> IO a) -> Word32 -> IUnknown b -> IO [a] enumNextOne :: Word32 -> (Ptr any -> IO a) -> IUnknown b -> IO (Maybe a) enumClone :: IUnknown a -> IO (IUnknown b) enumReset :: IUnknown a -> IO () enumSkip :: Word32 -> IUnknown a -> IO () data BSTR marshallBSTR :: String -> IO (Ptr String) unmarshallBSTR :: Ptr String -> IO String readBSTR :: Ptr (Ptr String) -> IO String writeBSTR :: Ptr String -> String -> IO () freeBSTR :: Ptr a -> IO () type LPSTR = String -- | coFree ptr releases storage that has been allocated via the -- COM task allocator; explicitly via coAlloc or indirectly via -- the APIs that handed the pointer to your code. coFree :: Ptr a -> IO () -- | coAlloc sz allocates sz bytes from the COM task -- allocator, returning a pointer. The onus is on the caller to constrain -- the type of that pointer to capture what the allocated memory points -- to. coAlloc :: Word32 -> IO (Ptr a) marshallIUnknown :: IUnknown a -> IO (ForeignPtr b) unmarshallIUnknown :: Bool -> Ptr b -> IO (IUnknown a) readIUnknown :: Bool -> Ptr b -> IO (IUnknown a) writeIUnknown :: Bool -> Ptr (Ptr (IUnknown b)) -> IUnknown a -> IO () unmarshallIUnknownFO :: ForeignPtr b -> IO (IUnknown a) -- | castIface obj performs a type castIface :: IUnknown a -> IUnknown b data WideString marshallWideString :: WideString -> IO (Ptr WideString) unmarshallWideString :: Ptr a -> IO WideString writeWideString :: Ptr WideString -> WideString -> IO () readWideString :: Ptr WideString -> IO WideString sizeofWideString :: Word32 freeWideString :: Ptr WideString -> IO () marshallGUID :: GUID -> IO (ForeignPtr GUID) -- | unmarshallGUID finalize ptr unpacks a pointer to an incoming -- GUID, wrapping it up as a Haskell GUID. If finalize is -- True, the GUID is assumed allocated via the COM task -- allocator and will be freed/finalized when the GUID becomes -- garbage. unmarshallGUID :: Bool -> Ptr GUID -> IO GUID -- | writeGUID ptr g packs the Haskell GUID into the -- pointer; that is, it writes a pointer to the GUID value to -- ptr -- no copying of underlying structure. writeGUID :: Ptr GUID -> GUID -> IO () readGUID :: Bool -> Ptr GUID -> IO GUID -- | A version of the GUID marshaller which copies rather than hands back a -- pointer to the (immutable) GUID. copyGUID :: GUID -> IO (Ptr ()) sizeofGUID :: Word32 marshallIID :: IID a -> IO (ForeignPtr (IID a)) unmarshallIID :: Bool -> Ptr (IID a) -> IO (IID a) writeIID :: Ptr (IID a) -> IID a -> IO () readIID :: Bool -> Ptr (Ptr (IID a)) -> IO (IID a) sizeofIID :: Word32 copyIID :: IID a -> IO (Ptr ()) marshallCLSID :: CLSID -> IO (ForeignPtr GUID) unmarshallCLSID :: Bool -> Ptr CLSID -> IO CLSID writeCLSID :: Ptr CLSID -> CLSID -> IO () readCLSID :: Bool -> Ptr (Ptr CLSID) -> IO CLSID sizeofCLSID :: Word32 copyCLSID :: CLSID -> IO (Ptr ()) invokeAndCheck :: (Ptr any -> Ptr b -> IO HRESULT) -> Int -> IUnknown a -> IO () -- | invokeIt ( methPtr ip -> action) offset obj sets up a -- vtbl-indexed COM call, unmarshalling and indexing obj before -- passing it along to the method argument. The first argument is -- typically an FFI wrapped call to a function pointer (methPtr -- here). invokeIt :: (Ptr any -> Ptr c -> IO a) -> Int -> IUnknown b -> IO a loadTypeLib :: String -> IO (IUnknown a) loadTypeLibEx :: String -> Bool -> IO (IUnknown a) loadRegTypeLib :: GUID -> Int -> Int -> Int -> IO (IUnknown a) queryPathOfRegTypeLib :: GUID -> Word16 -> Word16 -> IO String createTypeLib :: String -> IO (IUnknown a) type LCID = Word32 messagePump :: IO () postQuitMsg :: IO () instance GHC.Show.Show System.Win32.Com.CLSCTX instance forall a. GHC.Classes.Eq (System.Win32.Com.IID a) instance GHC.Classes.Eq System.Win32.Com.CLSID instance GHC.Show.Show System.Win32.Com.CLSID instance forall a. GHC.Show.Show (System.Win32.Com.IID a) instance GHC.Show.Show System.Win32.Com.GUID instance GHC.Classes.Eq System.Win32.Com.GUID instance GHC.Enum.Enum System.Win32.Com.CLSCTX instance forall a. GHC.Classes.Eq (System.Win32.Com.Base.IUnknown_ a) instance forall a. GHC.Show.Show (System.Win32.Com.Base.IUnknown_ a) module System.Win32.Com.Automation.StdTypes type UINT = Word32 type INT = Int32 type BOOL = Int32 type BYTE = Char type LONG = Int32 type ULONG = Word32 type WORD = Word16 type DWORD = Word32 type VARTYPE = Word16 type USHORT = Word16 type LCID = DWORD type SCODE = LONG type SHORT = Int16 type WCHAR = Wchar_t type TCHAR = WCHAR type OLECHAR = WCHAR type LPOLESTR = WideString type LPCOLESTR = WideString type PVOID = Ptr () type LPVOID = Ptr () type FLOAT = Float type LPIID = IID () type LPCLSID = CLSID type FMTID = GUID type LPFMTID = GUID type HWND = Ptr () type HMENU = Ptr () type HANDLE = Ptr () type REFGUID = GUID type REFIID = IID () type REFCLSID = CLSID type REFFMTID = GUID data VARENUM VT_EMPTY :: VARENUM VT_NULL :: VARENUM VT_I2 :: VARENUM VT_I4 :: VARENUM VT_R4 :: VARENUM VT_R8 :: VARENUM VT_CY :: VARENUM VT_DATE :: VARENUM VT_BSTR :: VARENUM VT_DISPATCH :: VARENUM VT_ERROR :: VARENUM VT_BOOL :: VARENUM VT_VARIANT :: VARENUM VT_UNKNOWN :: VARENUM VT_DECIMAL :: VARENUM VT_I1 :: VARENUM VT_UI1 :: VARENUM VT_UI2 :: VARENUM VT_UI4 :: VARENUM VT_I8 :: VARENUM VT_UI8 :: VARENUM VT_INT :: VARENUM VT_UINT :: VARENUM VT_VOID :: VARENUM VT_HRESULT :: VARENUM VT_PTR :: VARENUM VT_SAFEARRAY :: VARENUM VT_CARRAY :: VARENUM VT_USERDEFINED :: VARENUM VT_LPSTR :: VARENUM VT_LPWSTR :: VARENUM VT_FILETIME :: VARENUM VT_BLOB :: VARENUM VT_STREAM :: VARENUM VT_STORAGE :: VARENUM VT_STREAMED_OBJECT :: VARENUM VT_STORED_OBJECT :: VARENUM VT_BLOB_OBJECT :: VARENUM VT_CF :: VARENUM VT_CLSID :: VARENUM VT_BSTR_BLOB :: VARENUM VT_ILLEGALMASKED :: VARENUM VT_TYPEMASK :: VARENUM VT_VECTOR :: VARENUM VT_ARRAY :: VARENUM VT_BYREF :: VARENUM VT_RESERVED :: VARENUM VT_ILLEGAL :: VARENUM instance GHC.Enum.Enum System.Win32.Com.Automation.StdTypes.VARENUM module System.Win32.Com.Automation.SafeArray newtype SAFEARRAY SAFEARRAY :: ForeignPtr SAFEARRAY -> SAFEARRAY addrOf_SAFEARRAY_primSafeArrayDestroy :: FunPtr (Ptr SAFEARRAY -> IO ()) marshallSAFEARRAY :: SAFEARRAY -> IO (ForeignPtr SAFEARRAY) unmarshallSAFEARRAY :: Bool -> Ptr SAFEARRAY -> IO SAFEARRAY writeSAFEARRAY :: Ptr (Ptr SAFEARRAY) -> SAFEARRAY -> IO () readSAFEARRAY :: Bool -> Ptr SAFEARRAY -> IO SAFEARRAY sizeofSAFEARRAY :: Word32 addrToSAFEARRAY :: Ptr a -> SAFEARRAY data SAFEARRAYBOUND TagSAFEARRAYBOUND :: Word32 -> Int32 -> SAFEARRAYBOUND [cElements] :: SAFEARRAYBOUND -> Word32 [lLbound] :: SAFEARRAYBOUND -> Int32 writeSAFEARRAYBOUND :: Ptr SAFEARRAYBOUND -> SAFEARRAYBOUND -> IO () readSAFEARRAYBOUND :: Ptr SAFEARRAYBOUND -> IO SAFEARRAYBOUND sizeofSAFEARRAYBOUND :: Word32 safeArrayAccessData :: SAFEARRAY -> IO (Ptr ()) prim_System_Win32_Com_Automation_SafeArray_safeArrayAccessData :: Ptr SAFEARRAY -> Ptr (Ptr ()) -> IO Int32 safeArrayAllocData :: SAFEARRAY -> IO () prim_System_Win32_Com_Automation_SafeArray_safeArrayAllocData :: Ptr SAFEARRAY -> IO Int32 safeArrayAllocDescriptor :: Word32 -> IO SAFEARRAY prim_System_Win32_Com_Automation_SafeArray_safeArrayAllocDescriptor :: Word32 -> Ptr (Ptr SAFEARRAY) -> IO Int32 safeArrayCopy :: SAFEARRAY -> IO SAFEARRAY prim_System_Win32_Com_Automation_SafeArray_safeArrayCopy :: Ptr SAFEARRAY -> Ptr (Ptr SAFEARRAY) -> IO Int32 safeArrayCreate :: VARTYPE -> [SAFEARRAYBOUND] -> IO SAFEARRAY prim_System_Win32_Com_Automation_SafeArray_safeArrayCreate :: Word16 -> Word32 -> Ptr SAFEARRAYBOUND -> IO (Ptr SAFEARRAY) safeArrayDestroy :: SAFEARRAY -> IO () prim_System_Win32_Com_Automation_SafeArray_safeArrayDestroy :: Ptr SAFEARRAY -> IO Int32 safeArrayDestroyData :: SAFEARRAY -> IO () prim_System_Win32_Com_Automation_SafeArray_safeArrayDestroyData :: Ptr SAFEARRAY -> IO Int32 safeArrayDestroyDescriptor :: SAFEARRAY -> IO () prim_System_Win32_Com_Automation_SafeArray_safeArrayDestroyDescriptor :: Ptr SAFEARRAY -> IO Int32 safeArrayGetDim :: SAFEARRAY -> IO Word32 prim_System_Win32_Com_Automation_SafeArray_safeArrayGetDim :: Ptr SAFEARRAY -> IO Word32 safeArrayGetElement :: SAFEARRAY -> Ptr Int32 -> Ptr () -> IO () prim_System_Win32_Com_Automation_SafeArray_safeArrayGetElement :: Ptr SAFEARRAY -> Ptr Int32 -> Ptr () -> IO Int32 safeArrayGetElemsize :: SAFEARRAY -> IO Word32 prim_System_Win32_Com_Automation_SafeArray_safeArrayGetElemsize :: Ptr SAFEARRAY -> IO Word32 safeArrayGetLBound :: SAFEARRAY -> Word32 -> IO Int32 prim_System_Win32_Com_Automation_SafeArray_safeArrayGetLBound :: Ptr SAFEARRAY -> Word32 -> Ptr Int32 -> IO Int32 safeArrayGetUBound :: SAFEARRAY -> Word32 -> IO Int32 prim_System_Win32_Com_Automation_SafeArray_safeArrayGetUBound :: Ptr SAFEARRAY -> Word32 -> Ptr Int32 -> IO Int32 safeArrayLock :: SAFEARRAY -> IO () prim_System_Win32_Com_Automation_SafeArray_safeArrayLock :: Ptr SAFEARRAY -> IO Int32 safeArrayPtrOfIndex :: SAFEARRAY -> Ptr Int32 -> IO (Ptr ()) prim_System_Win32_Com_Automation_SafeArray_safeArrayPtrOfIndex :: Ptr SAFEARRAY -> Ptr Int32 -> Ptr (Ptr ()) -> IO Int32 safeArrayPutElement :: SAFEARRAY -> Ptr Int32 -> Ptr () -> IO () prim_System_Win32_Com_Automation_SafeArray_safeArrayPutElement :: Ptr SAFEARRAY -> Ptr Int32 -> Ptr () -> IO Int32 safeArrayRedim :: SAFEARRAY -> SAFEARRAYBOUND -> IO () prim_System_Win32_Com_Automation_SafeArray_safeArrayRedim :: Ptr SAFEARRAY -> Ptr SAFEARRAYBOUND -> IO Int32 safeArrayUnaccessData :: SAFEARRAY -> IO () prim_System_Win32_Com_Automation_SafeArray_safeArrayUnaccessData :: Ptr SAFEARRAY -> IO Int32 safeArrayUnlock :: SAFEARRAY -> IO () prim_System_Win32_Com_Automation_SafeArray_safeArrayUnlock :: Ptr SAFEARRAY -> IO Int32 module System.Win32.Com.Automation.Connection type DWORD = Word32 type ULONG = Word32 type PCONNECTIONPOINT = IConnectionPoint () type LPCONNECTIONPOINT = IConnectionPoint () getConnectionInterface :: IConnectionPoint a0 -> IO (IID ()) getConnectionPointContainer :: IConnectionPoint a0 -> IO (IConnectionPointContainer ()) advise :: IUnknown a1 -> IConnectionPoint a0 -> IO DWORD unadvise :: DWORD -> IConnectionPoint a0 -> IO () enumConnections :: IConnectionPoint a0 -> IO (IEnumConnections ()) type IConnectionPoint a = IUnknown (IConnectionPoint_ a) data IConnectionPoint_ a iidIConnectionPoint :: IID (IConnectionPoint ()) type PCONNECTIONPOINTCONTAINER = IConnectionPointContainer () type LPCONNECTIONPOINTCONTAINER = IConnectionPointContainer () enumConnectionPoints :: IConnectionPointContainer a0 -> IO (IEnumConnectionPoints ()) findConnectionPoint :: IID a1 -> IConnectionPointContainer a0 -> IO (IConnectionPoint ()) type IConnectionPointContainer a = IUnknown (IConnectionPointContainer_ a) data IConnectionPointContainer_ a iidIConnectionPointContainer :: IID (IConnectionPointContainer ()) type PENUMCONNECTIONS = IEnumConnections () type LPENUMCONNECTIONS = IEnumConnections () data CONNECTDATA TagCONNECTDATA :: IUnknown () -> DWORD -> CONNECTDATA [pUnk] :: CONNECTDATA -> IUnknown () [dwCookie] :: CONNECTDATA -> DWORD writeCONNECTDATA :: Bool -> Ptr CONNECTDATA -> CONNECTDATA -> IO () readCONNECTDATA :: Bool -> Ptr CONNECTDATA -> IO CONNECTDATA sizeofCONNECTDATA :: Word32 type TagCONNECTDATA = CONNECTDATA type PCONNECTDATA0 = TagCONNECTDATA type TagCONNECTDATA0 = CONNECTDATA type LPCONNECTDATA0 = TagCONNECTDATA0 next :: ULONG -> IEnumConnections a0 -> IO [CONNECTDATA] skip :: ULONG -> IEnumConnections a0 -> IO () reset :: IEnumConnections a0 -> IO () clone :: IEnumConnections a0 -> IO (IEnumConnections ()) type IEnumConnections a = IUnknown (IEnumConnections_ a) data IEnumConnections_ a iidIEnumConnections :: IID (IEnumConnections ()) type PENUMCONNECTIONPOINTS = IEnumConnectionPoints () type LPENUMCONNECTIONPOINTS = IEnumConnectionPoints () nextECP :: ULONG -> IEnumConnectionPoints a0 -> IO [IConnectionPoint a1] skipECP :: ULONG -> IEnumConnectionPoints a0 -> IO () resetECP :: IEnumConnectionPoints a0 -> IO () cloneECP :: IEnumConnectionPoints a0 -> IO (IEnumConnectionPoints ()) type IEnumConnectionPoints a = IUnknown (IEnumConnectionPoints_ a) data IEnumConnectionPoints_ a iidIEnumConnectionPoints :: IID (IEnumConnectionPoints ()) module System.Win32.Com.Automation.Base data VARIANT_ VARIANT_ :: VARIANT_ type VARIANT = Ptr VARIANT_ sizeofBSTR :: Word32 iidIDispatch :: IID (IDispatch ()) sizeofVARIANT :: Word32 marshallVARIANT :: VARIANT -> IO VARIANT unmarshallVARIANT :: Ptr a -> IO VARIANT readVARIANT :: Ptr VARIANT -> IO VARIANT writeVARIANT :: Ptr VARIANT -> VARIANT -> IO () copyVARIANT :: VARIANT -> VARIANT -> IO () allocVARIANT :: IO VARIANT writeVarStablePtr :: StablePtr a -> Ptr (StablePtr a) -> IO () prim_readVarStablePtr :: Ptr (StablePtr a) -> Ptr b -> IO Int32 readVarStablePtr :: VARIANT -> IO (StablePtr a) type DISPID = Int32 type PEXCEPINFO = Ptr () data IDispatch_ a IDispatch__ :: IDispatch_ a type IDispatch a = IUnknown (IDispatch_ a) dispatchInvoke :: IDispatch a0 -> DISPID -> LCID -> Bool -> Word32 -> Word32 -> Word32 -> VARIANT -> VARIANT -> IO (PEXCEPINFO, Int32) prim_System_Win32_Com_Automation_Base_dispatchInvoke :: Ptr (IDispatch a) -> Int32 -> Word32 -> Int32 -> Word32 -> Word32 -> Word32 -> VARIANT -> VARIANT -> Ptr (Ptr ()) -> IO Int32 dispatchGetMemberID :: IDispatch a0 -> Ptr String -> LCID -> IO (DISPID, Int32) prim_System_Win32_Com_Automation_Base_dispatchGetMemberID :: Ptr (IDispatch a) -> Ptr String -> Word32 -> Ptr Int32 -> IO Int32 freeExcepInfo :: PEXCEPINFO -> IO () prim_System_Win32_Com_Automation_Base_freeExcepInfo :: Ptr () -> IO () getExcepInfoMessage :: PEXCEPINFO -> IO (Ptr Char) prim_System_Win32_Com_Automation_Base_getExcepInfoMessage :: Ptr () -> IO (Ptr Char) freeVariants :: Word32 -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_freeVariants :: Word32 -> VARIANT -> IO () readVariantTag :: VARIANT -> IO Int32 prim_System_Win32_Com_Automation_Base_readVariantTag :: VARIANT -> IO Int32 variantInit :: VARIANT -> IO () prim_System_Win32_Com_Automation_Base_variantInit :: VARIANT -> IO () writeVarShort :: Int16 -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarShort :: Int16 -> VARIANT -> IO () readVarShort :: VARIANT -> IO Int16 prim_System_Win32_Com_Automation_Base_readVarShort :: VARIANT -> Ptr Int16 -> IO Int32 writeVarInt :: Int32 -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarInt :: Int32 -> VARIANT -> IO () readVarInt :: VARIANT -> IO Int32 prim_System_Win32_Com_Automation_Base_readVarInt :: VARIANT -> Ptr Int32 -> IO Int32 writeVarWord :: Word32 -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarWord :: Word32 -> VARIANT -> IO () readVarWord :: VARIANT -> IO Word32 prim_System_Win32_Com_Automation_Base_readVarWord :: VARIANT -> Ptr Word32 -> IO Int32 writeVarFloat :: Float -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarFloat :: Float -> VARIANT -> IO () readVarFloat :: VARIANT -> IO Float prim_System_Win32_Com_Automation_Base_readVarFloat :: VARIANT -> Ptr Float -> IO Int32 writeVarDouble :: Double -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarDouble :: Double -> VARIANT -> IO () readVarDouble :: VARIANT -> IO Double prim_System_Win32_Com_Automation_Base_readVarDouble :: VARIANT -> Ptr Double -> IO Int32 writeVarString :: Ptr Char -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarString :: Ptr Char -> VARIANT -> IO () readVarString :: VARIANT -> IO (Ptr (Ptr Char), Ptr VARIANT) prim_System_Win32_Com_Automation_Base_readVarString :: VARIANT -> Ptr (Ptr Char) -> Ptr VARIANT -> IO Int32 writeVarDispatch :: IDispatch a0 -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarDispatch :: Ptr (IDispatch a) -> VARIANT -> IO () readVarDispatch :: VARIANT -> IO (Ptr (Ptr ()), Ptr VARIANT) prim_System_Win32_Com_Automation_Base_readVarDispatch :: VARIANT -> Ptr (Ptr ()) -> Ptr VARIANT -> IO Int32 writeVarOptional :: VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarOptional :: VARIANT -> IO () writeVarError :: Int32 -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarError :: Int32 -> VARIANT -> IO () readVarError :: VARIANT -> IO Int32 prim_System_Win32_Com_Automation_Base_readVarError :: VARIANT -> Ptr Int32 -> IO Int32 writeVarBool :: Bool -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarBool :: Int32 -> VARIANT -> IO () readVarBool :: VARIANT -> IO Bool prim_System_Win32_Com_Automation_Base_readVarBool :: VARIANT -> Ptr Int32 -> IO Int32 writeVarUnknown :: IUnknown a0 -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarUnknown :: Ptr (IUnknown a) -> VARIANT -> IO () readVarUnknown :: VARIANT -> IO (Ptr (Ptr ()), Ptr VARIANT) prim_System_Win32_Com_Automation_Base_readVarUnknown :: VARIANT -> Ptr (Ptr ()) -> Ptr VARIANT -> IO Int32 writeVarByte :: Octet -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarByte :: Word8 -> VARIANT -> IO () readVarByte :: VARIANT -> IO Octet prim_System_Win32_Com_Automation_Base_readVarByte :: VARIANT -> Ptr Word8 -> IO Int32 writeVarEmpty :: VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarEmpty :: VARIANT -> IO () writeVarNull :: VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarNull :: VARIANT -> IO () readVarNull :: VARIANT -> IO () prim_System_Win32_Com_Automation_Base_readVarNull :: VARIANT -> IO Int32 writeVarCurrency :: Int32 -> Word32 -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarCurrency :: Int32 -> Word32 -> VARIANT -> IO () readVarCurrency :: VARIANT -> IO (Int32, Word32) prim_System_Win32_Com_Automation_Base_readVarCurrency :: VARIANT -> Ptr Int32 -> Ptr Word32 -> IO Int32 writeVarWord64 :: Word32 -> Word32 -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarWord64 :: Word32 -> Word32 -> VARIANT -> IO () readVarWord64 :: VARIANT -> IO (Word32, Word32) prim_System_Win32_Com_Automation_Base_readVarWord64 :: VARIANT -> Ptr Word32 -> Ptr Word32 -> IO Int32 writeVarVariant :: VARIANT -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_writeVarVariant :: VARIANT -> VARIANT -> IO () readVarVariant :: VARIANT -> IO (Ptr VARIANT) prim_System_Win32_Com_Automation_Base_readVarVariant :: VARIANT -> Ptr VARIANT -> IO Int32 writeVarSAFEARRAY :: VARIANT -> SAFEARRAY -> Int32 -> IO () prim_System_Win32_Com_Automation_Base_writeVarSAFEARRAY :: VARIANT -> Ptr SAFEARRAY -> Int32 -> IO () readVarSAFEARRAY :: VARIANT -> Int32 -> IO (Ptr ()) prim_System_Win32_Com_Automation_Base_readVarSAFEARRAY :: VARIANT -> Ptr () -> Int32 -> IO Int32 primCopyVARIANT :: VARIANT -> VARIANT -> IO () prim_System_Win32_Com_Automation_Base_primCopyVARIANT :: VARIANT -> VARIANT -> IO Int32 primVARIANTClear :: VARIANT -> IO () prim_System_Win32_Com_Automation_Base_primVARIANTClear :: VARIANT -> IO Int32 primClockToDate :: Int32 -> IO Double prim_System_Win32_Com_Automation_Base_primClockToDate :: Int32 -> Ptr Double -> IO Int32 -- | Accessing COM / OLE Automation objects from Haskell clients. This -- library provides a fairly high-level view of Automation objects and -- the data values that their methods support. Transparent marshalling of -- arguments and invocation over Automation objects is supported via the -- Variant class and a family of invoke methods. This is -- also extended to cover the properties/fields of such objects. module System.Win32.Com.Automation data IDispatch_ a type IDispatch a = IUnknown (IDispatch_ a) iidIDispatch :: IID (IDispatch ()) queryIUnknown :: IID (IUnknown a) -> IUnknown () -> IO (IUnknown a) queryIDispatch :: IID (IUnknown a) -> IDispatch () -> IO (IUnknown a) -- | createObject progid is the Haskell equivalent of VB's -- CreateObject, trying to instantiate a new Automation object -- via an IDispatch interfac pointer. createObject :: ProgID -> IO (IDispatch a) getObject :: String -> IO (IDispatch a) getActiveObject :: ProgID -> IO (IDispatch a) getFileObject :: String -> ProgID -> IO (IDispatch a) -- | Automation Member functions or properties are identified by -- either name or DISPID. The latter saving you from having to do -- a method name resolution for each invocation. type Member = String type DISPID = Int32 -- | getMemberID memberName obj translates the memberName -- string into the unique DISPID representing that -- method/property. If unknown, a COM exception is raised. getMemberID :: Member -> IDispatch a -> IO DISPID type VARIANT = Ptr VARIANT_ sizeofVARIANT :: Word32 marshallVARIANT :: VARIANT -> IO VARIANT unmarshallVARIANT :: Ptr a -> IO VARIANT readVARIANT :: Ptr VARIANT -> IO VARIANT writeVARIANT :: Ptr VARIANT -> VARIANT -> IO () copyVARIANT :: VARIANT -> VARIANT -> IO () allocVARIANT :: IO VARIANT -- | VarIn is the marshaller for Variant arguments; a -- function that takes (a pointer to) a VARIANT structure and fills it in -- with value it encodes. type VarIn = VARIANT -> IO () -- | VarRes is the unmarshaller for 'Variant results; a function -- that takes (a pointer to) the VARIANT result and unscrambles its -- contents into the Haskell value representing that Variant -- result. type VarRes a = VARIANT -> IO a -- | ArgIn is the extension of VarIn, returning a -- VarIn marshaller for some Variant-supported value of -- type a. type ArgIn a = a -> VarIn -- | ArgInOut a b is the general 'in-out' parameter marshaller and -- result unmarshaller. type ArgInOut a b = a -> ArgOut b -- | ArgOut a represent an in-out Automation parameter, -- pairing a marshaller with an unmarshaller for some type. Notice that -- the input value being marshalled may not have the same type as the -- output/result value being unmarshalled. type ArgOut a = (VarIn, ArgRes a) -- | ArgRes is the Variant unmarshaller for results of type -- a, where is one of the Variant supported types. type ArgRes a = VarRes a class Variant a inVariant :: Variant a => ArgIn a inVarList :: Variant a => ArgIn [a] inVarIUnknown :: Variant a => ArgIn (IUnknown a) vtEltType :: Variant a => a -> VARENUM resVariant :: Variant a => ArgRes a defaultVariant :: Variant a => a resVarList :: Variant a => ArgRes [a] resVarIUnknown :: Variant a => ArgRes (IUnknown a) resVarIDispatch :: Variant a => ArgRes (IDispatch a) inoutVariant :: (Variant a, Variant b) => ArgInOut a b outVariant :: Variant a => ArgOut a defaultEmpty :: () inEmpty :: ArgIn () resEmpty :: ArgRes () inoutEmpty :: () -> (VarIn, ArgRes ()) outEmpty :: (VarIn, ArgRes ()) inNoArg :: ArgIn () defaultInt :: Int inInt :: ArgIn Int resInt :: ArgRes Int inoutInt :: Int -> (VarIn, ArgRes Int) outInt :: (VarIn, ArgRes Int) defaultInt8 :: Int8 inInt8 :: ArgIn Int8 resInt8 :: ArgRes Int8 inoutInt8 :: Int8 -> (VarIn, ArgRes Int8) outInt8 :: (VarIn, ArgRes Int8) defaultInt16 :: Int16 inInt16 :: ArgIn Int16 resInt16 :: ArgRes Int16 inoutInt16 :: Int16 -> (VarIn, ArgRes Int16) outInt16 :: (VarIn, ArgRes Int16) defaultInt32 :: Int32 inInt32 :: ArgIn Int32 resInt32 :: ArgRes Int32 inoutInt32 :: Int32 -> (VarIn, ArgRes Int32) outInt32 :: (VarIn, ArgRes Int32) defaultInt64 :: Int64 inInt64 :: ArgIn Int64 resInt64 :: ArgRes Int64 inoutInt64 :: Int64 -> (VarIn, ArgRes Int64) outInt64 :: (VarIn, ArgRes Int64) defaultInteger :: Int64 inInteger :: ArgIn Int64 resInteger :: ArgRes Int64 inoutInteger :: Int64 -> (VarIn, ArgRes Int64) outInteger :: (VarIn, ArgRes Int64) defaultHRESULT :: Int32 inHRESULT :: ArgIn Int32 resHRESULT :: ArgRes Int32 inoutHRESULT :: Int32 -> (VarIn, ArgRes Int32) outHRESULT :: (VarIn, ArgRes Int32) defaultWord :: Int inWord :: ArgIn Int resWord :: ArgRes Int inoutWord :: Int -> (VarIn, ArgRes Int) outWord :: (VarIn, ArgRes Int) defaultWord8 :: Word8 inWord8 :: ArgIn Word8 resWord8 :: ArgRes Word8 inoutWord8 :: Word8 -> (VarIn, ArgRes Word8) outWord8 :: (VarIn, ArgRes Word8) defaultWord16 :: Word16 inWord16 :: ArgIn Word16 resWord16 :: ArgRes Word16 inoutWord16 :: Word16 -> (VarIn, ArgRes Word16) outWord16 :: (VarIn, ArgRes Word16) defaultWord32 :: Word32 inWord32 :: ArgIn Word32 resWord32 :: ArgRes Word32 inoutWord32 :: Word32 -> (VarIn, ArgRes Word32) outWord32 :: (VarIn, ArgRes Word32) defaultWord64 :: Word64 inWord64 :: ArgIn Word64 resWord64 :: ArgRes Word64 inoutWord64 :: Word64 -> (VarIn, ArgRes Word64) outWord64 :: (VarIn, ArgRes Word64) defaultBool :: Bool inBool :: ArgIn Bool resBool :: ArgRes Bool inoutBool :: Bool -> (VarIn, ArgRes Bool) outBool :: (VarIn, ArgRes Bool) defaultByte :: Byte inByte :: ArgIn Byte resByte :: ArgRes Byte inoutByte :: Byte -> (VarIn, ArgRes Byte) outByte :: (VarIn, ArgRes Byte) defaultChar :: Char inChar :: ArgIn Char resChar :: ArgRes Char inoutChar :: Char -> (VarIn, ArgRes Char) outChar :: (VarIn, ArgRes Char) defaultFloat :: Float inFloat :: ArgIn Float resFloat :: ArgRes Float inoutFloat :: Float -> (VarIn, ArgRes Float) outFloat :: (VarIn, ArgRes Float) defaultDouble :: Double inDouble :: ArgIn Double resDouble :: ArgRes Double inoutDouble :: Double -> (VarIn, ArgRes Double) outDouble :: (VarIn, ArgRes Double) defaultString :: String inString :: ArgIn String resString :: ArgRes String inoutString :: String -> (VarIn, ArgRes String) outString :: (VarIn, ArgRes String) defaultIUnknown :: IUnknown a inIUnknown :: ArgIn (IUnknown a) resIUnknown :: ArgRes (IUnknown a) inoutIUnknown :: IUnknown a1 -> (VarIn, ArgRes (IUnknown a2)) outIUnknown :: (VarIn, ArgRes (IUnknown a)) defaultIDispatch :: IDispatch a inIDispatch :: ArgIn (IDispatch a) resIDispatch :: ArgRes (IDispatch a) inoutIDispatch :: IDispatch a1 -> (VarIn, ArgRes (IDispatch a2)) outIDispatch :: (VarIn, ArgRes (IDispatch a)) defaultDate :: Date inDate :: ArgIn Date resDate :: ArgRes Date inoutDate :: Date -> (VarIn, ArgRes Date) outDate :: (VarIn, ArgRes Date) type Date = Double defaultError :: Int32 inError :: ArgIn Int32 resError :: ArgRes Int32 inoutError :: Int32 -> (VarIn, ArgRes Int32) outError :: (VarIn, ArgRes Int32) defaultMaybe :: Variant a => Maybe a inMaybe :: Variant a => ArgIn (Maybe a) resMaybe :: Variant a => ArgRes (Maybe a) inoutMaybe :: Variant a => ArgInOut (Maybe a) (Maybe a) outMaybe :: Variant a => (VarIn, ArgRes (Maybe a)) inOptional :: VarIn -> ArgIn a -> ArgIn (Maybe a) defaultCurrency :: Currency inCurrency :: ArgIn Currency resCurrency :: ArgRes Currency inoutCurrency :: Currency -> (VarIn, ArgRes Currency) outCurrency :: (VarIn, ArgRes Currency) type Currency = Int64 defaultSafeArray :: Variant a => SafeArray a inSafeArray :: Variant a => ArgIn (SafeArray a) resSafeArray :: Variant a => ArgRes (SafeArray a) inoutSafeArray :: Variant a => ArgInOut (SafeArray a) (SafeArray a) outSafeArray :: Variant a => ArgOut (SafeArray a) data SafeArray a mkSafeArray :: Variant a => SAFEARRAY -> SafeArray a defaultEnum :: Enum a => a inEnum :: Enum a => ArgIn a resEnum :: Enum a => ArgRes a inoutEnum :: Enum a => ArgInOut a a outEnum :: Enum a => ArgOut a vtTypeEnum :: Enum a => a -> VARENUM inHaskellValue :: ArgIn a unsafeResHaskellValue :: ArgRes a unsafeOutHaskellValue :: (Ptr (StablePtr a1) -> IO (), ArgRes a2) defaultSqlNull :: SqlNull inSqlNull :: ArgIn SqlNull resSqlNull :: ArgRes SqlNull inoutSqlNull :: SqlNull -> (VarIn, ArgRes SqlNull) outSqlNull :: (VarIn, ArgRes SqlNull) data SqlNull SqlNull :: SqlNull inGUID :: ArgIn GUID outGUID :: (VarIn, ArgRes GUID) inDefaultValue :: VarIn -> ArgIn a -> ArgIn a noInArg :: VarIn propertyGet :: Member -> [VarIn] -> ArgOut a -> IDispatch d -> IO a propertySet :: Member -> [VarIn] -> IDispatch d -> IO () propertySetGet :: Member -> [VarIn] -> ArgOut a -> IDispatch d -> IO a propertyGet2 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch d -> IO (a1, a2) propertyGet3 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch d -> IO (a1, a2, a3) propertyGet4 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch d -> IO (a1, a2, a3, a4) propertyGetID :: DISPID -> [VarIn] -> ArgOut a -> IDispatch d -> IO a propertySetID :: DISPID -> [VarIn] -> IDispatch d -> IO () propertySetGetID :: DISPID -> [VarIn] -> ArgOut a -> IDispatch d -> IO a propertyGet2ID :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch d -> IO (a1, a2) propertyGet3ID :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch d -> IO (a1, a2, a3) propertyGet4ID :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch d -> IO (a1, a2, a3, a4) function1 :: Member -> [VarIn] -> ArgOut a1 -> IDispatch i -> IO a1 function2 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch i -> IO (a1, a2) function3 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch i -> IO (a1, a2, a3) function4 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch i -> IO (a1, a2, a3, a4) function5 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> IDispatch i -> IO (a1, a2, a3, a4, a5) function6 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6) functionID1 :: DISPID -> [VarIn] -> ArgOut a1 -> IDispatch i -> IO a1 functionID2 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch i -> IO (a1, a2) functionID3 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch i -> IO (a1, a2, a3) functionID4 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch i -> IO (a1, a2, a3, a4) functionID5 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> IDispatch i -> IO (a1, a2, a3, a4, a5) functionID6 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6) method0 :: Member -> [VarIn] -> IDispatch i -> IO () method1 :: Member -> [VarIn] -> ArgOut a1 -> IDispatch i -> IO a1 method2 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch i -> IO (a1, a2) method3 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch i -> IO (a1, a2, a3) method4 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch i -> IO (a1, a2, a3, a4) method5 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> IDispatch i -> IO (a1, a2, a3, a4, a5) method6 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6) method7 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> ArgOut a7 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6, a7) method8 :: Member -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> ArgOut a7 -> ArgOut a8 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6, a7, a8) methodID0 :: DISPID -> [VarIn] -> IDispatch i -> IO () methodID1 :: DISPID -> [VarIn] -> ArgOut a1 -> IDispatch i -> IO a1 methodID2 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> IDispatch i -> IO (a1, a2) methodID3 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> IDispatch i -> IO (a1, a2, a3) methodID4 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> IDispatch i -> IO (a1, a2, a3, a4) methodID5 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> IDispatch i -> IO (a1, a2, a3, a4, a5) methodID6 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6) methodID7 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> ArgOut a7 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6, a7) methodID8 :: DISPID -> [VarIn] -> ArgOut a1 -> ArgOut a2 -> ArgOut a3 -> ArgOut a4 -> ArgOut a5 -> ArgOut a6 -> ArgOut a7 -> ArgOut a8 -> IDispatch i -> IO (a1, a2, a3, a4, a5, a6, a7, a8) unmarshallVariants0 :: VARIANT -> IO () unmarshallVariants1 :: ArgRes a -> VARIANT -> IO a unmarshallVariants2 :: ArgRes a -> ArgRes b -> VARIANT -> IO (a, b) unmarshallVariants3 :: ArgRes a -> ArgRes b -> ArgRes c -> VARIANT -> IO (a, b, c) unmarshallVariants4 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d -> VARIANT -> IO (a, b, c, d) unmarshallVariants5 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d -> ArgRes e -> VARIANT -> IO (a, b, c, d, e) unmarshallVariants6 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6) unmarshallVariants7 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> ArgRes a7 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6, a7) unmarshallVariants8 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> ArgRes a7 -> ArgRes a8 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6, a7, a8) readVariants0 :: VARIANT -> IO () readVariants1 :: ArgRes a -> VARIANT -> IO a readVariants2 :: ArgRes a -> ArgRes b -> VARIANT -> IO (a, b) readVariants3 :: ArgRes a -> ArgRes b -> ArgRes c -> VARIANT -> IO (a, b, c) readVariants4 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d -> VARIANT -> IO (a, b, c, d) readVariants5 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d -> ArgRes e -> VARIANT -> IO (a, b, c, d, e) readVariants6 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6) readVariants7 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> ArgRes a7 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6, a7) readVariants8 :: ArgRes a1 -> ArgRes a2 -> ArgRes a3 -> ArgRes a4 -> ArgRes a5 -> ArgRes a6 -> ArgRes a7 -> ArgRes a8 -> VARIANT -> IO (a1, a2, a3, a4, a5, a6, a7, a8) method_0_0 :: Member -> IDispatch i -> IO () method_1_0 :: Variant a => Member -> a -> IDispatch i -> IO () method_2_0 :: (Variant a1, Variant a2) => Member -> a1 -> a2 -> IDispatch i -> IO () method_3_0 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO () method_4_0 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO () method_0_1 :: Variant a1 => Member -> IDispatch i -> IO a1 method_1_1 :: (Variant a, Variant a1) => Member -> a -> IDispatch i -> IO a1 method_2_1 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> IDispatch i -> IO a3 method_3_1 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO a4 method_4_1 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO a5 method_0_2 :: (Variant a1, Variant a2) => Member -> IDispatch i -> IO (a1, a2) method_1_2 :: (Variant a, Variant a1, Variant a2) => Member -> a -> IDispatch i -> IO (a1, a2) method_2_2 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> IDispatch i -> IO (a3, a4) method_3_2 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO (a4, a5) method_4_2 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5, Variant a6) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO (a5, a6) function_0_1 :: Variant a1 => Member -> IDispatch i -> IO a1 function_1_1 :: (Variant a, Variant a1) => Member -> a -> IDispatch i -> IO a1 function_2_1 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> IDispatch i -> IO a3 function_3_1 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO a4 function_4_1 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO a5 function_0_2 :: (Variant a1, Variant a2) => Member -> IDispatch i -> IO (a1, a2) function_1_2 :: (Variant a, Variant a1, Variant a2) => Member -> a -> IDispatch i -> IO (a1, a2) function_2_2 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> IDispatch i -> IO (a3, a4) function_3_2 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> IDispatch i -> IO (a4, a5) function_4_2 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5, Variant a6) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch i -> IO (a5, a6) propertyGet_0 :: Variant a => Member -> IDispatch d -> IO a propertyGet_1 :: (Variant a1, Variant a2) => Member -> a1 -> IDispatch d -> IO a2 propertyGet_2 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> IDispatch d -> IO a3 propertyGet_3 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> IDispatch d -> IO a4 propertyGet_4 :: (Variant a1, Variant a2, Variant a3, Variant a4, Variant a5) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch d -> IO a5 propertySet_1 :: Variant a => Member -> a -> IDispatch d -> IO () propertySet_2 :: (Variant a1, Variant a2) => Member -> a1 -> a2 -> IDispatch d -> IO () propertySet_3 :: (Variant a1, Variant a2, Variant a3) => Member -> a1 -> a2 -> a3 -> IDispatch d -> IO () propertySet_4 :: (Variant a1, Variant a2, Variant a3, Variant a4) => Member -> a1 -> a2 -> a3 -> a4 -> IDispatch d -> IO () invokePropertyGet :: DISPID -> [VarIn] -> [VarIn] -> IDispatch d -> IO VARIANT invokePropertySet :: DISPID -> [VarIn] -> [VarIn] -> IDispatch d -> IO VARIANT invokeMethod :: DISPID -> [VarIn] -> [VarIn] -> IDispatch d -> IO VARIANT invokeFunction :: DISPID -> [VarIn] -> [VarIn] -> IDispatch d -> IO VARIANT enumVariants :: Variant a => IDispatch b -> IO (Int, [a]) marshallCurrency :: Int64 -> IO Int64 unmarshallCurrency :: Int64 -> IO Int64 readCurrency :: Ptr Int64 -> IO Int64 writeCurrency :: Ptr Int64 -> Int64 -> IO () sizeofCurrency :: Word32 data VARENUM VT_EMPTY :: VARENUM VT_NULL :: VARENUM VT_I2 :: VARENUM VT_I4 :: VARENUM VT_R4 :: VARENUM VT_R8 :: VARENUM VT_CY :: VARENUM VT_DATE :: VARENUM VT_BSTR :: VARENUM VT_DISPATCH :: VARENUM VT_ERROR :: VARENUM VT_BOOL :: VARENUM VT_VARIANT :: VARENUM VT_UNKNOWN :: VARENUM VT_DECIMAL :: VARENUM VT_I1 :: VARENUM VT_UI1 :: VARENUM VT_UI2 :: VARENUM VT_UI4 :: VARENUM VT_I8 :: VARENUM VT_UI8 :: VARENUM VT_INT :: VARENUM VT_UINT :: VARENUM VT_VOID :: VARENUM VT_HRESULT :: VARENUM VT_PTR :: VARENUM VT_SAFEARRAY :: VARENUM VT_CARRAY :: VARENUM VT_USERDEFINED :: VARENUM VT_LPSTR :: VARENUM VT_LPWSTR :: VARENUM VT_FILETIME :: VARENUM VT_BLOB :: VARENUM VT_STREAM :: VARENUM VT_STORAGE :: VARENUM VT_STREAMED_OBJECT :: VARENUM VT_STORED_OBJECT :: VARENUM VT_BLOB_OBJECT :: VARENUM VT_CF :: VARENUM VT_CLSID :: VARENUM VT_BSTR_BLOB :: VARENUM VT_VECTOR :: VARENUM VT_ARRAY :: VARENUM VT_BYREF :: VARENUM VT_RESERVED :: VARENUM VT_ILLEGAL :: VARENUM VT_ILLEGALMASKED :: VARENUM VT_TYPEMASK :: VARENUM marshallVARENUM :: VARENUM -> IO Int16 unmarshallVARENUM :: Int16 -> IO VARENUM readVARENUM :: Ptr Int16 -> IO VARENUM writeVARENUM :: Ptr Int16 -> VARENUM -> IO () sizeofVARENUM :: Word32 sizeofVARIANT_BOOL :: Word32 marshallVARIANT_BOOL :: Bool -> IO Int16 unmarshallVARIANT_BOOL :: Int16 -> IO Bool readVARIANT_BOOL :: Ptr Int16 -> IO Bool writeVARIANT_BOOL :: Ptr Int16 -> Bool -> IO () vARIANT_TRUE :: Int vARIANT_FALSE :: Int marshallVariant :: Variant a => a -> IO VARIANT unmarshallVariant :: Variant a => VARIANT -> IO a readVariant :: Variant a => VARIANT -> IO a writeVariant :: Variant a => VARIANT -> a -> IO () readVarEnum :: VARIANT -> IO VARENUM readVarInt :: VARIANT -> IO Int32 readVarFloat :: VARIANT -> IO Float readVarDouble :: VARIANT -> IO Double readVarString :: VARIANT -> IO (Ptr (Ptr Char), Ptr VARIANT) readVarBool :: VARIANT -> IO Bool marshallSafeArray :: SafeArray a -> IO (ForeignPtr SAFEARRAY) unmarshallSafeArray :: Ptr a -> IO (SafeArray a) writeSafeArray :: Ptr (SafeArray a) -> SafeArray a -> IO () readSafeArray :: Variant a => Bool -> Ptr (SafeArray a) -> IO (SafeArray a) freeSafeArray :: SafeArray a -> IO () readSA :: Bool -> Ptr (SafeArray a) -> VARENUM -> IO SAFEARRAY clockTimeToDate :: ClockTime -> IO Date instance GHC.Show.Show System.Win32.Com.Automation.VARENUM instance GHC.Classes.Eq System.Win32.Com.Automation.VARENUM instance forall a. System.Win32.Com.Automation.Variant a => System.Win32.Com.Automation.Variant (System.Win32.Com.Automation.SafeArray a) instance forall a. System.Win32.Com.Automation.Variant a => System.Win32.Com.Automation.Variant [a] instance System.Win32.Com.Automation.Variant GHC.Types.Char instance forall a. System.Win32.Com.Automation.Variant a => System.Win32.Com.Automation.Variant (System.Win32.Com.Base.IUnknown_ a) instance forall a. System.Win32.Com.Automation.Variant (System.Win32.Com.Automation.Base.IDispatch_ a) instance System.Win32.Com.Automation.Variant () instance System.Win32.Com.Automation.Variant GHC.Types.Bool instance System.Win32.Com.Automation.Variant GHC.Types.Int instance System.Win32.Com.Automation.Variant GHC.Int.Int32 instance System.Win32.Com.Automation.Variant GHC.Int.Int16 instance System.Win32.Com.Automation.Variant GHC.Int.Int8 instance System.Win32.Com.Automation.Variant GHC.Int.Int64 instance System.Win32.Com.Automation.Variant GHC.Word.Word8 instance System.Win32.Com.Automation.Variant GHC.Word.Word16 instance System.Win32.Com.Automation.Variant GHC.Word.Word32 instance System.Win32.Com.Automation.Variant GHC.Word.Word64 instance System.Win32.Com.Automation.Variant GHC.Types.Float instance System.Win32.Com.Automation.Variant GHC.Types.Double instance forall a. System.Win32.Com.Automation.Variant a => System.Win32.Com.Automation.Variant (GHC.Maybe.Maybe a) instance forall a. System.Win32.Com.Automation.Variant (GHC.Ptr.Ptr a) instance System.Win32.Com.Automation.Variant System.Win32.Com.Automation.SafeArray.SAFEARRAY instance GHC.Enum.Enum System.Win32.Com.Automation.VARENUM module System.Win32.Com.Automation.TypeLib data SAFEARRAYBOUND TagSAFEARRAYBOUND :: ULONG -> LONG -> SAFEARRAYBOUND [cElements] :: SAFEARRAYBOUND -> ULONG [lLbound] :: SAFEARRAYBOUND -> LONG writeSAFEARRAYBOUND :: Ptr SAFEARRAYBOUND -> SAFEARRAYBOUND -> IO () readSAFEARRAYBOUND :: Ptr SAFEARRAYBOUND -> IO SAFEARRAYBOUND sizeofSAFEARRAYBOUND :: Word32 type LPSAFEARRAYBOUND = SAFEARRAYBOUND type DISPID = LONG type MEMBERID = DISPID type HREFTYPE = DWORD data TYPEKIND TKIND_ENUM :: TYPEKIND TKIND_RECORD :: TYPEKIND TKIND_MODULE :: TYPEKIND TKIND_INTERFACE :: TYPEKIND TKIND_DISPATCH :: TYPEKIND TKIND_COCLASS :: TYPEKIND TKIND_ALIAS :: TYPEKIND TKIND_UNION :: TYPEKIND TKIND_MAX :: TYPEKIND type IHC_TAG_4 = TYPEDESC type IHC_TAG_5 = ARRAYDESC data IHC_TAG_3 Lptdesc :: Maybe IHC_TAG_4 -> IHC_TAG_3 Lpadesc :: Maybe IHC_TAG_5 -> IHC_TAG_3 Hreftype :: HREFTYPE -> IHC_TAG_3 IHC_TAG_3_Anon :: IHC_TAG_3 marshallIHC_TAG_3 :: IHC_TAG_3 -> IO (IHC_TAG_3, Word16) unmarshallIHC_TAG_3 :: IHC_TAG_3 -> Word16 -> IO IHC_TAG_3 writeIHC_TAG_3 :: (Word16 -> IO ()) -> Ptr IHC_TAG_3 -> IHC_TAG_3 -> IO () readIHC_TAG_3 :: IO Word16 -> Ptr IHC_TAG_3 -> IO IHC_TAG_3 sizeofIHC_TAG_3 :: Word32 freeIHC_TAG_3 :: Word16 -> Ptr IHC_TAG_3 -> IO () type IHC_TAG_2 = IHC_TAG_3 data TYPEDESC TagTYPEDESC :: IHC_TAG_3 -> VARTYPE -> TYPEDESC [iHC_TAG_1] :: TYPEDESC -> IHC_TAG_3 [vt] :: TYPEDESC -> VARTYPE writeTYPEDESC :: Ptr TYPEDESC -> TYPEDESC -> IO () readTYPEDESC :: Ptr TYPEDESC -> IO TYPEDESC sizeofTYPEDESC :: Word32 data ARRAYDESC TagARRAYDESC :: TYPEDESC -> [SAFEARRAYBOUND] -> ARRAYDESC [tdescElem] :: ARRAYDESC -> TYPEDESC [rgbounds] :: ARRAYDESC -> [SAFEARRAYBOUND] freeARRAYDESC :: Ptr ARRAYDESC -> IO () writeARRAYDESC :: Ptr ARRAYDESC -> ARRAYDESC -> IO () readARRAYDESC :: Ptr ARRAYDESC -> IO ARRAYDESC sizeofARRAYDESC :: Word32 type VARIANTARG = VARIANT data PARAMDESCEX TagPARAMDESCEX :: ULONG -> VARIANT -> PARAMDESCEX [cBytes] :: PARAMDESCEX -> ULONG [varDefaultValue] :: PARAMDESCEX -> VARIANT freePARAMDESCEX :: Ptr PARAMDESCEX -> IO () writePARAMDESCEX :: Ptr PARAMDESCEX -> PARAMDESCEX -> IO () readPARAMDESCEX :: Ptr PARAMDESCEX -> IO PARAMDESCEX sizeofPARAMDESCEX :: Word32 type LPPARAMDESCEX = Maybe PARAMDESCEX data PARAMDESC TagPARAMDESC :: LPPARAMDESCEX -> USHORT -> PARAMDESC [pparamdescex] :: PARAMDESC -> LPPARAMDESCEX [wParamFlags] :: PARAMDESC -> USHORT freePARAMDESC :: Ptr PARAMDESC -> IO () writePARAMDESC :: Ptr PARAMDESC -> PARAMDESC -> IO () readPARAMDESC :: Ptr PARAMDESC -> IO PARAMDESC sizeofPARAMDESC :: Word32 type LPPARAMDESC = PARAMDESC pARAMFLAG_NONE :: USHORT pARAMFLAG_FIN :: USHORT pARAMFLAG_FOUT :: USHORT pARAMFLAG_FLCID :: USHORT pARAMFLAG_FRETVAL :: USHORT pARAMFLAG_FOPT :: USHORT pARAMFLAG_FHASDEFAULT :: USHORT data IDLDESC TagIDLDESC :: ULONG -> USHORT -> IDLDESC [dwReserved] :: IDLDESC -> ULONG [wIDLFlags] :: IDLDESC -> USHORT writeIDLDESC :: Ptr IDLDESC -> IDLDESC -> IO () readIDLDESC :: Ptr IDLDESC -> IO IDLDESC sizeofIDLDESC :: Word32 type LPIDLDESC = IDLDESC iDLFLAG_NONE :: USHORT iDLFLAG_FIN :: USHORT iDLFLAG_FOUT :: USHORT iDLFLAG_FLCID :: USHORT iDLFLAG_FRETVAL :: USHORT data ELEMDESC TagELEMDESC :: TYPEDESC -> PARAMDESC -> ELEMDESC [tdesc] :: ELEMDESC -> TYPEDESC [paramdesc] :: ELEMDESC -> PARAMDESC freeELEMDESC :: Ptr ELEMDESC -> IO () writeELEMDESC :: Ptr ELEMDESC -> ELEMDESC -> IO () readELEMDESC :: Ptr ELEMDESC -> IO ELEMDESC sizeofELEMDESC :: Word32 data TYPEATTR TagTYPEATTR :: GUID -> LCID -> DWORD -> MEMBERID -> MEMBERID -> LPOLESTR -> ULONG -> TYPEKIND -> WORD -> WORD -> WORD -> WORD -> WORD -> WORD -> WORD -> WORD -> TYPEDESC -> IDLDESC -> TYPEATTR [guid] :: TYPEATTR -> GUID [lcid] :: TYPEATTR -> LCID [dwReserved0] :: TYPEATTR -> DWORD [memidConstructor] :: TYPEATTR -> MEMBERID [memidDestructor] :: TYPEATTR -> MEMBERID [lpstrSchema] :: TYPEATTR -> LPOLESTR [cbSizeInstance] :: TYPEATTR -> ULONG [typekind] :: TYPEATTR -> TYPEKIND [cFuncs] :: TYPEATTR -> WORD [cVars] :: TYPEATTR -> WORD [cImplTypes] :: TYPEATTR -> WORD [cbSizeVft] :: TYPEATTR -> WORD [cbAlignment] :: TYPEATTR -> WORD [wTypeFlags] :: TYPEATTR -> WORD [wMajorVerNum] :: TYPEATTR -> WORD [wMinorVerNum] :: TYPEATTR -> WORD [tdescAlias] :: TYPEATTR -> TYPEDESC [idldescType] :: TYPEATTR -> IDLDESC writeTYPEATTR :: Ptr TYPEATTR -> TYPEATTR -> IO () readTYPEATTR :: Bool -> Ptr TYPEATTR -> IO TYPEATTR sizeofTYPEATTR :: Word32 type LPTYPEATTR = TYPEATTR data DISPPARAMS TagDISPPARAMS :: [VARIANT] -> [Int32] -> DISPPARAMS [rgvarg] :: DISPPARAMS -> [VARIANT] [rgdispidNamedArgs] :: DISPPARAMS -> [Int32] freeDISPPARAMS :: Ptr DISPPARAMS -> IO () writeDISPPARAMS :: Ptr DISPPARAMS -> DISPPARAMS -> IO () readDISPPARAMS :: Ptr DISPPARAMS -> IO DISPPARAMS sizeofDISPPARAMS :: Word32 data EXCEPINFO TagEXCEPINFO :: WORD -> WORD -> String -> String -> String -> DWORD -> ULONG -> ULONG -> SCODE -> EXCEPINFO [wCode] :: EXCEPINFO -> WORD [wReserved] :: EXCEPINFO -> WORD [bstrSource] :: EXCEPINFO -> String [bstrDescription] :: EXCEPINFO -> String [bstrHelpFile] :: EXCEPINFO -> String [dwHelpContext] :: EXCEPINFO -> DWORD [pvReserved] :: EXCEPINFO -> ULONG [pfnDeferredFillIn] :: EXCEPINFO -> ULONG [scode] :: EXCEPINFO -> SCODE freeEXCEPINFO :: Ptr EXCEPINFO -> IO () writeEXCEPINFO :: Ptr EXCEPINFO -> EXCEPINFO -> IO () readEXCEPINFO :: Ptr EXCEPINFO -> IO EXCEPINFO sizeofEXCEPINFO :: Word32 data CALLCONV CC_FASTCALL :: CALLCONV CC_CDECL :: CALLCONV CC_MSCPASCAL :: CALLCONV CC_PASCAL :: CALLCONV CC_MACPASCAL :: CALLCONV CC_STDCALL :: CALLCONV CC_FPFASTCALL :: CALLCONV CC_SYSCALL :: CALLCONV CC_MPWCDECL :: CALLCONV CC_MPWPASCAL :: CALLCONV CC_MAX :: CALLCONV data FUNCKIND FUNC_VIRTUAL :: FUNCKIND FUNC_PUREVIRTUAL :: FUNCKIND FUNC_NONVIRTUAL :: FUNCKIND FUNC_STATIC :: FUNCKIND FUNC_DISPATCH :: FUNCKIND data INVOKEKIND INVOKEKINDList__ :: [INVOKEKIND] -> INVOKEKIND INVOKE_FUNC :: INVOKEKIND INVOKE_PROPERTYGET :: INVOKEKIND INVOKE_PROPERTYPUT :: INVOKEKIND INVOKE_PROPERTYPUTREF :: INVOKEKIND data VARKIND VAR_PERINSTANCE :: VARKIND VAR_STATIC :: VARKIND VAR_CONST :: VARKIND VAR_DISPATCH :: VARKIND data FUNCDESC TagFUNCDESC :: MEMBERID -> [Int32] -> [ELEMDESC] -> FUNCKIND -> INVOKEKIND -> CALLCONV -> SHORT -> SHORT -> ELEMDESC -> WORD -> FUNCDESC [memid] :: FUNCDESC -> MEMBERID [lprgscode] :: FUNCDESC -> [Int32] [lprgelemdescParam] :: FUNCDESC -> [ELEMDESC] [funckind] :: FUNCDESC -> FUNCKIND [invkind] :: FUNCDESC -> INVOKEKIND [callconv] :: FUNCDESC -> CALLCONV [cParamsOpt] :: FUNCDESC -> SHORT [oVft] :: FUNCDESC -> SHORT [elemdescFunc] :: FUNCDESC -> ELEMDESC [wFuncFlags] :: FUNCDESC -> WORD freeFUNCDESC :: Ptr FUNCDESC -> IO () writeFUNCDESC :: Ptr FUNCDESC -> FUNCDESC -> IO () readFUNCDESC :: Ptr FUNCDESC -> IO FUNCDESC sizeofFUNCDESC :: Word32 type LPFUNCDESC = FUNCDESC iMPLTYPEFLAG_FDEFAULT :: USHORT iMPLTYPEFLAG_FSOURCE :: USHORT iMPLTYPEFLAG_FRESTRICTED :: USHORT iMPLTYPEFLAG_FDEFAULTVTABLE :: USHORT data IHC_TAG_9 OInst :: ULONG -> IHC_TAG_9 LpvarValue :: Maybe VARIANT -> IHC_TAG_9 marshallIHC_TAG_9 :: IHC_TAG_9 -> IO (IHC_TAG_9, Int32) unmarshallIHC_TAG_9 :: IHC_TAG_9 -> Int32 -> IO IHC_TAG_9 writeIHC_TAG_9 :: (Int32 -> IO ()) -> Ptr IHC_TAG_9 -> IHC_TAG_9 -> IO () readIHC_TAG_9 :: IO Int32 -> Ptr IHC_TAG_9 -> IO IHC_TAG_9 sizeofIHC_TAG_9 :: Word32 freeIHC_TAG_9 :: Int32 -> Ptr IHC_TAG_9 -> IO () type IHC_TAG_8 = IHC_TAG_9 data VARDESC TagVARDESC :: MEMBERID -> LPOLESTR -> IHC_TAG_9 -> ELEMDESC -> WORD -> VARKIND -> VARDESC [memid0] :: VARDESC -> MEMBERID [lpstrSchema0] :: VARDESC -> LPOLESTR [iHC_TAG_7] :: VARDESC -> IHC_TAG_9 [elemdescVar] :: VARDESC -> ELEMDESC [wVarFlags] :: VARDESC -> WORD [varkind] :: VARDESC -> VARKIND freeVARDESC :: Ptr VARDESC -> IO () writeVARDESC :: Ptr VARDESC -> VARDESC -> IO () readVARDESC :: Ptr VARDESC -> IO VARDESC sizeofVARDESC :: Word32 type LPVARDESC = VARDESC data TYPEFLAGS TYPEFLAGSList__ :: [TYPEFLAGS] -> TYPEFLAGS TYPEFLAG_FAPPOBJECT :: TYPEFLAGS TYPEFLAG_FCANCREATE :: TYPEFLAGS TYPEFLAG_FLICENSED :: TYPEFLAGS TYPEFLAG_FPREDECLID :: TYPEFLAGS TYPEFLAG_FHIDDEN :: TYPEFLAGS TYPEFLAG_FCONTROL :: TYPEFLAGS TYPEFLAG_FDUAL :: TYPEFLAGS TYPEFLAG_FNONEXTENSIBLE :: TYPEFLAGS TYPEFLAG_FOLEAUTOMATION :: TYPEFLAGS TYPEFLAG_FRESTRICTED :: TYPEFLAGS TYPEFLAG_FAGGREGATABLE :: TYPEFLAGS TYPEFLAG_FREPLACEABLE :: TYPEFLAGS TYPEFLAG_FDISPATCHABLE :: TYPEFLAGS TYPEFLAG_FREVERSEBIND :: TYPEFLAGS data FUNCFLAGS FUNCFLAGSList__ :: [FUNCFLAGS] -> FUNCFLAGS FUNCFLAG_FRESTRICTED :: FUNCFLAGS FUNCFLAG_FSOURCE :: FUNCFLAGS FUNCFLAG_FBINDABLE :: FUNCFLAGS FUNCFLAG_FREQUESTEDIT :: FUNCFLAGS FUNCFLAG_FDISPLAYBIND :: FUNCFLAGS FUNCFLAG_FDEFAULTBIND :: FUNCFLAGS FUNCFLAG_FHIDDEN :: FUNCFLAGS FUNCFLAG_FUSESGETLASTERROR :: FUNCFLAGS FUNCFLAG_FDEFAULTCOLLELEM :: FUNCFLAGS FUNCFLAG_FUIDEFAULT :: FUNCFLAGS FUNCFLAG_FNONBROWSABLE :: FUNCFLAGS FUNCFLAG_FREPLACEABLE :: FUNCFLAGS FUNCFLAG_FIMMEDIATEBIND :: FUNCFLAGS data VARFLAGS VARFLAGSList__ :: [VARFLAGS] -> VARFLAGS VARFLAG_FREADONLY :: VARFLAGS VARFLAG_FSOURCE :: VARFLAGS VARFLAG_FBINDABLE :: VARFLAGS VARFLAG_FREQUESTEDIT :: VARFLAGS VARFLAG_FDISPLAYBIND :: VARFLAGS VARFLAG_FDEFAULTBIND :: VARFLAGS VARFLAG_FHIDDEN :: VARFLAGS VARFLAG_FRESTRICTED :: VARFLAGS VARFLAG_FDEFAULTCOLLELEM :: VARFLAGS VARFLAG_FUIDEFAULT :: VARFLAGS VARFLAG_FNONBROWSABLE :: VARFLAGS VARFLAG_FREPLACEABLE :: VARFLAGS VARFLAG_FIMMEDIATEBIND :: VARFLAGS data CLEANLOCALSTORAGE TagCLEANLOCALSTORAGE :: IUnknown () -> PVOID -> DWORD -> CLEANLOCALSTORAGE [pInterface] :: CLEANLOCALSTORAGE -> IUnknown () [pStorage] :: CLEANLOCALSTORAGE -> PVOID [flags] :: CLEANLOCALSTORAGE -> DWORD writeCLEANLOCALSTORAGE :: Bool -> Ptr CLEANLOCALSTORAGE -> CLEANLOCALSTORAGE -> IO () readCLEANLOCALSTORAGE :: Bool -> Ptr CLEANLOCALSTORAGE -> IO CLEANLOCALSTORAGE sizeofCLEANLOCALSTORAGE :: Word32 data CUSTDATAITEM TagCUSTDATAITEM :: GUID -> VARIANT -> CUSTDATAITEM [guid0] :: CUSTDATAITEM -> GUID [varValue] :: CUSTDATAITEM -> VARIANT freeCUSTDATAITEM :: Ptr CUSTDATAITEM -> IO () writeCUSTDATAITEM :: Ptr CUSTDATAITEM -> CUSTDATAITEM -> IO () readCUSTDATAITEM :: Bool -> Ptr CUSTDATAITEM -> IO CUSTDATAITEM sizeofCUSTDATAITEM :: Word32 type LPCUSTDATAITEM = CUSTDATAITEM data CUSTDATA TagCUSTDATA :: [CUSTDATAITEM] -> CUSTDATA [prgCustData] :: CUSTDATA -> [CUSTDATAITEM] freeCUSTDATA :: Ptr CUSTDATA -> IO () writeCUSTDATA :: Ptr CUSTDATA -> CUSTDATA -> IO () readCUSTDATA :: Bool -> Ptr CUSTDATA -> IO CUSTDATA sizeofCUSTDATA :: Word32 type LPCUSTDATA = CUSTDATA data ICreateTypeInfo_ a ICreateTypeInfo__ :: ICreateTypeInfo_ a type ICreateTypeInfo a = IUnknown (ICreateTypeInfo_ a) iidICreateTypeInfo :: IID (ICreateTypeInfo ()) type LPCREATETYPEINFO = Maybe (ICreateTypeInfo ()) setGuid :: REFGUID -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setGuid :: Ptr (Ptr () -> Ptr GUID -> IO Int32) -> Ptr () -> Ptr GUID -> IO Int32 setTypeFlags :: UINT -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setTypeFlags :: Ptr (Ptr () -> Word32 -> IO Int32) -> Ptr () -> Word32 -> IO Int32 setDocString :: LPOLESTR -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setDocString :: Ptr (Ptr () -> Ptr WideString -> IO Int32) -> Ptr () -> Ptr WideString -> IO Int32 setHelpContext :: DWORD -> ICreateTypeInfo a0 -> IO () setVersion :: WORD -> WORD -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setVersion :: Ptr (Ptr () -> Word16 -> Word16 -> IO Int32) -> Ptr () -> Word16 -> Word16 -> IO Int32 addRefTypeInfo :: ITypeInfo a1 -> ICreateTypeInfo a0 -> IO HREFTYPE prim_System_Win32_Com_Automation_TypeLib_addRefTypeInfo :: Ptr (Ptr () -> Ptr (ITypeInfo a) -> Ptr Word32 -> IO Int32) -> Ptr () -> Ptr (ITypeInfo a) -> Ptr Word32 -> IO Int32 addFuncDesc :: UINT -> FUNCDESC -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_addFuncDesc :: Ptr (Ptr () -> Word32 -> Ptr FUNCDESC -> IO Int32) -> Ptr () -> Word32 -> Ptr FUNCDESC -> IO Int32 addImplType :: UINT -> HREFTYPE -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_addImplType :: Ptr (Ptr () -> Word32 -> Word32 -> IO Int32) -> Ptr () -> Word32 -> Word32 -> IO Int32 setImplTypeFlags :: UINT -> INT -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setImplTypeFlags :: Ptr (Ptr () -> Word32 -> Int32 -> IO Int32) -> Ptr () -> Word32 -> Int32 -> IO Int32 setAlignment :: WORD -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setAlignment :: Ptr (Ptr () -> Word16 -> IO Int32) -> Ptr () -> Word16 -> IO Int32 setSchema :: LPOLESTR -> ICreateTypeInfo a0 -> IO () addVarDesc :: UINT -> VARDESC -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_addVarDesc :: Ptr (Ptr () -> Word32 -> Ptr VARDESC -> IO Int32) -> Ptr () -> Word32 -> Ptr VARDESC -> IO Int32 setFuncAndParamNames :: UINT -> [LPOLESTR] -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setFuncAndParamNames :: Ptr (Ptr () -> Word32 -> Ptr (Ptr WideString) -> Word32 -> IO Int32) -> Ptr () -> Word32 -> Ptr (Ptr WideString) -> Word32 -> IO Int32 setVarName :: UINT -> LPOLESTR -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setVarName :: Ptr (Ptr () -> Word32 -> Ptr WideString -> IO Int32) -> Ptr () -> Word32 -> Ptr WideString -> IO Int32 setTypeDescAlias :: TYPEDESC -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setTypeDescAlias :: Ptr (Ptr () -> Ptr TYPEDESC -> IO Int32) -> Ptr () -> Ptr TYPEDESC -> IO Int32 defineFuncAsDllEntry :: UINT -> LPOLESTR -> LPOLESTR -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_defineFuncAsDllEntry :: Ptr (Ptr () -> Word32 -> Ptr WideString -> Ptr WideString -> IO Int32) -> Ptr () -> Word32 -> Ptr WideString -> Ptr WideString -> IO Int32 setFuncDocString :: UINT -> LPOLESTR -> ICreateTypeInfo a0 -> IO () setVarDocString :: UINT -> LPOLESTR -> ICreateTypeInfo a0 -> IO () setFuncHelpContext :: UINT -> DWORD -> ICreateTypeInfo a0 -> IO () setVarHelpContext :: UINT -> DWORD -> ICreateTypeInfo a0 -> IO () setMops :: UINT -> String -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setMops :: Ptr (Ptr () -> Word32 -> Ptr String -> IO Int32) -> Ptr () -> Word32 -> Ptr String -> IO Int32 setTypeIdldesc :: IDLDESC -> ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setTypeIdldesc :: Ptr (Ptr () -> Ptr IDLDESC -> IO Int32) -> Ptr () -> Ptr IDLDESC -> IO Int32 layOut :: ICreateTypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_layOut :: Ptr (Ptr () -> IO Int32) -> Ptr () -> IO Int32 data ICreateTypeInfo2_ a ICreateTypeInfo2__ :: ICreateTypeInfo2_ a type ICreateTypeInfo2 a = ICreateTypeInfo (ICreateTypeInfo2_ a) iidICreateTypeInfo2 :: IID (ICreateTypeInfo2 ()) type LPCREATETYPEINFO2 = Maybe (ICreateTypeInfo2 ()) deleteFuncDesc :: UINT -> ICreateTypeInfo2 a0 -> IO () deleteFuncDescByMemId :: MEMBERID -> INVOKEKIND -> ICreateTypeInfo2 a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_deleteFuncDescByMemId :: Ptr (Ptr () -> Int32 -> Int32 -> IO Int32) -> Ptr () -> Int32 -> Int32 -> IO Int32 deleteVarDesc :: UINT -> ICreateTypeInfo2 a0 -> IO () deleteVarDescByMemId :: MEMBERID -> ICreateTypeInfo2 a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_deleteVarDescByMemId :: Ptr (Ptr () -> Int32 -> IO Int32) -> Ptr () -> Int32 -> IO Int32 deleteImplType :: UINT -> ICreateTypeInfo2 a0 -> IO () setCustData :: REFGUID -> VARIANT -> ICreateTypeInfo2 a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setCustData :: Ptr (Ptr () -> Ptr GUID -> VARIANT -> IO Int32) -> Ptr () -> Ptr GUID -> VARIANT -> IO Int32 setFuncCustData :: UINT -> REFGUID -> VARIANT -> ICreateTypeInfo2 a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setFuncCustData :: Ptr (Ptr () -> Word32 -> Ptr GUID -> VARIANT -> IO Int32) -> Ptr () -> Word32 -> Ptr GUID -> VARIANT -> IO Int32 setParamCustData :: UINT -> UINT -> REFGUID -> VARIANT -> ICreateTypeInfo2 a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_setParamCustData :: Ptr (Ptr () -> Word32 -> Word32 -> Ptr GUID -> VARIANT -> IO Int32) -> Ptr () -> Word32 -> Word32 -> Ptr GUID -> VARIANT -> IO Int32 setVarCustData :: UINT -> REFGUID -> VARIANT -> ICreateTypeInfo2 a0 -> IO () setImplTypeCustData :: UINT -> REFGUID -> VARIANT -> ICreateTypeInfo2 a0 -> IO () setHelpStringContext :: ULONG -> ICreateTypeInfo2 a0 -> IO () setFuncHelpStringContext :: UINT -> ULONG -> ICreateTypeInfo2 a0 -> IO () setVarHelpStringContext :: UINT -> ULONG -> ICreateTypeInfo2 a0 -> IO () invalidate :: ICreateTypeInfo2 a0 -> IO () setName :: LPOLESTR -> ICreateTypeInfo2 a0 -> IO () data ICreateTypeLib_ a ICreateTypeLib__ :: ICreateTypeLib_ a type ICreateTypeLib a = IUnknown (ICreateTypeLib_ a) iidICreateTypeLib :: IID (ICreateTypeLib ()) type LPCREATETYPELIB = Maybe (ICreateTypeLib ()) createTypeInfo :: LPOLESTR -> TYPEKIND -> ICreateTypeLib a0 -> IO (ICreateTypeInfo ()) prim_System_Win32_Com_Automation_TypeLib_createTypeInfo :: Ptr (Ptr () -> Ptr WideString -> Int32 -> Ptr (Ptr (ICreateTypeInfo a)) -> IO Int32) -> Ptr () -> Ptr WideString -> Int32 -> Ptr (Ptr (ICreateTypeInfo a)) -> IO Int32 setNameCTL :: LPOLESTR -> ICreateTypeLib a0 -> IO () setVersionCTL :: WORD -> WORD -> ICreateTypeLib a0 -> IO () setGuidCTL :: REFGUID -> ICreateTypeLib a0 -> IO () setDocStringCTL :: LPOLESTR -> ICreateTypeLib a0 -> IO () setHelpFileName :: LPOLESTR -> ICreateTypeLib a0 -> IO () setHelpContextCTL :: DWORD -> ICreateTypeLib a0 -> IO () setLcid :: LCID -> ICreateTypeLib a0 -> IO () setLibFlags :: UINT -> ICreateTypeLib a0 -> IO () saveAllChanges :: ICreateTypeLib a0 -> IO () data ICreateTypeLib2_ a ICreateTypeLib2__ :: ICreateTypeLib2_ a type ICreateTypeLib2 a = ICreateTypeLib (ICreateTypeLib2_ a) iidICreateTypeLib2 :: IID (ICreateTypeLib2 ()) type LPCREATETYPELIB2 = Maybe (ICreateTypeLib2 ()) deleteTypeInfo :: LPOLESTR -> ICreateTypeLib2 a0 -> IO () setCustDataCTL :: REFGUID -> VARIANT -> ICreateTypeLib2 a0 -> IO () setHelpStringContextCTL :: ULONG -> ICreateTypeLib2 a0 -> IO () setHelpStringDll :: LPOLESTR -> ICreateTypeLib2 a0 -> IO () dISPID_UNKNOWN :: DISPID dISPID_VALUE :: DISPID dISPID_PROPERTYPUT :: DISPID dISPID_NEWENUM :: DISPID dISPID_EVALUATE :: DISPID dISPID_CONSTRUCTOR :: DISPID dISPID_DESTRUCTOR :: DISPID dISPID_COLLECT :: DISPID data ITypeComp_ a ITypeComp__ :: ITypeComp_ a type ITypeComp a = IUnknown (ITypeComp_ a) iidITypeComp :: IID (ITypeComp ()) type LPTYPECOMP = Maybe (ITypeComp ()) data DESCKIND DESCKIND_NONE :: DESCKIND DESCKIND_FUNCDESC :: DESCKIND DESCKIND_VARDESC :: DESCKIND DESCKIND_TYPECOMP :: DESCKIND DESCKIND_IMPLICITAPPOBJ :: DESCKIND DESCKIND_MAX :: DESCKIND data BINDPTR Lpfuncdesc :: Maybe FUNCDESC -> BINDPTR Lpvardesc :: Maybe VARDESC -> BINDPTR Lptcomp :: ITypeComp () -> BINDPTR marshallBINDPTR :: BINDPTR -> IO (BINDPTR, Int32) unmarshallBINDPTR :: BINDPTR -> Int32 -> IO BINDPTR writeBINDPTR :: Bool -> (Int32 -> IO ()) -> Ptr BINDPTR -> BINDPTR -> IO () readBINDPTR :: Bool -> IO Int32 -> Ptr BINDPTR -> IO BINDPTR sizeofBINDPTR :: Word32 freeBINDPTR :: Int32 -> Ptr BINDPTR -> IO () type LPBINDPTR = BINDPTR bind :: LPOLESTR -> ULONG -> WORD -> ITypeComp a0 -> IO (ITypeInfo (), DESCKIND, BINDPTR) prim_System_Win32_Com_Automation_TypeLib_bind :: Ptr (Ptr () -> Ptr WideString -> Word32 -> Word16 -> Ptr (Ptr (ITypeInfo a)) -> Ptr DESCKIND -> Ptr BINDPTR -> IO Int32) -> Ptr () -> Ptr WideString -> Word32 -> Word16 -> Ptr (Ptr (ITypeInfo a)) -> Ptr DESCKIND -> Ptr BINDPTR -> IO Int32 bindType :: LPOLESTR -> ULONG -> ITypeComp a0 -> IO (ITypeInfo (), ITypeComp ()) prim_System_Win32_Com_Automation_TypeLib_bindType :: Ptr (Ptr () -> Ptr WideString -> Word32 -> Ptr (Ptr (ITypeInfo a)) -> Ptr (Ptr (ITypeComp a)) -> IO Int32) -> Ptr () -> Ptr WideString -> Word32 -> Ptr (Ptr (ITypeInfo a)) -> Ptr (Ptr (ITypeComp a)) -> IO Int32 data ITypeInfo_ a ITypeInfo__ :: ITypeInfo_ a type ITypeInfo a = IUnknown (ITypeInfo_ a) iidITypeInfo :: IID (ITypeInfo ()) type LPTYPEINFO = Maybe (ITypeInfo ()) getTypeAttr :: ITypeInfo a0 -> IO (Maybe TYPEATTR) prim_System_Win32_Com_Automation_TypeLib_getTypeAttr :: Ptr (Ptr () -> Ptr (Ptr TYPEATTR) -> IO Int32) -> Ptr () -> Ptr (Ptr TYPEATTR) -> IO Int32 getTypeComp :: ITypeInfo a0 -> IO (ITypeComp ()) prim_System_Win32_Com_Automation_TypeLib_getTypeComp :: Ptr (Ptr () -> Ptr (Ptr (ITypeComp a)) -> IO Int32) -> Ptr () -> Ptr (Ptr (ITypeComp a)) -> IO Int32 getFuncDesc :: UINT -> ITypeInfo a0 -> IO (Maybe FUNCDESC) prim_System_Win32_Com_Automation_TypeLib_getFuncDesc :: Ptr (Ptr () -> Word32 -> Ptr (Ptr FUNCDESC) -> IO Int32) -> Ptr () -> Word32 -> Ptr (Ptr FUNCDESC) -> IO Int32 getVarDesc :: UINT -> ITypeInfo a0 -> IO (Maybe VARDESC) prim_System_Win32_Com_Automation_TypeLib_getVarDesc :: Ptr (Ptr () -> Word32 -> Ptr (Ptr VARDESC) -> IO Int32) -> Ptr () -> Word32 -> Ptr (Ptr VARDESC) -> IO Int32 getNames :: MEMBERID -> UINT -> ITypeInfo a0 -> IO [String] prim_System_Win32_Com_Automation_TypeLib_getNames :: Ptr (Ptr () -> Int32 -> Ptr String -> Word32 -> Ptr Word32 -> IO Int32) -> Ptr () -> Int32 -> Ptr String -> Word32 -> Ptr Word32 -> IO Int32 getRefTypeOfImplType :: UINT -> ITypeInfo a0 -> IO HREFTYPE prim_System_Win32_Com_Automation_TypeLib_getRefTypeOfImplType :: Ptr (Ptr () -> Word32 -> Ptr Word32 -> IO Int32) -> Ptr () -> Word32 -> Ptr Word32 -> IO Int32 getImplTypeFlags :: UINT -> ITypeInfo a0 -> IO INT prim_System_Win32_Com_Automation_TypeLib_getImplTypeFlags :: Ptr (Ptr () -> Word32 -> Ptr Int32 -> IO Int32) -> Ptr () -> Word32 -> Ptr Int32 -> IO Int32 getIDsOfNames :: [LPOLESTR] -> ITypeInfo a0 -> IO [MEMBERID] prim_System_Win32_Com_Automation_TypeLib_getIDsOfNames :: Ptr (Ptr () -> Ptr (Ptr WideString) -> Word32 -> Ptr Int32 -> IO Int32) -> Ptr () -> Ptr (Ptr WideString) -> Word32 -> Ptr Int32 -> IO Int32 invoke :: PVOID -> MEMBERID -> WORD -> DISPPARAMS -> ITypeInfo a0 -> IO (DISPPARAMS, VARIANT, EXCEPINFO, UINT) prim_System_Win32_Com_Automation_TypeLib_invoke :: Ptr (Ptr () -> Ptr () -> Int32 -> Word16 -> Ptr DISPPARAMS -> VARIANT -> Ptr EXCEPINFO -> Ptr Word32 -> IO Int32) -> Ptr () -> Ptr () -> Int32 -> Word16 -> Ptr DISPPARAMS -> VARIANT -> Ptr EXCEPINFO -> Ptr Word32 -> IO Int32 getDocumentation :: MEMBERID -> ITypeInfo a0 -> IO (String, String, DWORD, String) prim_System_Win32_Com_Automation_TypeLib_getDocumentation :: Ptr (Ptr () -> Int32 -> Ptr String -> Ptr String -> Ptr Word32 -> Ptr String -> IO Int32) -> Ptr () -> Int32 -> Ptr String -> Ptr String -> Ptr Word32 -> Ptr String -> IO Int32 getDllEntry :: MEMBERID -> INVOKEKIND -> ITypeInfo a0 -> IO (String, String, WORD) prim_System_Win32_Com_Automation_TypeLib_getDllEntry :: Ptr (Ptr () -> Int32 -> Int32 -> Ptr String -> Ptr String -> Ptr Word16 -> IO Int32) -> Ptr () -> Int32 -> Int32 -> Ptr String -> Ptr String -> Ptr Word16 -> IO Int32 getRefTypeInfo :: HREFTYPE -> ITypeInfo a0 -> IO (ITypeInfo ()) prim_System_Win32_Com_Automation_TypeLib_getRefTypeInfo :: Ptr (Ptr () -> Word32 -> Ptr (Ptr (ITypeInfo a)) -> IO Int32) -> Ptr () -> Word32 -> Ptr (Ptr (ITypeInfo a)) -> IO Int32 addressOfMember :: MEMBERID -> INVOKEKIND -> ITypeInfo a0 -> IO PVOID prim_System_Win32_Com_Automation_TypeLib_addressOfMember :: Ptr (Ptr () -> Int32 -> Int32 -> Ptr (Ptr ()) -> IO Int32) -> Ptr () -> Int32 -> Int32 -> Ptr (Ptr ()) -> IO Int32 createInstance :: IUnknown a2 -> IID a3 -> ITypeInfo a0 -> IO (IUnknown a1) prim_System_Win32_Com_Automation_TypeLib_createInstance :: Ptr (Ptr () -> Ptr (IUnknown a) -> Ptr (IID a) -> Ptr (Ptr (IUnknown a)) -> IO Int32) -> Ptr () -> Ptr (IUnknown a) -> Ptr (IID a) -> Ptr (Ptr (IUnknown a)) -> IO Int32 getMops :: MEMBERID -> ITypeInfo a0 -> IO String prim_System_Win32_Com_Automation_TypeLib_getMops :: Ptr (Ptr () -> Int32 -> Ptr String -> IO Int32) -> Ptr () -> Int32 -> Ptr String -> IO Int32 getContainingTypeLib :: ITypeInfo a0 -> IO (ITypeLib (), UINT) prim_System_Win32_Com_Automation_TypeLib_getContainingTypeLib :: Ptr (Ptr () -> Ptr (Ptr (ITypeLib a)) -> Ptr Word32 -> IO Int32) -> Ptr () -> Ptr (Ptr (ITypeLib a)) -> Ptr Word32 -> IO Int32 releaseTypeAttr :: Ptr TYPEATTR -> ITypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_releaseTypeAttr :: Ptr (Ptr () -> Ptr TYPEATTR -> IO ()) -> Ptr () -> Ptr TYPEATTR -> IO () releaseFuncDesc :: Ptr FUNCDESC -> ITypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_releaseFuncDesc :: Ptr (Ptr () -> Ptr FUNCDESC -> IO ()) -> Ptr () -> Ptr FUNCDESC -> IO () releaseVarDesc :: Ptr VARDESC -> ITypeInfo a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_releaseVarDesc :: Ptr (Ptr () -> Ptr VARDESC -> IO ()) -> Ptr () -> Ptr VARDESC -> IO () data ITypeInfo2_ a ITypeInfo2__ :: ITypeInfo2_ a type ITypeInfo2 a = ITypeInfo (ITypeInfo2_ a) iidITypeInfo2 :: IID (ITypeInfo2 ()) type LPTYPEINFO2 = Maybe (ITypeInfo2 ()) getTypeKind :: ITypeInfo2 a0 -> IO TYPEKIND prim_System_Win32_Com_Automation_TypeLib_getTypeKind :: Ptr (Ptr () -> Ptr TYPEKIND -> IO Int32) -> Ptr () -> Ptr TYPEKIND -> IO Int32 getTypeFlags :: ITypeInfo2 a0 -> IO ULONG prim_System_Win32_Com_Automation_TypeLib_getTypeFlags :: Ptr (Ptr () -> Ptr Word32 -> IO Int32) -> Ptr () -> Ptr Word32 -> IO Int32 getFuncIndexOfMemId :: MEMBERID -> INVOKEKIND -> ITypeInfo2 a0 -> IO UINT prim_System_Win32_Com_Automation_TypeLib_getFuncIndexOfMemId :: Ptr (Ptr () -> Int32 -> Int32 -> Ptr Word32 -> IO Int32) -> Ptr () -> Int32 -> Int32 -> Ptr Word32 -> IO Int32 getVarIndexOfMemId :: MEMBERID -> ITypeInfo2 a0 -> IO UINT prim_System_Win32_Com_Automation_TypeLib_getVarIndexOfMemId :: Ptr (Ptr () -> Int32 -> Ptr Word32 -> IO Int32) -> Ptr () -> Int32 -> Ptr Word32 -> IO Int32 getCustData :: REFGUID -> ITypeInfo2 a0 -> IO VARIANT getFuncCustData :: UINT -> REFGUID -> ITypeInfo2 a0 -> IO VARIANT getParamCustData :: UINT -> UINT -> REFGUID -> ITypeInfo2 a0 -> IO VARIANT getVarCustData :: UINT -> REFGUID -> ITypeInfo2 a0 -> IO VARIANT getImplTypeCustData :: UINT -> REFGUID -> ITypeInfo2 a0 -> IO VARIANT getDocumentation2 :: MEMBERID -> LCID -> ITypeInfo2 a0 -> IO (String, DWORD, String) prim_System_Win32_Com_Automation_TypeLib_getDocumentation2 :: Ptr (Ptr () -> Int32 -> Word32 -> Ptr String -> Ptr Word32 -> Ptr String -> IO Int32) -> Ptr () -> Int32 -> Word32 -> Ptr String -> Ptr Word32 -> Ptr String -> IO Int32 getAllCustData :: ITypeInfo2 a0 -> IO CUSTDATA prim_System_Win32_Com_Automation_TypeLib_getAllCustData :: Ptr (Ptr () -> Ptr CUSTDATA -> IO Int32) -> Ptr () -> Ptr CUSTDATA -> IO Int32 getAllFuncCustData :: UINT -> ITypeInfo2 a0 -> IO CUSTDATA prim_System_Win32_Com_Automation_TypeLib_getAllFuncCustData :: Ptr (Ptr () -> Word32 -> Ptr CUSTDATA -> IO Int32) -> Ptr () -> Word32 -> Ptr CUSTDATA -> IO Int32 getAllParamCustData :: UINT -> UINT -> ITypeInfo2 a0 -> IO CUSTDATA prim_System_Win32_Com_Automation_TypeLib_getAllParamCustData :: Ptr (Ptr () -> Word32 -> Word32 -> Ptr CUSTDATA -> IO Int32) -> Ptr () -> Word32 -> Word32 -> Ptr CUSTDATA -> IO Int32 getAllVarCustData :: UINT -> ITypeInfo2 a0 -> IO CUSTDATA getAllImplTypeCustData :: UINT -> ITypeInfo2 a0 -> IO CUSTDATA data ITypeLib_ a ITypeLib__ :: ITypeLib_ a type ITypeLib a = IUnknown (ITypeLib_ a) iidITypeLib :: IID (ITypeLib ()) data SYSKIND SYSKINDList__ :: [SYSKIND] -> SYSKIND SYS_WIN16 :: SYSKIND SYS_WIN32 :: SYSKIND SYS_MAC :: SYSKIND data LIBFLAGS LIBFLAGSList__ :: [LIBFLAGS] -> LIBFLAGS LIBFLAG_FRESTRICTED :: LIBFLAGS LIBFLAG_FCONTROL :: LIBFLAGS LIBFLAG_FHIDDEN :: LIBFLAGS LIBFLAG_FHASDISKIMAGE :: LIBFLAGS type LPTYPELIB = Maybe (ITypeLib ()) data TLIBATTR TagTLIBATTR :: GUID -> LCID -> SYSKIND -> WORD -> WORD -> WORD -> TLIBATTR [guid1] :: TLIBATTR -> GUID [lcid0] :: TLIBATTR -> LCID [syskind] :: TLIBATTR -> SYSKIND [wMajorVerNum0] :: TLIBATTR -> WORD [wMinorVerNum0] :: TLIBATTR -> WORD [wLibFlags] :: TLIBATTR -> WORD writeTLIBATTR :: Ptr TLIBATTR -> TLIBATTR -> IO () readTLIBATTR :: Bool -> Ptr TLIBATTR -> IO TLIBATTR sizeofTLIBATTR :: Word32 type LPTLIBATTR = TLIBATTR getTypeInfoCount :: ITypeLib a0 -> IO UINT prim_System_Win32_Com_Automation_TypeLib_getTypeInfoCount :: Ptr (Ptr () -> IO Word32) -> Ptr () -> IO Word32 getTypeInfo :: UINT -> ITypeLib a0 -> IO (ITypeInfo ()) getTypeInfoType :: UINT -> ITypeLib a0 -> IO TYPEKIND prim_System_Win32_Com_Automation_TypeLib_getTypeInfoType :: Ptr (Ptr () -> Word32 -> Ptr TYPEKIND -> IO Int32) -> Ptr () -> Word32 -> Ptr TYPEKIND -> IO Int32 getTypeInfoOfGuid :: REFGUID -> ITypeLib a0 -> IO (ITypeInfo ()) prim_System_Win32_Com_Automation_TypeLib_getTypeInfoOfGuid :: Ptr (Ptr () -> Ptr GUID -> Ptr (Ptr (ITypeInfo a)) -> IO Int32) -> Ptr () -> Ptr GUID -> Ptr (Ptr (ITypeInfo a)) -> IO Int32 getLibAttr :: ITypeLib a0 -> IO (Maybe TLIBATTR) prim_System_Win32_Com_Automation_TypeLib_getLibAttr :: Ptr (Ptr () -> Ptr (Ptr TLIBATTR) -> IO Int32) -> Ptr () -> Ptr (Ptr TLIBATTR) -> IO Int32 getTypeCompTL :: ITypeLib a0 -> IO (ITypeComp ()) getDocumentationTL :: INT -> ITypeLib a0 -> IO (String, String, DWORD, String) isName :: LPOLESTR -> ULONG -> ITypeLib a0 -> IO (LPOLESTR, BOOL) prim_System_Win32_Com_Automation_TypeLib_isName :: Ptr (Ptr () -> Ptr WideString -> Word32 -> Ptr Int32 -> IO Int32) -> Ptr () -> Ptr WideString -> Word32 -> Ptr Int32 -> IO Int32 findName :: LPOLESTR -> ULONG -> USHORT -> ITypeLib a0 -> IO (LPOLESTR, [ITypeInfo ()], [MEMBERID]) prim_System_Win32_Com_Automation_TypeLib_findName :: Ptr (Ptr () -> Ptr WideString -> Word32 -> Ptr (Ptr (ITypeInfo a)) -> Ptr Int32 -> Ptr Word16 -> IO Int32) -> Ptr () -> Ptr WideString -> Word32 -> Ptr (Ptr (ITypeInfo a)) -> Ptr Int32 -> Ptr Word16 -> IO Int32 releaseTLibAttr :: Ptr TLIBATTR -> ITypeLib a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_releaseTLibAttr :: Ptr (Ptr () -> Ptr TLIBATTR -> IO ()) -> Ptr () -> Ptr TLIBATTR -> IO () data ITypeLib2_ a ITypeLib2__ :: ITypeLib2_ a type ITypeLib2 a = ITypeLib (ITypeLib2_ a) iidITypeLib2 :: IID (ITypeLib2 ()) type LPTYPELIB2 = Maybe (ITypeLib2 ()) getCustDataTL :: GUID -> ITypeLib2 a0 -> IO VARIANT getLibStatistics :: ITypeLib2 a0 -> IO (ULONG, ULONG) prim_System_Win32_Com_Automation_TypeLib_getLibStatistics :: Ptr (Ptr () -> Ptr Word32 -> Ptr Word32 -> IO Int32) -> Ptr () -> Ptr Word32 -> Ptr Word32 -> IO Int32 getDocumentation2TL :: INT -> LCID -> ITypeLib2 a0 -> IO (String, DWORD, String) getAllCustDataTL :: ITypeLib2 a0 -> IO CUSTDATA data ITypeChangeEvents_ a ITypeChangeEvents__ :: ITypeChangeEvents_ a type ITypeChangeEvents a = IUnknown (ITypeChangeEvents_ a) iidITypeChangeEvents :: IID (ITypeChangeEvents ()) type LPTYPECHANGEEVENTS = Maybe (ITypeChangeEvents ()) data CHANGEKIND CHANGEKIND_ADDMEMBER :: CHANGEKIND CHANGEKIND_DELETEMEMBER :: CHANGEKIND CHANGEKIND_SETNAMES :: CHANGEKIND CHANGEKIND_SETDOCUMENTATION :: CHANGEKIND CHANGEKIND_GENERAL :: CHANGEKIND CHANGEKIND_INVALIDATE :: CHANGEKIND CHANGEKIND_CHANGEFAILED :: CHANGEKIND CHANGEKIND_MAX :: CHANGEKIND requestTypeChange :: CHANGEKIND -> ITypeInfo a1 -> LPOLESTR -> ITypeChangeEvents a0 -> IO INT prim_System_Win32_Com_Automation_TypeLib_requestTypeChange :: Ptr (Ptr () -> Int32 -> Ptr (ITypeInfo a) -> Ptr WideString -> Ptr Int32 -> IO Int32) -> Ptr () -> Int32 -> Ptr (ITypeInfo a) -> Ptr WideString -> Ptr Int32 -> IO Int32 afterTypeChange :: CHANGEKIND -> ITypeInfo a1 -> LPOLESTR -> ITypeChangeEvents a0 -> IO () prim_System_Win32_Com_Automation_TypeLib_afterTypeChange :: Ptr (Ptr () -> Int32 -> Ptr (ITypeInfo a) -> Ptr WideString -> IO Int32) -> Ptr () -> Int32 -> Ptr (ITypeInfo a) -> Ptr WideString -> IO Int32 instance GHC.Enum.Enum System.Win32.Com.Automation.TypeLib.TYPEKIND instance GHC.Enum.Enum System.Win32.Com.Automation.TypeLib.FUNCKIND instance GHC.Enum.Enum System.Win32.Com.Automation.TypeLib.VARKIND instance GHC.Enum.Enum System.Win32.Com.Automation.TypeLib.DESCKIND instance GHC.Enum.Enum System.Win32.Com.Automation.TypeLib.CHANGEKIND instance System.Win32.Com.HDirect.HDirect.Flags System.Win32.Com.Automation.TypeLib.LIBFLAGS instance GHC.Enum.Enum System.Win32.Com.Automation.TypeLib.LIBFLAGS instance System.Win32.Com.HDirect.HDirect.Flags System.Win32.Com.Automation.TypeLib.SYSKIND instance GHC.Enum.Enum System.Win32.Com.Automation.TypeLib.SYSKIND instance System.Win32.Com.HDirect.HDirect.Flags System.Win32.Com.Automation.TypeLib.VARFLAGS instance GHC.Enum.Enum System.Win32.Com.Automation.TypeLib.VARFLAGS instance System.Win32.Com.HDirect.HDirect.Flags System.Win32.Com.Automation.TypeLib.FUNCFLAGS instance GHC.Enum.Enum System.Win32.Com.Automation.TypeLib.FUNCFLAGS instance System.Win32.Com.HDirect.HDirect.Flags System.Win32.Com.Automation.TypeLib.TYPEFLAGS instance GHC.Enum.Enum System.Win32.Com.Automation.TypeLib.TYPEFLAGS instance System.Win32.Com.HDirect.HDirect.Flags System.Win32.Com.Automation.TypeLib.INVOKEKIND instance GHC.Enum.Enum System.Win32.Com.Automation.TypeLib.INVOKEKIND instance GHC.Enum.Enum System.Win32.Com.Automation.TypeLib.CALLCONV -- | Support code for writing Haskell COM components (yay!) -- -- The library code for Haskell COM components (aka. servers), support -- the wrapping up of a bunch of Haskell function values into the binary -- representation that the COM spec mandates. -- -- The library has two classes of users: -- --