SetErrorInfo 函数 (oleauto.h)
设置当前执行逻辑线程的错误信息对象。
语法
HRESULT SetErrorInfo(
[in] ULONG dwReserved,
[in, optional] IErrorInfo *perrinfo
);
参数
[in] dwReserved
保留供将来使用。 必须为零。
[in, optional] perrinfo
错误对象。
返回值
如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
此函数释放现有的错误信息对象(如果存在),并将指针设置为 perrinfo。 在创建将对象与当前执行逻辑线程关联的错误对象后使用此函数。
如果调用 SetErrorInfo 的属性或方法由 DispInvoke 调用,则 DispInvoke 将使用错误信息对象中指定的值填充 EXCEPINFO 参数。 当属性或方法返回 DispInvoke 的失败返回值时,DispInvoke 将返回DISP_E_EXCEPTION
虚拟函数表 (VTBL) 不使用 IDispatch::Invoke 的绑定控制器可以使用 GetErrorInfo 获取错误信息对象。 这允许支持双重接口的对象使用 SetErrorInfo,而不管客户端是使用 VTBL 绑定还是 IDispatch。
当进行跨单元调用时,COM 会清除任何错误对象。
进行通过代理存根的 COM 调用将清除调用线程的任何现有错误对象。 调用的对象在调用 SetErrorInfo 后和返回之前不应进行任何此类调用。 调用方不应在调用返回后和调用 GetErrorInfo 之前进行任何此类调用。 经验法则是,接口方法应在调用 SetErrorInfo 后尽快返回,调用方应在调用返回后尽快调用 GetErrorInfo 。
进入 COM 模式消息循环将清除任何现有的错误对象。 调用的 对象在调用 SetErrorInfo 后不应进入消息循环。
示例
ICreateErrorInfo *pcerrinfo;
IErrorInfo *perrinfo;
HRESULT hr;
hr = CreateErrorInfo(&pcerrinfo);
if (SUCCEEDED(hr))
{
hr = pcerrinfo->QueryInterface(IID_IErrorInfo, (LPVOID FAR*) &perrinfo);
if (SUCCEEDED(hr))
{
SetErrorInfo(0, perrinfo);
perrinfo->Release();
}
pcerrinfo->Release();
}
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | oleauto.h |
Library | OleAut32.lib |
DLL | OleAut32.dll |