Partager via


CoRegisterInitializeSpy, fonction (objbase.h)

Inscrit une implémentation de l’interface IInitializeSpy . L’interface IInitializeSpy est définie 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 une 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 Descriptif
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 le 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 traiter 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 lève des exceptions. Les implémentations d’IInitializeSpy ne doivent pas propager d’exceptions au code qui appelle CoInitializeEx ou CoUninitialize.

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

Spécifications

Requirement Valeur
Client minimum requis Windows XP avec SP1 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
plateforme cible Fenêtres
Header objbase.h
Library Ole32.lib
DLL Ole32.dll

Voir aussi

CoRevokeInitializeSpy

IInitializeSpy