[英]Error handling in overlapped socket IO
在使用重叠的套接字IO和IOCP的情况下,有人可以建议一种可靠的方法来处理系统错误吗?
MSDN在这方面的描述很麻烦。 它说,对于GetQueuedCompletionStatus
返回代码FALSE,应该随后进行GetLastError
调用,以获取失败操作的错误代码。 但是,我们知道,对于WSA函数,应该改为调用WSAGetLastError
(在套接字错误时GetLastError
返回0)。 因此,问题的第一部分是-它如何在实践中起作用?
如果由GetQueuedCompletionStatusEx
提取完成数据包,则另一个问题是处理错误。 MSDN仅描述了此调用本身的错误处理,没有说明获取各个失败操作的错误代码。
预先感谢您的所有回复和评论。
经过几个小时的放大镜实验和研究MSDN,我发现了以下内容:
http://msdn.microsoft.com/zh-cn/library/ms684342%28v=VS.85%29.aspx (有关OVERLAPPED结构的文章, Internal
字段的说明):
I / O请求的错误代码。 发出请求后,系统将此成员设置为STATUS_PENDING以指示该操作尚未开始。 请求完成后,系统将此成员设置为已完成请求的错误代码。
内部成员最初保留供系统使用,其行为可能会更改。
最后一句话看起来不太好,但我想它就是它的意思。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.