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 」を参照してください。

戻り値

この関数は、次の値を返すことができます。

メモcoWaitForMultipleHandles の戻り値は、COWAIT_ALERTABLE フラグが dwFlags で設定されている場合、または pHandles にミューテックス オブジェクトへの 1 つ以上のハンドルが含まれている場合は、非決定的な可能性があります。 推奨される回避策は、CoWaitForMultipleHandles の前に SetLastError(ERROR_SUCCESS) を呼び出す方法です。
 
リターン コード 説明
S_OK
必要なハンドルまたはハンドルが通知されました。
E_INVALIDARG
pHandlesNULLlpdwindexNULLまたは dwFlagsCOWAIT_FLAGS 列挙からの値ではありません。
RPC_E_NO_SYNC
pHandles の値は 0 でした。
RPC_S_CALLPENDING
必要なハンドルまたはハンドルが通知される前にタイムアウト期間が経過しました。

解説

dwFlags パラメーターに設定されているフラグに応じて、 CoWaitForMultipleHandles は、次のいずれかのイベントが発生するまで呼び出し元のスレッドをブロックします。

  • 1 つまたはすべてのハンドルが通知されます。 ミューテックス オブジェクトの場合、この条件は、破棄されるミューテックスによっても満たされます。
  • 非同期プロシージャ 呼び出し (APC) が、 QueueUserAPC 関数の呼び出しで呼び出し元スレッドにキューに入れられます。
  • タイムアウト期間が切れます。
呼び出し元が単一スレッド アパートメントに存在する場合、 CoWaitForMultipleHandles は COM モーダル ループに入り、スレッドのメッセージ ループはスレッドのメッセージ フィルターを使用してメッセージをディスパッチし続けます。 スレッドにメッセージ フィルターが登録されていない場合は、既定の COM メッセージ処理が使用されます。

呼び出し元のスレッドがマルチスレッド アパートメント (MTA) に存在する場合、 CoWaitForMultipleHandlesWaitForMultipleObjectsEx 関数を呼び出します。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー combaseapi.h (Objbase.h を含む)
Library Ole32.lib
[DLL] Ole32.dll

関連項目

COWAIT_FLAGS