在我的代码中,我使用了I/O完成端口实现异步I/O,在读/写完成回调中,我会得到一个
因此,如果在这样的例程中出现问题,我想检查错误,但如何知道它是“网络”
如果有人能够确认
看起来是这样的:
而且,使用
HANDLE
(当然可以是套接字、文件句柄、命名管道等)。因此,如果在这样的例程中出现问题,我想检查错误,但如何知道它是“网络”
HANDLE
(即SOCKET
,因此应调用WSAGetLastError()
)还是“非网络”HANDLE
(命名管道、文件等,因此应调用GetLastError()
)?我使用了一个简单的标志来解决这个问题,但它很丑陋,也不方便。如果有人能够确认
WSAGetLastError()
只是GetLastError()
的别名,那么我将仅使用后者。看起来是这样的:
http://us.generation-nt.com/wsagetlasterror-just-an-alias-getlasterror-help-28256642.html
但是有人能确认这个吗?MSDN在这个话题上并不十分清楚。而且,使用
GetLastError()
替代WSAGetLastError()
是否安全?我的意思是,如果WSAGetLastError()
自Windows95以来甚至是GetLastError()
的别名,那么我可以假设它对于下一个版本的Windows也是正确的--但我们不能仅凭假设写出好的代码 :)