声明异步管道
以下示例 IDL 文件定义了一个典型的管道结构和一个包含管道的异步 RPC 函数。
示例
//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
以下代码片段显示了典型的管道结构定义。 它包含用于推送和拉取过程的指针、用于保存管道数据的缓冲区以及用于协调过程的状态变量:
//
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;