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 |
---|---|
|
L’objet a été correctement inscrit. |
|
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 |