Compartilhar via


atributo range

O atributo [intervalo] 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 pipe, o atributo especifica o intervalo permitido para a contagem de elementos nas partes de pipe.

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

Parâmetros

low-val

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

high-val

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

type-specifier

Um tipo integral diferente de hyper ou __int64, um identificador de tipo para um tipo integral, um tipo de enumeração 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 confidenciais, como aqueles usados para tamanho ou comprimento, com matrizes compatíveis ou variáveis; ou sempre que você quiser verificar um parâmetro ou valor de campo em relação a um intervalo de valores válidos. O atributo é aplicável a parâmetros de nível superior, bem como a parâmetros e campos de nível inferior. Adicionar o atributo [range] a um tipo não altera seu formato de fio, portanto, não afeta a compatibilidade com versões anteriores.

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

O uso de [intervalo] em dados de conformidade requer que o destino da compilação seja --target NT60 ou superior.

Observe que você deve usar a opção /robust compiler ao compilar seu arquivo IDL para gerar o código stub que executará essas verificações. Sem o comutador /robust , o compilador MIDL ignora esse 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

Arquivo IDL (Definição de Interface)

matrizes

first_is

last_is

length_is

max_is

/Robusto

Size_is

switch_is