Как проверить оставшийся размер буфера трубы в Windows в C / C ++? - PullRequest
2 голосов
/ 08 сентября 2010

Кстати, оставшийся буфер автоматически увеличится, если другая сторона считывает данные из него, верно?

1 Ответ

1 голос
/ 08 сентября 2010

Как насчет PeekNamedPipe? Казалось бы, следующее вернет общее количество байтов, оставшихся для чтения из канала.

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
);
...