[range] 属性允许为参数或字段指定一系列允许的值,这些参数或字段的值在运行时设置。 与管道类型一起使用时,该特性指定管道区块中元素计数的允许范围。
[range(low-val,high-val)] type-specifier declarator
参数
-
low-val
-
参数或字段可以保存的最低允许值。
-
high-val
-
参数或字段可以保留的最高允许值。
-
type-specifier
-
declarator
-
标准 C 声明符,例如标识符。
注解
使用 [range] 属性可修改敏感参数或字段的含义,例如用于大小或长度、符合数组或不同数组的值;或每当你想要根据有效值范围检查参数或字段值时。 该属性适用于顶级参数以及较低级别的参数和字段。 将 [range] 属性添加到类型不会更改其线路格式,因此不会影响向后兼容性。
[range] 属性还可用于符合性数据,例如具有一致性属性的缓冲区或数组。 效果是将符合性数据的所有一致性大小限制为指定范围。 如果一致性数据是多维数组,则每个数组维度仅限于指定的范围。
对符合性数据使用 [range] 要求编译目标更高 --target NT60 。
请注意,编译 IDL 文件时,必须使用 /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);
另见