WSACleanup 関数 (winsock.h) は、WS2_32.dll の使用を終了する。
WSACleanup
(プラグイン / モジュール : ws2_32.dll)
WSACleanup 関数 (winsock.h) は、WS2_32.dll の使用を終了する。 [戻り値] 操作が成功すれば戻り値はゼロである。そうでない場合は SOCKET_ERROR を返し、WSAGetLastError を呼び出すことで特定のエラー番号を取得できる。マルチスレッド環境では、WSACleanup はすべてのスレッドの Windows Sockets 操作を終了させる。 (以下省略) [備考] アプリケーションまたは DLL は、Windows Sockets サービスを使用する前に WSAStartup の呼び出しに成功する必要がある。Windows Sockets の利用を終えたら、アプリケーションまたは DLL は WSACleanup を呼び出して Windows Sockets 実装から登録解除し、自身のために確保されたリソースを実装に解放させる必要がある。WSACleanup が呼び出されると、このプロセス内のどのスレッドが発行した未処理のブロッキングまたは非同期 Windows Sockets 呼び出しも、通知メッセージや任意のイベントオブジェクトのシグナリングなしにキャンセルされる。このプロセス内のどのスレッドが発行した未処理のオーバーラップ送受信操作 (たとえば WSASend、WSASendTo、WSARecv、WSARecvFrom のオーバーラップソケットでの呼び出し) も、イベントオブジェクトのセットや完了ルーチンの呼び出し (指定されていた場合) なしにキャンセルされる。この場合、未処理のオーバーラップ操作は WSA_OPERATION_ABORTED エラーで失敗する。WSACleanup 呼び出し時にオープンされていたソケットは、closesocket が呼ばれたかのようにリセットされ自動的に解放される。closesocket でクローズされたがまだ送信すべきデータが残っているソケットは、WSACleanup の呼び出しによって影響を受けることがある。この場合、アプリケーション終了時に WS2_32.DLL がメモリからアンロードされると、保留データが失われる可能性がある。すべての保留データが送信されることを保証するには、アプリケーションは shutdown で接続を閉じ、クローズが完了するのを待ってから closesocket と WSACleanup を呼び出すべきである。キュー内の未投稿または投稿済みメッセージなど、すべてのリソースと内部状態は、次のユーザーが使えるよう解放される必要がある。WSAStartup 呼び出しの成功それぞれに対し 1 回の WSACleanup 呼び出しが必要である。最後の WSACleanup 呼び出しのみが実際のクリーンアップを行う。それ以前の呼び出しは WS2_32.DLL 内の内部参照カウントをデクリメントするだけである。注 WSACleanup は、PNRP (Peer Name Resolution Protocol) ネームスペースプロバイダのような Windows Sockets ネームスペースプロバイダに登録されている名前 (例: ピア名) の登録解除は行わない。Windows Sockets 1.1 では、ブロッキングフック内から WSACleanup を呼び出し、戻り値を確認しないのがよくあるプログラミングミスだった。Winsock 1.1 アプリケーションがブロッキング呼び出し中に終了する必要がある場合、アプリケーションはまず WSACancelBlockingCall でブロッキング呼び出しをキャンセルし、制御がアプリケーションに戻ってから WSACleanup 呼び出しを発行しなければならなかった。Windows Sockets 2 ではこの問題は存在せず、WSACancelBlockingCall 関数は削除されている。WSACleanup 関数は通常、プロトコル固有のヘルパ DLL のアンロードを引き起こす。そのため、WSACleanup 関数をアプリケーション DLL の DllMain 関数から呼び出してはならない。これはデッドロックを引き起こす可能性がある。詳しくは DLL Main Function を参照。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 |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の ws2_32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_ws2_32_gen2.hs |