Asynchronous Pipes

Using pipe parameters with asynchronous RPC allows you to transmit data incrementally, as it becomes available, without tying up the client and server. This is particularly useful when you have a large amount of data to transfer, combined with a slow client, a slow server, or a slow network. If you use a pipe in an asynchronous function call, it is, by definition, an asynchronous pipe. Synchronous pipes are not supported in conjunction with asynchronous functions.

Unlike conventional (synchronous) pipes where the server handles all the details of sending and receiving pipe data, asynchronous pipes are symmetrical. That is, both the client and the server can push and pull data through the pipe.

Note

Pipe parameters can only be passed by reference. Even if the IDL file shows pipe parameters being passed by value, the generated stubs will accept pipe parameters by reference only.

 

In the following discussion of asynchronous pipes, familiarity with the pipe type constructor is assumed. For more information on the pipe procedures described in these topics, see Pipes.