首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PeekNamedPipe失败,但GetLastError返回0

PeekNamedPipe失败,但GetLastError返回0
EN

Stack Overflow用户
提问于 2013-10-17 07:41:12
回答 1查看 669关注 0票数 0

我对Windows感到困惑。我尝试使用PeekNamedPipe查看匿名管道中是否还有字节。此函数失败,但GetLastError()不返回错误。

我的代码的相关部分是

代码语言:javascript
复制
if( !PeekNamedPipe( handle, NULL, 0, NULL, &numBytesAvailable, NULL ) )
  throw PeekNamedPipeException( "GetLastError() returned " + std::to_string( GetLastError() ) );

这会引发一个错误,生成以下消息:

代码语言:javascript
复制
terminate called after throwing an instance of 'PeekNamedPipeException'
  what():  GetLastError() returned 0

但是如果PeekNamedPipe失败,GetLastError不应该返回0 (== ERROR_SUCCESS),对吗?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-17 07:44:45

这可能是因为在PeekNamedPipe和您对GetLastError的调用之间(幕后)调用了更多的系统函数。

将来自GetLastError的值存储在临时变量中,并在构造字符串时使用该值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19420883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档