GetQueuedCompletionStatusEx

複数の完了ポートエントリを同時に取得する。

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
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs