atribut enkode
Atribut ACF [encode] menentukan bahwa prosedur atau jenis data memerlukan dukungan serialisasi.
[
encode
[ , interface-attribute-list]
]
interface interface-name
{
interface-definition
}
[ encode [ , op-attribute-list] ] proc-name
typedef [encode [ , type-attribute-list] ] type-name
Parameter
-
interface-attribute-list
-
Menentukan atribut lain yang berlaku untuk antarmuka secara keseluruhan.
-
nama antarmuka
-
Menentukan nama antarmuka.
-
definisi antarmuka
-
Menentukan pernyataan IDL yang membentuk definisi antarmuka.
-
op-attribute-list
-
Menentukan atribut operasional lain yang berlaku untuk prosedur seperti [dekode].
-
proc-name
-
Menentukan nama prosedur.
-
type-attribute-list
-
Menentukan atribut lain yang berlaku untuk jenis seperti [dekode] dan [alokasikan].
-
type-name
-
Menentukan jenis yang ditentukan dalam file IDL.
Keterangan
Atribut [encode] menyebabkan pengkompilasi MIDL menghasilkan kode yang dapat digunakan aplikasi untuk menserialisasikan data ke dalam buffer. Atribut [decode] menghasilkan kode untuk membatalkan nama data dari buffer.
Gunakan atribut [encode] dan [dekode] dalam ACF untuk menghasilkan kode serialisasi untuk prosedur atau jenis yang ditentukan dalam file IDL antarmuka. Saat digunakan sebagai atribut antarmuka, [encode] berlaku untuk semua jenis dan prosedur yang ditentukan dalam file IDL. Saat digunakan sebagai atribut operasional, [encode] hanya berlaku untuk prosedur yang ditentukan. Saat digunakan sebagai atribut type, [encode] hanya berlaku untuk jenis yang ditentukan.
Ketika atribut [encode] atau [decode] diterapkan pada prosedur, kompilator MIDL menghasilkan rintangan serialisasi dengan cara yang sama karena rintangan jarak jauh dihasilkan untuk rutinitas jarak jauh. Prosedur dapat berupa prosedur jarak jauh atau serialisasi, tetapi tidak boleh keduanya. Prototipe rutin yang dihasilkan dikirim ke STUB. File H sementara stub itu sendiri masuk ke file STUB_C.C.
Pengkompilasi MIDL menghasilkan dua fungsi untuk setiap jenis yang berlaku untuk atribut [encode] , dan satu fungsi tambahan untuk setiap jenis atribut [decode] berlaku untuk. Misalnya, untuk jenis yang ditentukan pengguna bernama MyType, pengkompilasi menghasilkan kode untuk fungsi MyType_Encode, MyType_Decode, dan MyType_AlignSize. Untuk fungsi-fungsi ini, pengkompilasi menulis prototipe ke STUB. H dan kode sumber ke STUB_C.C.
Untuk informasi tambahan tentang handel serialisasi dan pengodean atau pendekodean data, lihat Layanan Serialisasi.
Contoh
/*
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();
}
Lihat juga