Функция type_UserUnmarshal
Функция <type>_UserUnmarshal является вспомогательной функцией для атрибутов [ wire_marshal] и [ user_marshal]. Заглушки вызывают эту функцию для отмены распределения данных на стороне клиента или сервера. Функция определяется следующим образом:
unsigned char __RPC_FAR * __RPC_USER <type>_UserUnmarshal(
unsigned long __RPC_FAR * pFlags,
unsigned char __RPC_FAR * pBuffer,
<type> __RPC_FAR * pMyObj);
Тип <> в имени функции означает тип userm, указанный в определении типа [wire_marshal] или [user_marshal]. Этот тип может быть непередаемым или даже ( при использовании с атрибутом [user_marshal] — неизвестным компилятору MIDL. Имя типа провода (имя переводимых типов) не используется в прототипе функции. Обратите внимание, однако, что тип провода определяет макет провода для данных, как указано в OSF DCE.
Параметр pFlags является указателем на поле длинного флага без знака . В верхнем слове флага содержатся флаги представления данных NDR в соответствии с определением OSF DCE для представлений с плавающей запятой, порядка байтов и символьных представлений. Нижнее слово содержит флаг контекста маршалинга, определенный в COM-канале. Точный макет флагов в поле описан в разделе Функция type_UserSize.
Параметр pBuffer является текущим указателем буфера. Этот указатель может выравнивать или не выравнивать по записи. Функция <type>_UserUnmarshal должна соответствующим образом выравнивать указатель буфера, демаршалировать данные и возвращать новую позицию буфера, которая является адресом первого байта после немаршализованного объекта.
Параметр pMyObj является указателем на объект пользовательского типа.
В разнородной среде подсистема NDR выполняет преобразование данных, необходимое перед вызовом <функции type>_UserUnmarshal . Обратите внимание, что подсистема NDR выполняет это преобразование данных в соответствии с определением типа провода, предоставленным для этого типа данных пользователя. Флаг указывает представление данных отправителя.
Связанные темы