NTSTATUS
KeDelayExecutionThread(
IN KPROCESSOR_MODE WaitMode,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Interval
);
KeDelayExecutionThread puts the current thread into an alertable or nonalertable wait state for a given interval.
The return value of KeDelayExecutionThread identifies how the delay was completed, and can be one of the following:
Value |
Meaning |
STATUS_SUCCESS |
The delay was completed because the specified interval elapsed. |
STATUS_ALERTED |
The delay was completed because the thread was alerted. |
STATUS_USER_APC |
A user-mode APC was delivered before the given Interval expired. |
The expiration time is computed and the current thread is put in a wait state. When the specified interval has passed, the thread exits the wait state and is put in the ready state, becoming eligible for execution.
The Alertable parameter specifies whether the thread can be alerted in the wait state. If the value of this parameter is TRUE and the thread is alerted for a mode that is equal to or more privileged than the given WaitMode, the thread’s wait will be satisfied with a completion status of STATUS_ALERTED.
If the WaitMode parameter is UserMode and the Alertable parameter is TRUE, the thread can also be awakened to deliver a user-mode APC. Kernel-mode APCs always cause the subject thread to be awakened if the wait IRQL is PASSIVE_LEVEL and no kernel APC is in progress.
The expiration time of the delay is expressed as either an absolute time at which the delay is to expire, or a time relative to the current system time. If the Interval parameter is a negative value, the expiration time is relative.
Callers of KeDelayExecutionThread must be running at IRQL < DISPATCH_LEVEL.