PpmUpdateProcessorIdleVeto
NTSTATUS __stdcall PpmUpdateProcessorIdleVeto(PROCESSOR_IDLE_VETO *IdleVeto){
unsigned int ProcessorIndexFromNumber;
_KPRCB *Prcb;
int updated;
unsigned __int8 v5;
_PPM_IDLE_STATES *IdleStates;
unsigned __int64 v7;
__int64 v9;
_KAFFINITY_EX Affinity;
memset(Affinity.Bitmap, 0i64, sizeof(Affinity.Bitmap));
ProcessorIndexFromNumber = KeGetProcessorIndexFromNumber((UINT16 *)IdleVeto + 2);
Prcb = KeGetPrcb(ProcessorIndexFromNumber);
if( ProcessorIndexFromNumber == -1 )
return -1073741811;
v5 = KeAcquireSpinLockRaiseToDpc((UINT64 *)&stru_140C23628 + 122);
IdleStates = Prcb->PowerState.IdleStates;
v7 = v5;
if( IdleStates )
{
v9 = (unsigned int)IdleVeto[2];
if( (unsigned int)v9 < IdleStates->ProcessorIdleCount )
{
updated = PpmUpdateIdleVeto(
*((_BYTE *)IdleVeto + 16),
(unsigned int)IdleVeto[3],
&IdleStates->State[v9].VetoAccounting);
if( updated >= 0 )
PpmEventProcessorVetoRequest((__int64)Prcb, IdleVeto[2], IdleVeto[3], *((_BYTE *)IdleVeto + 16));
}
else
{
updated = -1073741811;
}
}
else
{
updated = -1073741637;
}
KxReleaseSpinLock((UINT64 *)&stru_140C23628 + 122);
__writecr8(v7);
return updated;
}Referenced by:
No references.