CoRegisterInitializeSpy 関数 (objbase.h)
IInitializeSpy インターフェイスの実装を登録します。 IInitializeSpy インターフェイスは、開発者が COM アパートメントで初期化とクリーンアップを実行できるようにするために開発されています。
構文
HRESULT CoRegisterInitializeSpy(
[in] IInitializeSpy *pSpy,
[out] ULARGE_INTEGER *puliCookie
);
パラメーター
[in] pSpy
IInitializeSpy 実装のインスタンスへのポインター。
[out] puliCookie
この登録を識別する Cookie を格納するアドレス。
戻り値
この関数は、標準の戻り値E_INVALIDARGと、次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
オブジェクトが正常に登録されました。 |
|
オブジェクトは IInitializeSpy をサポートしていません。 |
注釈
CoRegisterInitializeSpy 関数は、CoInitializeEx (または CoInitialize) または CoUninitialize が呼び出されたときに呼び出されるメソッドを定義する IInitializeSpy インターフェイスの実装を登録します。
CoRegisterInitializeSpy は、pSpy のIID_InitializeSpyに対して QueryInterface を呼び出します。 返されたインターフェイス ポインターのアドレスは、このスレッドの COM 初期化状態に依存しないスレッド固有のストレージに格納されます。 成功すると、この登録を表すULARGE_INTEGERクッキーを puliCookie に格納します。 この Cookie を CoRevokeInitializeSpy に渡して、登録を取り消します。
IInitializeSpy 実装では、通知メソッド内から CoInitializeEx または CoUninitialize を呼び出すことによって発生する入れ子の問題に対処する必要があります。 通知は、このスレッドで登録が行われる後にのみ発生します。 たとえば、CoRegisterInitializeSpy の前に CoInitializeEx が呼び出された場合、PreInitialize 通知メソッドと PostInitialize 通知メソッドは呼び出されません。
通知メソッドは、例外をスローして CoInitializeEx または CoUninitialize のエラーを引き起こしてはなりません。 IInitializeSpy の実装では、CoInitializeEx または CoUninitialize を呼び出すコードに例外を伝達することはできません。
IInitializeSpy メソッド呼び出し内からの CoRegisterInitializeSpy の呼び出しが、CoInitializeEx または CoUninitialize への現在の最上位 (入れ子になっていない) 呼び出し中に有効になるかどうかは予測できません。 IInitializeSpy の登録された実装は、今後の CoInitializeEx または CoUninitialize の最上位の呼び出しに対して常に有効になります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | SP1 を使用した Windows XP [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | objbase.h |
Library | Ole32.lib |
[DLL] | Ole32.dll |