NTSTATUS KeWaitForMultipleObjects( IN ULONG Count, IN PVOID Object, IN WAIT_TYPE WaitType, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL, IN PKWAIT_BLOCK WaitBlockArray OPTIONAL ); Routine Description: This function waits until the specified objects attain a state of Signaled. The wait can be specified to wait until all of the objects attain a state of Signaled or until one of the objects attains a state of Signaled. An optional timeout can also be specified. If a timeout is not specified, then the wait will not be satisfied until the objects attain a state of Signaled. If a timeout is specified, and the objects have not attained a state of Signaled when the timeout expires, then the wait is automatically satisfied. If an explicit timeout value of zero is specified, then no wait will occur if the wait cannot be satisfied immediately. The wait can also be specified as alertable. Arguments: Count - Supplies a count of the number of objects that are to be waited on. Object - Supplies an array of pointers to dispatcher objects. WaitType - Supplies the type of wait to perform (WaitAll, WaitAny). WaitReason - Supplies the reason for the wait. WaitMode - Supplies the processor mode in which the wait is to occur. Alertable - Supplies a boolean value that specifies whether the wait is alertable. Timeout - Supplies a pointer to an optional absolute of relative time over which the wait is to occur. WaitBlockArray - Supplies an optional pointer to an array of wait blocks that are to used to describe the wait operation. Return Value: The wait completion status. A value of STATUS_TIMEOUT is returned if a timeout occurred. The index of the object (zero based) in the object pointer array is returned if an object satisfied the wait. A value of STATUS_ALERTED is returned if the wait was aborted to deliver an alert to the current thread. A value of STATUS_USER_APC is returned if the wait was aborted to deliver a user APC to the current thread.