pipe

typedef pipe element-type pipe-declarator;

element-type
Defines the size of a single element in the transfer buffer. The element-type can be a base_type, predefined_type, struct, enum, or type identifier. Several restrictions apply to element-types, as described in Remarks, below.
pipe-declarator
Specifies one or more identifiers or pointers to identifiers. Separate multiple declarators with commas.

Examples

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

Remarks

The pipe type constructor makes it possible to transmit an open-ended stream of typed data across a remote procedure call. An in pipe parameter allows the server to pull the data stream from the client during a remote procedure call. An out pipe parameter allows the server to push the data stream back to the client. You supply the client-side routines to push and pull the data stream and to allocate a global buffer for the data. The client and server stub routines marshal and unmarshal data and pass a reference to the buffer back to the application.

The following restrictions apply to pipes:

Note  The MIDL 3.0 compiler supports pipes in /Oi2 mode only.

For more information on implementing routines with pipe parameters, see Pipes in the RPC Programmer's Guide and Reference.