WSAGetLastError 函式 (winsock.h)

WSAGetLastError 函式會傳回最後一個失敗 Windows Sockets 作業的錯誤狀態。

Syntax

int WSAGetLastError();

傳回值

傳回值表示此執行緒最後一個失敗 Windows Sockets 作業的錯誤碼。

備註

WSAGetLastError 函式會傳回呼叫執行緒發生的最後一個錯誤。 當特定的 Windows Sockets 函式指出發生錯誤時,應該立即呼叫此函式,以擷取失敗函式呼叫的擴充錯誤碼。 當呼叫optname參數為 SO_ERROR時,這個擴充的錯誤碼可能會與從 getockopt取得的錯誤碼不同,因為WSAGetLastError適用于所有線程特定的通訊端。

如果函式呼叫的傳回值指出錯誤碼中傳回錯誤或其他相關資料,應該立即呼叫 WSAGetLastError 。 這是必要的,因為某些函式可能會在成功時將最後一個擴充的錯誤碼重設為 0,覆寫先前失敗函式所傳回的擴充錯誤碼。 若要特別重設擴充的錯誤碼,請使用 WSASetLastError 函式呼叫,並將 iError 參數設定為零。 使用SO_ERROR optname參數呼叫時,取得ockopt函式也會將擴充錯誤碼重設為零。

WSAGetLastError函式不應該用來檢查非同步訊息收據上的擴充錯誤值。 在此情況下,擴充錯誤值會在訊息的 lParam 參數中傳遞,這與 WSAGetLastError傳回的值不同。

注意 應用程式可以呼叫 WSAGetLastError 函 式,以判斷其他 Windows 通訊端函式的擴充錯誤碼,就像在 Windows Sockets 中一樣,即使 WSAStartup 函式失敗,或 WSAStartup 函式在呼叫 Windows Sockets 函式之前未呼叫適當地初始化 Windows Sockets。 WSAGetLastError函式是 Winsock 2.2 DLL 中唯一可在WSAStartup失敗的情況下呼叫的其中一個函式。
 

此函式傳回的 Windows 通訊端擴充錯誤碼,錯誤文字描述會列在 Windows 通訊端錯誤碼底下。 這些錯誤碼和與錯誤碼相關聯的簡短文字描述是在 Winerror.h 標頭檔中定義。 FormatMessage函式可用來取得傳回錯誤的訊息字串。

如需如何將通訊端應用程式移植到 Winsock 時如何處理錯誤碼的資訊,請參閱 錯誤碼 - errno、h_errno 和 WSAGetLastError

Windows Phone 8:Windows Phone Windows Phone 8 和更新版本上的市集應用程式支援此函式。

Windows 8.1Windows Server 2012 R2:Windows 市集應用程式在 Windows 8.1、Windows Server 2012 R2 及更新版本上支援此功能。

規格需求

   
最低支援的用戶端 Windows 8.1、Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 winsock.h (包含 Winsock2.h)
程式庫 Ws2_32.lib
Dll Ws2_32.dll

另請參閱

錯誤碼 - errno、h_errno 和 WSAGetLastError

FormatMessage

WSASetLastError

WSAStartup

Windows Sockets 錯誤碼

Winsock 函式

Winsock 參考

getsockopt