CoRegisterInitializeSpy 函式 (objbase.h)
註冊 IInitializeSpy 介面的實作。 IInitializeSpy 介面已被取代,可讓開發人員在 COM Apartment 上執行初始化和清除。
語法
HRESULT CoRegisterInitializeSpy(
[in] IInitializeSpy *pSpy,
[out] ULARGE_INTEGER *puliCookie
);
參數
[in] pSpy
IInitializeSpy 實作實例的指標。
[out] puliCookie
用來儲存可識別此註冊之 Cookie 的位址。
傳回值
此函式可以傳回標準傳回值E_INVALIDARG,以及下列值。
傳回碼 | 描述 |
---|---|
|
已成功註冊物件。 |
|
對象不支援 IInitializeSpy。 |
備註
CoRegisterInitializeSpy 函式會註冊 IInitializeSpy 介面的實作,它會定義叫用 CoInitializeEx (或 CoInitialize) 或 CoUninitialize 時所呼叫的方法。
CoRegisterInitializeSpy 會呼叫 pSpy 上IID_InitializeSpy的 QueryInterface。 它會將傳回介面指標的位址儲存在與這個線程的 COM 初始化狀態無關的線程特定記憶體中。 成功時,它會儲存在 puliCookie 中代表此註冊 的 ULARGE_INTEGER Cookie。 將此 Cookie 傳遞至 CoRevokeInitializeSpy 以撤銷註冊。
IInitializeSpy 實作必須處理從通知方法內呼叫 CoInitializeEx 或 CoUninitialize 所造成的巢狀問題。 只有在此線程上發生註冊之後,才會發生通知。 例如,如果在 CoRegisterInitializeSpy 之前呼叫 CoInitializeEx,則不會呼叫 PreInitialize 和 PostInitialize 通知方法。
通知方法不得藉由擲回例外狀況而造成 CoInitializeEx 或 CoUninitialize 失敗。 IInitializeSpy 的實作不得將例外狀況傳播至呼叫 CoInitializeEx 或 CoUninitialize 的程式代碼。
在目前最上層 (非巢狀) 對 CoInitializeEx 或 CoUninitialize 的呼叫期間,從 IInitializeSpy 呼叫 CoRegisterInitializeSpy 是否有效。 IInitializeSpy 的已註冊實作一律適用於未來對 CoInitializeEx 或 CoUninitialize 的頂層呼叫。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 具有 SP1 的 Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | objbase.h |
程式庫 | Ole32.lib |
Dll | Ole32.dll |