Función CoDisconnectObject (combaseapi.h)
Desconecta todas las conexiones de procesos remotos que se mantienen en nombre de todos los punteros de interfaz que apuntan a un objeto especificado.
Solo el proceso que administra realmente el objeto debe llamar a CoDisconnectObject.
Sintaxis
HRESULT CoDisconnectObject(
[in] LPUNKNOWN pUnk,
[in] DWORD dwReserved
);
Parámetros
[in] pUnk
Puntero a cualquier interfaz derivada de IUnknown en el objeto que se va a desconectar.
[in] dwReserved
Este parámetro está reservado y debe ser 0.
Valor devuelto
Esta función devuelve S_OK para indicar que todas las conexiones a procesos remotos se eliminaron correctamente.
Comentarios
La función CoDisconnectObject permite que un servidor desconecte correctamente todos los clientes externos al objeto especificado por pUnk.
Realiza las siguientes tareas:
- Comprueba si el objeto que se va a desconectar implementa la interfaz IMarshal . Si es así, obtiene el puntero a esa interfaz; Si no es así, obtiene un puntero a la implementación de IMarshal del serializador estándar (es decir, COM).
- Con el puntero de interfaz IMarshal que haya adquirido, la función llama a IMarshal::D isconnectObject para desconectar todos los clientes fuera de proceso.
Del mismo modo, un contenedor OLE que admite vínculos externos a sus objetos incrustados puede llamar a CoDisconnectObject para destruir esos vínculos. De nuevo, esta llamada se realiza normalmente en respuesta a un usuario que cierra la aplicación. El contenedor debe llamar primero a IOleObject::Close para todos sus objetos OLE, cada uno de los cuales debe enviar notificaciones IAdviseSink::OnClose a sus distintos clientes. A continuación, el contenedor puede llamar a CoDisconnectObject para cerrar las conexiones existentes.
CoDisconnectObject no necesariamente desconecta los clientes fuera de proceso inmediatamente. Si hay llamadas serialadas pendientes en el objeto de servidor, CoDisconnectObject desconecta el objeto solo cuando se han devuelto esas llamadas. Mientras tanto, CoDisconnectObject establece una marca que hace que las nuevas llamadas serialadas devuelvan CO_E_OBJNOTCONNECTED.
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 | combaseapi.h (incluya Objbase.h) |
Library | Ole32.lib |
Archivo DLL | Ole32.dll |