codificare l'attributo

L'attributo ACF [encode] specifica che una routine o un tipo di dati necessita del supporto per la serializzazione.

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

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

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

Parametri

interface-attribute-list

Specifica altri attributi che si applicano all'interfaccia nel suo complesso.

interface-name

Specifica il nome dell'interfaccia.

definizione dell'interfaccia

Specifica le istruzioni IDL che formano la definizione dell'interfaccia.

op-attribute-list

Specifica altri attributi operativi applicabili alla routine, ad esempio [decode].

proc-name

Specifica il nome della routine.

type-attribute-list

Specifica altri attributi applicabili al tipo, ad esempio [decode] e [allocate].

type-name

Specifica un tipo definito nel file IDL.

Commenti

L'attributo [encode] fa sì che il compilatore MIDL generi codice che un'applicazione può usare per serializzare i dati in un buffer. L'attributo [decode] genera il codice per annullare ilmarshaing dei dati da un buffer.

Usare gli attributi [encode] e [decode] in un ACF per generare codice di serializzazione per le procedure o i tipi definiti nel file IDL di un'interfaccia. Se usato come attributo di interfaccia, [encode] si applica a tutti i tipi e le procedure definiti nel file IDL. Se usato come attributo operativo, [encode] si applica solo alla procedura specificata. Se usato come attributo di tipo, [encode] si applica solo al tipo specificato.

Quando l'attributo [encode] o [decode] viene applicato a una routine, il compilatore MIDL genera uno stub di serializzazione in modo simile a quello degli stub remoti generati per le routine remote. Una routine può essere una procedura remota o di serializzazione, ma non può essere entrambe. Il prototipo della routine generata viene inviato allo STUB. File H mentre lo stub stesso viene inserito nel file STUB_C.C.

Il compilatore MIDL genera due funzioni per ogni tipo a cui si applica l'attributo [encode] e una funzione aggiuntiva per ogni tipo a cui si applica l'attributo [decode]. Ad esempio, per un tipo definito dall'utente denominato MyType, il compilatore genera codice per le funzioni MyType_Encode, MyType_Decode e MyType_AlignSize. Per queste funzioni, il compilatore scrive prototipi in STUB. Codice H e sorgente per STUB_C.C.

Per altre informazioni sugli handle di serializzazione e sulla codifica o sulla decodifica dei dati, vedere Servizi di serializzazione.

Esempi

/* 
    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(); 
}

Vedere anche

File di configurazione dell'applicazione (ACF)

Allocare

decode