interface 属性
インターフェイス キーワード (keyword)は、インターフェイスの名前を指定します。 インターフェイス名は、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 の有効なインターフェイス属性には、[encode]、[decode]、[auto_handle] または [implicit_handle]、および [code] または [nocode] があります。
-
interface-name
-
インターフェイスの名前を指定します。 インターフェイス名は一意の名前で、アルファベットまたはアンダースコアで始まる必要があります。
-
base-interface
-
この派生インターフェイスがメンバー関数、状態コード、およびインターフェイス属性を継承するインターフェイスの名前を指定します。 派生インターフェイスは型定義を継承しません。 これを行うには、インポート キーワード (keyword)を使用して、ベース インターフェイスの IDL ファイルをインポートします。
-
declarator-list
-
識別子、ポインター宣言子、配列宣言子など、標準の C 宣言子を指定します。 詳細については、「 配列とSized-Pointer属性、 配列」、および 「配列とポインター」を参照してください。 declarator-list は、コンマで区切られた 1 つ以上の宣言子で構成されます。
MIDL コンパイラ スイッチ /acf を使用する場合を除き、IDL ファイルと ACF のインターフェイス名は同じである必要があります。
インターフェイス名は、RPC ランタイム関数のパラメーターであるインターフェイス ハンドル データ構造の名前の最初の部分を形成します。 詳細については、「 RPC_IF_HANDLE」を参照してください。
インターフェイス ヘッダーに COM インターフェイスを示す [object] 属性が含まれている場合は、[uuid] 属性も含める必要があり、派生元のベース COM インターフェイスを指定する必要があります。 COM インターフェイスの詳細については、「 [object]」を参照してください。
インターフェイス キーワード (keyword)をtypedef キーワード (keyword)と共に使用して、インターフェイス データ型を定義することもできます。
/* 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;