Функция CoDisconnectObject (combaseapi.h)
Отключает все подключения к удаленному процессу, поддерживаемые от имени всех указателей интерфейса, указывающих на указанный объект.
Только процесс, который фактически управляет объектом, должен вызывать CoDisconnectObject.
Синтаксис
HRESULT CoDisconnectObject(
[in] LPUNKNOWN pUnk,
[in] DWORD dwReserved
);
Параметры
[in] pUnk
Указатель на любой интерфейс, производный от IUnknown для объекта, который необходимо отключить.
[in] dwReserved
Этот параметр зарезервирован и должен иметь значение 0.
Возвращаемое значение
Эта функция возвращает S_OK, чтобы указать, что все подключения к удаленным процессам были успешно удалены.
Комментарии
Функция CoDisconnectObject позволяет серверу правильно отключить все внешние клиенты от объекта, указанного pUnk.
Он выполняет следующие задачи:
- Проверяет, реализует ли отключенный объект интерфейс IMarshal . Если да, он получает указатель на этот интерфейс; В противном случае он получает указатель на реализацию IMarshal стандартного маршалера (т. е. COM).
- Используя полученный указатель интерфейса IMarshal , функция вызывает IMarshal::D isconnectObject для отключения всех клиентов вне процесса.
Аналогичным образом контейнер OLE, поддерживающий внешние ссылки на внедренные объекты, может вызывать CoDisconnectObject для уничтожения этих связей. Опять же, этот вызов обычно выполняется в ответ на закрытие приложения пользователем. Контейнер должен сначала вызвать IOleObject::Close для всех своих объектов OLE, каждый из которых должен отправлять уведомления IAdviseSink::OnClose различным клиентам. Затем контейнер может вызвать CoDisconnectObject , чтобы закрыть все существующие подключения.
CoDisconnectObject не обязательно немедленно отключает внепроцессные клиенты. Если какие-либо маршалированные вызовы находятся в состоянии ожидания в объекте сервера, CoDisconnectObject отключает объект только после возврата этих вызовов. В то же время CoDisconnectObject устанавливает флаг, который приводит к возврату всех новых маршалированных вызовов CO_E_OBJNOTCONNECTED.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Профессиональная [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows 2000 Server [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | combaseapi.h (включая Objbase.h) |
Библиотека | Ole32.lib |
DLL | Ole32.dll |