CoDisconnectObject 函数 (combaseapi.h)
断开代表指向指定对象的所有接口指针维护的所有远程进程连接。
只有实际管理对象的进程应调用 CoDisconnectObject。
语法
HRESULT CoDisconnectObject(
[in] LPUNKNOWN pUnk,
[in] DWORD dwReserved
);
参数
[in] pUnk
指向要断开连接的对象上派生自 IUnknown 的任何接口的指针。
[in] dwReserved
此参数是保留的,必须为 0。
返回值
此函数返回S_OK,指示已成功删除与远程进程的所有连接。
注解
CoDisconnectObject 函数使服务器能够正确断开所有外部客户端与 pUnk 指定的对象的连接。
该代码会执行以下任务:
- 检查要断开连接的对象是否实现 IMarshal 接口。 如果是,则获取指向该接口的指针;如果不是,则获取指向标准封送处理程序 (即 COM) IMarshal 实现的指针。
- 使用它获取的 IMarshal 接口指针,函数随后调用 IMarshal::D isconnectObject 以断开所有进程外客户端的连接。
同样,支持其嵌入对象的外部链接的 OLE 容器可以调用 CoDisconnectObject 来销毁这些链接。 同样,此调用通常是为了响应关闭应用程序的用户。 容器应首先为其所有 OLE 对象调用 IOleObject::Close ,其中每个对象都应向其各个客户端发送 IAdviseSink::OnClose 通知。 然后,容器可以调用 CoDisconnectObject 以关闭任何现有连接。
CoDisconnectObject 不一定立即断开进程外客户端的连接。 如果任何封送调用在服务器对象上挂起, CoDisconnectObject 仅当这些调用已返回时才断开该对象的连接。 同时, CoDisconnectObject 设置一个标志,该标志会导致任何新的封送调用返回CO_E_OBJNOTCONNECTED。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 专业版 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows 2000 Server [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | combaseapi.h (包括 Objbase.h) |
Library | Ole32.lib |
DLL | Ole32.dll |