1.7 Driver-managed Queues
-
KeInitializeSpinLock
-
Initializes a variable of type KSPIN_LOCK. An initialized spin lock is a
required parameter to the Ex..InterlockedList routines.
-
InitializeListHead
-
Sets up a queue header for a driver’s internal queue, given a pointer to
driver-supplied storage for the queue header and queue. An initialized queue
header is a required parameter to the ExInterlockedInsert/Remove..List
routines.
-
ExInterlockedInsertTailList
-
Inserts an entry at the tail of a doubly linked list, using a spin lock to
ensure multiprocessor-safe access to the list and atomic modification of the
list links.
-
ExInterlockedInsertHeadList
-
Inserts an entry at the head of a doubly linked list, using a spin lock to
ensure multiprocessor-safe access to the list and atomic modification of the
list links.
-
ExInterlockedRemoveHeadList
-
Removes an entry from the head of a doubly linked list, using a spin lock to
ensure multiprocessor-safe access to the list and atomic modification of the
list links.
-
ExInterlockedPopEntryList
-
Removes an entry from the head of a singly linked list as an atomic operation,
using a spin lock to ensure multiprocessor-safe access to the list.
-
ExInterlockedPushEntryList
-
Inserts an entry at the head of a singly linked list as an atomic operation,
using a spin lock to ensure multiprocessor-safe access to the list.
-
IsListEmpty
-
Returns whether a queue is empty, given its initialized list head. (This type
of doubly linked list is not protected by a spin lock, unless the caller
explicitly manages synchronization to queued entries with an initialized spin
lock for which the caller supplies the storage.)
-
InsertTailList
-
Queues an entry at the end of the list.
-
InsertHeadList
-
Queues an entry at the head of the list.
-
RemoveHeadList
-
Dequeues an entry at the head of the list.
-
RemoveTailList
-
Dequeues an entry at the end of the list.
-
RemoveEntryList
-
Returns whether a given entry is in the given list and dequeues the entry if
it is.
-
PushEntryList
-
Inserts an entry into the queue. (This type of singly linked list is not
protected by a spin lock, unless the caller explicitly manages synchronization
to queued entries with an initialized spin lock for which the caller supplies
the storage.)
-
PopEntryList
-
Removes an entry from the queue.
-
KeInitializeDeviceQueue
-
Initializes a device queue object to a not-busy state, setting up an
associated spin lock for multiprocessor-safe access to device queue entries.
-
KeInsertDeviceQueue
-
Acquires the device queue spin lock and queues an entry to a device driver if
the device queue is not empty; otherwise, inserts the entry at the tail of the
device queue.
-
KeInsertByKeyDeviceQueue
-
Acquires the device queue spin lock and queues an entry to a device driver if
the device queue is not empty; otherwise, inserts the entry into the queue
according to the given sort-key value.
-
KeRemoveDeviceQueue
-
Removes an entry from the head of a given device queue.
-
KeRemoveByKeyDeviceQueue
-
Removes an entry, selected according to the specified sort-key value, from the
given device queue.
-
KeRemoveEntryDeviceQueue
-
Determines whether a given entry is in the given device queue and, if so,
dequeues the entry.