<Return[WXYZ]><Top>

WaitForMultipleObjects

Declare Function Api_WaitForMultipleObjects& Lib "kernel32" Alias "WaitForMultipleObjects" (ByVal nCount&, lpHandles&, ByVal bWaitAll&, ByVal dwMilliseconds&)

Declare Function WaitForMultipleObjects Lib "kernel32" (ByVal nCount As Long, lpHandles As Long, ByVal bWaitAll As Long, ByVal dwMilliseconds As Long) As Long

次のいずれかが成立すると、制御を返す。
・指定されたオブジェクトの 1 つまたはすべてがシグナル状態になった。
・タイムアウト時間が経過した。
アラート可能な待機状態に入るには、WaitForMultipleObjectsEx 関数を使う。

パラメータ
nCount
    lpHandles パラメータが指す配列の中にあるオブジェクトハンドルの数を指定する。

    オブジェクトハンドルの最大数は、MAXIMUM_WAIT_OBJECTS である。
lpHandles
    複数のオブジェクトハンドルからなる 1 つの配列へのポインタを指定する。

    この配列には、異なるタイプのオブジェクトのハンドルを格納することもできる。

    しかし、同じハンドルの複数のコピーを格納することはできない。
    いずれかのハンドルが待機状態で未処理になっているときに、そのハンドルを閉じた場合、この関数の動作は未定義である。
    Windows NT/2000:このハンドルに、SYNCHRONIZE アクセス権を割り当てておかなければならない。
    Windows 95:DuplicateHandle 関数を使って任意のハンドルを複製した場合、複製先のハンドルをこの関数で使うことはできない。
fWaitAll
    待機のタイプを指定する。TRUE を指定すると、lpHandles 配列内のすべてのオブジェクトがシグナル状態になったときに制御が返る。

    FALSE を指定すると、lpHandles 配列内のオブジェクトのどれか 1 つがシグナル状態になったときに制御が返る。

    この場合、戻り値は、関数が制御を返す状況をもたらした(つまり、シグナル状態になった)オブジェクトを表す。
dwMilliseconds
    タイムアウト時間を、ミリ秒(ms)単位で指定する。

    タイムアウト時間が経過すると、fWaitAll パラメータで指定した条件が満たされなくても、制御が返る。

    0 を指定すると、この関数は指定されたオブジェクトの状態を調べ、即座に制御を返す。

    INFINITE を指定すると、条件が満たされるまで待機し続ける。
 

戻り値
    関数が成功すると、関数が制御を返す状況をもたらしたイベントを示す値が返る。次の値のいずれかになる。

    値                                       

意味                                                                                                                             

    WAIT_OBJECT_0 以上(WAIT_OBJECT_0 + nCount − 1)以下

fWaitAll が TRUE の場合、指定されたすべてのオブ

 

ジェクトがシグナル状態になったことを意味する。
fWaitAll が FALSE の場合、lpHandles パラメータ内で(戻り値 - WAIT_OBJECT_0)番目のオブジェ

クトが待機条件を満たしたことを意味する。この関数を呼び出して実行している間に複数のオブジェクトがシ

グナル状態になった場合は、それらのオブジェクトのうち、最小のインデックス番号が返る。

    WAIT_ABANDONED_0 以上 WAIT_ABANDONED_0 + nCount - 1)以下

fWaitAll が TRUE の場合、指定されたすべてのオブ

 

ジェクトがシグナル状態になったこと、およびこれらのオブジェクトのうち、少なくとも 1 つが、放棄されたミュ

ーテックスオブジェクト(あるスレッドが所有権を持っていたが、そのスレッドは所有権を解放しないで終了し

た)であったことを意味する。
fWaitAll が FALSE の場合、lpHandles パラメータ内の(戻り値 - WAIT_ABANDONED_0)番目のオ

ブジェクトが、待機条件を満たした、放棄されたミューテックスオブジェクトであったことを意味する。

    WAIT_TIMEOUT

タイムアウト時間が経過し、fWaitAll パラメータで指定された条件が満たされていないことを意味する。

    関数が失敗すると、WAIT_FAILED が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。