WSADuplicateSocketW

WSADuplicateSocket 関数は、共有ソケット用の新しいソケットディスクリプタを作成するために使える WSAPROTOCOL_INFO 構造体を返す。WSADuplicateSocket 関数は QoS 対応ソケットには使用できない。(Unicode)

WSADuplicateSocketW s, dwProcessId, lpProtocolInfo

s : [int] ローカルソケットを識別するディスクリプタ。
dwProcessId : [int] 複製されたソケットを使用するターゲットプロセスのプロセス ID。
lpProtocolInfo : [var] クライアントが確保した、WSAPROTOCOL_INFO 構造体を格納できるだけの大きさを持つバッファへのポインタ。サービスプロバイダはプロトコル情報構造体の内容をこのバッファにコピーする。

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

解説

WSADuplicateSocket 関数は、共有ソケット用の新しいソケットディスクリプタを作成するために使える
WSAPROTOCOL_INFO 構造体を返す。WSADuplicateSocket 関数は QoS
対応ソケットには使用できない。(Unicode)

[戻り値]
エラーがない場合、WSADuplicateSocket はゼロを返す。そうでない場合は SOCKET_ERROR
を返し、WSAGetLastError を呼び出すことで特定のエラーコードを取得できる。
(以下省略)

[備考]
WSADuplicateSocket 関数は、プロセス間でのソケット共有を可能にするために使用される。ソースプロセスは
WSADuplicateSocket を呼び出して特殊な WSAPROTOCOL_INFO 構造体を取得する。何らかのプロセス間通信
(IPC) 機構を使ってこの構造体の内容をターゲットプロセスに渡し、ターゲットプロセスはそれを WSASocket
の呼び出しに使って複製されたソケットのディスクリプタを取得する。特殊な WSAPROTOCOL_INFO
構造体は、ターゲットプロセスで一度だけ使用できる。ソケットディスクリプタはプロセス内のすべてのスレッドで有効なため、WSADuplicateSocket
関数を使わずとも、プロセス内のスレッド間ではソケットを共有できる。共有ソケットを確立して受け渡す 1 つのシナリオを次の表に示す。
(以下省略)

情報

プラグイン / モジュール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