async_uuid (atributo)
El atributo de interfaz [async_uuid] dirige al compilador MIDL para definir versiones sincrónicas y asincrónicas de una interfaz COM.
[
object,
uuid(string-uuid1),
async_uuid(string-uuid2)[ [, interface-attribute-list]
]
interface interface-name : base-interface
{
interface-definition
}
Parámetros
-
string-uuid1
-
Cadena UUID, generada por la utilidad Uuidgen, que identifica la versión sincrónica de la interfaz.
-
string-uuid2
-
Cadena UUID, generada por la utilidad Uuidgen, que identifica la versión asincrónica de la interfaz.
-
interface-attribute-list
-
Otros atributos que se aplican a la interfaz en su conjunto. No puede usar el atributo [version] en una interfaz COM.
-
interface-name
-
Nombre de la interfaz.
-
interfaz base
-
Interfaz de la que deriva esta interfaz. La interfaz base debe ser IUnknown o una interfaz asincrónica que derive, directa o indirectamente, de IUnknown.
-
interfaz-definición
-
Especifica instrucciones IDL que forman la definición de la interfaz.
Comentarios
El uso de este atributo requiere Windows 2000 o versiones posteriores de Windows.
Cuando se aplica el atributo [async_uuid] a una interfaz COM (es decir, una interfaz que tiene el atributo [object], el compilador MIDL genera una definición asincrónica de la interfaz, además de la versión tradicional y sincrónica. La interfaz asincrónica tendrá los mismos nombres que la interfaz sincrónica, pero con un prefijo "Async". El identificador de interfaz (IID) será el UUID especificado como parámetro para el atributo [async_uuid].
Para la interfaz asincrónica, MIDL divide cada método en métodos de inicio y finalización independientes. El método begin tiene el nombre del método sincrónico con un prefijo "Begin_" e incluye todos los parámetros [in] del método sincrónico. El método finish tiene el nombre del método sincrónico con un prefijo "Finish_" e incluye todos los parámetros [out] del método sincrónico. Si el método sincrónico tiene parámetros [in, out] se incluirán en los métodos asincrónicos begin y finish .
Si un método de interfaz asincrónico tiene el atributo [call_as], MIDL generará declaraciones para los métodos begin y finish . Debe implementar ambos métodos.
Cada interfaz asincrónica es un modificador en una interfaz sincrónica y, como tal, no tiene un grafo de herencia independiente. Esto significa que no se puede definir una interfaz sincrónica desde una interfaz asincrónica (distinta de IUnknown). Tampoco pueden heredar interfaces sincrónicas de interfaces asincrónicas. El compilador MIDL emitirá un mensaje de error si intenta alguno de ellos.
Ejemplos
[
object,
uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
async_uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
pointer_default(unique)
]
interface IMyInterface : IUnknown
{
/* Interface definition goes here*/
}
Vea también