WSAGetLastError

WSAGetLastError 関数 (winsock.h) は、最後に失敗した Windows Sockets 操作のエラーステータスを返す。

WSAGetLastError

(プラグイン / モジュール : ws2_32.dll)

解説

WSAGetLastError 関数 (winsock.h) は、最後に失敗した Windows Sockets
操作のエラーステータスを返す。

[戻り値]
戻り値は、このスレッドで最後に失敗した Windows Sockets 操作のエラーコードを示す。

[備考]
WSAGetLastError 関数は、呼び出し元スレッドで最後に発生したエラーを返す。特定の Windows Sockets
関数がエラー発生を示した場合、失敗した関数呼び出しの拡張エラーコードを取得するには、直ちにこの関数を呼び出すべきである。この拡張エラーコードは、getsockopt
を SO_ERROR の optname パラメータで呼び出したときに得られるエラーコードとは異なることがある。getsockopt
はソケット固有であるのに対し、WSAGetLastError
はすべてのスレッド固有ソケットに対して機能する。関数呼び出しの戻り値が、エラーまたは関連データがエラーコードに返されたことを示す場合は、直ちに
WSAGetLastError を呼び出すべきである。これは、一部の関数は成功時に最後の拡張エラーコードを 0
にリセットし、直前に失敗した関数が返した拡張エラーコードを上書きしてしまうことがあるため必要である。拡張エラーコードを明示的にリセットするには、iError
パラメータを 0 にして WSASetLastError 関数を呼び出す。SO_ERROR の optname パラメータで
getsockopt 関数を呼び出しても、拡張エラーコードはゼロにリセットされる。非同期メッセージの受信時に拡張エラー値を調べるのに
WSAGetLastError 関数を使うべきではない。この場合、拡張エラー値はメッセージの lParam
パラメータで渡されるため、WSAGetLastError が返す値とは異なることがある。
注 アプリケーションは、他の Windows ソケット関数の拡張エラーコードを調べるために、Windows Sockets
で通常行うのと同じように WSAGetLastError 関数を呼び出すことができる。これは、WSAStartup
関数が失敗した場合や、Windows Sockets 関数を呼び出す前に WSAStartup 関数を呼び出して Windows
Sockets を適切に初期化していない場合でも同様である。WSAGetLastError 関数は、WSAStartup
が失敗した場合でも呼び出せる Winsock 2.2 DLL 内の数少ない関数の 1 つである。
この関数が返す Windows Sockets 拡張エラーコードとエラーの説明文は、Windows Sockets
エラーコードに列挙されている。これらのエラーコードとそれに関連する簡単な説明は Winerror.h
ヘッダファイルに定義されている。FormatMessage
関数を使って、返されたエラーに対応するメッセージ文字列を取得できる。ソケットアプリケーションを Winsock
に移植する際のエラーコードの扱いについては、「Error Codes - errno, h_errno and
WSAGetLastError」を参照。
Windows Phone 8: この関数は Windows Phone 8 以降の Windows Phone
ストアアプリでサポートされる。Windows 8.1 および Windows Server 2012 R2: この関数は、Windows
8.1、Windows Server 2012 R2 以降の Windows ストアアプリでサポートされる。

情報

プラグイン / モジュールws2_32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の ws2_32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_ws2_32_gen2.hs