在我的代码中,我具有带有I/O完成端口的异步I/O,对于读/写完成回调,我得到了HANDLE
(当然可以是套接字,文件句柄,命名管道等)。
因此,如果此类例程中出现问题,我想检查该错误,但如何确定其是“网络” HANDLE
(一个SOCKET
,所以我应该调用WSAGetLastError()
)还是一个“非网络” HANDLE
(命名为管道,文件依此类推,所以我应该调用GetLastError()
)?我为此使用了一个简单的标志,但是它很丑陋且不方便。
如果有人可以确认WSAGetLastError()
只是GetLastError()
的别名,那么我将仅使用后者。
看来是这样的:
http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.networks/2007-08/msg00034.html
http://us.generation-nt.com/wsagetlasterror-just-an-alias-getlasterror-help-28256642.html
但是有人可以确认吗? MSDN在这个主题上不是很清楚。
并且使用GetLastError()
而不是WSAGetLastError()
是否安全?我的意思是,如果有人声称Windows95以来WSAGetLastError()
甚至是GetLastError()
的别名,我都可以假定它对于下一版本的Windows都是正确的-但我们不能在假设情况下编写好的代码:)
最佳答案
如果您对ws2_32.dll进行反向工程,那么它只是GetLastError的包装,您将找到它。