out - атрибут
Атрибут [out] определяет параметры указателя, возвращаемые вызываемой процедурой вызывающей процедуре (от сервера к клиенту).
[ [function-attribute-list] ] type-specifier [pointer-declarator] function-name(
[ out [ , parameter-attribute-list ] ] type-specifier [declarator]
, ...
);
-
function-attribute-list
-
Указывает ноль или несколько атрибутов, применяемых к функции. Допустимые атрибуты функции: [callback], [local]; атрибут указателя [ref], [unique], или [ptr]; и атрибуты использования [string], [ignore] и [context_handle].
-
type-specifier
-
Указывает base_type, структуру, объединение, тип перечисления или идентификатор типа. Необязательная спецификация хранилища может предшествовать описательу типа.
-
указатель-декларатор
-
Указывает ноль или несколько деклараторов указателей. Декларатор указателя совпадает с декларатором указателя, используемым в C; он создается из конструктора *, модификаторов, таких как far, и const квалификатора.
-
function-name
-
Указывает имя удаленной процедуры.
-
parameter-attribute-list
-
Указывает ноль или более атрибутов, подходящих для указанного типа параметра. Атрибуты параметров с атрибутом [out] также могут принимать атрибут направления [out]; атрибуты поля [first_is], [last_is], [length_is], [max_is], [size_is] и [switch_type]; атрибут указателя [ref], [unique], или [ptr]; и атрибуты использования [context_handle] и [строка]. Атрибут использования [ignore] нельзя использовать в качестве атрибута параметра. Разделяйте несколько атрибутов запятыми.
-
declarator
-
Задает стандартные деклараторы, такие как идентификаторы, деклараторы указателей и деклараторы массива. Дополнительные сведения см. в разделе Атрибуты массива и Sized-Pointer, массивы и массивы и указатели. Декларатор параметров в деклараторе функции, например имя параметра, является необязательным.
Атрибут [out] указывает, что параметр, который выступает в качестве указателя, и связанные с ним данные в памяти должны быть переданы обратно из вызываемой процедуры в вызывающую процедуру.
Атрибут [out] должен быть указателем. Компиляторы IDL DCE требуют наличия явного символа * в качестве декларатора указателя в объявлении параметра. Microsoft IDL предлагает расширение, которое отменяет это требование и позволяет использовать массив или ранее определенный тип указателя.
Связанный атрибут [in] указывает, что параметр передается из вызывающей процедуры в вызываемую процедуру. Атрибуты [in] и [out] указывают направление, в котором передаются параметры. Параметр может быть определен как [in]-only, [out]-only или [in, out].
Предполагается, что параметр [out] не определен при вызове удаленной процедуры и выделении памяти для объекта сервером. Так как указатель или параметры верхнего уровня всегда должны указывать на допустимое хранилище и, следовательно, не могут иметь значение NULL, [out] нельзя применять к указателям верхнего уровня [unique] или [ptr]. Параметры, которые являются указателями [unique] или [ptr], должны быть параметрами [in] или [in, out].
HRESULT MyFunction([out] short * pcount);