複数の完了ポートエントリを同時に取得する。
GetQueuedCompletionStatusEx CompletionPort, lpCompletionPortEntries, ulCount, ulNumEntriesRemoved, dwMilliseconds, fAlertable
CompletionPort : [intptr] 完了ポートのハンドル。完了ポートを作成するには CreateIoCompletionPort 関数を使用する。 lpCompletionPortEntries : [var] 入力時には、事前に確保された OVERLAPPED_ENTRY 構造体の配列を指す。出力時には、エントリを保持する OVERLAPPED_ENTRY 構造体の配列を受け取る。配列要素の数は ulNumEntriesRemoved により提供される。各 I/O 中に転送されたバイト数、各 I/O が発生したファイルを示す完了キー、各オリジナル I/O で使用されたオーバーラップ構造体アドレスはすべて lpCompletionPortEntries 配列で返される。 ulCount : [int] 削除するエントリの最大数。 ulNumEntriesRemoved : [var] 実際に削除されたエントリの数を受け取る変数へのポインタ。 dwMilliseconds : [int] 呼び出し側が完了パケットが完了ポートに現れるのを待つミリ秒数。指定時間内に完了パケットが現れない場合、関数はタイムアウトし、FALSE を返す。dwMilliseconds が INFINITE (0xFFFFFFFF) の場合、関数はタイムアウトしない。dwMilliseconds が 0 でデキューする I/O 処理がない場合、関数はすぐにタイムアウトする。Windows XP、Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008、Windows Server 2008 R2: dwMilliseconds 値は低電力状態で費やされた時間を含む。たとえば、コンピュータがスリープ中もタイムアウトはカウントダウンを続ける。Windows 8、Windows Server 2012、Windows 8.1、Windows Server 2012 R2、Windows 10、Windows Server 2016: dwMilliseconds 値は低電力状態で費やされた時間を含まない。たとえば、コンピュータがスリープ中はタイムアウトはカウントダウンを続けない。 fAlertable : [int] このパラメータが FALSE の場合、関数はタイムアウト期間が経過するか、エントリが取得されるまで戻らない。TRUE で利用可能なエントリがない場合、関数は警告可能な待機を実行する。システムがスレッドに I/O 完了ルーチンまたは APC をキューに入れ、スレッドが関数を実行するとスレッドは戻る。完了ルーチンは、それが指定された ReadFileEx または WriteFileEx 関数が完了し、呼び出しスレッドが処理を開始したスレッドである場合にキューに入れられる。APC は QueueUserAPC を呼ぶときにキューに入れられる。
(プラグイン / モジュール : kernel32.dll)
複数の完了ポートエントリを同時に取得する。 [戻り値] 成功した場合は 0 以外 (TRUE)、それ以外の場合は 0 (FALSE) を返す。拡張エラー情報を取得するには GetLastError を呼ぶ。 [備考] この関数は、スレッドを指定した完了ポートに関連付ける。スレッドは多くとも 1 つの完了ポートに関連付けられる。この関数は、少なくとも 1 つの保留中 I/O が完了したときに TRUE を返すが、1 つ以上の I/O 処理が失敗した可能性もある。失敗した I/O 処理に対応するエントリを判別するために、この関数のユーザーは lpCompletionPortEntries パラメータで返されたエントリのリストをチェックし、各 OVERLAPPED_ENTRY 内の lpOverlapped メンバに含まれる状態を見る必要があることに注意する。I/O 処理がデキューされなかった場合、この関数は FALSE を返す。これは通常、この呼び出しのパラメータの処理中にエラーが発生したか、CompletionPort ハンドルが閉じられたか無効になったことを意味する。GetLastError 関数は拡張エラー情報を提供する。GetQueuedCompletionStatusEx の呼び出しが、関連付けられたハンドルが閉じられたために失敗した場合、関数は FALSE を返し、GetLastError は ERROR_ABANDONED_WAIT_0 を返す。サーバーアプリケーションは、同じ完了ポートに対して GetQueuedCompletionStatusEx 関数を呼び出す複数のスレッドを持つことができる。I/O 処理が完了すると、これらは先入れ先出し順でこのポートにキューに入れられる。スレッドがこの呼び出しを能動的に待機している場合、1 つ以上のキューに入れられた要求がそのスレッドのみの呼び出しを完了する。I/O 完了ポートの理論、使用法、関連する関数の詳細は I/O Completion Ports を参照。Windows 8 および Windows Server 2012 では、この関数は以下の技術によりサポートされる。 (以下省略)
| プラグイン / モジュール | kernel32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_kernel32_gen2.hs |