Функция CoGetMarshalSizeMax (combaseapi.h)
Возвращает верхнюю границу для количества байтов, необходимых для маршалирования указанного указателя интерфейса на указанный объект.
Синтаксис
HRESULT CoGetMarshalSizeMax(
[out] ULONG *pulSize,
[in] REFIID riid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwDestContext,
[in, optional] LPVOID pvDestContext,
[in] DWORD mshlflags
);
Параметры
[out] pulSize
Указатель на значение верхней границы размера (в байтах) пакета данных, записываемого в поток маршалинга. Если этот параметр равен 0, размер пакета неизвестен.
[in] riid
Ссылка на идентификатор интерфейса, указатель которого должен быть маршалирован. Этот интерфейс должен быть производным от интерфейса IUnknown .
[in] pUnk
Указатель на интерфейс для маршалинга. Этот интерфейс должен быть производным от интерфейса IUnknown .
[in] dwDestContext
Контекст назначения, в котором требуется отменить удаление указанного интерфейса. Значения для dwDestContext поступают из перечисления MSHCTX.
[in, optional] pvDestContext
Этот параметр зарезервирован и должен иметь значение NULL.
[in] mshlflags
Указывает, должны ли маршалированные данные передаваться обратно клиенту, обрабатывая обычный регистр, или записываться в глобальную таблицу, где их могут получить несколько клиентов. Значения поступают из перечисления MSHLFLAGS.
Возвращаемое значение
Эта функция может возвращать стандартное возвращаемое значение E_UNEXPECTED, а также следующие значения.
Код возврата | Описание |
---|---|
|
Верхняя граница была успешно возвращена. |
|
Перед вызовом этой функции необходимо вызвать функцию CoInitialize или OleInitialize . |
Комментарии
Эта функция выполняет следующие задачи:
- Запрашивает у объекта указатель IMarshal или, если объект не реализует IMarshal, получает указатель на стандартный маршалер COM.
- Используя указатель, полученный в предыдущем элементе, вызывает IMarshal::GetMarshalSizeMax.
- Добавляет к значению, возвращаемого вызовом GetMarshalSizeMax , размер заголовка данных маршалинга и, возможно, значения CLSID прокси-сервера, чтобы получить максимальный размер в байтах объема данных, записываемых в поток маршалинга.
Значение, возвращаемое этим методом, гарантированно будет действительным только при условии, что внутреннее состояние маршалируемого объекта не изменится. Таким образом, фактическое маршалирование должно выполняться сразу после возвращения этой функции, иначе заглушка рискует, что объекту из-за некоторого изменения состояния может потребоваться больше памяти для маршалинга, чем было первоначально указано.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Профессиональная [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows 2000 Server [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | combaseapi.h (включая Objbase.h) |
Библиотека | Ole32.lib |
DLL | Ole32.dll |