Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 |
|---|---|
|
El objeto se registró correctamente. |
|
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 |