attribut d’encodage

L’attribut ACF [encode] spécifie qu’une procédure ou un type de données nécessite la prise en charge de la sérialisation.

[ 
    encode 
    [ , interface-attribute-list] 
] 
interface interface-name
{
    interface-definition
}

[ encode [ , op-attribute-list] ] proc-name

typedef [encode [ , type-attribute-list] ] type-name

Paramètres

interface-attribute-list

Spécifie d’autres attributs qui s’appliquent à l’interface dans son ensemble.

nom_interface

Spécifie le nom de l’interface.

définition d’interface

Spécifie les instructions IDL qui forment la définition de l’interface.

op-attribute-list

Spécifie d’autres attributs opérationnels qui s’appliquent à la procédure, tels que [décodage].

proc-name

Spécifie le nom de la procédure.

type-attribute-list

Spécifie d’autres attributs qui s’appliquent au type, tels que [décodage] et [allouer].

type-name

Spécifie un type défini dans le fichier IDL.

Notes

L’attribut [encode] oblige le compilateur MIDL à générer du code qu’une application peut utiliser pour sérialiser des données dans une mémoire tampon. L’attribut [décodage] génère le code de démarshalation des données à partir d’une mémoire tampon.

Utilisez les attributs [encode] et [decode] dans un ACF pour générer du code de sérialisation pour les procédures ou les types définis dans le fichier IDL d’une interface. Lorsqu’il est utilisé comme attribut d’interface, [encode] s’applique à tous les types et procédures définis dans le fichier IDL. Lorsqu’il est utilisé comme attribut opérationnel, [encode] s’applique uniquement à la procédure spécifiée. Lorsqu’il est utilisé comme attribut de type, [encode] s’applique uniquement au type spécifié.

Lorsque l’attribut [encode] ou [decode] est appliqué à une procédure, le compilateur MIDL génère un stub de sérialisation de la même manière que les stubs distants sont générés pour les routines distantes. Une procédure peut être une procédure distante ou une procédure de sérialisation, mais elle ne peut pas être les deux. Le prototype de la routine générée est envoyé au STUB. Fichier H tandis que le stub lui-même passe dans le fichier STUB_C.C.

Le compilateur MIDL génère deux fonctions pour chaque type auquel l’attribut [encode] s’applique, et une fonction supplémentaire pour chaque type auquel l’attribut [décodage] s’applique . Par exemple, pour un type défini par l’utilisateur nommé MyType, le compilateur génère du code pour les fonctions MyType_Encode, MyType_Decode et MyType_AlignSize. Pour ces fonctions, le compilateur écrit des prototypes dans STUB. H et code source pour STUB_C.C.

Pour plus d’informations sur les handles de sérialisation et l’encodage ou le décodage des données, consultez Services de sérialisation.

Exemples

/* 
    ACF file example; 
    Assumes MyType1, MyType2, MyType3, MyProc1, MyProc2, MyProc3 defined 
    in IDL file  
    MyType1, MyType2, MyProc1, MyProc2 have encode and decode 
    serialization support 
    MyType3 and MyProc3 have encode serialization support only 
*/ 
[ 
    encode, 
    implicit_handle(handle_t bh) 
]    
interface regress 
{ 
    typedef [ decode ] MyType1; 
    typedef [ encode, decode ] MyType2; 
    [ decode ] MyProcc1(); 
    [ encode ] MyProc2(); 
}

Voir aussi

Fichier de configuration d’application (ACF)

Allouer

Décoder