Метод IMarshal::UnmarshalInterface (objidl.h)
Отменяет маршалирование указателя интерфейса.
Синтаксис
HRESULT UnmarshalInterface(
[in] IStream *pStm,
[in] REFIID riid,
[out] void **ppv
);
Параметры
[in] pStm
Указатель на поток, из которого должен быть удален указатель интерфейса.
[in] riid
Ссылка на идентификатор интерфейса для отмены маршалинга.
[out] ppv
Адрес переменной указателя, получающей указатель интерфейса. После успешного возврата *ppv содержит запрошенный указатель интерфейса для отмены маршалинга.
Возвращаемое значение
Этот метод может возвращать стандартное возвращаемое значение E_FAIL, а также следующие значения.
Код возврата | Описание |
---|---|
|
Указатель интерфейса был успешно удален. |
|
Указанный интерфейс не поддерживается. |
Комментарии
Библиотека 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) |