草庐IT

PeekNamedPipe

全部标签

c++ - 如何获取命名管道中要(可靠地)读取的数据长度?

我创建了一个带有以下标志的命名管道:PIPE_ACCESS_DUPLEX-双方读/写访问权限PIPE_TYPE_MESSAGE-已读消息类型PIPE_WAIT-阻塞读\写我从服务器端调用ConnectNamedPipe并等待客户端连接。我从客户端调用CallNamedPipe连接服务器并写入长度为N的数据。在服务器端:客户端连接后,PeekNamedPipe被调用以获取分配给读取数据缓冲区的缓冲区的长度。获得确切的缓冲区大小(N)后,我分配长度为N的缓冲区并调用ReadFile从Pipe读取数据。问题:问题是——在单处理器机器上,PeekNamedPipeAPI将缓冲区长度返回为0。因

c - PeekNamedPipe 总是为 totalBytesAvailable 返回 0

PeekNamedPipe(tmp_pipe,//__inHANDLEhNamedPipe,NULL,//__out_optLPVOIDlpBuffer,0,//__inDWORDnBufferSize,NULL,//__out_optLPDWORDlpBytesRead,&totalBytesAvailable,//__out_optLPDWORDlpTotalBytesAvail,NULL//__out_optLPDWORDlpBytesLeftThisMessage);我已将字节写入其他地方的管道,但totalBytesAvailable始终为0,为什么?