调用 ConnectNamedPipe 后 GetLastError 返回 ERROR_SUCCESS
当我使用 OVERLAPPED 结构调用 ConnectNamedPipe 并随后检查 GetLastError 时,我经常看到 GetLastError 返回 ERROR_SUCCESS。我阅读文档的方式,这种事永远不应该发生。我的理解是,如果客户端已经连接,则应设置 ERROR_PIPE_CONNECTED,而不是 ERROR_SUCCESS。
还有其他人看过这个吗?操作系统是32位Windows 7。
When I call ConnectNamedPipe with an OVERLAPPED structure and check GetLastError afterwards, I often see GetLastError return ERROR_SUCCESS. The way I'm reading the documentation, that should never happen. My understanding is that if a client has already connected, ERROR_PIPE_CONNECTED should be set, not ERROR_SUCCESS.
Has anyone else seen this? The OS is 32-bit Windows 7.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是 OVERLAPPED 的典型情况。它在连接之前告知参数是否正确(假设是异步套接字)。连接完成或失败后,
GetOverlappedResult()
返回正确的状态。所以我想这是一个小文档错误。That's typical for OVERLAPPED. It tells whether the parameters are okay before connecting, assuming an asynchronous socket. Once a connection completes or fails, then
GetOverlappedResult()
returns the proper status. So I guess this is a minor documentation error.尝试在 ConnectNamedPipe 之后立即调用 GetLastError()。
中间不要调用任何 API。
Try calling GetLastError() immediately after ConnectNamedPipe.
Don't call any API in between.