Partager via


CoRegisterInitializeSpy, fonction (objbase.h)

Inscrit une implémentation de l’interface IInitializeSpy . L’interface IInitializeSpy est défiée pour permettre aux développeurs d’effectuer l’initialisation et le nettoyage sur les appartements COM.

Syntaxe

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

Paramètres

[in] pSpy

Pointeur vers un instance de l’implémentation IInitializeSpy.

[out] puliCookie

Adresse à laquelle stocker un cookie qui identifie cette inscription.

Valeur retournée

Cette fonction peut retourner la valeur de retour standard E_INVALIDARG, ainsi que les valeurs suivantes.

Code de retour Description
S_OK
L’objet a été correctement inscrit.
E_NOINTERFACE
L’objet ne prend pas en charge IInitializeSpy.

Remarques

La fonction CoRegisterInitializeSpy inscrit une implémentation de l’interface IInitializeSpy , qui définit les méthodes à appeler lorsque CoInitializeEx (ou CoInitialize) ou CoUninitialize est appelé.

CoRegisterInitializeSpy appelle QueryInterface pour IID_InitializeSpy sur pSpy. Il stocke l’adresse du pointeur d’interface retourné dans un stockage spécifique au thread qui est indépendant de l’état d’initialisation COM pour ce thread. En cas de réussite, il stocke dans puliCookie un cookie ULARGE_INTEGER qui représente cette inscription. Transmettez ce cookie à CoRevokeInitializeSpy pour révoquer l’inscription.

Les implémentations IInitializeSpy doivent gérer les problèmes d’imbrication provoqués par l’appel de CoInitializeEx ou CoUninitialize à partir d’une méthode de notification. Les notifications se produisent uniquement après l’inscription sur ce thread. Par exemple, si CoInitializeEx est appelé avant CoRegisterInitializeSpy, les méthodes de notification PreInitialize et PostInitialize ne sont pas appelées.

Les méthodes de notification ne doivent pas provoquer l’échec de CoInitializeEx ou CoUninitialize en lisant des exceptions. Les implémentations de IInitializeSpy ne doivent pas propager d’exceptions au code qui appelle CoInitializeEx ou CoUninitialize.

Il est imprévisible qu’un appel à CoRegisterInitializeSpy à partir d’un appel de méthode IInitializeSpy soit effectif pendant l’appel de niveau supérieur (non imbriqué) actuel à CoInitializeEx ou CoUninitialize. Une implémentation inscrite de IInitializeSpy sera toujours effective pour les futurs appels de niveau supérieur à CoInitializeEx ou CoUninitialize.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP avec SP1 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête objbase.h
Bibliothèque Ole32.lib
DLL Ole32.dll

Voir aussi

CoRevokeInitializeSpy

IInitializeSpy