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


Метод IMarshal::ReleaseMarshalData (objidlbase.h)

Уничтожает маршалированные пакеты данных.

Синтаксис

HRESULT ReleaseMarshalData(
  [in] IStream *pStm
);

Параметры

[in] pStm

Указатель на поток, содержащий пакет данных, который требуется уничтожить.

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

Этот метод может возвращать стандартные возвращаемые значения S_OK и E_FAIL, а также любые ошибки доступа к потоку для интерфейса IStream .

Комментарии

Если маршализованный пакет данных объекта не разархиалируется в пространстве клиентских процессов и пакет больше не требуется, клиент вызывает ReleaseMarshalData в реализации IMarshal прокси-сервера, чтобы указать объекту уничтожить пакет данных. Вызов выполняется в функции CoReleaseMarshalData . Пакет данных служит дополнительной ссылкой на объект , а освобождение данных аналогично освобождению указателя интерфейса путем вызова Release.

Если маршалированные пакеты данных каким-то образом не поступают в клиентский процесс или ReleaseMarshalData не удалось повторно создать на прокси-сервере, COM может вызвать этот метод для самого объекта.

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

Вы будете редко, если когда-либо иметь возможность вызывать этот метод самостоятельно. Исключением может быть реализация IMarshal в фабрике классов для объекта класса, в котором также реализуется IMarshal. В этом случае, если вы маршалировали объект в таблицу, в которой он мог быть извлечен несколькими клиентами, вы можете в рамках процедуры размежевать метод ReleaseMarshalData , чтобы освободить пакет данных для каждого прокси-сервера.

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

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

Требования

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

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

CoReleaseMarshalData

IMarshal