WSAEventSelect

WSAEventSelect 関数は、指定した FD_XXX ネットワークイベントのセットに関連付けるイベントオブジェクトを指定する。

WSAEventSelect s, hEventObject, lNetworkEvents

s : [int] ソケットを識別するディスクリプタ。
hEventObject : [intptr] 指定した FD_XXX ネットワークイベントのセットに関連付けるイベントオブジェクトを識別するハンドル。
lNetworkEvents : [int] アプリケーションが関心を持つ FD_XXX ネットワークイベントの組み合わせを指定するビットマスク。

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

解説

WSAEventSelect 関数は、指定した FD_XXX ネットワークイベントのセットに関連付けるイベントオブジェクトを指定する。

[戻り値]
アプリケーションのネットワークイベントと関連イベントオブジェクトの指定が成功した場合、戻り値はゼロである。そうでない場合は
SOCKET_ERROR を返し、WSAGetLastError を呼び出すことで特定のエラー番号を取得できる。select や
WSAAsyncSelect 関数と同様、WSAEventSelect は即時成功を期待してデータ転送操作 (send や recv)
を発行できるタイミングを知るためによく使われる。とはいえ、堅牢なアプリケーションは、イベントオブジェクトがセットされてから発行した
Winsock 呼び出しが即座に WSAEWOULDBLOCK
を返す可能性にも備えなければならない。たとえば次のような操作の並びが起こりうる。
(以下省略)

[備考]
WSAEventSelect 関数は、選択した FD_XXX ネットワークイベント (lNetworkEvents)
に関連付けるイベントオブジェクト (hEventObject) を指定するために使用する。イベントオブジェクトを指定するソケットは s
パラメータで識別する。指定したネットワークイベントのいずれかが発生すると、イベントオブジェクトがセットされる。WSAEventSelect
関数の動作は WSAAsyncSelect
とよく似ており、違いは指定されたネットワークイベント発生時に行う動作である。WSAAsyncSelect 関数はアプリケーション指定の
Windows メッセージを投稿させる。WSAEventSelect
は関連付けられたイベントオブジェクトを設定し、このイベントの発生を内部のネットワークイベント記録に記録する。アプリケーションは
WSAWaitForMultipleEvents
を使ってイベントオブジェクトを待機またはポーリングし、WSAEnumNetworkEvents
を使って内部のネットワークイベント記録の内容を取得し、指定したネットワークイベントのうちどれが発生したかを特定できる。WSAEventSelect
関数で使用するイベントオブジェクトの状態を正しくリセットするには、hEventObject
パラメータにそのイベントオブジェクトのハンドルを指定して WSAEnumNetworkEvents
関数に渡せばよい。これにより、イベントオブジェクトがリセットされ、ソケット上のアクティブな FD
イベントの状態が原子的に調整される。ネットワーク活動とエラーを記録して WSAEnumNetworkEvents
経由で取得できるようにするのは WSAEventSelect のみである。select と WSAAsyncSelect
がネットワーク活動とエラーをどのように報告するかは、それぞれの説明を参照。WSAEventSelect
関数は、lNetworkEvents の値にかかわらずソケット s を自動的にノンブロッキングモードに設定する。ソケット s
をブロッキングモードに戻すには、まず WSAEventSelect を lNetworkEvents を 0 かつ
hEventObject を NULL に設定して呼び出し、ソケット s
に関連付けられたイベントレコードをクリアする必要がある。その後、ioctlsocket または WSAIoctl
を呼び出してソケットをブロッキングモードに戻せる。lNetworkEvents パラメータは、次のリストに示す値をビット単位の OR
演算子で組み合わせて構築する。
(以下省略)

情報

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