我对Windows感到困惑。我尝试使用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),对吗?
谢谢你的帮助!
发布于 2013-10-17 07:44:45
这可能是因为在PeekNamedPipe和您对GetLastError的调用之间(幕后)调用了更多的系统函数。
将来自GetLastError的值存储在临时变量中,并在构造字符串时使用该值。
https://stackoverflow.com/questions/19420883
复制相似问题