Функция CoUnmarshalInterface (combaseapi.h)
Инициализирует созданный прокси-сервер, используя данные, записанные в поток предыдущим вызовом функции CoMarshalInterface , и возвращает указатель интерфейса на этот прокси-сервер.
Синтаксис
HRESULT CoUnmarshalInterface(
[in] LPSTREAM pStm,
[in] REFIID riid,
[out] LPVOID *ppv
);
Параметры
[in] pStm
Указатель на поток, из которого должен быть удален интерфейс.
[in] riid
Ссылка на идентификатор интерфейса для отмены маршалинга. Для IID_NULL возвращенным интерфейсом является интерфейс, определенный потоком objref.iid.
[out] ppv
Адрес переменной указателя, получающей указатель интерфейса, запрошенный в riid. После успешного возврата *ppv содержит запрошенный указатель интерфейса для немаршалированного интерфейса.
Возвращаемое значение
Эта функция может возвращать стандартное возвращаемое значение E_FAIL, ошибки, возвращаемые CoCreateInstance, и следующие значения.
Код возврата | Описание |
---|---|
|
Указатель интерфейса был успешно удален. |
|
pStm является недопустимым указателем. |
|
Функция CoInitialize или OleInitialize не была вызвана в текущем потоке до вызова этой функции. |
|
Приложение объекта было отключено от системы удаленного взаимодействия (например, в результате вызова функции CoDisconnectObject ). |
|
Произошла ошибка при чтении базы данных регистрации. |
|
Окончательный объект QueryInterface этой функции для запрошенного интерфейса вернулся E_NOINTERFACE. |
Комментарии
Примечание по безопасности. Вызов этого метода с недоверенными данными представляет угрозу безопасности. Вызывайте этот метод только для надежных данных.
- Считывает из потока идентификатор CLSID, используемый для создания экземпляра прокси-сервера.
- Возвращает указатель IMarshal на прокси-сервер, который выполняет распаковку. Если объект использует реализацию маршалинга com по умолчанию, полученный таким образом указатель будет на экземпляр универсального прокси-объекта. Если маршалинг выполняется между двумя потоками в одном процессе, указателем является экземпляр внутрипроцессного свободнопотокового маршалера. Если объект предоставляет собственный код маршалинга, CoUnmarshalInterface вызывает функцию CoCreateInstance , передавая ИДЕНТИФИКАТОР CLSID, который он считывает из потока маршалинга. CoCreateInstance создает экземпляр прокси-сервера объекта и возвращает указатель интерфейса IMarshal на прокси-сервер.
- Используя любой полученный указатель интерфейса IMarshal, функция вызывает IMarshal::UnmarshalInterface и, при необходимости, IMarshal::ReleaseMarshalData.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Профессиональная [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows 2000 Server [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | combaseapi.h (включая Objbase.h) |
Библиотека | Ole32.lib |
DLL | Ole32.dll |