閱讀英文

共用方式為


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 會將每個方法分割成個別 的開始完成 方法。 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

當地

object

out

版本