dual (attributo)

L'attributo dual identifica un'interfaccia che espone proprietà e metodi tramite IDispatch e direttamente tramite VTBL.

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

Parametri

uuid-number

Specifica un numero di identificazione univoco universale per l'interfaccia

optional-attribute-list

Specifica un elenco di zero o più attributi MIDL aggiuntivi.

interface-name

Nome dell'interfaccia a cui verrà applicato l'attributo duale .

Commenti

Le interfacce identificate dall'attributo duale devono essere compatibili con Automazione ed essere derivate da IDispatch. Questo attributo non è consentito nei caratteri dispinterfaces.

L'attributo dual crea un'interfaccia che è sia un'interfaccia IDispatch che un'interfaccia COM (Component Object Model). Le prime sette voci di VTBL per un'interfaccia doppia sono i sette membri di IDispatch e le voci rimanenti sono per l'accesso diretto ai membri dell'interfaccia doppia. Tutti i parametri e i tipi restituiti specificati per i membri di un'interfaccia doppia devono essere tipi compatibili con l'automazione.

Tutti i membri di un'interfaccia doppia devono passare un valore HRESULT come valore restituito dalla funzione. I membri, ad esempio le funzioni di accesso alle proprietà, che devono restituire altri valori, devono specificare l'ultimo parametro come out, retval, che indica un parametro di output che restituisce il valore della funzione. Inoltre, i membri che devono supportare più impostazioni locali devono passare un parametro lcid .

Una doppia interfaccia offre sia la velocità di associazione VTBL diretta che la flessibilità dell'associazione IDispatch . Per questo motivo, le interfacce duali sono consigliate quando possibile.

Nota

Se l'applicazione accede ai dati degli oggetti eseguendo il cast di questo puntatore all'interno della chiamata di interfaccia, è necessario controllare i puntatori VTBL nell'oggetto rispetto ai puntatori VTBL personalizzati per assicurarsi di essere connessi al proxy appropriato.

 

L'impostazione di dual su un'interfaccia implica che l'interfaccia è compatibile con Automazione e pertanto determina l'impostazione dei flag sia TYPEFLAG_FDUAL che di TYPEFLAG_FOLEAUTOMATION.

Flags

TYPEFLAG_FDUAL, TYPEFLAG_FOLEAUTOMATION

Esempi

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

Vedere anche

Generazione di una libreria dei tipi con MIDL

Interfaccia

Lcid

oleautomation

Sintassi dei file ODL

Esempio di file ODL

Cambio

retval