Compartir a través de


Función type_UserUnmarshal

La <función type>_UserUnmarshal es una función auxiliar para los atributos [ wire_marshal] y [ user_marshal]. Los códigos auxiliares llaman a esta función para desmarshalar datos en el lado cliente o servidor. La función se define como:

unsigned char __RPC_FAR * __RPC_USER  <type>_UserUnmarshal(
    unsigned long __RPC_FAR * pFlags,
    unsigned char __RPC_FAR * pBuffer,
    <type>  __RPC_FAR *       pMyObj);

El <tipo> en el nombre de la función significa el tipo userm especificado en la definición de tipo [wire_marshal] o [user_marshal]. Este tipo puede ser intransmitible o incluso, cuando se usa con el atributo [user_marshal] desconocido para el compilador MIDL. El nombre del tipo de cable (el nombre del tipo transmisible) no se usa en el prototipo de función. Sin embargo, tenga en cuenta que el tipo de cable define el diseño de conexión para los datos según lo especificado por OSF DCE.

El parámetro pFlags es un puntero a un campo de marca larga sin signo . La palabra superior de la marca contiene marcas de representación de datos NDR definidas por OSF DCE para representaciones de punto flotante, orden de bytes y caracteres. La palabra inferior contiene una marca de contexto de serialización definida por el canal COM. El diseño exacto de las marcas dentro del campo se describe en La función type_UserSize.

El parámetro pBuffer es el puntero de búfer actual. Este puntero puede o no estar alineado en la entrada. El <tipo>_UserUnmarshal función debe alinear el puntero del búfer adecuadamente, anular la expresión de los datos y devolver la nueva posición del búfer, que es la dirección del primer byte después del objeto no cifrado.

El parámetro pMyObj es un puntero a un objeto de tipo definido por el usuario.

En un entorno heterogéneo, el motor NDR realiza cualquier conversión de datos necesaria antes de llamar a la <función type>_UserUnmarshal . Tenga en cuenta que el motor NDR lleva a cabo esta conversión de datos según la definición de tipo de conexión proporcionada para este tipo de datos de usuario. La marca indica la representación de datos del remitente.

Serialización de reglas para user_marshal y wire_marshal

wire_marshal

user_marshal