WSASendDisconnect 関数は、ソケットの接続終了を開始し切断データを送信する。
WSASendDisconnect s, lpOutboundDisconnectData
s : [int] ソケットを識別する記述子。 lpOutboundDisconnectData : [var] 送信する切断データへのポインタ。
(プラグイン / モジュール : ws2_32.dll)
WSASendDisconnect 関数は、ソケットの接続終了を開始し切断データを送信する。 [戻り値] エラーがない場合、WSASendDisconnect はゼロを返す。そうでない場合は SOCKET_ERROR が返され、WSAGetLastError で特定のエラーコードを取得できる。 このドキュメントは省略されている。 [備考] WSASendDisconnect 関数はコネクション指向ソケットで使用され、送信を無効化するとともに、切断データ (存在する場合) の送信も含めて接続終了を開始する。これは shutdown (SD_SEND) と等価だが、プロトコルが対応していれば切断データの送信もできる点が異なる。この関数が正常に発行された後は、以降の送信は不許可となる。lpOutboundDisconnectData が NULL でなければ、WSARecvDisconnect で取得されるリモートへの切断データを含むバッファを指す。注: Windows のネイティブ TCP/IP 実装は切断データをサポートしていない。切断データは、WSAPROTOCOL_INFO 構造体で XP1_DISCONNECT_DATA フラグが立っている Winsock プロバイダでのみサポートされる。インストール済みプロバイダの WSAPROTOCOL_INFO 構造体を取得するには WSAEnumProtocols を使う。WSASendDisconnect はソケットを閉じないので、closesocket が呼ばれるまでソケットに紐付くリソースは解放されない。WSASendDisconnect はソケットの SO_LINGER 設定に関係なくブロックしない。WSASendDisconnect 後に同じソケットを再利用できると期待すべきではない。特に、Winsock プロバイダがそのようなソケットに対する connect/WSAConnect の使用を保証する必要はない。注: WSASendDisconnect のようなブロッキング Winsock 呼び出しを発行すると、Winsock はネットワークイベントの発生を待ってから呼び出しを完了する場合がある。この待機はアラート可能な待機で、同じスレッドにスケジュールされた APC によって中断され得る。中断中の APC 内からさらにブロッキング Winsock 呼び出しを発行すると未定義動作となるため、Winsock クライアントは決してそれを行ってはならない。
| プラグイン / モジュール | 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 |