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 索引。
如果在 dwFlags 中设置了COWAIT_ALERTABLE标志,则值 WAIT_IO_COMPLETION 表示等待已由一个或多个用户模式异步过程调用结束, (APC) 排队到线程。
有关详细信息,请参阅 WaitForMultipleObjectsEx 。
返回值
此函数可以返回以下值。
注意如果 COWAIT_ALERTABLE 标志在 dwFlags 中设置,或者 pHandles 包含互斥对象的一个或多个句柄,CoWaitForMultipleHandles 的返回值可能是不确定的。 建议的解决方法是在 CoWaitForMultipleHandles 之前调用 SetLastError (ERROR_SUCCESS) 。
返回代码 | 说明 |
---|---|
|
已发出所需的句柄或句柄的信号。 |
|
pHandles 为 NULL, lpdwindex 为 NULL,或者 dwFlags 不是 COWAIT_FLAGS 枚举中的值。 |
|
pHandles 的值为 0。 |
|
在发出所需句柄或句柄信号之前的超时期限。 |
注解
根据 dwFlags 参数中设置的标志, CoWaitForMultipleHandles 会阻止调用线程,直到发生以下事件之一:
- 发出一个或所有句柄的信号。 对于互斥对象,放弃互斥体也满足此条件。
- 异步过程调用 (APC) 已通过调用 QueueUserAPC 函数排队到调用线程。
- 超时期限过期。
如果调用线程驻留在 MTA) (多线程单元中, CoWaitForMultipleHandles 将调用 WaitForMultipleObjectsEx 函数。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | combaseapi.h (包括 Objbase.h) |
Library | Ole32.lib |
DLL | Ole32.dll |