0

Windows API に混乱しています。を使用して匿名パイプにバイトが残っているかどうかを確認しようとしましたPeekNamedPipe。この関数は失敗しますがGetLastError()、エラーは返しません。

私のコードの関連部分は

if( !PeekNamedPipe( handle, NULL, 0, NULL, &numBytesAvailable, NULL ) )
  throw PeekNamedPipeException( "GetLastError() returned " + std::to_string( GetLastError() ) );

これによりエラーがスローされ、次のメッセージが生成されます。

terminate called after throwing an instance of 'PeekNamedPipeException'
  what():  GetLastError() returned 0

しかし、PeekNamedPipe失敗した場合はGetLastError0 ( == ERROR_SUCCESS) を返すべきではありませんよね?

ご協力ありがとうございました!

4

1 に答える 1