Атрибуты поля

Атрибуты поля — это атрибуты, которые можно применять к полям массива, структуры, объединения или массива символов:

Например, атрибуты полей используются в сочетании с объявлениями массива для указания размера массива или части массива, содержащей допустимые данные. Это делается путем связывания другого параметра, поля структуры или константного выражения с массивом.

Атрибут [ignore] обозначает поля указателя, которые будут игнорироваться во время процесса маршалинга. Для такого игнорируемого поля на стороне получателя задано значение NULL .

MIDL предоставляет соответствующие, изменяющиеся и открытые массивы. Массив называется соответствующим, если его границы определяются во время выполнения. Атрибут [size_is] обозначает верхнюю границу размера выделения массива, а атрибут [max_is] — верхнюю границу значения допустимого индекса массива. Дополнительные сведения см. в разделе [массивы].

Массив называется переменным, если его границы определяются во время компиляции, но диапазон передаваемых элементов определяется во время выполнения. Открытый массив (также называемый соответствующим переменным массивом) — это массив, верхняя граница которого и диапазон передаваемых элементов определяются во время выполнения. Чтобы определить диапазон передаваемых элементов массива, объявление массива должно включать атрибут [length_is], [first_is] или [last_is] .

Атрибут [length_is] обозначает количество передаваемых элементов массива, а атрибут [first_is] — индекс первого передаваемого элемента массива. Атрибут [last_is] обозначает индекс последнего передаваемого элемента массива.

Атрибут поля [switch_is] обозначает дискриминатор объединения. Если объединение является параметром процедуры, дискриминатор объединения должен быть другим параметром той же процедуры. Если объединение является полем структуры, дискриминатор должен быть другой областью структуры на том же уровне, что и поле объединения. Дискриминатор должен быть логическим, char, int или перечислением или типом, разрешающимся в один из этих типов. Дополнительные сведения см. в разделах Неинкапсулированные объединения и [switch_is].

Атрибут поля [string] указывает, что одномерный символ или массив байтов, а также указатель на символ или поток байтов, заканчивающийся с нуля, должен рассматриваться как строка. Атрибут string применяется только к одномерным массивам и указателям. Тип элемента ограничен char, byte, wchar_t или именованным типом, который разрешается в один из этих типов.

Сведения о контексте, в котором отображаются атрибуты полей, см. в разделе Массивы MIDL, структуры MIDL и объединения MIDL.