次の方法で共有


配列属性

C 言語の配列とポインターの間には密接な関係があります。 関数にパラメーターとして渡されると、配列名は、次の例に示すように、配列の最初の要素へのポインターとして扱われます。

/* fragment */
extern void f1(char * p1);

void main(void)
{
    char chArray[MAXSIZE];

    fLocal1(chArray);
}

ローカル呼び出しでは、pointer パラメーターを使用してメモリを移動し、他のアドレスの内容を調べることができます。

/* dump memory (fragment) */
void fLocal1(char * pch1)
{
    int i;

    for (i = 0; i < MAXSIZE; i++)
       printf("%c ", *pch1++);
}

クライアントがリモート プロシージャにポインターを渡すと、クライアント スタブはポインターとそれが指すデータの両方を送信します。 ポインターが対応するデータに制限されていない限り、すべてのクライアントのメモリをすべてのリモート呼び出しで送信する必要があります。 インターフェイス定義で厳密な型指定を適用することで、MIDL はクライアント スタブ処理を、指定されたポインターに対応するデータに制限します。

配列のサイズと、リモート コンピューターに送信される配列要素の範囲は、定数または変数にすることができます。 これらの値が変数であり、実行時に決定される場合は、IDL ファイルの属性を使用して、送信する配列要素の数を指定する必要があります。 次の MIDL 属性では、配列の境界がサポートされています。

属性 説明 Default
[ first_is] 送信される最初の配列要素のインデックス。 0
[ last_is] 最後に送信された配列要素のインデックス。 -
[ length_is] 送信された配列要素の合計数。 -
[ max_is] 有効な配列インデックス値の最大値。 -
[ min_is] 有効な配列インデックス値が最も小さい。 0
[ size_is] 配列に割り当てられた配列要素の合計数。 -

 

Note

min_is属性は RPC に実装されていません。 最小配列インデックスは常に 0 として扱われます。