次の方法で共有


適合する配列

準拠配列のサイズは、クライアントがサーバー上のリモート プロシージャに渡すたびに異なるか、準拠している可能性があります。 アプリケーションの 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 個の要素の配列を渡します。