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失败,GetLastError不应该返回 0 ( == ERROR_SUCCESS),对吧?

谢谢您的帮助!

4

1 回答 1

3

这可能是因为在PeekNamedPipe您调用GetLastError.

将值存储GetLastError在一个临时变量中,并在构造字符串时使用它。

于 2013-10-17T07:44:45.180 回答