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.
};