| 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 |
System.Win32.Com.Exception
Description
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.
Synopsis
- 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 #