out (attribut)
L’attribut [out] identifie les paramètres de pointeur qui sont retournés de la procédure appelée à la procédure appelante (du serveur au client).
[ [function-attribute-list] ] type-specifier [pointer-declarator] function-name(
[ out [ , parameter-attribute-list ] ] type-specifier [declarator]
, ...
);
-
function-attribute-list
-
Spécifie zéro ou plusieurs attributs qui s’appliquent à la fonction. Les attributs de fonction valides sont [callback], [local]; l’attribut pointeur [ref], [unique] ou [ptr]; et les attributs d’utilisation [string], [ignore] et [context_handle].
-
type-specifier
-
Spécifie un type ou un identificateur de type base_type, struct, union ou enum . Une spécification de stockage facultative peut précéder le spécificateur de type.
-
pointeur-déclarateur
-
Spécifie zéro ou plusieurs déclarateurs de pointeur. Un déclarateur de pointeur est identique au déclarateur de pointeur utilisé dans C ; il est construit à partir du désignateur *, des modificateurs tels que far, et du qualificateur const.
-
function-name
-
Spécifie le nom de la procédure distante.
-
parameter-attribute-list
-
Spécifie zéro ou plusieurs attributs appropriés pour un type de paramètre spécifié. Les attributs de paramètre avec l’attribut [out] peuvent également prendre l’attribut directionnel [out] ; les attributs de champ [first_is], [last_is], [length_is], [max_is], [size_is] et [switch_type]; l’attribut pointeur [ref], [unique] ou [ptr]; et les attributs d’utilisation [context_handle] et [string]. L’attribut d’utilisation [ignore] ne peut pas être utilisé comme attribut de paramètre. Séparez plusieurs attributs par des virgules.
-
declarator
-
Spécifie les déclarateurs standard, tels que les identificateurs, les déclarateurs de pointeurs et les déclarateurs de tableau. Pour plus d’informations, consultez Array and Sized-Pointer Attributes, arrays, and Arrays and Pointers. Le déclarateur de paramètre dans le déclarateur de fonction, tel que le nom du paramètre, est facultatif.
L’attribut [out] indique qu’un paramètre qui agit comme pointeur et ses données associées en mémoire doivent être repassé de la procédure appelée à la procédure appelante.
L’attribut [out] doit être un pointeur. Les compilateurs IDL DCE nécessitent la présence d’un * explicite comme déclarateur de pointeur dans la déclaration de paramètre. Microsoft IDL offre une extension qui supprime cette exigence et autorise un tableau ou un type de pointeur défini précédemment.
Un attribut associé, [in], indique que le paramètre est passé de la procédure appelante à la procédure appelée. Les attributs [in] et [out] spécifient la direction dans laquelle les paramètres sont passés. Un paramètre peut être défini comme [in]-only, [out]-only ou [in, out].
Un paramètre [out]-only est supposé être non défini lorsque la procédure distante est appelée et que la mémoire de l’objet est allouée par le serveur. Étant donné que le pointeur/les paramètres de niveau supérieur doivent toujours pointer vers un stockage valide et ne peuvent donc pas être NULL, [out] ne peut pas être appliqué aux pointeurs de niveau supérieur [unique] ou [ptr]. Les paramètres qui sont des pointeurs [unique] ou [ptr] doivent être des paramètres [in] ou [in, out].
HRESULT MyFunction([out] short * pcount);