NTSTATUS NtSignalAndWaitForSingleObject( IN HANDLE SignalHandle, IN HANDLE WaitHandle, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL ); Routine Description: This function atomically signals the specified signal object and then waits until the specified wait object 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 wait object attains a state of Signaled. If a timeout is specified, and the wait object has 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: SignalHandle - supplies the handle of the signal object. WaitHandle - Supplies the handle for the wait object. Alertable - Supplies a boolean value that specifies whether the wait is alertable. Timeout - Supplies an pointer to an absolute or relative time over which the wait is to occur. Return Value: The wait completion status. A value of STATUS_TIMEOUT is returned if a timeout occurred. A value of STATUS_SUCCESS is returned if the specified 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.