WSACleanup 関数 (winsock.h)
WSACleanup 関数は、Winsock 2 DLL (Ws2_32.dll) の使用を終了します。
構文
int WSACleanup();
戻り値
操作が成功した場合、戻り値は 0 です。 それ以外の場合は、SOCKET_ERROR値が返され、 WSAGetLastError を呼び出すことによって特定のエラー番号を取得できます。
マルチスレッド環境では、 WSACleanup はすべてのスレッドの Windows ソケット操作を終了します。
エラー コード | 意味 |
---|---|
この関数を使用する前に 、WSAStartup 呼び出しが正常に行われる必要があります。 | |
ネットワーク サブシステムが失敗しました。 | |
ブロックしている Windows ソケット 1.1 呼び出しが進行中であるか、サービス プロバイダーがコールバック関数を処理しています。 |
注釈
Windows ソケット サービスを使用する前に 、WSAStartup 呼び出しを正常に実行するには、アプリケーションまたは DLL が必要です。 Windows ソケットの使用が完了したら、アプリケーションまたは DLL で WSACleanup を呼び出して、Windows ソケットの実装から自身を登録解除し、アプリケーションまたは DLL に代わって割り当てられたリソースを解放できるようにする必要があります。
WSACleanup が呼び出されると、このプロセス内の任意のスレッドによって発行された保留中のブロックまたは非同期の Windows ソケット呼び出しは、通知メッセージを投稿したり、イベント オブジェクトを通知したりせずに取り消されます。 このプロセスのスレッドによって発行された保留中の重複する送受信操作 (WSASend、 WSASendTo、 WSARecv、WSARecvFrom、または WSARecvFrom と重複するソケットなど) も、イベント オブジェクトを設定したり、完了ルーチンを呼び出したりせずに取り消されます (指定されている場合)。 この場合、保留中の重複した操作はエラー状態 WSA_OPERATION_ABORTEDで失敗します。
WSACleanup が呼び出されたときに開かれたソケットはリセットされ、closesocket が呼び出されたかのように自動的に割り当てが解除されます。 closesocket で閉じられているが、まだ送信される保留中のデータがあるソケットは、WSACleanup が呼び出されたときに影響を受ける可能性があります。 この場合、アプリケーションの終了時に WS2_32.DLL がメモリからアンロードされると、保留中のデータが失われる可能性があります。 保留中のすべてのデータが確実に送信されるようにするには、アプリケーションで シャットダウン を使用して接続を閉じ、閉じるのが完了するまで待ってから closesocket と WSACleanup を呼び出す必要があります。 キューに登録されていないメッセージや投稿されたメッセージなど、すべてのリソースと内部状態は、次のユーザーが使用できるように割り当てを解除する必要があります。
WSAStartup の呼び出しが成功するたびに、WSACleanup の呼び出しが必要です。 最終的な WSACleanup 関数呼び出しのみが実際のクリーンアップを実行します。 上記の呼び出しは、WS2_32.DLL 内の内部参照カウントをデクリメントするだけです。
WSACleanup 関数を使用すると、通常、プロトコル固有のヘルパー DLL がアンロードされます。 その結果、アプリケーション DLL の DllMain 関数から WSACleanup 関数を呼び出さないでください。 これにより、デッドロックが発生する可能性があります。 詳細については、 DLL のメイン関数に関するページを参照してください。
Windows Phone 8: この関数は、Windows Phone 8 以降のWindows Phone ストア アプリでサポートされています。
Windows 8.1とWindows Server 2012 R2: この関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストア アプリでサポートされています。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8.1、 Windows Vista [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | winsock.h (Winsock2.h を含む) |
Library | Ws2_32.lib |
[DLL] | Ws2_32.dll |