out (atributo)
El atributo [out] identifica los parámetros de puntero que se devuelven del procedimiento llamado al procedimiento de llamada (del servidor al cliente).
[ [function-attribute-list] ] type-specifier [pointer-declarator] function-name(
[ out [ , parameter-attribute-list ] ] type-specifier [declarator]
, ...
);
-
function-attribute-list
-
Especifica cero o más atributos que se aplican a la función. Los atributos de función válidos son [devolución de llamada], [local]; el atributo de puntero [ref], [unique], o [ptr]; y los atributos de uso [string], [ignore] y [context_handle].
-
type-specifier
-
Especifica un base_type, una estructura, una unión o un identificador de tipo de enumeración . Una especificación de almacenamiento opcional puede preceder al especificador de tipos.
-
pointer-declarator
-
Especifica cero o más declaradores de puntero. Un declarador de puntero es el mismo que el declarador de puntero utilizado en C; se construye a partir del designador * , modificadores como far y el calificador const.
-
function-name
-
Especifica el nombre del procedimiento remoto.
-
parameter-attribute-list
-
Especifica cero o más atributos adecuados para un tipo de parámetro especificado. Los atributos de parámetro con el atributo [out] también pueden tomar el atributo direccional [out]; los atributos de campo [first_is], [last_is], [length_is], [max_is], [size_is] y [switch_type]; el atributo de puntero [ref], [unique], o [ptr]; y los atributos de uso [context_handle] y [string]. El atributo de uso [ignore] no se puede usar como atributo de parámetro. Separe varios atributos con comas.
-
declarator
-
Especifica los declaradores estándar, como identificadores, declaradores de puntero y declaradores de matriz. Para obtener más información, vea Array and Sized-Pointer Attributes, arrays, and Arrays and Pointers. El declarador de parámetros en el declarador de función, como el nombre del parámetro, es opcional.
El atributo [out] indica que un parámetro que actúa como puntero y sus datos asociados en la memoria se van a devolver desde el procedimiento llamado al procedimiento que realiza la llamada.
El atributo [out] debe ser un puntero. Los compiladores IDL de DCE requieren la presencia de un * explícito como declarador de puntero en la declaración de parámetros. Microsoft IDL ofrece una extensión que quita este requisito y permite una matriz o un tipo de puntero definido previamente.
Un atributo relacionado, [in], indica que el parámetro se pasa del procedimiento que realiza la llamada al procedimiento llamado. Los atributos [in] y [out] especifican la dirección en la que se pasan los parámetros. Un parámetro se puede definir como [in]-only, [out]-only o [in, out].
Se supone que un parámetro de solo salida no está definido cuando se llama al procedimiento remoto y el servidor asigna memoria para el objeto. Dado que los parámetros o punteros de nivel superior siempre deben apuntar a un almacenamiento válido y, por lo tanto, no pueden ser NULL, [out] no se puede aplicar a punteros de nivel superior [único] o [ptr]. Los parámetros que son punteros [unique] o [ptr] deben ser parámetros [in] o [in, out].
HRESULT MyFunction([out] short * pcount);