Copyright | (c) 2009 Sigbjorn Finne |
---|---|
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | sof@forkIO.com |
Stability | provisional |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Representing and working with COM's 'exception model' (HRESULT
s) in Haskell.
Failures in COM method calls are mapped into Exception
Haskell exceptions,
providing convenient handlers to catch and throw these.
- catchComException :: IO a -> (Com_Exception -> IO a) -> IO a
- catch_ce_ :: IO a -> (Maybe ComException -> IO a) -> IO a
- type Com_Exception = Either IOException ComException
- throwIOComException :: Com_Exception -> IO a
- check2HR :: HRESULT -> IO ()
- checkBool :: Int32 -> IO ()
- returnHR :: IO () -> IO HRESULT
- isCoError :: Com_Exception -> Bool
- coGetException :: Com_Exception -> Maybe ComException
- coGetErrorHR :: Com_Exception -> Maybe HRESULT
- coGetErrorString :: Com_Exception -> String
- printComError :: Com_Exception -> IO ()
- hresultToString :: HRESULT -> IO String
- coAssert :: Bool -> String -> IO ()
- coOnFail :: IO a -> String -> IO a
- coFail :: String -> IO a
- s_FALSE :: HRESULT
- 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
Documentation
catchComException :: IO a -> (Com_Exception -> IO a) -> IO a Source #
act
performs the
IO action catchComException
(ex -> hdlr ex)act
, but catches any IO or COM exceptions ex
,
passing them to the handler hdlr
.
type Com_Exception = Either IOException ComException Source #
Com_Exception
is either an IOException
or ComException
;
no attempt is made to embed one inside the other.
throwIOComException :: Com_Exception -> IO a Source #
throwIOComException ex
raises/throws the exception ex
;
ex
is either an IOException
or a ComException
.
check2HR :: HRESULT -> IO () Source #
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.
checkBool :: Int32 -> IO () Source #
checkBool mbZero
raises a COM exception if mbZero
is equal
to...zero. The last error is embedded inside the exception.
returnHR :: IO () -> IO HRESULT Source #
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
.
isCoError :: Com_Exception -> Bool Source #
isCoError e
returns True
for COM exceptions; False
for IO exception values.
coGetException :: Com_Exception -> Maybe ComException Source #
coGetException ei
picks out the COM exception ei
, if one.
coGetErrorHR :: Com_Exception -> Maybe HRESULT Source #
coGetException ei
picks out the COM HRESULT from the exception, if any.
coGetErrorString :: Com_Exception -> String Source #
coGetException ei
returns a user-friendlier representation of the ei
exception.
printComError :: Com_Exception -> IO () Source #
hresultToString :: HRESULT -> IO String Source #
An alias to coGetErrorString
.
coFail :: String -> IO a Source #
coFail msg
raised the E_FAIL
COM exception along with
the descriptive string msg
.
winErrorToHR :: Int32 -> HRESULT Source #
hRESULT_CODE :: HRESULT -> Int32 Source #
hRESULT_FACILITY :: HRESULT -> Int32 Source #
hRESULT_SEVERITY :: HRESULT -> Int32 Source #
cAT_E_LAST :: HRESULT Source #
cO_E_FIRST :: HRESULT Source #
cO_S_FIRST :: HRESULT Source #
dV_E_TYMED :: HRESULT Source #
mK_E_FIRST :: HRESULT Source #
mK_S_FIRST :: HRESULT Source #
oLE_E_ADVF :: HRESULT Source #
oLE_E_LAST :: HRESULT Source #
oLE_S_LAST :: HRESULT Source #