Метод IMarshal::D isconnectObject (objidl.h)
Освобождает все подключения к объекту. Сервер объекта вызывает реализацию этого метода объекта перед завершением работы.
Синтаксис
HRESULT DisconnectObject(
[in] DWORD dwReserved
);
Параметры
[in] dwReserved
Этот параметр зарезервирован и должен иметь значение 0.
Возвращаемое значение
Если метод выполнен успешно, возвращаемое значение будет S_OK. В противном случае это E_FAIL.
Комментарии
Этот метод реализуется в объекте , а не на прокси-сервере.
Примечания к вызывающим абонентам
Обычно этот метод вызывается, когда пользователь принудительно закрывает COM-сервер с одним или несколькими запущенными объектами, реализующими IMarshal. Перед завершением работы сервер вызывает функцию CoDisconnectObject , чтобы освободить внешние подключения ко всем запущенным объектам. Однако для каждого объекта, реализующего IMarshal, эта функция вызывает DisconnectObject , чтобы каждый объект, управляющий собственной маршалингом, смог принять меры, чтобы уведомить своего прокси-сервера о том, что он вот-вот завершит работу.Примечания для разработчиков
В рамках обычного кода завершения работы сервер должен вызывать CoDisconnectObject, который, в свою очередь, вызывает DisconnectObject для каждого запущенного объекта, реализующего IMarshal.Результатом любой реализации этого метода должно быть разрешение прокси-сервера отвечать на все последующие вызовы от своего клиента, возвращая RPC_E_DISCONNECTED или CO_E_OBJNOTCONNECTED вместо того, чтобы пытаться перенаправить вызовы в исходный объект. Клиент может уничтожить прокси-сервер.
При реализации этого метода для неизменяемого объекта, например моникера, реализация не требует никаких действий, так как такие объекты обычно копируются целиком в адресное пространство клиента. Таким образом, они не имеют ни прокси-сервера, ни соединения с исходным объектом. Дополнительные сведения о маршалинге неизменяемых объектов см. в разделе "Когда следует реализовать" статьи IMarshal .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Профессиональная [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows 2000 Server [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | objidl.h (включая ObjIdl.h) |