async_uuid (attribut)

L’attribut d’interface [async_uuid] indique au compilateur MIDL de définir 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

string-uuid1

Chaîne UUID, générée par l’utilitaire Uuidgen, qui identifie la version synchrone de l’interface.

string-uuid2

Chaîne UUID, générée par l’utilitaire Uuidgen, qui identifie la version asynchrone de l’interface.

interface-attribute-list

Autres attributs qui s’appliquent à l’interface dans son ensemble. Vous ne pouvez pas utiliser l’attribut [version] dans une interface COM.

nom_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, d’IUnknown.

définition d’interface

Spécifie les instructions IDL qui forment la définition de l’interface.

Notes

L’utilisation de cet attribut nécessite Windows 2000 ou versions ultérieures de Windows.

Lorsque vous appliquez l’attribut [async_uuid] à une interface COM (autrement dit, une interface qui a l’attribut [object] ), 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 [async_uuid].

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 a des paramètres [in, out], ils seront inclus dans les méthodes asynchrones de début et de fin .

Si une méthode d’interface asynchrone a l’attribut [call_as], 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, en tant que telle, n’a pas de graphe 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 ne peuvent pas non plus hériter d’interfaces asynchrones. Le compilateur MIDL émet un message d’erreur si vous tentez l’une 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*/
}

Voir aussi

Définition d’interfaces COM

Fichier de définition d’interface (IDL)

call_as

iid_is

Dans

Local

object

out

Version