PopDeepSleepClearDisengageReason
VOID __stdcall PopDeepSleepClearDisengageReason(POP_DEEP_SLEEP_DISENGAGE_REASON Reason){
int v2;
unsigned __int8 v3;
NPTEXTMETRIC *v4;
INT64 v5;
unsigned __int64 v6;
v2 = 1 << Reason;
v3 = KeAcquireSpinLockRaiseToDpc((UINT64 *)&PopIrpWorkerControlEvent + 27);
v5 = *(&PopIrpWorkerControlEvent + 52);
v6 = v3;
*(&PopIrpWorkerControlEvent + 52) &= ~v2;
if( (_DWORD)v5 != *(&PopIrpWorkerControlEvent + 52) )
{
PopDiagTraceClearDeepSleepConstraint((unsigned int)Reason, v5, v4);
PopDeepSleepResiliencyPhaseAccountingUpdate((PVOID)(unsigned int)Reason);
if( !*(&PopIrpWorkerControlEvent + 52) )
{
if( (PopAggressiveStandbyAppliedActions & 2) != 0 )
{
KeSetForceIdle();
PopIsForceIdleSet = 1;
}
if( !*(&PopIrpWorkerControlEvent + 144) )
{
*(&PopIrpWorkerControlEvent + 144) = 1;
ExQueueWorkItem((PWORK_QUEUE_ITEM)&PopIrpWorkerControlEvent + 5, DelayedWorkQueue);
}
}
}
KxReleaseSpinLock((UINT64 *)&PopIrpWorkerControlEvent + 27);
__writecr8(v6);
}Referenced by:
PopCheckResiliencyScenarios
PopDecrementPowerSettingPendingUpdates
PopDequeueQuerySetIrp
PopDirectedDripsHandleResiliencyNotification
PopDirectedDripsWorkerRoutine
PopEnforceResiliencyScenarios
PopFxPlatformStateAvailable
PopIdleAoAcDozeToS4
PopPowerInformationInternal
PopSetPowerActionState