Бөлісу құралы:


Атрибут диапазона

Атрибут [range] позволяет указать диапазон допустимых значений для аргументов или полей, значения которых задаются во время выполнения. При использовании с типом канала атрибут задает допустимый диапазон для количества элементов в блоках канала.

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

Параметры

low-val

Наименьшее допустимое значение, которое может содержать параметр или поле.

high-val

Максимально допустимое значение, которое может хранить параметр или поле.

описатель типа

Целочисленный тип, отличный от гипер или __int64, идентификатор типа целочисленного типа, типа перечисления или имя типа канала.

Декларатор

Стандартный декларатор C, например идентификатор.

Замечания

Используйте атрибут [range] , чтобы изменить значение конфиденциальных параметров или полей, таких как те, которые используются для размера или длины, с соответствующими или различными массивами; или всякий раз, когда требуется проверить значение параметра или поля в диапазоне допустимых значений. Атрибут применим к параметрам верхнего уровня, а также к параметрам и полям нижнего уровня. Добавление атрибута [range] в тип не изменяет его формат провода, поэтому не влияет на обратную совместимость.

Атрибут [range] также можно использовать для соответствующих данных, таких как буферы или массивы с атрибутом соответствия. Эффект заключается в ограничении всех размеров соответствия для соответствующих данных указанным диапазоном. Если соответствующие данные являются многомерным массивом, каждое измерение массива ограничено указанным диапазоном.

Использование [диапазона] для соответствующих данных требует, чтобы целевой объект компиляции был --target NT60 или выше.

Обратите внимание, что при компиляции IDL-файла необходимо использовать параметр /robust компилятора, чтобы создать код заглушки, который будет выполнять эти проверки. Без / надежного коммутатора компилятор MIDL игнорирует этот атрибут.

Примеры

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

См. также

Файл определения интерфейса (IDL)

массивы

first_is

last_is

length_is

max_is

/Надежные

size_is

switch_is