CoRegisterInitializeSpy 函式 (objbase.h)

註冊 IInitializeSpy 介面的實作。 IInitializeSpy 介面已被取代,可讓開發人員在 COM Apartment 上執行初始化和清除。

語法

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

參數

[in] pSpy

IInitializeSpy 實作實例的指標。

[out] puliCookie

用來儲存可識別此註冊之 Cookie 的位址。

傳回值

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

傳回碼 描述
S_OK
已成功註冊物件。
E_NOINTERFACE
對象不支援 IInitializeSpy

備註

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

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

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

通知方法不得藉由擲回例外狀況而造成 CoInitializeExCoUninitialize 失敗。 IInitializeSpy 的實作不得將例外狀況傳播至呼叫 CoInitializeExCoUninitialize 的程式代碼。

在目前最上層 (非巢狀) 對 CoInitializeExCoUninitialize 的呼叫期間,從 IInitializeSpy 呼叫 CoRegisterInitializeSpy 是否有效。 IInitializeSpy 的已註冊實作一律適用於未來對 CoInitializeExCoUninitialize 的頂層呼叫。

規格需求

需求
最低支援的用戶端 具有 SP1 的 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 objbase.h
程式庫 Ole32.lib
Dll Ole32.dll

另請參閱

CoRevokeInitializeSpy

IInitializeSpy