atributo pipe
El constructor de tipo de canalización permite transmitir una secuencia de datos con tipo abierto a través de una llamada a procedimiento remoto.
typedef pipe element-type pipe-declarator;
-
tipo de elemento
-
Define el tamaño de un único elemento en el búfer de transferencia. El tipo de elemento puede ser un tipo base, predefined_type, struct, 32b enumeración o identificador de tipo. Se aplican varias restricciones a element_types, como se describe en Comentarios a continuación.
-
pipe-declarator
-
Especifica uno o varios identificadores o punteros a identificadores. Separe varios declaradores con comas.
Puede usar el constructor de tipo de canalización para transmitir datos en ambas direcciones. Un parámetro de canalización [in] permite al servidor extraer el flujo de datos del cliente durante una llamada a procedimiento remoto. Un parámetro de canalización [out] permite al servidor volver a insertar el flujo de datos en el cliente. Proporcione las rutinas del lado cliente para insertar y extraer el flujo de datos y asignar un búfer global para los datos. Las rutinas de código auxiliar de cliente y servidor serializa y anulan la captura de datos y pasan una referencia al búfer de nuevo a la aplicación.
Las siguientes restricciones se aplican a las canalizaciones:
- Un elemento de canalización no puede ser ni contener un puntero, una matriz compatible o variable, un identificador o un identificador de contexto. Además, en la implementación de canalizaciones de Microsoft, un elemento de canalización no puede ser ni contener una unión, una enumeración de 16b o una __int3264.
- No se pueden aplicar los atributos [transmit_as], [represent_as], [wire_marshal]o [user_marshal] a un tipo de canalización o al tipo de elemento.
- Un tipo de canalización no puede ser miembro de una estructura o unión, el destino de un puntero o el tipo base de una matriz.
- Un tipo de datos declarado como un tipo de canalización solo se puede usar como parámetro de una llamada remota.
- Puede pasar un parámetro de canalización en cualquier dirección por valor o por referencia ([ref] puntero). Sin embargo, no se puede aplicar el atributo [ptr] a una canalización que se pasa por referencia. No se puede especificar un parámetro de canalización con un [único] o un puntero completo, independientemente de la dirección.
- No se pueden usar canalizaciones en interfaces [object].
- No se puede aplicar el atributo [idempotent] a una rutina que tenga un parámetro de canalización.
- No puede usar los atributos de serialización, [codificar] y [descodificar] con canalizaciones.
- No puede usar identificadores automáticos, ya sea de forma predeterminada o con el atributo [auto_handle], con canalizaciones.
Nota
El compilador MIDL solo admite canalizaciones en modo /Oif .
Para obtener más información sobre cómo implementar rutinas con parámetros de canalización, vea Canalizaciones en la Guía y referencia del programador de RPC.
typedef pipe unsigned char UCHAR_PIPE1, UCHAR_PIPE2;
//SIMPLE_STRUCT defined elsewhere
typedef pipe SIMPLE_STRUCT SIMPLE_STRUCT_PIPE;