PnpLockDeviceActionQueue

INT64 __stdcall PnpLockDeviceActionQueue(){
  UINT64 v0; 
  UINT64 v1; 
  UINT8 v2; 
  UINT8 v3; 
  unsigned __int8 v4; 
  unsigned __int64 v5; 
  INT64 result; 
  IRP *v7; 
  while( 1 )
  {
    PpDevNodeLockTree(1);
    KeAcquireSpinLockRaiseToDpc(&PnpSpinLock, v0);
    v5 = v4;
    if( !PnpEnumerationInProgress )
      break;
    KxReleaseSpinLock(&PnpSpinLock);
    __writecr8(v5);
    PpDevNodeUnlockTree(1);
    KeWaitForSingleObject(&PnpEnumerationLock, Executive, 0, 0, 0i64);
  }
  PnpEnumerationInProgress = 1;
  KeResetEvent(&PnpEnumerationLock, v1, v2, v3, v7);
  KxReleaseSpinLock(&PnpSpinLock);
  result = (unsigned int)KiIrqlFlags;
  __writecr8(v5);
  return result;
}

Referenced by:

IoBuildPoDeviceNotifyList
IoControlPnpDeviceActionQueue
IopInitializeBootDrivers
PipInitializeCoreDriversByGroup