Função CoRegisterInitializeSpy (objbase.h)

Registra uma implementação da interface IInitializeSpy . A interface IInitializeSpy é desafiada para permitir que os desenvolvedores executem inicialização e limpeza em apartamentos COM.

Sintaxe

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

Parâmetros

[in] pSpy

Um ponteiro para uma instância da implementação IInitializeSpy .

[out] puliCookie

O endereço no qual armazenar um cookie que identifica esse registro.

Retornar valor

Essa função pode retornar o valor de retorno padrão E_INVALIDARG, bem como os valores a seguir.

Código de retorno Descrição
S_OK
O objeto foi registrado com êxito.
E_NOINTERFACE
O objeto não dá suporte a IInitializeSpy.

Comentários

A função CoRegisterInitializeSpy registra uma implementação da interface IInitializeSpy , que define métodos a serem chamados quando CoInitializeEx (ou CoInitialize) ou CoUninitialize é invocado.

CoRegisterInitializeSpy chama QueryInterface para IID_InitializeSpy no pSpy. Ele armazena o endereço do ponteiro de interface retornado no armazenamento específico do thread que é independente do estado de inicialização COM para esse thread. Com êxito, ele armazena em puliCookie um cookie de ULARGE_INTEGER que representa esse registro. Passe esse cookie para CoRevokeInitializeSpy para revogar o registro.

As implementações do IInitializeSpy devem lidar com problemas de aninhamento causados pela chamada de CoInitializeEx ou CoUninitialize de dentro de um método de notificação. As notificações ocorrem somente após o registro ocorrer nesse thread. Por exemplo, se CoInitializeEx for chamado antes de CoRegisterInitializeSpy, os métodos de notificação PreInitialize e PostInitialize não serão chamados.

Os métodos de notificação não devem causar a falha de CoInitializeEx ou CoUninitialize gerando exceções. As implementações do IInitializeSpy não devem propagar exceções para o código que chama CoInitializeEx ou CoUninitialize.

É imprevisível se uma chamada para CoRegisterInitializeSpy de dentro de uma chamada de método IInitializeSpy será eficaz durante a chamada de nível superior atual (não aninhada) para CoInitializeEx ou CoUninitialize. Uma implementação registrada do IInitializeSpy sempre será eficaz para chamadas futuras de nível superior para CoInitializeEx ou CoUninitialize.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP com SP1 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho objbase.h
Biblioteca Ole32.lib
DLL Ole32.dll

Confira também

CoRevokeInitializeSpy

IInitializeSpy