Partilhar via


Atributo de Alcance

O atributo [range] permite especificar um intervalo de valores permitidos para argumentos ou campos cujos valores são definidos em tempo de execução. Quando usado com um tipo de tubo, o atributo especifica o intervalo permitido para a contagem de elementos nos blocos do tubo.

[range(low-val,high-val)] type-specifier declarator

Parâmetros

Baixa Val

O valor mais baixo permitido que o parâmetro ou campo pode dever.

High-Val

O valor mais alto permitido que o parâmetro ou campo pode conter.

Especificador de tipo

Um tipo integral diferente de hyper ou __int64, um identificador de tipo de tipo integral, um tipo enum ou um nome de tipo de pipe.

declarador

Um declarador C padrão, como um identificador.

Observações

Use o atributo [range] para modificar o significado de parâmetros ou campos sensíveis, como os usados para tamanho ou comprimento, com arrays conformes ou variáveis; ou sempre que quiseres verificar um valor de parâmetro ou campo contra um intervalo de valores válidos. O atributo é aplicável a parâmetros de topo bem como a parâmetros e campos de nível inferior. Adicionar o atributo [range] a um tipo não altera o seu formato de fio, pelo que não afeta a compatibilidade retroativa.

O atributo [range] também pode ser usado em dados conformes, como buffers ou arrays com um atributo de conformidade. O efeito é limitar todos os tamanhos de conformidade dos dados conformes ao intervalo especificado. Se os dados conformes forem um array multidimensional, cada dimensão do array está limitada ao intervalo especificado.

A utilização de [range] em dados conformes exige que o alvo de compilação seja --target NT60 ou superior.

Note que deve usar a opção /robust compilador ao compilar o seu ficheiro IDL para gerar o código stub que irá realizar estas verificações. Sem o switch /robust , o compilador MIDL ignora este atributo.

Exemplos

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 também

Ficheiro de Definição de Interface (IDL)

Matrizes

first_is

last_is

length_is

max_is

/robusto

size_is

switch_is