PopDeepSleepSetDisengageReason
INT64 __fastcall PopDeepSleepSetDisengageReason(INT64 a1){
UINT64 v1;
unsigned int v2;
EVENT_DESCRIPTOR *v3;
int v4;
unsigned __int8 v5;
unsigned __int64 v6;
INT64 v7;
INT64 result;
v2 = a1;
KeAcquireSpinLockRaiseToDpc(&PopDeepSleepDisengageReasonLock, v1);
v4 = PopDeepSleepDisengageReasonMask;
v6 = v5;
v7 = (unsigned int)PopDeepSleepDisengageReasonMask | (1 << v2);
LODWORD(PopDeepSleepDisengageReasonMask) = v7;
if( v4 != (_DWORD)v7 )
{
PopDiagTraceSetDeepSleepConstraint(v2, v7, v3);
PopDeepSleepResiliencyPhaseAccountingUpdate(v2, 1);
if( !v4 )
{
if( PopIsForceIdleSet )
{
KeClearForceIdle();
PopIsForceIdleSet = 0;
}
if( !PopDeepSleepEvaluateWorkItemQueued )
{
PopDeepSleepEvaluateWorkItemQueued = 1;
ExQueueWorkItem(&PopDeepSleepEvaluateWorkItem, DelayedWorkQueue);
}
}
}
KxReleaseSpinLock(&PopDeepSleepDisengageReasonLock);
result = (unsigned int)KiIrqlFlags;
__writecr8(v6);
return result;
}Referenced by:
PopCheckResiliencyScenarios
PopDirectedDripsIdleResiliencyCallback
PopEnforceResiliencyScenarios
PopFxPlatformStateAvailable
PopIdleAoAcDozeS4TimerCallback
PopIncrementPowerSettingPendingUpdates
PopPowerInformationInternal
PopQueueQuerySetIrp
PopSetPowerActionState
PpmUpdatePlatformIdleVeto