async_uuid-Attribut
Das [async_uuid] -Schnittstellenattribute weist den MIDL-Compiler an, sowohl synchrone als auch asynchrone Versionen einer COM-Schnittstelle zu definieren.
[
object,
uuid(string-uuid1),
async_uuid(string-uuid2)[ [, interface-attribute-list]
]
interface interface-name : base-interface
{
interface-definition
}
Parameter
-
string-uuid1
-
Eine vom Uuidgen-Hilfsprogramm generierte UUID-Zeichenfolge, die die synchrone Version der Schnittstelle identifiziert.
-
string-uuid2
-
Eine vom Uuidgen-Hilfsprogramm generierte UUID-Zeichenfolge, die die asynchrone Version der Schnittstelle identifiziert.
-
interface-attribute-list
-
Andere Attribute, die für die Schnittstelle als Ganzes gelten. Sie können das [version] -Attribut nicht in einer COM-Schnittstelle verwenden.
-
Schnittstellenname
-
Der Name der Schnittstelle.
-
Basisschnittstelle
-
Die Schnittstelle, von der diese Schnittstelle abgeleitet wird. Die Basisschnittstelle muss IUnknown oder eine asynchrone Schnittstelle sein, die entweder direkt oder indirekt von IUnknown abgeleitet wird.
-
Schnittstellendefinition
-
Gibt IDL-Anweisungen an, die die Definition der Schnittstelle bilden.
Bemerkungen
Die Verwendung dieses Attributs erfordert Windows 2000 oder höhere Versionen von Windows.
Wenn Sie das Attribut [async_uuid] auf eine COM-Schnittstelle (d. h. eine Schnittstelle mit dem Attribut [object] anwenden), generiert der MIDL-Compiler zusätzlich zur herkömmlichen synchronen Version eine asynchrone Definition der Schnittstelle. Die asynchrone Schnittstelle hat dieselben Namen wie die synchrone Schnittstelle, jedoch mit einem Präfix "Asynchron". Der Schnittstellenbezeichner (IID) ist die UUID, die als Parameter für das [async_uuid] -Attribut angegeben ist.
Für die asynchrone Schnittstelle teilt MIDL jede Methode in separate Start- und Endmethoden auf. Die begin-Methode hat den synchronen Methodennamen mit dem Präfix "Begin_" und enthält alle [in] -Parameter der synchronen Methode. Die finish-Methode hat den Namen der synchronen Methode mit dem Präfix "Finish_" und enthält alle [out] -Parameter der synchronen Methode. Wenn die synchrone Methode über parameter [in, out] verfügt, werden sie sowohl in den asynchronen Methoden "begin " als auch "finish" enthalten.
Wenn eine asynchrone Schnittstellenmethode über das Attribut [call_as] verfügt, generiert MIDL Deklarationen für die Methoden begin und finish . Sie müssen beide Methoden implementieren.
Jede asynchrone Schnittstelle ist ein Modifizierer für eine synchrone Schnittstelle und verfügt daher nicht über ein separates Vererbungsdiagramm. Dies bedeutet, dass Sie keine synchrone Schnittstelle aus einer asynchronen Schnittstelle (außer IUnknown) definieren können. Synchrone Schnittstellen können auch nicht von asynchronen Schnittstellen erben. Der MIDL-Compiler gibt eine Fehlermeldung aus, wenn Sie eine der beiden versuchen.
Beispiele
[
object,
uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
async_uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
pointer_default(unique)
]
interface IMyInterface : IUnknown
{
/* Interface definition goes here*/
}
Weitere Informationen