PpmInitIdlePolicy
VOID __stdcall PpmInitIdlePolicy(){
UINT64 v0;
UINT64 *v1;
__int64 v2;
UINT64 v3;
_UNICODE_STRING DestinationString;
UINT64 ResultDataSize;
UINT64 Type;
int Data;
PpmDefaultProfile.Settings[0].IdleTimeCheck = 50000;
PpmDefaultProfile.Settings[1].IdleTimeCheck = 50000;
v0 = 2 * PopQpcFrequency;
Data = 0;
PopIdleTransitionTimeout = 2 * PopQpcFrequency;
LODWORD(ResultDataSize) = 0;
LODWORD(Type) = 0;
DestinationString = 0i64;
*(_WORD *)&PpmDefaultProfile.Settings[0].AllowScaling = 0;
*(_WORD *)&PpmDefaultProfile.Settings[1].AllowScaling = 0;
*(_WORD *)&PpmDefaultProfile.Settings[0].IdlePromotePercent = 60;
*(_WORD *)&PpmDefaultProfile.Settings[1].IdlePromotePercent = 60;
PpmDefaultProfile.Settings[0].IdleDemotePercent = 40;
PpmDefaultProfile.Settings[1].IdleDemotePercent = 40;
if( !KdPitchDebugger )
v0 = 90 * PopQpcFrequency;
PopCoordinatedIdleExitTimeout = v0;
v1 = (UINT64 *)&PpmIdleIntervalLimits;
v2 = 26i64;
do
{
v3 = v1[1];
if( v3 != -1i64 )
*v1 = PpmConvertTime(v3, 0x989680ui64, PopQpcFrequency);
v1 += 3;
--v2;
}
while( v2 );
RtlInitUnicodeString(&DestinationString, L"Power-IdleStatesMax-Enabled");
if( ZwQueryLicenseValue(&DestinationString, &Type, &Data, 4ui64, &ResultDataSize) >= 0
&& (_DWORD)ResultDataSize == 4
&& (_DWORD)Type == 4 )
{
PpmIdleRespectIdleStateMax = Data != 0;
}
if( PpmIdleDisableStatesAtBoot == -1 )
PpmIdleDisableStatesAtBoot = 0;
}Referenced by:
PoInitSystem