次の方法で共有


WSAGetLastError 関数 (winsock2.h)

WSAGetLastError 関数は、失敗した最後の Windows ソケット操作のエラー状態を返します。

構文

int WSAAPI WSAGetLastError();

戻り値

戻り値は、失敗したこのスレッドの最後の Windows ソケット操作のエラー コードを示します。

解説

WSAGetLastError 関数は、呼び出し元スレッドで発生した最後のエラーを返します。 特定の Windows ソケット関数がエラーが発生したことを示す場合は、この関数をすぐに呼び出して、失敗した関数呼び出しの拡張エラー コードを取得する必要があります。 この拡張エラー コードは、SO_ERROR の optname パラメーターを使用して呼び出されたときに getsockopt から取得されたエラー コードとは異なる場合があります。これは、WSAGetLastError はすべてのスレッド固有のソケット用であるため、ソケット固有です。

関数呼び出しの戻り値がエラーまたはその他の関連データがエラー コードで返されたことを示す場合は、 WSAGetLastError を直ちに呼び出す必要があります。 これは、一部の関数が成功した場合に最後の拡張エラー コードを 0 にリセットし、以前に失敗した関数によって返された拡張エラー コードを上書きする可能性があるために必要です。 拡張エラー コードを具体的にリセットするには、 WSASetLastError 関数呼び出しを使用し、 iError パラメーターを 0 に設定します。 optname パラメーターを SO_ERROR で呼び出すと、getsockopt 関数も拡張エラー コードを 0 にリセットします。

WSAGetLastError 関数を使用して、非同期メッセージの受信時に拡張エラー値をチェックしないでください。 この場合、拡張エラー値はメッセージの lParam パラメーターで渡され、 WSAGetLastError によって返される値とは異なる場合があります。

メモWSAStartup 関数が失敗した場合や、Windows ソケット関数を呼び出す前に WSAStartup 関数が呼び出されなかった場合でも、アプリケーションは WSAGetLastError 関数を呼び出して、他の Windows ソケット関数の拡張エラー コードを判断できます。 WSAGetLastError 関数は、WSAStartup エラーの場合に呼び出すことができる Winsock 2.2 DLL の唯一の関数の 1 つです。
 

この関数によって返される 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
ヘッダー winsock2.h (Winsock2.h を含む)
Library Ws2_32.lib
[DLL] Ws2_32.dll

関連項目

エラー コード - errno、h_errno、WSAGetLastError

FormatMessage

WSASetLastError

WSAStartup

Windows ソケットのエラー コード

Winsock 関数

Winsock リファレンス

getsockopt