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 |