local 属性
[local] 属性は、インターフェイスまたは関数がリモートではないことを MIDL コンパイラに指定します。
[
local
[, interface-attribute-list]
]
interface interface-name
{
}
[
object,
uuid(string-uuid),
local [, interface-attribute-list]
]
interface interface-name
{
}
[ local [, function-attribute-list] ] function-declarator ;
パラメーター
-
interface-attribute-list
-
インターフェイス全体に適用される他の属性を指定します。 属性 [endpoint]、 [version]、および [pointer_default] は省略可能です。 /app_config スイッチを使用してコンパイルする場合、[implicit_handle] または [auto_handle] を指定することもできます。 複数の属性をコンマで区切ります。
-
interface-name
-
ソフトウェア コンポーネントがインターフェイスを示す名前を指定します。
-
string-uuid
-
Uuidgen ユーティリティによって生成される UUID 文字列を指定します。 MIDL コンパイラ スイッチ /osf を使用していない場合は、UUID 文字列を引用符で囲むことができます。
-
function-attribute-list
-
関数に適用される 0 個以上の属性を指定します。 有効な関数属性は [callback];ポインター属性 [ref]、 [unique]、または [ptr];と usage 属性 [string]、 [ignore]、および [context_handle]。 複数の属性をコンマで区切ります。
-
function-declarator
-
関数の型指定子、関数名、およびパラメーター リストを指定します。
解説
[local] 属性は、個々の関数またはインターフェイス全体に適用できます。
インターフェイス ヘッダーで [ local] 属性を使用すると、MIDL コンパイラをヘッダー ジェネレーターとして使用できます。 コンパイラは関数のスタブを生成せず、ヘッダーを確実に送信することはできません。
RPC インターフェイスの場合、[ local] 属性を [uuid] 属性と同時に使用することはできません。 インターフェイス ヘッダーには [uuid] または [local] が 存在する必要があり、選択したヘッダーは 1 回だけ実行する必要があります。
COM インターフェイス ([object] インターフェイス属性で識別) の場合、[uuid] 属性が存在する場合でも、インターフェイス属性リストに [local] 属性を含めることができます。
[ local] 属性は、個々の関数で使用する場合、スタブが生成されないローカル プロシージャを指定します。 関数属性として [local] を 使用することは、DCE IDL に対する Microsoft 拡張機能です。 したがって、MIDL /osf スイッチを使用してコンパイルする場合、この属性は使用できません。
属性のないインターフェイスは、ベース IDL ファイルにインポートできることに注意してください。 ただし、インターフェイスには、プロシージャのないデータ型のみを含める必要があります。 1 つのプロシージャがインターフェイスに含まれている場合は、ローカル属性または UUID 属性を指定する必要があります。
例
/* IDL file #1 */
[
local
]
interface local_procs
{
void MyLocalProc(void);
}
/* IDL file #2 */
[
object,
uuid(12345678-1234-1234-123456789ABC),
local
]
interface local_object_procs : IUnknown
{
void MyLocalObjectProc(void);
}
/* IDL file #3 */
[
uuid(87654321-1234-1234-123456789ABC)
]
interface mixed_procs
{
[local] void MyLocalProc(void);
HRESULT MyRemoteProc([in] short sParam);
}
関連項目