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