PpmEndHighPerfRequest
__int64 __fastcall PpmEndHighPerfRequest(int a1, UINT64 a2){
__int64 v2;
unsigned __int8 v3;
unsigned __int64 v4;
__int64 v5;
__int64 v6;
__int64 result;
v2 = a1;
KeAcquireSpinLockRaiseToDpc(&PpmHighPerfRequestLock, a2);
v4 = v3;
if( !PpmHighPerfDuration[v2] || PpmHighPerfDeferredEndDisabled )
{
PoClearPowerRequestInternal(PpmHighPerfPowerRequest, 4ui64);
}
else
{
++PpmHighPerfDeferredEndCount;
v5 = (unsigned int)(10000 * PpmHighPerfDuration[v2]);
v6 = PpmHighPerfDeferredEndTime;
if( PpmHighPerfDeferredEndTime <= (unsigned __int64)(v5 + *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart) )
{
v6 = v5 + *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
PpmHighPerfDeferredEndTime = v5 + *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
}
KiSetTimerEx(
(_KTIMER *)&PpmHighPerfEndTimer,
(_LARGE_INTEGER)(*(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - v6),
0i64,
0,
&PpmHighPerfEndDpc);
}
KxReleaseSpinLock(&PpmHighPerfRequestLock);
result = (unsigned int)KiIrqlFlags;
__writecr8(v4);
return result;
}Referenced by:
PdcPoPerfOverride
PoClearBroadcast
PopIssueActionRequest
PopSetupHighPerfPowerRequest
PopUserShutdownCancelled