Compartir a través de


Atributo user_marshal

El atributo [ user_marshal] es un atributo de tipo ACF similar en sintaxis a [ represent_as]. Al igual que con el atributo IDL, [ wire_marshal], ofrece una manera más eficaz de serializar los datos a través de una red. Como atributo ACF, [user_marshal] permite serializar tipos de datos personalizados desconocidos para MIDL. Cada tipo específico de la aplicación tiene un tipo transmitible correspondiente que define la representación de cable.

El tipo específico de la aplicación puede ser un tipo de puntero simple, compuesto o . La restricción principal es que la instancia de tipo debe tener un tamaño de memoria fijo y bien definido. Si el tamaño de la instancia de tipo debe cambiar, use un campo de puntero en lugar de una matriz compatible. Como alternativa, puede definir un puntero al tipo modificable.

Al igual que con el atributo [wire_marshal], se proporcionan rutinas para el ajuste de tamaño, el cálculo de referencias, el desmarfado y los pases libres. En la tabla siguiente se describen los cuatro nombres de rutina proporcionados por el usuario. El <tipo es el tipo> userm especificado en la definición de tipo [user_marshal].

Rutina Descripción
<type>_UserSize Cambia el tamaño del búfer de datos RPC antes de calcular las referencias en el lado cliente o servidor.
<type>_UserMarshal Serializa los datos en el lado cliente o servidor.
<type>_UserUnmarshal Desmarshala los datos en el lado cliente o servidor.
<type>_UserFree Libera los datos en el lado servidor.

 

Estas rutinas proporcionadas por el usuario se proporcionan mediante el cliente o la aplicación de servidor, en función de los atributos direccionales.

Si el parámetro es solo [ in], el cliente transmite al servidor. El cliente necesita las <funciones type>_UserSize y <type>_UserMarshal . El servidor necesita las <funciones type>_UserUnmarshal y <type>_UserFree .

Para un parámetro [ out]-only, el servidor transmite al cliente. El servidor necesita las <funciones type>_UserSize y <type>_UserMarshal , mientras que el cliente necesita la <función type>_UserMarshal .

Atributo wire_marshal

Serialización de reglas para las referencias de usuario y wire_marshal

user_marshal

wire_marshal

NdrGetUserMarshalInfo