共用方式為


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 實作必須處理從通知方法內呼叫 CoInitializeExCoUninitialize 所造成的巢狀問題。 只有在此線程上進行註冊之後,才會發生通知。 例如,如果在 CoRegisterInitializeSpy 之前呼叫 CoInitializeEx,則不會呼叫 PreInitializePostInitialize 通知方法。

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

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

需求

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

另請參閱

CoRevokeInitializeSpy

IInitializeSpy