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