out (attributo)
L'attributo [out] identifica i parametri del puntatore restituiti dalla routine chiamata alla routine chiamante (dal server al client).
[ [function-attribute-list] ] type-specifier [pointer-declarator] function-name(
[ out [ , parameter-attribute-list ] ] type-specifier [declarator]
, ...
);
-
function-attribute-list
-
Specifica zero o più attributi che si applicano alla funzione. Gli attributi di funzione validi sono [callback], [local]; l'attributo puntatore [ref], [unique]o [ptr]; e gli attributi di utilizzo [string], [ignore], e [context_handle].
-
type-specifier
-
Specifica un base_type, uno struct, un'unione o un tipo di enumerazione o un identificatore di tipo. Una specifica di archiviazione facoltativa può precedere l'identificatore di tipo.
-
puntatore-dichiaratore
-
Specifica zero o più dichiaratori del puntatore. Un dichiaratore di puntatore è lo stesso del dichiaratore del puntatore usato in C; viene costruito da * designator, modificatori come per lontano e qualificatore const.
-
function-name
-
Specifica il nome della routine remota.
-
parameter-attribute-list
-
Specifica zero o più attributi appropriati per un tipo di parametro specificato. Gli attributi dei parametri con l'attributo [out] possono anche accettare l'attributo direzionale [out]; gli attributi del campo [first_is], [last_is], [length_is], [max_is], [size_is], e [switch_type]; l'attributo puntatore [ref], [unique]o [ptr]; e gli attributi di utilizzo [context_handle] e [string]. L'attributo di utilizzo [ignore] non può essere usato come attributo di parametro. Separare più attributi con virgole.
-
Dichiaratore
-
Specifica i dichiaratori standard, ad esempio identificatori, dichiaratori di puntatore e dichiaratori di matrice. Per altre informazioni, vedere Array e Sized-Pointer Attributi, matrici e matricie puntatori. Il dichiaratore di parametro nel dichiaratore di funzione, ad esempio il nome del parametro, è facoltativo.
L'attributo [out] indica che un parametro che funge da puntatore e i relativi dati associati in memoria devono essere passati dalla routine chiamata alla routine chiamante.
L'attributo [out] deve essere un puntatore. I compilatori IDL DCE richiedono la presenza di un elemento esplicito * come dichiaratore di puntatore nella dichiarazione del parametro. Microsoft IDL offre un'estensione che elimina questo requisito e consente una matrice o un tipo di puntatore definito in precedenza.
Un attributo correlato, [in], indica che il parametro viene passato dalla routine chiamante alla routine chiamata. Gli attributi [in] e [out] specificano la direzione in cui vengono passati i parametri. Un parametro può essere definito come [in]-only, [out]-only o [in, out].
Si presuppone che un parametro [out]-only sia indefinito quando viene chiamata la routine remota e la memoria per l'oggetto viene allocata dal server. Poiché il puntatore/i parametri di primo livello deve sempre puntare all'archiviazione valida e pertanto non può essere NULL, [out] non può essere applicato ai puntatori [unique] o [ptr] di primo livello. I parametri [unique] o [ptr] devono essere [in] o [in, out] parametri.
HRESULT MyFunction([out] short * pcount);