KeInsertDeviceQueue

UINT8 __stdcall KeInsertDeviceQueue(_KDEVICE_QUEUE *DeviceQueue, _KDEVICE_QUEUE_ENTRY *DeviceQueueEntry){
  unsigned __int8 v4; 
  unsigned __int8 Busy; 
  _LIST_ENTRY *Blink; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  memset(&LockHandle, 0, sizeof(LockHandle));
  v4 = 0;
  KeAcquireInStackQueuedSpinLockForDpc(&DeviceQueue->Lock, &LockHandle);
  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;
    v4 = 1;
    DeviceQueueEntry->DeviceListEntry.Blink = Blink;
    Blink->Flink = &DeviceQueueEntry->DeviceListEntry;
    DeviceQueue->DeviceListHead.Blink = &DeviceQueueEntry->DeviceListEntry;
  }
  DeviceQueueEntry->Inserted = v4;
  KeReleaseInStackQueuedSpinLockForDpc(&LockHandle);
  return v4;
}

Referenced by:

HalAllocateAdapterChannelV2
IoAllocateController
IoStartPacket