CoRegisterInitializeSpy 函式 (objbase.h)

註冊 IInitializeSpy 介面的實作。 IInitializeSpy 介面的定義是允許開發人員在 COM 公寓上執行初始化和清除。

語法

HRESULT CoRegisterInitializeSpy(
  [in]  IInitializeSpy *pSpy,
  [out] ULARGE_INTEGER *puliCookie
);

參數

[in] pSpy

IInitializeSpy 實作實例的指標。

[out] puliCookie

儲存識別此註冊的 Cookie 的位址。

返回值

此函式可以傳回標準傳回值E_INVALIDARG,以及下列值。

回傳碼 Description
S_OK
物件已成功註冊。
E_NOINTERFACE
物件不支援 IInitializeSpy。

備註

CoRegisterInitializeSpy 函式會註冊 IInitializeSpy 介面的實作,以定義叫用 CoInitializeEx (或 CoInitialize) 或 CoUninitialize 時要呼叫的方法。

CoRegisterInitializeSpy 會呼叫 QueryInterface 以取得 pSpy 上的IID_InitializeSpy。 它會將傳回介面指標的位址儲存在與此執行緒的 COM 初始化狀態無關的執行緒特定記憶體中。 成功後,它會在 puliCookie 中儲存代表此註冊的 ULARGE_INTEGER Cookie。 將此 Cookie 傳遞至 CoRevokeInitializeSpy 以撤銷註冊。

IInitializeSpy 實作必須處理從通知方法內呼叫 CoInitializeEx 或 CoUninitialize 所造成的巢狀問題。 只有在此線程上進行註冊之後,才會發生通知。 例如,如果在 CoRegisterInitializeSpy 之前呼叫 CoInitializeEx,則不會呼叫 PreInitialize 和 PostInitialize 通知方法。

通知方法不得擲回例外狀況,導致 CoInitializeEx 或 CoUninitialize 失敗。 IInitializeSpy 的實作不得將例外狀況傳播至呼叫 CoInitializeEx 或 CoUninitialize 的程式碼。

無法預測從 IInitializeSpy 方法呼叫內呼叫 CoRegisterInitializeSpy 在目前最上層 (非巢狀) 呼叫 CoInitializeEx 或 CoUninitialize 期間是否有效。 IInitializeSpy 的已註冊實作一律適用於未來對 CoInitializeEx 或 CoUninitialize 的最上層呼叫。

需求

Requirement 價值觀
最低支援的用戶端 Windows XP SP1 [僅限傳統型應用程式]
支援的最低伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平臺 窗戶
Header objbase.h
Library Ole32.lib
DLL Ole32.dll

另請參閱

CoRevokeInitializeSpy

IInitializeSpy