如何在c/c+中检查windows中管道的剩余缓冲区大小+;?
顺便说一句,如果另一方从中读取数据,剩余的缓冲区将自动增加,对吗?怎么样?以下内容似乎将返回要从管道中读取的剩余字节总数如何在c/c+中检查windows中管道的剩余缓冲区大小+;?,windows,named-pipes,Windows,Named Pipes,顺便说一句,如果另一方从中读取数据,剩余的缓冲区将自动增加,对吗?怎么样?以下内容似乎将返回要从管道中读取的剩余字节总数 DWORD totalBytesAvailable; BOOL WINAPI PeekNamedPipe( handle, // __in HANDLE hNamedPipe, NULL, // __out_opt LPVOID lpBuffer, 0,
DWORD totalBytesAvailable;
BOOL WINAPI PeekNamedPipe(
handle, // __in HANDLE hNamedPipe,
NULL, // __out_opt LPVOID lpBuffer,
0, // __in DWORD nBufferSize,
NULL, // __out_opt LPDWORD lpBytesRead,
&totalBytesAvailable, // __out_opt LPDWORD lpTotalBytesAvail,
NULL // __out_opt LPDWORD lpBytesLeftThisMessage
);
totalBytesAvailable
包括管道两侧写入的字节,对吗?@Alan:我不确定。它说它是可读取的总量,这可能意味着管道的这一侧可以读取。然而,我认为这是其中一种情况,最简单的确定方法就是编写一些测试代码。它不起作用,我只是尝试,totalBytesAvailable
总是0
也许这就是PeekNamedPipe
向您报告0
的原因:用于(doc说它也可以用于匿名管道)说它可以选择性地报告“输入”和“输出”缓冲区大小(总大小,而不是剩余大小)。它还说如果缓冲区按需增长,它将报告0
。