first_is - атрибут
Атрибут [first_is] указывает индекс первого передаваемого элемента массива.
first_is(limited-expression-list)
-
limited-expression-list
-
Задает одно или несколько выражений языка C. Каждое выражение вычисляет целое число, представляющее индекс массива первого передаваемого элемента массива. Компилятор MIDL поддерживает условные выражения, логические выражения, реляционные выражения и арифметические выражения. MIDL не разрешает вызовы функций в выражениях и не разрешает операторы увеличения и уменьшения. Разделите несколько выражений запятыми.
Если атрибут [first_is] отсутствует или если указанный индекс является отрицательным числом, то ноль элемента массива является первым переданным элементом.
Атрибут [first_is] также может помочь определить значения индексов массива, соответствующих атрибуту [last_is] или [length_is] , если эти атрибуты не указаны. Связь между этими индексами массива состоит из следующих значений:
length = last - first + 1
Кроме того, должны содержаться следующие отношения:
0 <= first_is <= max_is
Следующая связь должна содержаться, если [max_is] <= 0:
first_is == 0
Атрибут [first_is] нельзя использовать одновременно с атрибутом [string].
Использование константного выражения с атрибутом [first_is] является недопустимым использованием атрибута. Это юридический, но неэффективный и приведет к замедлению маршалинга кода.
HRESULT Proc1(
[in] short First,
[first_is(First)] Arr[10]);