指定したカーネルオブジェクトのうちの1つまたはそれらのすべてがシグナル状態になるか、スレッドの所有するウィンドウに指定したタイプのメッセージが送られるか、指定したタイムアウト時間が経過するまでスレッドをスリープさせます。
DWORD WaitForMultipleObjects( DWORD nCount, // チェックするオブジェクトの数 CONST HANDLE *pHandles, // オブジェクトハンドルの配列 BOOL bWaitAll, // 1つかすべてかのフラグ DWORD dwMilliseconds, // タイムアウト時間 DWORD dwMakeMask // メッセージのタイプを示すフラグ );
USER32.DLL
pHandles パラメータが指し示す配列のカーネルオブジェクトのハンドルの数を指定します。指定できるオブジェクトの最大数は 64 (MAXIMUM_WAIT_OBJECTS) - 1 個です。
カーネルオブジェクトのハンドルを格納した配列変数のアドレスを指定します。同じオブジェクトが複数回指定されるとエラーになります。
待機が未解決の状態でこれらのハンドルの1つがクローズされた場合の関数の動作は定義されていません。
Windows NT/2000/XP: オブジェクトのハンドルは SYNCHRONIZE アクセスを持っていなければなりません。
リスト内のすべてのオブジェクトを待つか、どれか1つのみを待つかを指定します。 1 (TRUE) を指定すると、すべてのオブジェクトがシグナル状態になるのを待ちます。 0 (FALSE) を指定すると、どれか1つがシグナル状態になるのを待ちます。
待ち時間をミリ秒単位で指定します。 0 を指定すると、オブジェクトがシグナル状態かどうかを調べてすぐに制御を返します。 0xFFFFFFFF (INFINITE) を指定すると、オブジェクトがシグナル状態になるまで無限に待ち続けます。
どのタイプのメッセージがメッセージキューにセットされたらスレッドの実行を再開させるかを指定します。以下の値の組み合わせで指定します。
値 | キュー内のメッセージ |
---|---|
0x0001 (QS_KEY) | WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP のどれか |
0x0002 (QS_MOUSEMOVE) | WM_MOUSEMOVE |
0x0004 (QS_MOUSEBUTTON) | WM_?BUTTON*** (? は L, M, R のどれか。*** は DOWN, UP, DBLCLK のどれか) |
0x0008 (QS_POSTMESSAGE) | ポストされたメッセージ(ハードウェア入力イベント以外) |
0x0010 (QS_TIMER) | WM_TIMER |
0x0020 (QS_PAINT) | WM_PAINT |
0x0040 (QS_SENDMESSAGE) | 他のスレッド、プロセスから送られてきたメッセージ |
0x0080 (QS_HOTKEY) | WM_HOTKEY |
0x0006 (QS_MOUSE) | QS_MOUSEMOVE | QS_MOUSEBUTTON に等しい |
0x0007 (QS_INPUT) | QS_MOUSE | QS_KEY に等しい |
0x00BF (QS_ALLEVENTS) | QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY に等しい |
0x00FF (QS_ALLINPUT) | QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE に等しい |
以下の値のいずれかを返します。
0x00000000 (WAIT_OBJECT_0) から (nCount - 1) まで | 全オブジェクトを待っている場合には、すべてのオブジェクトがシグナル状態になったことを示します。任意のオブジェクトを待っている場合には、シグナル状態になったオブジェクトハンドルの、 pHandles 配列内でのインデックスを示します。 |
nCount | dwMakeMask パラメータで指定された型の新しいメッセージがスレッド入力キューから得られるようになったことを示します。 |
0x00000080 (WAIT_ABANDONED) から (WAIT_ABANDONED + nCount - 1) まで | 全オブジェクトを待っている場合には、すべてのオブジェクトがシグナル状態になり、その中に放棄されたためにシグナル状態になったミューテックスが含まれていることを示します。任意のオブジェクトを待っている場合、 (戻り値 - WAIT_ABANDONED) は、放棄されたためにシグナル状態になったミューテックスオブジェクトのハンドルの pHandles 配列内でのインデックスを示します。 |
0x00000102 (WAIT_TIMEOUT) | タイムアウト時間が経過したことを示します。 |
0xFFFFFFFF (WAIT_FAILED) | エラーが発生したことを示します。拡張エラー情報を取得するには、 GetLastError 関数を使います。 |
この関数の pHandles パラメータが指す配列には、以下のオブジェクトのハンドルを指定することができます。
Windows 95 以降 / Windows NT 3.1 以降