Compartilhar via


Método IMarshal::D isconnectObject (objidl.h)

Libera todas as conexões com um objeto . O servidor do objeto chama a implementação do objeto desse método antes de desligar.

Sintaxe

HRESULT DisconnectObject(
  [in] DWORD dwReserved
);

Parâmetros

[in] dwReserved

Esse parâmetro é reservado e deve ser 0.

Retornar valor

Se o método for bem-sucedido, o valor retornado será S_OK. Caso contrário, será E_FAIL.

Comentários

Esse método é implementado no objeto , não no proxy.

Anotações aos Chamadores

O caso usual em que esse método é chamado ocorre quando um usuário final fecha à força um servidor COM que tem um ou mais objetos em execução que implementam IMarshal. Antes de desligar, o servidor chama a função CoDisconnectObject para liberar conexões externas para todos os seus objetos em execução. Para cada objeto que implementa IMarshal, no entanto, essa função chama DisconnectObject para que cada objeto que gerencia seu próprio marshaling possa tomar medidas para notificar seu proxy de que ele está prestes a desligar.

Observações aos implementadores

Como parte de seu código de desligamento normal, um servidor deve chamar CoDisconnectObject, que, por sua vez, chama DisconnectObject, em cada um de seus objetos em execução que implementa IMarshal.

O resultado de qualquer implementação desse método deve ser permitir que um proxy responda a todas as chamadas subsequentes de seu cliente retornando RPC_E_DISCONNECTED ou CO_E_OBJNOTCONNECTED em vez de tentar encaminhar as chamadas para o objeto original. Cabe ao cliente destruir o proxy.

Se você estiver implementando esse método para um objeto imutável, como um moniker, sua implementação não precisará fazer nada porque esses objetos normalmente são copiados inteiros para o espaço de endereço do cliente. Portanto, eles não têm um proxy nem uma conexão com o objeto original. Para obter mais informações sobre como realizar marshaling de objetos imutáveis, consulte a seção "Quando implementar" do tópico IMarshal .

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 objidl.h (inclua ObjIdl.h)

Confira também

Codisconnectobject

IMarshal