WaitForMultipleObjects

指定されたカーネルオブジェクトのうちの1つまたはそれらのすべてがシグナル状態になるか、指定された時間が経過するまでスレッドをスリープさせます。

DWORD WaitForMultipleObjects(
    DWORD  nCount,          // オブジェクトの数
    CONST HANDLE *pHandles, // ハンドルの配列
    BOOL   bWaitAll,        // 1つかすべてかのフラグ
    DWORD  dwMilliseconds   // タイムアウト時間
);

KERNEL32.DLL

引数

nCount

pHandles パラメータが指し示す配列のカーネルオブジェクトのハンドルの数を指定します。指定できるオブジェクトの最大数は 64 (MAXIMUM_WAIT_OBJECTS) 個です。

pHandles

カーネルオブジェクトのハンドルを格納した配列変数のアドレスを指定します。同じオブジェクトが複数回指定されるとエラーになります。

待機が未解決の状態でこれらのハンドルの1つがクローズされた場合の関数の動作は定義されていません。

Windows NT/2000/XP: オブジェクトのハンドルは SYNCHRONIZE アクセスを持っていなければなりません。

bWaitAll

リスト内のすべてのオブジェクトを待つか、どれか1つのみを待つかを指定します。 1 (TRUE) を指定すると、すべてのオブジェクトがシグナル状態になるのを待ちます。 0 (FALSE) を指定すると、どれか1つがシグナル状態になるのを待ちます。

dwMilliseconds

待ち時間をミリ秒単位で指定します。 0 を指定すると、オブジェクトがシグナル状態かどうかを調べてすぐに制御を返します。 0xFFFFFFFF (INFINITE) を指定すると、オブジェクトがシグナル状態になるまで無限に待ち続けます。

戻り値

以下の値のいずれかを返します。

意味
0x00000000 (WAIT_OBJECT_0) から (nCount - 1) まで

全オブジェクトを待っている場合には、すべてのオブジェクトがシグナル状態になったことを示します。任意のオブジェクトを待っている場合には、シグナル状態になったオブジェクトハンドルの、 pHandles 配列内でのインデックスを示します。

0x00000080 (WAIT_ABANDONED) から (WAIT_ABANDONED + nCount - 1) まで

全オブジェクトを待っている場合には、すべてのオブジェクトがシグナル状態になり、その中に放棄されたためにシグナル状態になったミューテックスが含まれていることを示します。任意のオブジェクトを待っている場合、 (戻り値 - WAIT_ABANDONED) は、放棄されたためにシグナル状態になったミューテックスオブジェクトのハンドルの pHandles 配列内でのインデックスを示します。

0x00000102 (WAIT_TIMEOUT)

タイムアウト時間が経過したことを示します。

0xFFFFFFFF (WAIT_FAILED)

エラーが発生したことを示します。拡張エラー情報を取得するには、 GetLastError 関数を使います。

解説

この関数の pHandles パラメータが指す配列には、以下のカーネルオブジェクトのハンドルを指定することができます。

対応情報

Windows 95 以降 / Windows NT 3.1 以降