Attribut de _ Marshal d’utilisateur
L' [ attribut User _ Marshal ] est un attribut de type ACF similaire à la syntaxe à [ représenter _ comme ] . Comme avec l’attribut IDL, le [ _ Marshal de câble ] , il offre un moyen plus efficace de marshaler les données sur un réseau. En tant qu’attribut ACF, le [ _ Marshal ] d’utilisateur vous permet de marshaler des types de données personnalisés qui sont inconnus de MIDL. Chaque type spécifique à l’application a un type pouvant être transmis correspondant qui définit la représentation filaire.
Votre type spécifique à votre 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 être modifiée, utilisez un champ de 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émarshaling et les passes de libération. Le tableau suivant décrit les quatre noms de routines fournis par l’utilisateur. Le < type > est le type utilisateur spécifié dans la définition de type de [ _ Marshal ] utilisateur .
| Routine | Description |
|---|---|
| <type d' > _ utilisateur | Dimensionne la mémoire tampon de données RPC avant le marshaling côté client ou côté serveur. |
| <tapez > _ UserMarshal | Marshale les données côté client ou côté serveur. |
| <tapez > _ UserUnmarshal | Démarshale les données côté client ou côté serveur. |
| <tapez > _ 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 [ uniquement dans ] , le client transmet au serveur. Le client a besoin du < type > _ Users et des fonctions < > _ UserMarshal . Le serveur a besoin du < type > _ UserUnmarshal et des fonctions < > _ UserFree de type .
Pour un [ paramètre en sortie ] seule, le serveur transmet au client. Le serveur a besoin des fonctions < type > _ Users et < > _ UserMarshal , tandis que le client a besoin du < type > _ UserMarshal function.