Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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