async_uuid (attributo)
L'attributo dell'interfaccia [async_uuid] indirizza il compilatore MIDL per definire sia versioni sincrone che asincrone di un'interfaccia COM.
[
object,
uuid(string-uuid1),
async_uuid(string-uuid2)[ [, interface-attribute-list]
]
interface interface-name : base-interface
{
interface-definition
}
Parametri
-
string-uuid1
-
Stringa UUID generata dall'utilità Uuidgen, che identifica la versione sincrona dell'interfaccia.
-
string-uuid2
-
Stringa UUID generata dall'utilità Uuidgen, che identifica la versione asincrona dell'interfaccia.
-
interface-attribute-list
-
Altri attributi che si applicano all'interfaccia nel suo complesso. Non è possibile usare l'attributo [versione] in un'interfaccia COM.
-
nome dell'interfaccia
-
Nome dell'interfaccia.
-
interfaccia di base
-
Interfaccia da cui deriva questa interfaccia. L'interfaccia di base deve essere IUnknown o un'interfaccia asincrona che deriva, direttamente o indirettamente, da IUnknown.
-
definizione dell'interfaccia
-
Specifica le istruzioni IDL che formano la definizione dell'interfaccia.
Commenti
L'uso di questo attributo richiede Windows 2000 o versioni successive di Windows.
Quando si applica l'attributo [async_uuid] a un'interfaccia COM , ovvero un'interfaccia con l'attributo [object] , il compilatore MIDL genera una definizione asincrona dell'interfaccia, oltre alla versione tradizionale sincrona. L'interfaccia asincrona avrà gli stessi nomi dell'interfaccia sincrona, ma con un prefisso "Async". L'identificatore dell'interfaccia (IID) sarà il UUID specificato come parametro per l'attributo [async_uuid] .
Per l'interfaccia asincrona, MIDL divide ogni metodo in metodi di inizio e fine separati. Il metodo begin ha il nome del metodo sincrono con un prefisso "Begin_" e include tutti i parametri [in] dal metodo sincrono. Il metodo finish ha il nome del metodo sincrono con un prefisso "Finish_" e include tutti i parametri [out] dal metodo sincrono. Se il metodo sincrono dispone di parametri [in, out] che verranno inclusi sia nei metodi begin che finish asincroni.
Se un metodo di interfaccia asincrona ha l'attributo [call_as] , MIDL genererà dichiarazioni per i metodi begin e finish . È necessario implementare entrambi i metodi.
Ogni interfaccia asincrona è un modificatore in un'interfaccia sincrona e, di conseguenza, non dispone di un grafico di ereditarietà separato. Ciò significa che non è possibile definire un'interfaccia sincrona da un'interfaccia asincrona (diversa da IUnknown). Né possono ereditare interfacce sincrone da interfacce asincrone. Il compilatore MIDL genererà un messaggio di errore se si tenta uno.
Esempi
[
object,
uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
async_uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
pointer_default(unique)
]
interface IMyInterface : IUnknown
{
/* Interface definition goes here*/
}
Vedere anche