WSASendDisconnect

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
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