KeInsertDeviceQueue
VOID __fastcall KeInsertDeviceQueue(_KDEVICE_QUEUE *DeviceQueue, _KDEVICE_QUEUE_ENTRY *DeviceQueueEntry){
UINT8 v2;
unsigned __int8 v5;
unsigned __int8 Busy;
_LIST_ENTRY *Blink;
_KLOCK_QUEUE_HANDLE LockHandle;
memset(&LockHandle, 0, sizeof(LockHandle));
v5 = 0;
KeAcquireInStackQueuedSpinLockForDpc(&DeviceQueue->Lock, &LockHandle, v2);
Busy = DeviceQueue->Busy;
DeviceQueue->Busy = 1;
if( Busy == 1 )
{
Blink = DeviceQueue->DeviceListHead.Blink;
if( Blink->Flink != &DeviceQueue->DeviceListHead )
__fastfail(3u);
DeviceQueueEntry->DeviceListEntry.Flink = &DeviceQueue->DeviceListHead;
v5 = 1;
DeviceQueueEntry->DeviceListEntry.Blink = Blink;
Blink->Flink = &DeviceQueueEntry->DeviceListEntry;
DeviceQueue->DeviceListHead.Blink = &DeviceQueueEntry->DeviceListEntry;
}
DeviceQueueEntry->Inserted = v5;
KeReleaseInStackQueuedSpinLockForDpc(&LockHandle);
}Referenced by:
HalAllocateAdapterChannelV2
IoAllocateController
IoStartPacket