Функция WSAGetLastError (winsock.h)

Функция WSAGetLastError возвращает состояние ошибки для последней операции Windows Sockets, которая завершилась сбоем.

Синтаксис

int WSAGetLastError();

Возвращаемое значение

Возвращаемое значение указывает код ошибки для последней операции сокетов Windows в этом потоке, которая завершилась сбоем.

Комментарии

Функция WSAGetLastError возвращает последнюю ошибку, которая произошла для вызывающего потока. Если определенная функция Windows Sockets указывает на ошибку, эту функцию следует вызывать немедленно, чтобы получить расширенный код ошибки для вызова функции, завершиющейся сбоем. Этот расширенный код ошибки может отличаться от кода ошибки, полученного из getockopt при вызове с параметром optnameSO_ERROR, который зависит от сокета, так как WSAGetLastError предназначен для всех сокетов, зависящих от потока.

Если возвращаемое значение вызова функции указывает на то, что в коде ошибки были возвращены ошибки или другие соответствующие данные, следует немедленно вызвать WSAGetLastError . Это необходимо, так как некоторые функции могут сбросить последний расширенный код ошибки до 0 при успешном выполнении, перезаписав расширенный код ошибки, возвращенный ранее неудавшейся функцией. Чтобы сбросить расширенный код ошибки, используйте вызов функции WSASetLastError с параметром iError , равным нулю. Функция getsockopt при вызове с параметром optnameSO_ERROR также сбрасывает расширенный код ошибки до нуля.

Функцию WSAGetLastError не следует использовать для проверка расширенного значения ошибки при получении асинхронного сообщения. В этом случае расширенное значение ошибки передается в параметре lParam сообщения, и оно может отличаться от значения, возвращаемого WSAGetLastError.

Примечание Приложение может вызвать функцию WSAGetLastError , чтобы определить расширенный код ошибки для других функций сокетов Windows, как это обычно делается в сокетах Windows, даже если функция WSAStartup завершается сбоем или функция WSAStartup не была вызвана для правильной инициализации сокетов Windows перед вызовом функции Сокеты Windows. Функция WSAGetLastError является одной из единственных функций в библиотеке DLL Winsock 2.2, которую можно вызвать в случае сбоя WSAStartup .
 

Расширенные коды ошибок сокетов Windows, возвращаемые этой функцией, и текстовое описание ошибки перечислены в разделе Коды ошибок сокетов Windows. Эти коды ошибок и краткое текстовое описание, связанное с кодом ошибки, определены в файле заголовка Winerror.h . Функция FormatMessage может использоваться для получения строки сообщения для возвращаемой ошибки.

Сведения об обработке кодов ошибок при переносе приложений сокетов в Winsock см. в статье Коды ошибок — errno, h_errno и WSAGetLastError.

Windows Phone 8. Эта функция поддерживается для приложений Магазина Windows Phone Windows Phone 8 и более поздних версий.

Windows 8.1 и Windows Server 2012 R2: эта функция поддерживается для приложений Магазина Windows на Windows 8.1, Windows Server 2012 R2 и более поздних версий.

Требования

   
Минимальная версия клиента Windows 8.1, Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header winsock.h (включая Winsock2.h)
Библиотека Ws2_32.lib
DLL Ws2_32.dll

См. также раздел

Коды ошибок : errno, h_errno и WSAGetLastError

FormatMessage

WSASetLastError

WSAStartup

Коды ошибок сокетов Windows

Функции Winsock

Справочник по Winsock

getsockopt