async_uuid 特性

[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 将每个方法拆分为单独的 beginfinish 方法。 begin 方法的同步方法名称带有“Begin_”前缀,并包含同步方法中的所有 [in] 参数。 finish 方法具有具有“Finish_”前缀的同步方法名称,并包含同步方法中的所有 [out] 参数。 如果同步方法具有任何 [in, out] 参数,则它们将同时包含在 beginfinish 异步方法中。

如果异步接口方法具有 [call_as] 属性,则 MIDL 将为 beginfinish 方法生成声明。 必须实现这两种方法。

每个异步接口都是同步接口上的修饰符,因此没有单独的继承图。 这意味着不能从异步接口 (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*/
}

另请参阅

定义 COM 接口

接口定义 (IDL) 文件

call_as

iid_is

in

当地

对象

out

版本