您的位置:寻梦网首页编程乐园VB 编程VB API 指南
WaitForMultipleObjects, WaitForMultipleObjectsEx
VB声明
Declare Function WaitForMultipleObjects& Lib "kernel32" (ByVal nCount As Long, lpHandles As Long, ByVal bWaitAll As Long, ByVal dwMilliseconds As Long)
Declare Function WaitForMultipleObjectsEx& Lib "kernel32" (ByVal nCount As Long, lpHandles As Long, ByVal bWaitAll As Long, ByVal dwMilliseconds As Long, ByVal bAlertable As Long)
说明
等候单个对象或所有一系列对象发出信号,或等候指定的超时时间过去(溢出)。如返回条件已经满足,则立即返回
返回值
Long,如bWaitAll设为TRUE,则下述任何一个常数都标志着成功
  WAIT_ABANDONED_0:所有对象都发出消息,而且其中有一个或多个属于互斥体(一旦拥有它们的进程中止,就会发出信号)
  WAIT_TIMEOUT:对象保持未发信号的状态,但规定的等待超时时间已经超过
  WAIT_OBJECT_0:所有对象都发出信号
  WAIT_IO_COMPLETION:(仅适用于WaitForMultipleObjectsEx)由于一个I/O完成操作已作好准备执行,所以造成了函数的返回
返回WAIT_FAILED则表示函数执行失败,会设置GetLastError
如bWaitAll为FALSE,那么返回结果相似,只是可能还会返回相对于WAIT_ABANDONED_0 或 WAIT_OBJECT_0的一个正偏移量,指出哪个对象是被抛弃还是发出信号。例如,WAIT_OBJECT_0 + 5的返回结果意味着列表中的第5个对象发出了信号
参数表
参数 类型及说明
nCount Long,指定列表中的句柄数量
lpHandles Long,指定对象句柄组合中的第一个元素
bWaitAll Long,如果为TRUE,表示除非对象都发出信号,否则就一直等待下去;如果为FALSE,表示任何对象发出信号即可
dwMilliseconds Long,指定要等候的毫秒数。如设为零,表示立即返回。如指定常数INFINITE,则可根据实际情况无限等待下去
bAlertable Long,仅适用于WaitForMultipleObjectsEx。倘若已用一个ReadFileExWriteFileEx函数调用对异步I/O传输进行了初始化,而且希望函数返回——以便由那些函数指定的I/O结束例程能正常执行,那么就把这个参数设为TRUE
注解

在Windows NT中,对象句柄必须指定了SYNCHRONIZE(同步)访问
如函数是由于对象发出信号而返回,那么这个函数可能还会得到一些额外的效果——具体由对象的类型决定。如下所示:
  □ 信号机:递增信号机计数
  □ 互斥体:将互斥体的所有权赋予发出调用的线程
  □ 自动重设事件:将事件发信状态设为FALSE

Top