PpmEndHighPerfRequest
NTSTATUS __stdcall PpmEndHighPerfRequest(PPM_HIGH_PERF_DURATION_TYPE RequestType){
__int64 v1;
unsigned __int64 v2;
__int64 v3;
__int64 v4;
NTSTATUS result;
v1 = RequestType;
v2 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc((UINT64 *)&stru_140C23628 + 269);
if( !PpmHighPerfDuration[v1] || PpmHighPerfDeferredEndDisabled )
{
PoClearPowerRequestInternal(*(&stru_140C23628 + 287), PowerRequestPerfBoostRequiredInternal);
}
else
{
++PpmHighPerfDeferredEndCount;
v3 = (unsigned int)(10000 * PpmHighPerfDuration[v1]);
v4 = PpmHighPerfDeferredEndTime;
if( PpmHighPerfDeferredEndTime <= (unsigned __int64)(v3 + *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart) )
{
v4 = v3 + *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
PpmHighPerfDeferredEndTime = v3 + *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
}
KiSetTimerEx(
(_KTIMER *)((char *)&stru_140C23628 + 2168),
(_LARGE_INTEGER)(*(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - v4),
0i64,
0,
(_KDPC *)((char *)&stru_140C23628 + 2232));
}
KxReleaseSpinLock((UINT64 *)&stru_140C23628 + 269);
result = KiIrqlFlags;
__writecr8(v2);
return result;
}Referenced by:
PdcPoPerfOverride
PoClearBroadcast
PopIssueActionRequest
PopSetupHighPerfPowerRequest
PopUserShutdownCancelled