Compartir a través de


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;

Parámetros

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.

Comentarios

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.

Ejemplos

typedef pipe unsigned char UCHAR_PIPE1, UCHAR_PIPE2;
 
//SIMPLE_STRUCT defined elsewhere
typedef pipe SIMPLE_STRUCT SIMPLE_STRUCT_PIPE;

Vea también

auto_handle

Tipos base MIDL

Decodificar

Codificar

Enum

idempotent

in

object

out

Ptr

Ref

represent_as

Estructura

transmit_as

Único

user_marshal

wire_marshal