_attribut UUID Async
L’attribut d’interface [ _ UUID ] Async indique au compilateur MIDL de définir à la fois les versions synchrones et asynchrones d’une interface com.
[
object,
uuid(string-uuid1),
async_uuid(string-uuid2)[ [, interface-attribute-list]
]
interface interface-name : base-interface
{
interface-definition
}
Paramètres
-
chaîne uuid1
-
Chaîne UUID, générée par l’utilitaire uuidgen, qui identifie la version synchrone de l’interface.
-
chaîne uuid2
-
Chaîne UUID, générée par l’utilitaire uuidgen, qui identifie la version asynchrone de l’interface.
-
interface-attribut-List
-
Autres attributs qui s’appliquent à l’ensemble de l’interface. Vous ne pouvez pas utiliser l’attribut [ version ] dans une interface com.
-
nom de l’interface
-
Nom de l’interface.
-
interface de base
-
Interface à partir de laquelle cette interface dérive. L’interface de base doit être IUnknown ou une interface asynchrone qui dérive, directement ou indirectement, de IUnknown.
-
définition d’interface
-
Spécifie les instructions IDL qui forment la définition de l’interface.
Notes
l’utilisation de cet attribut requiert Windows versions 2000 ou ultérieures de Windows.
Lorsque vous appliquez l’attribut [ _ UUID ] Async à une interface com (autrement dit, une interface qui a l’attribut [ objet ] ), le compilateur MIDL génère une définition asynchrone de l’interface, en plus de la version synchrone traditionnelle. L’interface asynchrone aura les mêmes noms que l’interface synchrone, mais avec un préfixe « Async ». L’identificateur d’interface (IID) est l’UUID spécifié en tant que paramètre de l’attribut [ _ UUID ] Async .
Pour l’interface asynchrone, MIDL fractionne chaque méthode en méthodes de début et de fin distinctes. La méthode Begin a le nom de la méthode synchrone avec un _ préfixe « Begin » et inclut tous les paramètres [ in ] de la méthode synchrone. La méthode Finish a le nom de la méthode synchrone avec un _ préfixe « Finish » et inclut tous les paramètres [ out ] de la méthode synchrone. Si la méthode synchrone possède des paramètres [ in, ] out, ils sont inclus dans les méthodes asynchrones Begin et Finish .
Si une méthode d’interface asynchrone a l' [ appel _ en tant qu' ] attribut, MIDL génère des déclarations pour les méthodes Begin et Finish . Vous devez implémenter les deux méthodes.
Chaque interface asynchrone est un modificateur sur une interface synchrone et, par conséquent, n’a pas de graphique d’héritage distinct. Cela signifie que vous ne pouvez pas définir une interface synchrone à partir d’une interface asynchrone (autre que IUnknown). Les interfaces synchrones et ne peuvent pas non plus hériter d’interfaces asynchrones. Le compilateur MIDL émet un message d’erreur si vous tentez l’un ou l’autre.
Exemples
[
object,
uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
async_uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
pointer_default(unique)
]
interface IMyInterface : IUnknown
{
/* Interface definition goes here*/
}