Поделиться через


Метод 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)

См. также раздел

CoDisconnectObject

ИМаршал