配列属性
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 として扱われます。