Attribut user_marshal
L’attribut [ user_marshal] est un attribut de type ACF similaire à [ represent_as]. Comme avec l’attribut IDL, [ wire_marshal], il offre un moyen plus efficace de marshaler des 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 dans MIDL. Chaque type spécifique à l’application a un type transmettable correspondant qui définit la représentation filaire.
Votre type spécifique à l’application peut être un type simple, composite ou pointeur. La restriction principale est que l’instance de type doit avoir une taille de mémoire fixe et bien définie. Si la taille de votre instance de type doit changer, utilisez un champ de pointeur plutôt qu’un tableau conforme. Vous pouvez également définir un pointeur vers le type modifiable.
Comme avec le [wire_marshal] attribut, vous fournissez des routines pour le dimensionnement, le marshaling, l’annulation et la libération des passes. Le tableau suivant décrit les quatre noms de routine fournis par l’utilisateur. Le type <> est le typeutilisateur spécifié dans la définition de type [user_marshal].
Routine | Description |
---|---|
<type>_UserSize | Dimensionne la mémoire tampon de données RPC avant le marshaling côté client ou serveur. |
<type>_UserMarshal | Marshale les données côté client ou serveur. |
<type>_UserUnmarshal | Annule 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 [ dans] uniquement, le client transmet au serveur. Le client a besoin des fonctions de type <>_UserSize et de <de type>_UserMarshal. Le serveur a besoin des fonctions de>_UserUnmarshal de type<et de <de type>_UserFree.
Pour un paramètre [ out]-only, le serveur transmet au client. Le serveur a besoin du type <>_UserSize et des fonctions de type <>_UserMarshal, tandis que le client a besoin de la fonction>_UserMarshal de type<.
Rubriques connexes