Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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