Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Атрибут [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();
}
См. также раздел