interface 屬性
interface關鍵字會指定介面的名稱。 介面名稱必須同時在 IDL 檔案和 ACF 中提供。
[
interface-attribute-list
]
interface interface-name [ : base-interface ]
{
}
typedef interface interface-name declarator-list
-
interface-attribute-list
-
指定套用至介面整體的屬性。 IDL 檔案的有效介面屬性包括[endpoint]、[local]、[object]、[pointer_default]、[uuid]和[version]。 ACF 的有效介面屬性包括[編碼]、[解碼]、[auto_handle]或[implicit_handle],以及[code]或[nocode]。
-
interface-name
-
指定介面的名稱。 介面名稱必須是唯一的名稱,且開頭必須是字母或底線字元。
-
base-interface
-
指定這個衍生介面繼承成員函式、狀態碼和介面屬性的介面名稱。 衍生介面不會繼承型別定義。 若要這樣做,請使用 import 關鍵字來匯入基底介面的 IDL 檔案。
-
declarator-list
-
指定標準 C 宣告子,例如識別碼、指標宣告子和陣列宣告子。 如需詳細資訊,請參閱 陣列和Sized-Pointer屬性、 arrays.和 陣列和指標。 宣告子清單包含一或多個宣告子,並以逗號分隔。
IDL 檔案和 ACF 中的介面名稱必須相同,除非您使用 MIDL 編譯器參數 /acf。
介面名稱會形成介面控制碼資料結構名稱的第一個部分,這些結構是 RPC 執行時間函式的參數。 如需詳細資訊,請參閱 RPC_IF_HANDLE。
如果介面標頭包含 [object] 屬性來表示 COM 介面,它也必須包含 [uuid] 屬性,而且必須指定衍生自它的基底 COM 介面。 如需 COM 介面的詳細資訊,請參閱 [object]。
您也可以使用 interface 關鍵字搭配 typedef 關鍵字來定義介面資料類型。
/* use of interface keyword in IDL file for an RPC interface */
[
uuid (00000000-0000-0000-0000-000000000000),
version (1.0)
]
interface remote_if_2
{
// Interface definition statements.
}
/* use of interface keyword in ACF for an RPC interface */
[
implicit_handle( handle_t xa_bhandle )
]
interface remote_if_2
{
// Attribute configuration statements.
}
/* use of interface keyword in IDL file for a COM interface */
[
object, uuid (00000000-0000-0000-0000-000000000000)
]
interface IDerivedInterface : IBaseInterface
{
import "base.idl"
Save();
}
/* use of interface keyword to define an interface pointer type */
typedef interface IStorage *LPSTORAGE;