Compartir a través de


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

Libera todas las conexiones a un objeto . El servidor del objeto llama a la implementación del objeto de este método antes de apagarse.

Sintaxis

HRESULT DisconnectObject(
  [in] DWORD dwReserved
);

Parámetros

[in] dwReserved

Este parámetro está reservado y debe ser 0.

Valor devuelto

Si el método se realiza correctamente, el valor devuelto se S_OK. De lo contrario, es E_FAIL.

Comentarios

Este método se implementa en el objeto, no en el proxy.

Notas a los autores de llamadas

El caso habitual en el que se llama a este método se produce cuando un usuario final cierra forzosamente un servidor COM que tiene uno o varios objetos en ejecución que implementan IMarshal. Antes de apagarse, el servidor llama a la función CoDisconnectObject para liberar conexiones externas a todos sus objetos en ejecución. Sin embargo, para cada objeto que implementa IMarshal, esta función llama a DisconnectObject para que cada objeto que administre sus propias referencias pueda tomar medidas para notificar a su proxy que está a punto de apagarse.

Notas para los implementadores

Como parte de su código de apagado normal, un servidor debe llamar a CoDisconnectObject, que a su vez llama a DisconnectObject, en cada uno de sus objetos en ejecución que implementa IMarshal.

El resultado de cualquier implementación de este método debe ser permitir que un proxy responda a todas las llamadas posteriores de su cliente devolviendo RPC_E_DISCONNECTED o CO_E_OBJNOTCONNECTED en lugar de intentar reenviar las llamadas al objeto original. Es el cliente el que destruye el proxy.

Si va a implementar este método para un objeto inmutable, como un moniker, la implementación no necesita hacer nada porque estos objetos normalmente se copian enteros en el espacio de direcciones del cliente. Por lo tanto, no tienen ningún proxy ni una conexión con el objeto original. Para obtener más información sobre la serialización de objetos inmutables, vea la sección "Cuándo implementar" del tema IMarshal .

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado objidl.h (incluya ObjIdl.h)

Consulte también

CoDisconnectObject

IMarshal