Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Atrybut [range] umożliwia określenie zakresu dozwolonych wartości dla argumentów lub pól, których wartości są ustawiane w czasie wykonywania. W przypadku użycia z typem potoku atrybut określa dozwolony zakres liczby elementów we fragmentach potoku.
[range(low-val,high-val)] type-specifier declarator
Parametry
-
low-val
-
Najniższa dozwolona wartość, którą może przechowywać parametr lub pole.
-
wysoka wartość
-
Najwyższa dozwolona wartość, którą może przechowywać parametr lub pole.
-
specyfikator typu
-
Typ całkowity inny niż hiper lub __int64, identyfikator typu do typu całkowitego, typ wyliczenia lub nazwa typu potoku.
-
Declarator
-
Standardowy deklarator języka C, taki jak identyfikator.
Uwagi
Użyj atrybutu [range], aby zmodyfikować znaczenie poufnych parametrów lub pól, takich jak te używane do rozmiaru lub długości, ze zgodnymi lub zmiennymi tablicami; lub za każdym razem, gdy chcesz sprawdzić parametr lub wartość pola względem zakresu prawidłowych wartości. Atrybut ma zastosowanie do parametrów najwyższego poziomu, a także parametrów i pól niższego poziomu. Dodanie atrybutu [range] do typu nie zmienia formatu przewodu, co nie wpływa na zgodność z poprzednimi wersjami.
Atrybut [range] może być również używany na danych zgodnych, takich jak bufory lub tablice z atrybutem zgodności. Efektem jest ograniczenie wszystkich rozmiarów zgodności dla danych zgodnych z określonym zakresem. Jeśli zgodne dane są tablicą wielowymiarową, każdy wymiar tablicy jest ograniczony do określonego zakresu.
Użycie elementu [range] dla zgodnych danych wymaga, aby docelowy element kompilacji był --target NT60 lub wyższy.
Należy pamiętać, że podczas kompilowania pliku IDL należy użyć opcji /robust compiler w celu wygenerowania kodu wycinkowego , który wykona te kontrole. Bez przełącznika /robust kompilator MIDL ignoruje ten atrybut.
Examples
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);
Zobacz także