[async_uuid] 接口属性指示 MIDL 编译器定义 COM 接口的同步版本和异步版本。
[ 
    object, 
    uuid(string-uuid1), 
    async_uuid(string-uuid2)[ [, interface-attribute-list] 
]
interface interface-name : base-interface
{
    interface-definition
}
参数
- 
string-uuid1 
- 
UUID 字符串,由 Uuidgen 实用工具生成,用于标识接口的同步版本。 
- 
string-uuid2 
- 
UUID 字符串,由 Uuidgen 实用工具生成,用于标识接口的异步版本。 
- 
interface-attribute-list 
- 
应用于接口作为一个整体的其他属性。 不能在 COM 接口中使用 [version] 属性。 
- 
interface-name 
- 
接口的名称。 
- 
base-interface 
- 
从中派生此接口的接口。 基接口必须是 IUnknown 或直接或间接派生自 IUnknown 的异步接口。 
- 
interface-definition 
- 
指定构成接口定义的 IDL 语句。 
备注
使用此属性需要 Windows 2000 或更高版本的 Windows。
将 [async_uuid] 属性应用于 COM 接口 (即) 具有 [object] 属性的接口时,MIDL 编译器除了传统同步版本外,还会生成接口的异步定义。 异步接口的名称与同步接口相同,但带有“Async”前缀。 IID) (接口标识符将是指定为 [async_uuid] 属性的参数的 UUID。
对于异步接口,MIDL 将每个方法拆分为单独的 begin 和 finish 方法。 begin 方法的同步方法名称带有“Begin_”前缀,并包含同步方法中的所有 [in] 参数。 finish 方法具有具有“Finish_”前缀的同步方法名称,并包含同步方法中的所有 [out] 参数。 如果同步方法具有任何 [in, out] 参数,则它们将同时包含在 begin 和 finish 异步方法中。
如果异步接口方法具有 [call_as] 属性,则 MIDL 将为 begin 和 finish 方法生成声明。 必须实现这两种方法。
每个异步接口都是同步接口上的修饰符,因此没有单独的继承图。 这意味着不能从异步接口 (IUnknown) 定义同步接口。 同步接口也不能从异步接口继承。 如果尝试其中一个,MIDL 编译器将发出错误消息。
示例
[
    object, 
    uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
    async_uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
    pointer_default(unique)
]
interface IMyInterface : IUnknown
{
    /* Interface definition goes here*/
}
另请参阅