_set_com_error_handler
Microsoft 专用
替换用于 COM 错误处理的默认函数。
void __stdcall _set_com_error_handler(
void (__stdcall *pHandler)(
HRESULT hr,
IErrorInfo* perrinfo
)
);
参数
pHandler
指向替换函数的指针。hr
HRESULT 信息。perrinfo
IErrorInfo 对象。
备注
默认情况下, _com_raise_error 处理所有 COM 错误。可以使用调用您自己的错误处理函数的 _set_com_error_handler 更改此行为。
替换功能必须具有与其 _com_raise_error 等效的签名。
示例
// _set_com_error_handler.cpp
// compile with /EHsc
#include <stdio.h>
#include <comdef.h>
#include <comutil.h>
// Importing ado dll to attempt to establish an ado connection.
// Not related to _set_com_error_handler
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
void __stdcall _My_com_raise_error(HRESULT hr, IErrorInfo* perrinfo)
{
throw "Unable to establish the connection!";
}
int main()
{
_set_com_error_handler(_My_com_raise_error);
_bstr_t bstrEmpty(L"");
_ConnectionPtr Connection = NULL;
try
{
Connection.CreateInstance(__uuidof(Connection));
Connection->Open(bstrEmpty, bstrEmpty, bstrEmpty, 0);
}
catch(char* errorMessage)
{
printf("Exception raised: %s\n", errorMessage);
}
return 0;
}
要求
标题: comdef.h
LIB:,如果“wchar_t是本机类型”编译器选项是打开的,使用comsuppw.lib或comsuppwd.lib。如果“wchar_t是本机类型”关闭,使用comsupp.lib。有关更多信息,请参见 /Zc:wchar_t(wchar_t 是本机类型)。