PopDeepSleepClearDisengageReason
INT64 __fastcall PopDeepSleepClearDisengageReason(INT64 a1){
UINT64 v1;
unsigned int v2;
int v3;
EVENT_DESCRIPTOR *v4;
INT64 v5;
unsigned __int8 v6;
unsigned __int64 v7;
INT64 result;
v2 = a1;
v3 = 1 << a1;
KeAcquireSpinLockRaiseToDpc(&PopDeepSleepDisengageReasonLock, v1);
v5 = (unsigned int)PopDeepSleepDisengageReasonMask;
v7 = v6;
LODWORD(PopDeepSleepDisengageReasonMask) = PopDeepSleepDisengageReasonMask & ~v3;
if( (_DWORD)v5 != (_DWORD)PopDeepSleepDisengageReasonMask )
{
PopDiagTraceClearDeepSleepConstraint(v2, v5, v4);
PopDeepSleepResiliencyPhaseAccountingUpdate(v2, 0);
if( !(_DWORD)PopDeepSleepDisengageReasonMask )
{
if( (PopAggressiveStandbyAppliedActions & 2) != 0 )
{
KeSetForceIdle();
PopIsForceIdleSet = 1;
}
if( !PopDeepSleepEvaluateWorkItemQueued )
{
PopDeepSleepEvaluateWorkItemQueued = 1;
ExQueueWorkItem(&PopDeepSleepEvaluateWorkItem, DelayedWorkQueue);
}
}
}
KxReleaseSpinLock(&PopDeepSleepDisengageReasonLock);
result = (unsigned int)KiIrqlFlags;
__writecr8(v7);
return result;
}Referenced by:
PopCheckResiliencyScenarios
PopDecrementPowerSettingPendingUpdates
PopDequeueQuerySetIrp
PopDirectedDripsHandleResiliencyNotification
PopDirectedDripsWorkerRoutine
PopEnforceResiliencyScenarios
PopFxPlatformStateAvailable
PopIdleAoAcDozeToS4
PopPowerInformationInternal
PopSetPowerActionState
PpmUpdatePlatformIdleVeto