WSAGetLastError 函数 (winsock.h)

WSAGetLastError 函数返回失败的最后一个 Windows 套接字操作的错误状态。

语法

int WSAGetLastError();

返回值

返回值指示此线程最后一次失败的 Windows 套接字操作的错误代码。

注解

WSAGetLastError 函数返回调用线程发生的最后一个错误。 当特定的 Windows 套接字函数指示发生了错误时,应立即调用此函数以检索失败函数调用的扩展错误代码。 此扩展错误代码可能不同于使用 SO_ERROR 的 optname 参数调用时从 getockopt 获取的错误代码,后者特定于套接字,因为 WSAGetLastError 适用于所有特定于线程的套接字。

如果函数调用的返回值指示错误代码中返回了错误或其他相关数据,则应立即调用 WSAGetLastError 。 这是必需的,因为某些函数如果成功,可能会将最后一个扩展错误代码重置为 0,从而覆盖以前失败的函数返回的扩展错误代码。 若要专门重置扩展错误代码,请使用 WSASetLastError 函数调用,并将 iError 参数设置为零。 使用 optname 参数SO_ERROR调用的 getsockopt 函数还会将扩展错误代码重置为零。

WSAGetLastError 函数不应用于在收到异步消息时检查扩展的错误值。 在这种情况下,扩展的错误值在消息的 lParam 参数中传递,这可能与 WSAGetLastError 返回的值不同。

注意 应用程序可以调用 WSAGetLastError 函数来确定其他 Windows 套接字函数的扩展错误代码,就像在 Windows 套接字中一样,即使 WSAStartup 函数失败或未调用 WSAStartup 函数来正确初始化 Windows 套接字,然后再调用 Windows 套接字函数也是如此。 WSAGetLastError 函数是 Winsock 2.2 DLL 中唯一可在 WSAStartup 失败时调用的函数之一。
 

此函数返回的 Windows 套接字扩展错误代码和错误的文本说明列在 Windows 套接字错误代码下。 这些错误代码以及与错误代码关联的简短文本说明在 Winerror.h 头文件中定义。 FormatMessage 函数可用于获取返回错误的消息字符串。

有关如何在将套接字应用程序移植到 Winsock 时处理错误代码的信息,请参阅 错误代码 - errno、h_errno和 WSAGetLastError

Windows Phone 8:Windows Phone 8 及更高版本上的 Windows Phone 应用商店应用支持此函数。

Windows 8.1Windows Server 2012 R2:Windows 8.1、Windows Server 2012 R2 及更高版本的 Windows 应用商店应用支持此函数。

要求

   
最低受支持的客户端 Windows 8.1、Windows Vista [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 winsock.h (包括 Winsock2.h)
Library Ws2_32.lib
DLL Ws2_32.dll

另请参阅

错误代码 - errno、h_errno 和 WSAGetLastError

FormatMessage

WSASetLastError

WSAStartup

Windows 套接字错误代码

Winsock 函数

Winsock 参考

getsockopt