async_uuid 属性
[async_uuid] インターフェイス属性は、COM インターフェイスの同期バージョンと非同期バージョンの両方を定義するように MIDL コンパイラに指示します。
[
object,
uuid(string-uuid1),
async_uuid(string-uuid2)[ [, interface-attribute-list]
]
interface interface-name : base-interface
{
interface-definition
}
-
string-uuid1
-
Uuidgen ユーティリティによって生成される UUID 文字列。インターフェイスの同期バージョンを識別します。
-
string-uuid2
-
Uuidgen ユーティリティによって生成される UUID 文字列。これは、インターフェイスの非同期バージョンを識別します。
-
interface-attribute-list
-
インターフェイス全体に適用されるその他の属性。 COM インターフェイスで [version] 属性を使用することはできません。
-
interface-name
-
インターフェイスの名前。
-
base-interface
-
このインターフェイスの派生元のインターフェイス。 基本インターフェイスは 、IUnknown または IUnknown から直接または間接的に派生する非同期インターフェイス である必要があります。
-
interface-definition
-
インターフェイスの定義を形成する IDL ステートメントを指定します。
この属性を使用するには、Windows 2000 以降のバージョンの Windows が必要です。
COM インターフェイス (つまり、[object] 属性を持つインターフェイス) に [async_uuid] 属性を適用すると、MIDL コンパイラは、従来の同期バージョンに加えて、インターフェイスの非同期定義を生成します。 非同期インターフェイスの名前は同期インターフェイスと同じですが、"Async" プレフィックスが付きます。 インターフェイス識別子 (IID) は 、[async_uuid] 属性のパラメーターとして指定された UUID になります。
非同期インターフェイスの場合、MIDL は各メソッドを個別の begin メソッドと finish メソッドに分割します。 begin メソッドには、"Begin_" プレフィックスを持つ同期メソッド名があり、同期メソッドのすべての [in] パラメーターが含まれています。 finish メソッドには、"Finish_" プレフィックスを持つ同期メソッドの名前があり、同期メソッドのすべての [out] パラメーターが含まれています。 同期メソッドに [in, out] パラメーターがある場合、これらは begin と finish の両方の非同期メソッドに含まれます。
非同期インターフェイス メソッドに [call_as] 属性がある場合、MIDL は begin メソッドと finish メソッドの宣言を生成します。 両方のメソッドを実装する必要があります。
各非同期インターフェイスは同期インターフェイス上の修飾子であり、そのため、個別の継承グラフはありません。 つまり、( IUnknown 以外の) 非同期インターフェイスから同期インターフェイスを定義することはできません。 同期インターフェイスは非同期インターフェイスから継承することもできません。 いずれかの方法を試みると、MIDL コンパイラによってエラー メッセージが発行されます。
[
object,
uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
async_uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
pointer_default(unique)
]
interface IMyInterface : IUnknown
{
/* Interface definition goes here*/
}