共用方式為


SetErrorInfo 函式 (oleauto.h)

設定目前邏輯線程執行的錯誤信息物件。

語法

HRESULT SetErrorInfo(
  [in]           ULONG      dwReserved,
  [in, optional] IErrorInfo *perrinfo
);

參數

[in] dwReserved

保留供未來使用。 必須為零。

[in, optional] perrinfo

錯誤物件。

傳回值

如果此函式成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

備註

如果存在錯誤信息物件,此函式會釋放現有的錯誤信息物件,並將指標設定為 perrinfo。 建立將物件與目前執行邏輯線程產生關聯的錯誤對象之後,請使用此函式。

如果 DispInvoke 呼叫呼叫 SetErrorInfo 的屬性或方法,DispInvoke 會以錯誤資訊物件中指定的值填入 EXCEPINFO 參數。 當屬性或方法傳回 DispInvoke 失敗傳回值時,DispInvoke 會傳回DISP_E_EXCEPTION

虛擬函式數據表 (VTBL) 未使用 IDispatch::Invoke 的系結控制器可以使用 GetErrorInfo 來取得錯誤信息物件。 這可讓支援雙重介面的物件使用 SetErrorInfo,而不論用戶端是使用 VTBL 系結還是 IDispatch

當進行跨 Apartment 呼叫時,COM 會清除任何錯誤物件。

進行通過 Proxy 存根的 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
程式庫 OleAut32.lib
Dll OleAut32.dll