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