range 特性
[range] 属性允许为参数或字段指定允许的值范围,这些参数或字段的值在运行时设置。 与管道类型一起使用时, 属性指定管道区块中元素计数的允许范围。
[range(low-val,high-val)] type-specifier declarator
-
low-val
-
参数或字段可以容纳的最小允许值。
-
high-val
-
参数或字段可以容纳的最高允许值。
-
type-specifier
-
declarator
-
标准 C 声明符,例如标识符。
使用 [range] 属性可修改敏感参数或字段的含义,例如用于大小或长度的参数或字段,具有一致或变化的数组;或每当要针对有效值范围检查参数或字段值时。 属性适用于顶级参数以及较低级别的参数和字段。 将 [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);