dual (attribut)

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

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

Paramètres

UUID-Number

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

Optional-attribute-List

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

nom de l’interface

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

Notes

Les interfaces identifiées par l’attribut double doivent être compatibles avec l’automatisation et être dérivées de 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 de IDispatch, et les entrées restantes sont destinées à un 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 Automation.

Tous les membres d’une interface double doivent passer un HRESULT comme valeur de retour de la 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 comme 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 fournit à 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 à des données d’objet en effectuant un cast du pointeur This dans l’appel d’interface, vous devez vérifier les pointeurs VTBL dans l’objet par rapport à vos propres pointeurs VTBL pour vous assurer que vous êtes connecté au proxy approprié.

Si vous spécifiez double sur une interface, cela signifie que l’interface est compatible avec Automation et, par conséquent, les _ indicateurs TYPEFLAG FDUAL et TYPEFLAG _ FOLEAUTOMATION sont définis.

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 du fichier ODL

Exemple de fichier ODL

à

retval