atributo out

O atributo [out] identifica parâmetros de ponteiro retornados do procedimento chamado para o procedimento de chamada (do servidor para o cliente).

[ [function-attribute-list] ] type-specifier [pointer-declarator] function-name(
    [ out [ , parameter-attribute-list ] ] type-specifier [declarator]
    , ...
);

Parâmetros

function-attribute-list

Especifica zero ou mais atributos que se aplicam à função. Os atributos de função válidos são [retorno de chamada], [local]; o atributo de ponteiro [ref], [unique]ou [ptr]; e os atributos de uso [string], [ignore], e [context_handle].

type-specifier

Especifica um base_type, struct, união ou tipo de enumeração ou identificador de tipo. Uma especificação de armazenamento opcional pode preceder o especificador de tipo.

pointer-declarator

Especifica zero ou mais declaradores de ponteiro. Um declarador de ponteiro é o mesmo que o declarador de ponteiro usado em C; ele é construído a partir do designador * , modificadores como , por exemplo, e o qualificador const.

function-name

Especifica o nome do procedimento remoto.

parameter-attribute-list

Especifica zero ou mais atributos apropriados para um tipo de parâmetro especificado. Os atributos de parâmetro com o atributo [out] também podem usar o atributo direcional [out]; os atributos de campo [first_is], [last_is], [length_is], [max_is], [size_is] e [switch_type]; o atributo de ponteiro [ref], [unique]ou [ptr]; e os atributos de uso [context_handle] e [cadeia de caracteres]. O atributo de uso [ignore] não pode ser usado como um atributo de parâmetro. Separe vários atributos com vírgulas.

declarator

Especifica os declaradores padrão, como identificadores, declaradores de ponteiro e declaradores de matriz. Para obter mais informações, consulte Atributos de matriz e Sized-Pointer, matrizes e matrizes e ponteiros. O declarador de parâmetro no declarador de função, como o nome do parâmetro, é opcional.

Comentários

O atributo [out] indica que um parâmetro que atua como um ponteiro e seus dados associados na memória deve ser passado de volta do procedimento chamado para o procedimento de chamada.

O atributo [out] deve ser um ponteiro. Os compiladores DCE IDL exigem a presença de um explícito * como um declarador de ponteiro na declaração de parâmetro. A IDL da Microsoft oferece uma extensão que descarta esse requisito e permite uma matriz ou um tipo de ponteiro definido anteriormente.

Um atributo relacionado, [in], indica que o parâmetro é passado do procedimento de chamada para o procedimento chamado. Os atributos [in] e [out] especificam a direção na qual os parâmetros são passados. Um parâmetro pode ser definido como [in]-only, [out]-only ou [in, out].

Um parâmetro [out]-only é considerado indefinido quando o procedimento remoto é chamado e a memória do objeto é alocada pelo servidor. Como os parâmetros/ponteiro de nível superior sempre devem apontar para um armazenamento válido e, portanto, não podem ser NULL, [out] não pode ser aplicado a ponteiros de nível superior [exclusivo] ou [ptr]. Parâmetros que são ponteiros [exclusivos] ou [ptr] devem ser parâmetros [in] ou [in, out].

Exemplos

HRESULT MyFunction([out] short * pcount);

Confira também

Matrizes

Tipos base MIDL

retorno de chamada

const

context_handle

Enum

first_is

Ignorar

Em

last_is

length_is

Local

max_is

Ptr

Ref

size_is

string

Struct

switch_type

union

unique