WSAIoctl 関数は、ソケットのモードを制御する。
WSAIoctl s, dwIoControlCode, lpvInBuffer, cbInBuffer, lpvOutBuffer, cbOutBuffer, lpcbBytesReturned, lpOverlapped, lpCompletionRoutine
s : [int] ソケットを識別するディスクリプタ。 dwIoControlCode : [int] 実行する操作の制御コード。 lpvInBuffer : [intptr] 入力バッファへのポインタ。 cbInBuffer : [int] 入力バッファのサイズ (バイト単位)。 lpvOutBuffer : [intptr] 出力バッファへのポインタ。 cbOutBuffer : [int] 出力バッファのサイズ (バイト単位)。 lpcbBytesReturned : [var] 実際の出力バイト数へのポインタ。 lpOverlapped : [var] WSAOVERLAPPED 構造体へのポインタ (非オーバーラップソケットでは無視される)。 lpCompletionRoutine : [int] 型: \_In_opt\_ [**LPWSAOVERLAPPED_COMPLETION_ROUTINE**](./nc-winsock2-lpwsaoverlapped_completion_routine.md) 注 操作完了時に呼び出される完了ルーチンへのポインタ (非オーバーラップソケットでは無視される)。備考を参照。
(プラグイン / モジュール : ws2_32.dll)
WSAIoctl 関数は、ソケットのモードを制御する。 [戻り値] 正常完了時、WSAIoctl はゼロを返す。そうでない場合は SOCKET_ERROR を返し、WSAGetLastError を呼び出すことで特定のエラーコードを取得できる。 (以下省略) [備考] WSAIoctl 関数は、ソケット、トランスポートプロトコル、または通信サブシステムに関連する動作パラメータを設定または取得するために使用される。lpOverlapped と lpCompletionRoutine の両方が NULL の場合、この関数内のソケットは非オーバーラップソケットとして扱われる。非オーバーラップソケットでは lpOverlapped と lpCompletionRoutine パラメータは無視され、関数は標準の ioctlsocket 関数と同様に動作する。ただし、ソケット s がブロッキングモードであれば関数がブロックする可能性がある点が異なる。ソケット s がノンブロッキングモードの場合、この関数は指定した操作を即座に完了できないと WSAEWOULDBLOCK を返すことがある。この場合、アプリケーションはソケットをブロッキングモードに変更してリクエストを再発行するか、対応するネットワークイベント (たとえば SIO_ROUTING_INTERFACE_CHANGE に対する FD_ROUTING_INTERFACE_CHANGE、SIO_ADDRESS_LIST_CHANGE に対する FD_ADDRESS_LIST_CHANGE) を Windows メッセージベース (WSAAsyncSelect) またはイベントベース (WSAEventSelect) の通知機構で待つことができる。オーバーラップソケットでは、即座に完了できない操作は開始され、後で完了が通知される。lpcbBytesReturned パラメータが指す DWORD 値の返値は無視してよい。最終的な完了ステータスと返されたバイト数は、操作完了時に適切な完了方法がシグナルされたタイミングで取得できる。 IOCTL は、サービスプロバイダの実装によっては無期限にブロックしうる。アプリケーションが WSAIoctl 呼び出しでのブロックを許容できない場合、特にブロックしやすい次の IOCTL にはオーバーラップ I/O の使用が推奨される: SIO_ADDRESS_LIST_CHANGE、SIO_FINDROUTE、SIO_FLUSH、SIO_GET_QOS、SIO_GET_GROUP_QOS、SIO_ROUTING_INTERFACE_CHANGE、SIO_SET_QOS、SIO_SET_GROUP_QOS。プロトコル固有の IOCTL の中にも特にブロックしやすいものがある。利用可能な情報については該当プロトコル固有の付録を確認する。lpCompletionRoutine パラメータが指す完了ルーチンのプロトタイプは次のとおりである。 (以下省略)
| プラグイン / モジュール | 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 |