WaitForSingleObjectEx

指定したオブジェクトがシグナル状態になるか、I/O 完了ルーチンや非同期プロシージャ呼び出し (APC) がスレッドにキューイングされるか、タイムアウト間隔が経過するまで待機する。

WaitForSingleObjectEx hHandle, dwMilliseconds, bAlertable

hHandle : [intptr] オブジェクトのハンドル。指定可能なオブジェクト種別は備考を参照。
dwMilliseconds : [int] タイムアウト間隔(ミリ秒単位)。非ゼロを指定すると、関数はオブジェクトがシグナル状態になるか、I/O 完了ルーチン / APC がキューイングされるか、間隔が経過するまで待機する。0 を指定すると条件未満なら待機状態に入らず即座に戻る。INFINITE を指定するとシグナル状態か I/O 完了ルーチン / APC キューイングまで戻らない。Windows XP~Server 2008 R2 では低電力状態時間も含まれる。Windows 8 以降では含まれない。
bAlertable : [int] TRUE でスレッドが待機状態の場合、システムが I/O 完了ルーチンや APC をキューイングするとスレッドはそれを実行して関数が戻る。それ以外は戻らず実行もされない。完了ルーチンは ReadFileEx / WriteFileEx の完了時にキューイングされる。bAlertable が TRUE で、呼び出し側スレッドが読み書き操作を開始したスレッドである場合のみ、待機関数は戻り完了ルーチンが呼ばれる。APC は QueueUserAPC でキューイングされる。

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

解説

指定したオブジェクトがシグナル状態になるか、I/O 完了ルーチンや非同期プロシージャ呼び出し (APC)
がスレッドにキューイングされるか、タイムアウト間隔が経過するまで待機する。

[戻り値]
関数が成功した場合、戻り値は関数を戻らせた原因のイベントを示す。次のいずれかの値となる。
(以下省略)

[備考]
WaitForSingleObjectEx
は待機条件が満たされたかを判定する。条件未充足なら、呼び出し側スレッドは条件充足またはタイムアウト経過まで待機状態に入る。本関数は同期オブジェクトの状態を変更する。状態変更は関数を戻らせた原因のオブジェクトに対してのみ行われる。たとえばセマフォオブジェクトのカウントは
1 減る。WaitForSingleObjectEx は次のオブジェクトを待機できる。
(以下省略)

情報

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