適合する配列
準拠配列のサイズは、クライアントがサーバー上のリモート プロシージャに渡すたびに異なるか、準拠している可能性があります。 アプリケーションの MIDL ファイル内のインターフェイス定義を使用すると、クライアントはリモート プロシージャを呼び出すたびに配列のサイズを指定できます。 配列定義で空の角かっこ ([ ]) または角かっこ ([*]) のアスタリスクを使用して、適合する配列を示します。
次の例では、MIDL ファイル内のインターフェイス内のリモート プロシージャの定義を示します。 クライアントは、パラメーター arraySize によってサーバーに渡される配列のサイズを指定します。
[
/*Attributes are defined here. */
]
interface MyInterface
{
MyRemoteProc(
long lArraySize,
[size_is(lArraySize)] char achArray[*]
);
/* Other interface procedures are defined here. */
}
インターフェイス定義では、MIDL 属性 [size_is] を使用して、クライアントがサーバーに渡す配列のサイズを指定します。 配列のインデックス番号の最大値を指定する場合は、代わりに [max_is] 属性を使用します。 これらの MIDL 属性の詳細については、「 配列属性」を参照してください。
次のコード フラグメントは、前の MIDL ファイルで定義されているリモート プロシージャをクライアントが呼び出す方法を示しています。
long lArrayLength = 20;
char achCharArray[20], achAnotherCharArray[200];
// Code to store 20 chars in achCharArray goes here.
MyRemoteProc(
lArrayLength ,
achCharArray);
lArrayLength = 200;
// Code to store 200 chars in achAnotherCharArray goes here.
MyRemoteProc(
lArrayLength ,
achAnotherCharArray);
このフラグメントは、リモート プロシージャ MyRemoteProc を 2 回呼び出します。 最初の呼び出しでは、20 個の要素の配列を渡します。 2 番目の呼び出しでは、クライアントは 200 個の要素の配列を渡します。