Função CoDisconnectObject (combaseapi.h)
Desconecta todas as conexões de processo remoto que estão sendo mantidas em nome de todos os ponteiros de interface que apontam para um objeto especificado.
Somente o processo que realmente gerencia o objeto deve chamar CoDisconnectObject.
Sintaxe
HRESULT CoDisconnectObject(
[in] LPUNKNOWN pUnk,
[in] DWORD dwReserved
);
Parâmetros
[in] pUnk
Um ponteiro para qualquer interface derivada de IUnknown no objeto a ser desconectado.
[in] dwReserved
Esse parâmetro é reservado e deve ser 0.
Retornar valor
Essa função retorna S_OK para indicar que todas as conexões com processos remotos foram excluídas com êxito.
Comentários
A função CoDisconnectObject permite que um servidor desconecte corretamente todos os clientes externos para o objeto especificado por pUnk.
Ele executa as seguintes tarefas:
- Verifica se o objeto a ser desconectado implementa a interface IMarshal . Nesse caso, ele obtém o ponteiro para essa interface; caso contrário, ele obtém um ponteiro para a implementação IMarshal do marshaler padrão (ou seja, COM).
- Usando o ponteiro da interface IMarshal adquirido, a função chama IMarshal::D isconnectObject para desconectar todos os clientes fora do processo.
Da mesma forma, um contêiner OLE que dá suporte a links externos para seus objetos inseridos pode chamar CoDisconnectObject para destruir esses links. Novamente, essa chamada normalmente é feita em resposta a um usuário fechando o aplicativo. O contêiner deve primeiro chamar IOleObject::Close para todos os seus objetos OLE, cada um dos quais deve enviar notificações IAdviseSink::OnClose para seus vários clientes. Em seguida, o contêiner pode chamar CoDisconnectObject para fechar quaisquer conexões existentes.
CoDisconnectObject não desconecta necessariamente clientes fora do processo imediatamente. Se alguma chamada marshalada estiver pendente no objeto do servidor, CoDisconnectObject desconectará o objeto somente quando essas chamadas forem retornadas. Enquanto isso, CoDisconnectObject define um sinalizador que faz com que novas chamadas marshaladas retornem CO_E_OBJNOTCONNECTED.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | combaseapi.h (inclua Objbase.h) |
Biblioteca | Ole32.lib |
DLL | Ole32.dll |