1.3.5 Driver Threads, Dispatcher Objects, and Resources
Puts the current thread into an alertable or nonalertable wait state for a given interval.
Initializes a work queue item with a caller-supplied context and callback routine to be queued for execution when a system worker thread is given control.
Queues an initialized work queue item so the driver-supplied routine will be called when a system worker thread is given control.
Initializes a resource, for which the caller provides the storage, to be used for synchronization by a set of threads (shared readers, exclusive writers).
Reinitializes an existing resource variable.
ExAcquireResourceExclusiveLite
Acquires an initialized resource for exclusive access by the calling thread and optionally waits for the resource to be acquired.
ExTryToAcquireResourceExclusiveLite
Either acquires a given resource for exclusive access immediately or returns FALSE.
Acquires an initialized resource for shared access by the calling thread and optionally waits for the resource to be acquired.
ExAcquireSharedStarveExclusive
Acquires a given resource for shared access without waiting for any pending attempts to acquire exclusive access to the same resource.
ExAcquireSharedWaitForExclusive
Acquires a given resource for shared access, optionally waiting for any pending exclusive waiters to acquire and release the resource first.
ExIsResourceAcquiredExclusiveLite
Returns whether the calling thread has exclusive access to a given resource.
ExIsResourceAcquiredSharedLite
Returns how many times the calling thread has acquired shared access to a given resource.
Returns the number of threads currently waiting to acquire a given resource for exclusive access.
Returns the number of threads currently waiting to acquire a given resource for shared access.
ExConvertExclusiveToSharedLite
Converts a given resource from acquired for exclusive access to acquired for shared access.
Returns the thread ID of the current thread.
ExReleaseResourceForThreadLite
Releases a given resource that was acquired by the given thread.
Deletes a caller-initialized resource from the system’s resource list.
Sets the absolute or relative interval at which a timer object will be set to the Signaled state and optionally supplies a timer DPC to be executed when the interval expires.
Sets the absolute or relative interval at which a timer object will be set to the Signaled state, optionally supplies a timer DPC to be executed when the interval expires, and optionally supplies a recurring interval for the timer.
Cancels a timer object before the interval passed to KeSetTimer expires; dequeues a timer DPC before the timer interval, if any was set, expires.
Returns whether a given timer object is set to the Signaled state.
Returns the previous state of a given event object and sets the event to the Signaled state if not already Signaled.
Resets the event to the Not-Signaled state.
Returns the previous state of a given event object and resets the event to the Not-Signaled state.
Returns the current state (nonzero for Signaled or zero for Not-Signaled) of a given event object.
Acquires an initialized fast mutex, possibly after putting the caller into a wait state until it is acqired, and gives the calling thread ownership with APCs disabled.
Either acquires the given fast mutex immediately for the caller with APCs disabled or returns FALSE.
Releases ownership of a fast mutex that was acquired with ExAcquireFastMutex or ExTryToAcquireFastMutex.
Acquires an initialized fast mutex, possibly after putting the caller into a wait state until it is acquired.
Releases ownership of a fast mutex that was acquired with ExAcquireFastMutexUnsafe.
Releases a given mutex object, specifying whether the caller will call one of the KeWaitXxx routines as soon as KeReleaseMutex returns the previous value of the mutex state (a zero for Signaled; otherwise, Not-Signaled).
Returns the current state (one for Signaled or any other value for Not-Signaled) of a given mutex object.
Releases a given semaphore object, supplying a (runtime) priority boost for waiting threads if the release sets the semaphore to the Signaled state, augmenting the semaphore count by a given value, and specifying whether the caller will call one of the KeWaitXxx routines as soon as KeReleaseSemaphore returns.
Returns the current state (zero for Not-Signaled or a positive value for Signaled) of a given semaphore object.
Puts the current thread into an alertable or nonalertable wait state until a given dispatcher object is set to the Signaled state or (optionally) until the wait times out.
Puts the current thread into an altertable or nonalertable wait state until a given mutex is set to the Signaled state or (optionally) until the wait times out.
Puts the current thread into an alertable or nonalertable wait state until any one or all of a number of dispatcher objects are set to the Signaled state or (optionally) until the wait times out.
Returns a handle for the process of the current thread.
Returns a pointer to the process of the current thread.
Temporarily disables the delivery of special kernel APCs while a highest-level driver is running in the context of the user-mode thread that requested the current I/O operation.
Re-enables the delivery of special kernel APCs again as soon as possible.
Sets the priority of a given thread for which the caller has a handle.