Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Атрибут [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);
См. также