atribut async_uuid
Atribut antarmuka [async_uuid] mengarahkan pengompilasi MIDL untuk menentukan versi antarmuka COM yang sinkron dan asinkron.
[
object,
uuid(string-uuid1),
async_uuid(string-uuid2)[ [, interface-attribute-list]
]
interface interface-name : base-interface
{
interface-definition
}
-
string-uuid1
-
String UUID, yang dihasilkan oleh utilitas Uuidgen, yang mengidentifikasi versi antarmuka yang sinkron.
-
string-uuid2
-
String UUID, yang dihasilkan oleh utilitas Uuidgen, yang mengidentifikasi versi asinkron antarmuka.
-
daftar atribut antarmuka
-
Atribut lain yang berlaku untuk antarmuka secara keseluruhan. Anda tidak dapat menggunakan atribut [versi] dalam antarmuka COM.
-
nama antarmuka
-
Nama antarmuka.
-
antarmuka dasar
-
Antarmuka tempat antarmuka ini berasal. Antarmuka dasar harus IUnknown atau antarmuka asinkron yang berasal, baik secara langsung maupun tidak langsung, dari IUnknown.
-
definisi antarmuka
-
Menentukan pernyataan IDL yang membentuk definisi antarmuka.
Penggunaan atribut ini memerlukan Windows 2000 atau versi Windows yang lebih baru.
Saat Anda menerapkan atribut [async_uuid] ke antarmuka COM (yaitu, antarmuka yang memiliki atribut [objek] ), pengompilasi MIDL menghasilkan definisi asinkron antarmuka, selain versi tradisional yang sinkron. Antarmuka asinkron akan memiliki nama yang sama dengan antarmuka sinkron, tetapi dengan awalan "Asinkron". Pengidentifikasi antarmuka (IID) akan menjadi UUID yang ditentukan sebagai parameter untuk atribut [async_uuid ].
Untuk antarmuka asinkron, MIDL membagi setiap metode menjadi metode mulai dan selesai yang terpisah. Metode awal memiliki nama metode sinkron dengan awalan "Begin_" dan menyertakan semua parameter [in] dari metode sinkron. Metode finish memiliki nama metode sinkron dengan awalan "Finish_" dan mencakup semua parameter [out] dari metode sinkron. Jika metode sinkron memiliki parameter [in, out] mereka akan disertakan dalam metode awal dan selesai asinkron.
Jika metode antarmuka asinkron memiliki atribut [call_as] , MIDL akan menghasilkan deklarasi untuk metode awal dan akhir . Anda harus menerapkan kedua metode.
Setiap antarmuka asinkron adalah pengubah pada antarmuka sinkron dan, dengan demikian, tidak memiliki grafik pewarisan terpisah. Ini berarti Anda tidak dapat menentukan antarmuka sinkron dari antarmuka asinkron (selain IUnknown). Antarmuka sinkron juga tidak dapat mewarisi dari antarmuka asinkron. Pengkompilasi MIDL akan mengeluarkan pesan kesalahan jika Anda mencoba salah satunya.
[
object,
uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
async_uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
pointer_default(unique)
]
interface IMyInterface : IUnknown
{
/* Interface definition goes here*/
}