PopIdleAoAcDozeToS4
VOID __stdcall PopIdleAoAcDozeToS4(VOID *Context){
POWER_ACTION_POLICY ActionPolicy;
_POP_ACTION_TRIGGER Trigger;
PopAcquirePolicyLock();
PopTraceSystemIdleS0LowPowerDoze();
dword_140C231D0 = 0;
*(_OWORD *)&Trigger.Wait = 0i64;
if( dword_140C231E8 == 1 )
goto LABEL_10;
if( dword_140C231E8 != 2 )
{
if( dword_140C231E8 == 3 )
{
Trigger.Type = PolicyImmediateDozeS4AdaptiveBudget;
goto LABEL_11;
}
if( dword_140C231E8 == 4 )
{
Trigger.Type = PolicyImmediateDozeS4AdaptiveReserveNoWake;
goto LABEL_11;
}
LABEL_10:
Trigger.Type = PolicyImmediateDozeS4;
goto LABEL_11;
}
Trigger.Type = PolicyImmediateDozeS4Predicted;
if( qword_140C232B8
&& *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - qword_140C232B8 > 10000000
* (unsigned __int64)(unsigned int)PopSmartUserPresenceCheckTimeout )
{
Trigger.Type = PolicyImmediateDozeS4PredictedNoWake;
}
LABEL_11:
ActionPolicy.EventCode = 0;
Trigger.Flags = 128;
ActionPolicy.Action = PowerActionHibernate;
ActionPolicy.Flags = -2147483612;
PopExecutePowerAction(&Trigger, 0i64, &ActionPolicy, PowerSystemHibernate, SubstituteLightestOverallDownwardBounded);
PopReleasePolicyLock();
_InterlockedAnd(&dword_140C231EC, 0);
PopDeepSleepClearDisengageReason(PopDeepSleepDisengageReasonDozeS4WorkerQueued);
}Referenced by:
No references.