range 属性
[range] 属性を使用すると、実行時に値が設定される引数またはフィールドに対して、指定できる値の範囲を指定できます。 パイプの種類と共に使用する場合、属性はパイプ チャンク内の要素の数の許容範囲を指定します。
[range(low-val,high-val)] type-specifier declarator
パラメーター
-
low-val
-
パラメーターまたはフィールドが保持できる最小値。
-
high-val
-
パラメーターまたはフィールドが保持できる最大許容値。
-
type-specifier
-
declarator
-
識別子などの標準 C 宣言子。
解説
[range] 属性を使用して、サイズや長さに使用されるパラメーターやフィールドなどの機密性の高いパラメーターまたはフィールドの意味を、準拠配列または可変配列で変更します。または、パラメーターまたはフィールドの値を有効な値の範囲に対してチェックする場合は常に指定します。 この属性は、最上位レベルのパラメーターだけでなく、下位レベルのパラメーターとフィールドにも適用できます。 [ range] 属性を型に追加しても、ワイヤ形式は変更されないため、下位互換性には影響しません。
[range] 属性は、バッファーや、準拠属性を持つ配列などの準拠データでも使用できます。 その結果、準拠データのすべての準拠サイズが指定された範囲に制限されます。 準拠データが多次元配列の場合、各配列ディメンションは指定された範囲に制限されます。
準拠データに [範囲] を 使用するには、コンパイル ターゲットが â€"ターゲット NT60 以上である必要があります。
これらのチェックを実行するスタブ コードを生成するには、IDL ファイルをコンパイルするときに /robust コンパイラ オプションを使用する必要があることに注意してください。 /robust スイッチがない場合、MIDL コンパイラはこの属性を無視します。
例
HRESULT Method1(
[in, range(0,100)] ULONG m,
[in, range(0,100)] ULONG n,
[size_is(m,n)] ULONG **pplong);
void InPipe(
[in, range(0, MAX_CHUNK) LONG_PIPE pipe_date);
関連項目