PpmPerfProcCapFloorSettingCallback
NTSTATUS __stdcall PpmPerfProcCapFloorSettingCallback(
const _GUID *SettingGuid,
UINT64 *NewValue,
UINT64 ValueLength,
PVOID Context){
unsigned int v4;
int v5;
__int64 v7;
_BOOL8 v8;
unsigned int v9;
_KPRCB *Prcb;
_PROC_PERF_CONSTRAINT *Constraint;
NTSTATUS v12;
_PPM_POLICY_ACTION_MASK ActionMask;
GUID v15;
v4 = SettingGuid->Data4[7];
v5 = ValueLength;
v15 = GUID_PROC_CAP_BASE;
v15.Data4[7] = v4;
v7 = *(_QWORD *)&GUID_PROC_CAP_BASE.Data1 - *(_QWORD *)&SettingGuid->Data1;
if( !v7 )
v7 = *(_QWORD *)v15.Data4 - *(_QWORD *)SettingGuid->Data4;
v8 = v7 == 0;
PpmAcquireLock((_PPM_LOCK *)((char *)&stru_140C23628 + 1048));
if( v5 != 4 || !NewValue )
goto LABEL_13;
v9 = *(_DWORD *)NewValue;
if( v9 > 0x64 )
v9 = 100;
Prcb = KeGetPrcb(v4);
if( Prcb )
{
Constraint = Prcb->PowerState.CheckContext.Constraint;
if( Constraint )
{
if( v8 )
Constraint->ProcCap = v9;
else
Constraint->ProcFloor = v9;
}
v12 = 0;
}
else
{
LABEL_13:
v12 = -1073741811;
}
ActionMask = (_PPM_POLICY_ACTION_MASK)14;
PpmReapplyPerfPolicy(&ActionMask);
return v12;
}Referenced by:
No references.