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