Функция 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 включает один или несколько дескрипторов для объектов мьютекса, значение между WAIT_ABANDONED_0 и (WAIT_ABANDONED_0 + nCount - 1) указывает индекс в pHandles для прерванного мьютекса.
Если флаг COWAIT_ALERTABLE установлен в dwFlags, значение WAIT_IO_COMPLETION указывает, что ожидание было завершено одним или несколькими асинхронными вызовами процедур пользовательского режима (APC), помещенными в очередь в поток.
Дополнительные сведения см. в разделе WaitForMultipleObjectsEx .
Возвращаемое значение
Эта функция может возвращать следующие значения.
Код возврата | Описание |
---|---|
|
Поступил сигнал о требуемом дескриптоле или дескрипторов. |
|
pHandles имеет значение NULL, lpdwindex — NULL, или dwFlags не является значением из перечисления COWAIT_FLAGS . |
|
Значение pHandles равно 0. |
|
Время ожидания истекло до того, как были поймечены необходимые дескрипторы или дескрипторы. |
Комментарии
В зависимости от того, какие флаги заданы в параметре dwFlags, CoWaitForMultipleHandles блокирует вызывающий поток до тех пор, пока не произойдет одно из следующих событий:
- Один или все дескрипторы сигнализируют. В случае с объектами мьютексов это условие также удовлетворяется отказом от мьютекса.
- Асинхронный вызов процедуры (APC) помещен в очередь в вызывающий поток с вызовом функции QueueUserAPC .
- Истекает время ожидания.
Если вызывающий поток находится в многопоточности (MTA), CoWaitForMultipleHandles вызывает функцию WaitForMultipleObjectsEx .
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | combaseapi.h (включая Objbase.h) |
Библиотека | Ole32.lib |
DLL | Ole32.dll |