Codieren des Attributs
Das ACF-Attribut [encode] gibt an, dass eine Prozedur oder ein Datentyp Serialisierungsunterstützung benötigt.
[
encode
[ , interface-attribute-list]
]
interface interface-name
{
interface-definition
}
[ encode [ , op-attribute-list] ] proc-name
typedef [encode [ , type-attribute-list] ] type-name
-
interface-attribute-list
-
Gibt andere Attribute an, die für die Schnittstelle als Ganzes gelten.
-
Schnittstellenname
-
Gibt den Namen der Schnittstelle an.
-
Schnittstellendefinition
-
Gibt IDL-Anweisungen an, die die Definition der Schnittstelle bilden.
-
op-attribute-list
-
Gibt andere operative Attribute an, die für die Prozedur gelten, z. B. [decodieren].
-
proc-name
-
Gibt den Namen der Prozedur an.
-
type-attribute-list
-
Gibt andere Attribute an, die für den Typ gelten, z. B. [decodieren] und [allocate].
-
type-name
-
Gibt einen typ an, der in der IDL-Datei definiert ist.
Das Attribut [encode] bewirkt, dass der MIDL-Compiler Code generiert, den eine Anwendung zum Serialisieren von Daten in einen Puffer verwenden kann. Das [decode] -Attribut generiert den Code zum Aufheben derMardierung von Daten aus einem Puffer.
Verwenden Sie die Attribute [codieren] und [decodieren] in einem ACF, um Serialisierungscode für Prozeduren oder Typen zu generieren, die in der IDL-Datei einer Schnittstelle definiert sind. Bei Verwendung als Schnittstellenattribute gilt [encode] für alle Typen und Prozeduren, die in der IDL-Datei definiert sind. Bei Verwendung als operatives Attribut gilt [encode] nur für die angegebene Prozedur. Bei Verwendung als Typattribute gilt [encode] nur für den angegebenen Typ.
Wenn das Attribut [encode] oder [decode] auf eine Prozedur angewendet wird, generiert der MIDL-Compiler auf ähnliche Weise einen Serialisierungsstub, wie Remotestubs für Remoteroutinen generiert werden. Eine Prozedur kann entweder eine Remoteprozedur oder eine serialisierende Prozedur sein, aber sie kann nicht beides sein. Der Prototyp der generierten Routine wird an den STUB gesendet. H-Datei, während der Stub selbst in die Datei STUB_C.C wechselt.
Der MIDL-Compiler generiert zwei Funktionen für jeden Typ, für den das Attribut [encode] gilt, und eine zusätzliche Funktion für jeden Typ, für den das Attribut [decodierung] gilt. Beispielsweise generiert der Compiler für einen benutzerdefinierten Typ namens MyType Code für die Funktionen MyType_Encode, MyType_Decode und MyType_AlignSize. Für diese Funktionen schreibt der Compiler Prototypen in STUB. H und Quellcode für STUB_C.C.
Weitere Informationen zu Serialisierungshandles und zum Codieren oder Decodieren von Daten finden Sie unter Serialisierungsdienste.
/*
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();
}