VB声明 |
Declare Function TransactNamedPipe Lib "kernel32"
Alias "TransactNamedPipe" (ByVal hNamedPipe As Long, lpInBuffer As Any, ByVal
nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesRead As
Long, lpOverlapped As OVERLAPPED) As Long |
说明 |
该函数在单独一个函数中同时合并了对管道的读、写操作。客户和服务器进程都可用它 |
返回值 |
Long,如操作已结束,则返回TRUE(非零);否则返回零。在异步模式中,GetLastError会设置成ERROR_IO_PENDING,而且操作会继续在后台进行。可测试lpOverlapped结构中的事件对象,了解操作是否结束 |
参数表 |
参数 |
类型及说明 |
hNamedPipe |
Long,指定一个消息类型的命名管道的句柄 |
lpInBuffer |
Any,指定一个内存缓冲区,在其中包含要写入管道的数据 |
nInBufferSize |
Long,指定lpInBuffer缓冲区中的字节数量 |
lpOutBuffer |
Any,指定一个内存缓冲区,用于装载从管道中读入的数据 |
nOutBufferSize |
Long,用于装载来自管道的数据 |
lpBytesRead |
Long,指定要从管道读入的字节数量。会读入单条消息。如由于lpOutBuffer不够大,不能容下完整的消息,那么函数会返回FALSE,而且GetLastError会设为ERROR_MORE_DATA(消息中剩下的所有字节都会丢失) |
lpOverlapped |
OVERLAPPED,可以为NULL(变成ByVal As Long,并传递零值),或指定包含了一个事件对象的OVERLAPPED结构 |
注解 |
如lpOverlapped设为NULL,或者句柄没有创建成FILE_FLAG_OVERLAPPED样式,那么除非读和写操作都完成,否则函数不会返回 |