PopCoolingSxTransition
VOID __fastcall PopCoolingSxTransition(CHAR a1){
_POP_COOLING_EXTENSION *i;
INT64 v3;
INT64 j;
__int64 v5;
PopAcquireRwLockExclusive(&PopCoolingExtensionLock);
for( i = PopCoolingExtensionList;
i != (_POP_COOLING_EXTENSION *)&PopCoolingExtensionList;
i = (_POP_COOLING_EXTENSION *)i->Link.Flink )
{
if( i->Enabled )
{
PopAcquireRwLockExclusive(&i->Lock);
for( j = (INT64)i->RequestListHead.Flink; (_LIST_ENTRY *)j != &i->RequestListHead; j = *(_QWORD *)j )
{
if( *(_BYTE *)(j + 18) )
{
if( a1 )
{
if( i->Interface.PassiveCooling )
{
PopThermalUpdatePassiveTimeTracking((_POP_THERMAL_TELEMETRY_TRACKER *)(j + 40), *(_BYTE *)(j + 16));
PopTraceThermalRequestPassiveHistogram(j);
}
if( i->Interface.ActiveCooling )
{
LOBYTE(v3) = *(_BYTE *)(j + 17) == 0;
PopThermalUpdateActiveTimeTracking(j + 40, v3);
PopTraceThermalRequestActiveActivity(j);
}
*(_BYTE *)(j + 40) = 1;
}
else
{
v5 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
*(_QWORD *)(j + 48) = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
*(_QWORD *)(j + 56) = v5;
*(_BYTE *)(j + 40) = 0;
}
}
}
PopReleaseRwLock((UINT64)&i->Lock);
}
}
PopReleaseRwLock((UINT64)&PopCoolingExtensionLock);
}Referenced by:
PopThermalSxEntry
PopThermalSxExit