Partager via


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<.

l’attribut wire_marshal

règles de marshaling pour le marshalage d’utilisateurs et les wire_marshal

user_marshal

wire_marshal

NdrGetUserMarshalInfo