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


Метод IMarshal::UnmarshalInterface (objidl.h)

Отменяет маршалирование указателя интерфейса.

Синтаксис

HRESULT UnmarshalInterface(
  [in]  IStream *pStm,
  [in]  REFIID  riid,
  [out] void    **ppv
);

Параметры

[in] pStm

Указатель на поток, из которого должен быть удален указатель интерфейса.

[in] riid

Ссылка на идентификатор интерфейса для отмены маршалинга.

[out] ppv

Адрес переменной указателя, получающей указатель интерфейса. После успешного возврата *ppv содержит запрошенный указатель интерфейса для отмены маршалинга.

Возвращаемое значение

Этот метод может возвращать стандартное возвращаемое значение E_FAIL, а также следующие значения.

Код возврата Описание
S_OK
Указатель интерфейса был успешно удален.
E_NOINTERFACE
Указанный интерфейс не поддерживается.

Комментарии

Библиотека COM в процессе, в котором будет происходить распаковка, вызывает реализацию этого метода прокси-сервера.

Примечания к вызывающим абонентам

Не вызывайте этот метод напрямую. Однако в некоторых ситуациях вы можете вызвать его косвенно с помощью вызова CoUnmarshalInterface. Например, если вы реализуете заглушку, реализация вызовет CoUnmarshalInterface , когда заглушка получает указатель интерфейса в качестве параметра в вызове метода.

Примечания для разработчиков

Реализация прокси-сервера должна считывать данные, записанные в поток реализацией исходного объекта IMarshal::MarshalInterface , и использовать эти данные для инициализации прокси-объекта, CLSID которого был возвращен вызовом заглушки маршалинга в реализацию IMarshal::GetUnmarshalClass исходного объекта.

Чтобы вернуть соответствующий указатель интерфейса, реализация прокси-сервера может просто вызвать QueryInterface для себя, передав параметры riid и ppv . Однако реализация UnmarshalInterface может создать другой объект и при необходимости вернуть на него указатель.

Непосредственно перед выходом, даже если он завершается с ошибкой, реализация должна изменить положение указателя поиска в потоке сразу после последнего байта прочитанных данных.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header objidl.h (включая ObjIdl.h)

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

CoUnmarshalInterface

IMarshal