我对 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
),对吧?
感谢您的帮助!
最佳答案
这可能是因为在 PeekNamedPipe
和您对 GetLastError
的调用之间(在幕后)调用了更多系统函数。
将 GetLastError
的值存储在一个临时变量中,并在构造字符串时使用它。
关于c++ - PeekNamedPipe 失败,但 GetLastError 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19420883/