Función CoRegisterInitializeSpy (objbase.h)
Registra una implementación de la interfaz IInitializeSpy . La interfaz IInitializeSpy es desafiante para permitir a los desarrolladores realizar la inicialización y limpieza en apartamentos COM.
Sintaxis
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 devuelto | Descripción |
---|---|
|
El objeto se registró correctamente. |
|
El objeto no admite IInitializeSpy. |
Comentarios
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 CoUninitializeize.
Es impredecible si una llamada a CoRegisterInitializeSpy desde dentro de una llamada al método IInitializeSpy será efectiva durante la llamada actual de nivel superior (no anidado) a CoInitializeEx o CoUninitializeIze. Una implementación registrada de IInitializeSpy siempre será eficaz para futuras llamadas de nivel superior a CoInitializeEx o CoUninitializeize.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP con SP1 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | objbase.h |
Library | Ole32.lib |
Archivo DLL | Ole32.dll |
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de