CoWaitForMultipleHandles 関数 (combaseapi.h)
指定したハンドルが通知されるか、指定されたタイムアウト期間が経過するまで待機します。
構文
HRESULT CoWaitForMultipleHandles(
[in] DWORD dwFlags,
[in] DWORD dwTimeout,
[in] ULONG cHandles,
[in] LPHANDLE pHandles,
[out] LPDWORD lpdwindex
);
パラメーター
[in] dwFlags
待機オプション。 使用可能な値は、 COWAIT_FLAGS 列挙体から取得されます。
[in] dwTimeout
タイムアウト期限 (ミリ秒単位)。
[in] cHandles
pHandles 配列内の要素の数。
[in] pHandles
ハンドルの配列。
[out] lpdwindex
返された状態がS_OKされると、関数が返される原因となったイベントを示す値を受け取る変数へのポインター。 通常、この値はシグナル処理されたハンドルの pHandles へのインデックスです。
pHandles にミューテックス オブジェクトへの 1 つ以上のハンドルが含まれている場合、WAIT_ABANDONED_0 と (WAIT_ABANDONED_0 + nCount - 1) の間の値は、破棄されたミューテックスの pHandles へのインデックスを示します。
COWAIT_ALERTABLE フラグが dwFlags で設定されている場合、WAIT_IO_COMPLETION の値は、スレッドにキューに登録されている 1 つ以上のユーザー モード非同期プロシージャ呼び出し (APC) によって待機が終了したことを示します。
詳細については、「 WaitForMultipleObjectsEx 」を参照してください。
戻り値
この関数は、次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
必要なハンドルまたはハンドルが通知されました。 |
|
pHandles が NULL、 lpdwindex が NULL、 または dwFlags が COWAIT_FLAGS 列挙からの値ではありません。 |
|
pHandles の値は 0 でした。 |
|
必要なハンドルまたはハンドルが通知される前にタイムアウト期間が経過しました。 |
解説
dwFlags パラメーターに設定されているフラグに応じて、 CoWaitForMultipleHandles は、次のいずれかのイベントが発生するまで呼び出し元のスレッドをブロックします。
- 1 つまたはすべてのハンドルが通知されます。 ミューテックス オブジェクトの場合、この条件は、破棄されるミューテックスによっても満たされます。
- 非同期プロシージャ 呼び出し (APC) が、 QueueUserAPC 関数の呼び出しで呼び出し元スレッドにキューに入れられます。
- タイムアウト期間が切れます。
呼び出し元のスレッドがマルチスレッド アパートメント (MTA) に存在する場合、 CoWaitForMultipleHandles は WaitForMultipleObjectsEx 関数を呼び出します。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | combaseapi.h (Objbase.h を含む) |
Library | Ole32.lib |
[DLL] | Ole32.dll |