Udostępnij za pośrednictwem


atrybut range

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

Plik definicji interfejsu (IDL)

Tablice

first_is

last_is

length_is

max_is

/Solidne

size_is

switch_is