PnpUnlockDeviceActionQueue

VOID __stdcall PnpUnlockDeviceActionQueue(){
  UINT64 v0; 
  unsigned __int8 v1; 
  unsigned __int64 v2; 
  KeAcquireSpinLockRaiseToDpc(&PnpSpinLock, v0);
  v2 = v1;
  if( (INT64 *)PnpEnumerationRequestList == &PnpEnumerationRequestList )
  {
    PnpEnumerationInProgress = 0;
    KeSetEvent(&PnpEnumerationLock, 0);
  }
  else
  {
    PnpDeviceEnumerationWorkItem.Parameter = 0i64;
    PnpDeviceEnumerationWorkItem.List.Flink = 0i64;
    PnpDeviceEnumerationWorkItem.WorkerRoutine = (void(__fastcall *)(void *))PnpDeviceActionWorker;
    ExQueueWorkItem(&PnpDeviceEnumerationWorkItem, DelayedWorkQueue);
  }
  KxReleaseSpinLock(&PnpSpinLock);
  __writecr8(v2);
  PpDevNodeUnlockTree(1);
}

Referenced by:

IoControlPnpDeviceActionQueue
IoFreePoDeviceNotifyList
IopInitializeBootDrivers
PipInitializeCoreDriversByGroup