Atributo wire_marshal
El atributo [ wire_marshal] es un atributo de tipo IDL similar en sintaxis a [ transmit_as], pero proporciona una manera más eficaz de serializar los datos a través de una red.
Use el atributo [wire_marshal] para especificar un tipo de datos que se transmitirá en lugar del tipo de datos específico de la aplicación. Cada tipo específico de aplicación tiene un tipo transmitible correspondiente que define la representación de cable (la representación usada en la red). No es necesario transmitir el tipo específico de la aplicación, pero debe ser un tipo que MIDL reconozca. Para serializar un tipo desconocido para MIDL, use el atributo ACF [ user_marshal].
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.
Debe proporcionar las rutinas para cambiar el tamaño, serializar y desmarizar los datos, así como liberar la memoria asociada. 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 [wire_marshal].
Rutina | Descripción |
---|---|
<tipo>_UserSize | Cambia el tamaño del búfer de datos RPC antes de calcular las referencias en el lado cliente o servidor. |
>_UserMarshal de tipo< | Serializa los datos en el lado cliente o servidor. |
<tipo>_UserUnmarshal | Desenlaza los datos en el lado cliente o servidor. |
<tipo>_UserFree | Libera los datos en el servidor. |
El cliente o la aplicación de servidor proporcionan estas rutinas proporcionadas por el programador en función de los atributos direccionales.
Si el parámetro es [ solo en] , el cliente transmite al servidor. El cliente necesita el>_UserSize de tipo<<y las funciones de tipo>_UserMarshal. El servidor necesita el tipo de <>_UserUnmarshaly <tipo>_UserFree funciones.
Para un parámetro [ out]-only, el servidor transmite al cliente. El servidor necesita las funciones>_UserSize de tipo<y <tipo>_UserMarshal, mientras que el cliente necesita la función>_UserMarshal de tipo<.
Temas relacionados
-
el del atributo user_marshal