codificar atributo
O atributo ACF [codificação] especifica que um procedimento ou um tipo de dados precisa de suporte para serialização.
[
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 outros atributos que se aplicam à interface como um todo.
-
interface-name
-
Especifica o nome da interface.
-
interface-definition
-
Especifica instruções IDL que formam a definição da interface .
-
op-attribute-list
-
Especifica outros atributos operacionais que se aplicam ao procedimento, como [decodificar].
-
proc-name
-
Especifica o nome do procedimento.
-
type-attribute-list
-
Especifica outros atributos que se aplicam ao tipo como [decodificar] e [alocar].
-
type-name
-
Especifica um tipo definido no arquivo IDL.
O atributo [encode] faz com que o compilador MIDL gere o código que um aplicativo pode usar para serializar dados em um buffer. O atributo [decode] gera o código para demarsalar dados de um buffer.
Use os atributos [encode] e [decode] em um ACF para gerar código de serialização para procedimentos ou tipos definidos no arquivo IDL de uma interface. Quando usado como um atributo de interface, [codificação] aplica-se a todos os tipos e procedimentos definidos no arquivo IDL. Quando usado como um atributo operacional, [codificação] aplica-se somente ao procedimento especificado. Quando usado como um atributo de tipo, [codificação] aplica-se somente ao tipo especificado.
Quando o atributo [encode] ou [decode] é aplicado a um procedimento, o compilador MIDL gera um stub de serialização de maneira semelhante à medida que stubs remotos são gerados para rotinas remotas. Um procedimento pode ser remoto ou serializador, mas não pode ser ambos. O protótipo da rotina gerada é enviado para o STUB. Arquivo H enquanto o próprio stub entra no arquivo STUB_C.C.
O compilador MIDL gera duas funções para cada tipo ao qual o atributo [codificação] se aplica e uma função adicional para cada tipo ao qual o atributo [decode] se aplica. Por exemplo, para um tipo definido pelo usuário chamado MyType, o compilador gera código para as funções MyType_Encode, MyType_Decode e MyType_AlignSize. Para essas funções, o compilador grava protótipos no STUB. H e código-fonte para STUB_C.C.
Para obter informações adicionais sobre identificadores de serialização e codificação ou decodificação de dados, consulte Serviços de Serialização.
/*
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();
}