Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El atributo [range] permite especificar un intervalo de valores permitidos para argumentos o campos cuyos valores se establecen en tiempo de ejecución. Cuando se usa con un tipo de canalización, el atributo especifica el intervalo permitido para el recuento de elementos de los fragmentos de canalización.
[range(low-val,high-val)] type-specifier declarator
Parámetros
-
low-val
-
Valor permitido más bajo que puede contener el parámetro o el campo.
-
high-val
-
El valor permitido más alto que puede contener el parámetro o el campo.
-
type-specifier
-
Un tipo entero distinto de hyper o __int64, un identificador de tipo a un tipo entero, un tipo de enumeración o un nombre de tipo de canalización.
-
declarator
-
Un declarador C estándar, como un identificador.
Observaciones
Use el atributo [range] para modificar el significado de parámetros o campos confidenciales, como los usados para el tamaño o la longitud, con matrices conformes o variables; o siempre que desee comprobar un parámetro o valor de campo en un intervalo de valores válidos. El atributo se aplica a los parámetros de nivel superior, así como a los parámetros y campos de nivel inferior. Agregar el atributo [range] a un tipo no cambia su formato de conexión, por lo que no afecta a la compatibilidad con versiones anteriores.
El atributo [range] también se puede usar en datos conformes, como búferes o matrices con un atributo de conformidad. El efecto es limitar todos los tamaños de conformidad de los datos conformes al intervalo especificado. Si los datos conformes son una matriz multidimensional, cada dimensión de matriz se limita al intervalo especificado.
El uso de [range] en datos conformes requiere que el destino de compilación sea --target NT60 o superior.
Tenga en cuenta que debe usar la opción del compilador /robust al compilar el archivo IDL para generar el código auxiliar que realizará estas comprobaciones. Sin el modificador /robust , el compilador MIDL omite este atributo.
Ejemplos
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);
Consulte también