Attribut user_marshal
L’attribut [ user_marshal] est un attribut de type ACF similaire en syntaxe à [ represent_as]. Comme avec l’attribut IDL, [ wire_marshal], il offre un moyen plus efficace de marshaler les données sur un réseau. En tant qu’attribut ACF, [user_marshal] vous permet de marshaler des types de données personnalisés inconnus de MIDL. Chaque type spécifique à l’application a un type de transmission correspondant qui définit la représentation filaire.
Votre type spécifique à l’application peut être un type simple, composite ou pointeur. La restriction main est que le type instance doit avoir une taille de mémoire fixe et bien définie. Si la taille de votre type instance doit changer, utilisez un champ pointeur plutôt qu’un tableau conforme. Vous pouvez également définir un pointeur vers le type modifiable.
Comme avec l’attribut [wire_marshal], vous fournissez des routines pour le dimensionnement, le marshaling, le démarshalage et la libération des passes. Le tableau suivant décrit les quatre noms de routine fournis par l’utilisateur. Le <type> est le type userm spécifié dans la définition de type [user_marshal].
Routine | Description |
---|---|
<type> _UserSize | Dimensionne la mémoire tampon de données RPC avant de marshaler côté client ou serveur. |
<type> _UserMarshal | Marshale les données côté client ou serveur. |
<type> _UserUnmarshal | Désactive les données côté client ou serveur. |
<type> _UserFree | Libère les données côté serveur. |
Ces routines fournies par l’utilisateur sont fournies par le client ou l’application serveur, en fonction des attributs directionnels.
Si le paramètre est [ in] uniquement, le client transmet au serveur. Le client a besoin des <fonctions type>_UserSize et <type>_UserMarshal . Le serveur a besoin des <fonctions type>_UserUnmarshal et <type>_UserFree .
Pour un paramètre [ out]-only, le serveur transmet au client. Le serveur a besoin des <fonctions type>_UserSize et <type>_UserMarshal , tandis que le client a besoin de la <fonction type>_UserMarshal .
Rubriques connexes