PpmInternalProcessorIdleVeto
NTSTATUS __stdcall PpmInternalProcessorIdleVeto(_XSTATE_CONFIGURATION *a1, UINT64 a2, CHAR a3){
__int64 v4;
NTSTATUS v5;
_KPRCB *Prcb;
_PPM_IDLE_STATES *IdleStates;
__int64 v8;
v4 = (unsigned int)a2;
if( (unsigned int)a1 >= (unsigned int)KeNumberProcessors_0 )
return -1073741585;
Prcb = KeGetPrcb((UINT64)a1);
v5 = 0;
IdleStates = Prcb->PowerState.IdleStates;
if( !IdleStates )
return -1073741653;
if( (unsigned int)v4 >= IdleStates->ProcessorIdleCount )
return -1073741584;
v8 = v4;
if( a3 )
_InterlockedOr(&IdleStates->State[v8].VetoAccounting.VetoPresent, 0x80000000);
else
_InterlockedAnd(&IdleStates->State[v8].VetoAccounting.VetoPresent, 0x7FFFFFFFu);
return v5;
}Referenced by:
PopPowerInformationInternal