Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The following example IDL file defines a typical pipe structure, and an asynchronous RPC function with pipes.
Example
//file: Xasyncpipe.idl:
//
interface IMyAsyncPipe
{
//define the pipe type
typedef pipe int aysnc_intpipe ;
//then use it as a parameter
int MyAsyncPipe(
handle_t hBinding,
[in] a,
[in] ASYNC_INTPIPE *inpipe,
[out] ASYNC_INTPIPE *outpipe,
[out] int *b) ;
};
//other function declarations
//other interface definitions
//end Xasyncpipe.idl
//file:Xasyncpipe.acf:
//file: Xasyncpipe.acf:
interface IMyAsyncPipe
{
[async] MyAsyncPipe () ;
} ;
//
//end Xasyncpipe.acf
The following code fragment shows a typical pipe structure definition. It contains pointers to push and pull procedures, a buffer to hold the pipe data, and a state variable to coordinate the procedures:
//
typedef struct ASYNC_MYPIPE
{
RPC_STATUS (__RPC_FAR * pull) (
char __RPC_FAR * state,
small __RPC_FAR * buf,
unsigned long esize,
unsigned long __RPC_FAR * ecount );
RPC_STATUS (__RPC_FAR * push) (
char __RPC_FAR * state,
small __RPC_FAR * buf,
unsigned long ecount );
void *Reserved;
char __RPC_FAR * state;
}ASYNC_INTPIPE;