range (atributo)

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

Valor permitido más alto que el parámetro o campo puede contener.

type-specifier

Un tipo entero distinto de hyper o __int64, un identificador de tipo para 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.

Comentarios

Utilice 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 es aplicable 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 NT60 de destino 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);

Vea también

Archivo de definición de interfaz (IDL)

matrices

first_is

last_is

length_is

max_is

/Robusto

size_is

switch_is