#include <ntoskrnl.h>
#include <debug.h>
Go to the source code of this file.
◆ NDEBUG
◆ KeInitializeDeviceQueue()
◆ KeInsertByKeyDeviceQueue()
Definition at line 83 of file devqueue.c.
102 if (!DeviceQueue->Busy)
106 DeviceQueue->Busy =
TRUE;
111 NextEntry = &DeviceQueue->DeviceListHead;
120 if (SortKey < LastEntry->
SortKey)
126 NextEntry = NextEntry->
Flink;
struct _LIST_ENTRY * Blink
_Inout_ PKDEVICE_QUEUE_ENTRY _In_ ULONG SortKey
FORCEINLINE VOID KiAcquireDeviceQueueLock(IN PKDEVICE_QUEUE DeviceQueue, IN PKLOCK_QUEUE_HANDLE DeviceLock)
#define InsertTailList(ListHead, Entry)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct _LIST_ENTRY * Flink
LIST_ENTRY DeviceListEntry
FORCEINLINE VOID KiReleaseDeviceQueueLock(IN PKLOCK_QUEUE_HANDLE DeviceLock)
#define ASSERT_DEVICE_QUEUE(Object)
_Inout_ PKDEVICE_QUEUE_ENTRY DeviceQueueEntry
Referenced by IoStartPacket(), ScsiPortDispatchScsi(), and SpiProcessCompletedRequest().
◆ KeInsertDeviceQueue()
Definition at line 41 of file devqueue.c.
54 if (!DeviceQueue->Busy)
58 DeviceQueue->Busy =
TRUE;
FORCEINLINE VOID KiAcquireDeviceQueueLock(IN PKDEVICE_QUEUE DeviceQueue, IN PKLOCK_QUEUE_HANDLE DeviceLock)
#define InsertTailList(ListHead, Entry)
LIST_ENTRY DeviceListEntry
FORCEINLINE VOID KiReleaseDeviceQueueLock(IN PKLOCK_QUEUE_HANDLE DeviceLock)
#define ASSERT_DEVICE_QUEUE(Object)
_Inout_ PKDEVICE_QUEUE_ENTRY DeviceQueueEntry
Referenced by HalAllocateAdapterChannel(), IoAllocateController(), IoStartPacket(), and Tests_Insert_And_Delete().
◆ KeRemoveByKeyDeviceQueue()
Definition at line 197 of file devqueue.c.
205 DPRINT(
"KeRemoveByKeyDeviceQueue() DevQueue %p, SortKey 0x%x\n", DeviceQueue,
SortKey);
209 ASSERT(DeviceQueue->Busy);
215 DeviceQueue->Busy =
FALSE;
221 NextEntry = &DeviceQueue->DeviceListHead;
237 NextEntry = DeviceQueue->DeviceListHead.
Flink;
241 ASSERT(NextEntry != &DeviceQueue->DeviceListHead);
247 if (SortKey <= ReturnEntry->
SortKey)
break;
250 NextEntry = NextEntry->
Flink;
struct _LIST_ENTRY * Blink
_Inout_ PKDEVICE_QUEUE_ENTRY _In_ ULONG SortKey
FORCEINLINE VOID KiAcquireDeviceQueueLock(IN PKDEVICE_QUEUE DeviceQueue, IN PKLOCK_QUEUE_HANDLE DeviceLock)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct _LIST_ENTRY * Flink
LIST_ENTRY DeviceListEntry
FORCEINLINE VOID KiReleaseDeviceQueueLock(IN PKLOCK_QUEUE_HANDLE DeviceLock)
#define ASSERT_DEVICE_QUEUE(Object)
Referenced by IopStartNextPacketByKey(), and SpiGetNextRequestFromLun().
◆ KeRemoveByKeyDeviceQueueIfBusy()
Definition at line 273 of file devqueue.c.
281 DPRINT(
"KeRemoveByKeyDeviceQueueIfBusy() DevQueue %p, SortKey 0x%x\n", DeviceQueue,
SortKey);
287 if (!(DeviceQueue->Busy) || (
IsListEmpty(&DeviceQueue->DeviceListHead)))
290 DeviceQueue->Busy =
FALSE;
296 NextEntry = &DeviceQueue->DeviceListHead;
312 NextEntry = DeviceQueue->DeviceListHead.
Flink;
316 ASSERT(NextEntry != &DeviceQueue->DeviceListHead);
322 if (SortKey <= ReturnEntry->
SortKey)
break;
325 NextEntry = NextEntry->
Flink;
struct _LIST_ENTRY * Blink
_Inout_ PKDEVICE_QUEUE_ENTRY _In_ ULONG SortKey
FORCEINLINE VOID KiAcquireDeviceQueueLock(IN PKDEVICE_QUEUE DeviceQueue, IN PKLOCK_QUEUE_HANDLE DeviceLock)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct _LIST_ENTRY * Flink
LIST_ENTRY DeviceListEntry
FORCEINLINE VOID KiReleaseDeviceQueueLock(IN PKLOCK_QUEUE_HANDLE DeviceLock)
#define ASSERT_DEVICE_QUEUE(Object)
◆ KeRemoveDeviceQueue()
Definition at line 153 of file devqueue.c.
160 DPRINT(
"KeRemoveDeviceQueue() DevQueue %p\n", DeviceQueue);
164 ASSERT(DeviceQueue->Busy);
170 DeviceQueue->Busy =
FALSE;
FORCEINLINE VOID KiAcquireDeviceQueueLock(IN PKDEVICE_QUEUE DeviceQueue, IN PKLOCK_QUEUE_HANDLE DeviceLock)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
FORCEINLINE VOID KiReleaseDeviceQueueLock(IN PKLOCK_QUEUE_HANDLE DeviceLock)
#define ASSERT_DEVICE_QUEUE(Object)
Referenced by BeepCleanup(), IoFreeAdapterChannel(), IoFreeController(), IopStartNextPacket(), ScsiPortDispatchScsi(), and Tests_Insert_And_Delete().
◆ KeRemoveEntryDeviceQueue()
Definition at line 348 of file devqueue.c.
359 ASSERT(DeviceQueue->Busy);
FORCEINLINE VOID KiAcquireDeviceQueueLock(IN PKDEVICE_QUEUE DeviceQueue, IN PKLOCK_QUEUE_HANDLE DeviceLock)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
LIST_ENTRY DeviceListEntry
FORCEINLINE VOID KiReleaseDeviceQueueLock(IN PKLOCK_QUEUE_HANDLE DeviceLock)
#define ASSERT_DEVICE_QUEUE(Object)
_Inout_ PKDEVICE_QUEUE_ENTRY DeviceQueueEntry
Referenced by BeepCancel(), and Tests_Insert_And_Delete().