Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c/c+中检查windows中管道的剩余缓冲区大小+;?_Windows_Named Pipes - Fatal编程技术网

如何在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