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
失敗した場合はGetLastError
0 ( == ERROR_SUCCESS
) を返すべきではありませんよね?
ご協力ありがとうございました!