atributo de codificación
El atributo ACF [encode] especifica que un procedimiento o un tipo de datos necesita compatibilidad con la serialización.
[
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
-
Especifica otros atributos que se aplican a la interfaz en su conjunto.
-
interface-name
-
Especifica el nombre de la interfaz.
-
interfaz-definición
-
Especifica instrucciones IDL que forman la definición de la interfaz.
-
op-attribute-list
-
Especifica otros atributos operativos que se aplican al procedimiento como [descodificación].
-
proc-name
-
Especifica el nombre del procedimiento.
-
type-attribute-list
-
Especifica otros atributos que se aplican al tipo como [descodificación] y [allocate].
-
type-name
-
Especifica un tipo definido en el archivo IDL.
El atributo [encode] hace que el compilador MIDL genere código que una aplicación pueda usar para serializar los datos en un búfer. El atributo [descodificar] genera el código para desmarizar datos de un búfer.
Use los atributos [encode] y [decode] de un ACF para generar código de serialización para procedimientos o tipos definidos en el archivo IDL de una interfaz. Cuando se usa como atributo de interfaz, [encode] se aplica a todos los tipos y procedimientos definidos en el archivo IDL. Cuando se usa como atributo operativo, [codificar] solo se aplica al procedimiento especificado. Cuando se usa como atributo de tipo, [codificar] solo se aplica al tipo especificado.
Cuando se aplica el atributo [encode] o [decode] a un procedimiento, el compilador MIDL genera un código auxiliar de serialización de forma similar a los códigos auxiliares remotos que se generan para rutinas remotas. Un procedimiento puede ser un procedimiento remoto o un procedimiento de serialización, pero no puede ser ambos. El prototipo de la rutina generada se envía al STUB. Archivo H mientras el código auxiliar entra en el archivo STUB_C.C.
El compilador MIDL genera dos funciones para cada tipo al que se aplica el atributo [encode] y se aplica una función adicional para cada tipo al que se aplica el atributo [decode]. Por ejemplo, para un tipo definido por el usuario denominado MyType, el compilador genera código para las funciones MyType_Encode, MyType_Decode y MyType_AlignSize. Para estas funciones, el compilador escribe prototipos en STUB. H y código fuente para STUB_C.C.
Para obtener información adicional sobre los identificadores de serialización y la codificación o descodificación de datos, vea Serialization Services.
/*
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();
}