dual (attribut)

L’attribut double identifie une interface qui expose des propriétés et des méthodes via IDispatch et directement via le VTBL.

[
    uuid(uuid-number), 
    oleautomation,
    dual 
  [ , optional-attribute-list]
]
interface interface-name
{
    . . .
};

Paramètres

uuid-number

Spécifie un numéro d’identification universel unique pour l’interface

optional-attribute-list

Spécifie une liste de zéro ou plusieurs attributs MIDL supplémentaires.

nom_interface

Nom de l’interface à laquelle l’attribut double sera appliqué.

Notes

Les interfaces identifiées par l’attribut double doivent être compatibles avec Automation et dérivées d’IDispatch. Cet attribut n’est pas autorisé sur les dispinterfaces.

L’attribut double crée une interface qui est à la fois une interface IDispatch et une interface COM (Component Object Model). Les sept premières entrées du VTBL pour une interface double sont les sept membres d’IDispatch, et les autres entrées concernent l’accès direct aux membres de l’interface double. Tous les paramètres et types de retour spécifiés pour les membres d’une interface double doivent être des types compatibles avec Automation.

Tous les membres d’une interface double doivent passer un HRESULT comme valeur de retour de fonction. Les membres, tels que les fonctions d’accesseur de propriété, qui doivent retourner d’autres valeurs, doivent spécifier le dernier paramètre out, retval, indiquant un paramètre de sortie qui retourne la valeur de la fonction. En outre, les membres qui doivent prendre en charge plusieurs paramètres régionaux doivent passer un paramètre lcid .

Une interface double offre à la fois la vitesse de liaison VTBL directe et la flexibilité de la liaison IDispatch . Pour cette raison, les interfaces doubles sont recommandées dans la mesure du possible.

Notes

Si votre application accède aux données d’objet en castant ce pointeur dans l’appel d’interface, vous devez case activée les pointeurs VTBL dans l’objet par rapport à vos propres pointeurs VTBL pour vous assurer que vous êtes connecté au proxy approprié.

 

La spécification du double sur une interface implique que l’interface est compatible avec Automation, ce qui entraîne la définition des indicateurs de TYPEFLAG_FDUAL et de TYPEFLAG_FOLEAUTOMATION.

Indicateurs

TYPEFLAG_FDUAL, TYPEFLAG_FOLEAUTOMATION

Exemples

[
    uuid(1e196b20-1f3c-1069-996b-00dd010fe676), 
    oleautomation, dual
]
interface IHello : IDispatch
{
    //Diverse properties and methods defined here.
};

Voir aussi

Génération d’une bibliothèque de types avec MIDL

Interface

lcid

oleautomation

Syntaxe de fichier ODL

Exemple de fichier ODL

out

retval