Compartir a través de


Función CoRegisterInitializeSpy (objbase.h)

Registra una implementación de la interfaz IInitializeSpy . La interfaz IInitializeSpy se define para permitir a los desarrolladores realizar la inicialización y limpieza en apartamentos COM.

Syntax

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

Parámetros

[in] pSpy

Puntero a una instancia de la implementación de IInitializeSpy .

[out] puliCookie

Dirección en la que se va a almacenar una cookie que identifica este registro.

Valor devuelto

Esta función puede devolver el valor devuelto estándar E_INVALIDARG, así como los siguientes valores.

Código de retorno Description
S_OK
El objeto se registró correctamente.
E_NOINTERFACE
El objeto no admite IInitializeSpy.

Observaciones

La función CoRegisterInitializeSpy registra una implementación de la interfaz IInitializeSpy, que define los métodos a los que se llamará cuando se invoca CoInitializeEx (o CoInitialize) o CoUninitialize.

CoRegisterInitializeSpy llama a QueryInterface para IID_InitializeSpy en pSpy. Almacena la dirección del puntero de interfaz devuelto en el almacenamiento específico del subproceso que es independiente del estado de inicialización COM para este subproceso. Si se realiza correctamente, almacena en puliCookie una cookie ULARGE_INTEGER que representa este registro. Pase esta cookie a CoRevokeInitializeSpy para revocar el registro.

Las implementaciones de IInitializeSpy deben tratar los problemas de anidamiento causados por una llamada a CoInitializeEx o CoUninitialize desde dentro de un método de notificación. Las notificaciones solo se producen después de que se produzca el registro en este subproceso. Por ejemplo, si se llama a CoInitializeEx antes de CoRegisterInitializeSpy, no se llamará a los métodos de notificación PreInitialize y PostInitialize .

Los métodos de notificación no deben provocar el error de CoInitializeEx o CoUninitialize iniciando excepciones. Las implementaciones de IInitializeSpy no deben propagar excepciones al código que llama a CoInitializeEx o CoUninitialize.

Es impredecible si una llamada a CoRegisterInitializeSpy desde dentro de una llamada al método IInitializeSpy será efectiva durante la llamada de nivel superior actual (no anidada) a CoInitializeEx o CoUninitializeize. Una implementación registrada de IInitializeSpy siempre será efectiva para futuras llamadas de nivel superior a CoInitializeEx o CoUninitialize.

Requisitos

Requirement Importancia
Cliente mínimo compatible Windows XP con SP1 [solo aplicaciones de escritorio]
Servidor mínimo admitido Windows Server 2003 [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
Header objbase.h
Library Ole32.lib
DLL de Ole32.dll

Consulte también

CoRevokeInitializeSpy

IInitializeSpy