註冊 IInitializeSpy 介面的實作。 IInitializeSpy 介面的定義是允許開發人員在 COM 公寓上執行初始化和清除。
語法
HRESULT CoRegisterInitializeSpy(
[in] IInitializeSpy *pSpy,
[out] ULARGE_INTEGER *puliCookie
);
參數
[in] pSpy
IInitializeSpy 實作實例的指標。
[out] puliCookie
儲存識別此註冊的 Cookie 的位址。
返回值
此函式可以傳回標準傳回值E_INVALIDARG,以及下列值。
| 回傳碼 | Description |
|---|---|
|
物件已成功註冊。 |
|
物件不支援 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 |