Прочитать на английском

Поделиться через


Атрибут encode

Атрибут [encode] ACF указывает, что процедура или тип данных нуждаются в поддержке сериализации.

[ 
    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

Задает другие атрибуты, которые применяются к интерфейсу в целом.

interface-name

Указывает имя интерфейса.

определение интерфейса

Указывает операторы IDL, которые формируют определение интерфейса.

op-attribute-list

Указывает другие операционные атрибуты, которые применяются к процедуре, например [decode].

proc-name

Указывает имя процедуры.

type-attribute-list

Указывает другие атрибуты, которые применяются к типу, например [decode] и [allocate].

type-name

Указывает тип, определенный в IDL-файле.

Комментарии

Атрибут [encode] заставляет компилятор MIDL создавать код, который приложение может использовать для сериализации данных в буфер. Атрибут [decode] создает код для распаковки данных из буфера.

Используйте атрибуты [encode] и [decode] в ACF для создания кода сериализации для процедур или типов, определенных в IDL-файле интерфейса. При использовании в качестве атрибута интерфейса [encode] применяется ко всем типам и процедурам, определенным в IDL-файле. При использовании в качестве рабочего атрибута [encode] применяется только к указанной процедуре. При использовании в качестве атрибута типа [encode] применяется только к указанному типу.

Когда атрибут [encode] или [decode] применяется к процедуре, компилятор MIDL создает заглушку сериализации так же, как удаленные заглушки создаются для удаленных подпрограмм. Процедура может быть удаленной или сериализующей процедурой, но не может быть одновременно. Прототип созданной подпрограммы отправляется в заглушку. H-файл, а сама заглушка переходит в файл STUB_C.C.

Компилятор MIDL создает две функции для каждого типа, к которому применяется атрибут [encode] , и одну дополнительную функцию для каждого типа, к которому применяется атрибут [decode] . Например, для определяемого пользователем типа с именем MyType компилятор создает код для функций MyType_Encode, MyType_Decode и MyType_AlignSize. Для этих функций компилятор записывает прототипы в STUB. H и исходный код для STUB_C.C.

Дополнительные сведения о дескрипторах сериализации и кодировании или декодирования данных см. в разделе Службы сериализации.

Примеры

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

См. также раздел

Файл конфигурации приложения (ACF)

Выделить

decode