range (attributo)

L'attributo [range] consente di specificare un intervallo di valori consentiti per argomenti o campi i cui valori vengono impostati in fase di esecuzione. Se usato con un tipo di pipe, l'attributo specifica l'intervallo consentito per il numero di elementi nei blocchi pipe.

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

Parametri

low-val

Valore consentito più basso che il parametro o il campo può contenere.

high-val

Valore consentito più alto che il parametro o il campo può contenere.

type-specifier

Tipo integrale diverso da hyper o __int64, identificatore di tipo per un tipo integrale, tipo enum o nome di tipo pipe.

Dichiaratore

Dichiaratore C standard, ad esempio un identificatore.

Commenti

Usare l'attributo [range] per modificare il significato di parametri o campi sensibili, ad esempio quelli usati per dimensioni o lunghezza, con matrici conformi o variabili; oppure ogni volta che si desidera controllare un parametro o un valore di campo rispetto a un intervallo di valori validi. L'attributo è applicabile ai parametri di primo livello, nonché ai parametri e ai campi di livello inferiore. L'aggiunta dell'attributo [range] a un tipo non modifica il formato di collegamento, pertanto non influisce sulla compatibilità con le versioni precedenti.

L'attributo [range] può essere usato anche su dati conformi, ad esempio buffer o matrici con un attributo di conformità. L'effetto consiste nel limitare tutte le dimensioni di conformità per i dati conformi all'intervallo specificato. Se i dati conformi sono una matrice multidimensionale, ogni dimensione di matrice è limitata all'intervallo specificato.

L'uso di [intervallo] sui dati conformi richiede che la destinazione di compilazione sia â€"target NT60 o superiore.

Si noti che è necessario usare l'opzione del compilatore /robust quando si compila il file IDL per generare il codice stub che eseguirà questi controlli. Senza l'opzione /robust , il compilatore MIDL ignora questo attributo.

Esempi

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);

Vedere anche

File IDL (Interface Definition)

matrici

first_is

last_is

length_is

max_is

/Robusto

size_is

switch_is