PpmEventProcessorVetoRundown
VOID __stdcall PpmEventProcessorVetoRundown(_KPRCB *Prcb){
_PPM_IDLE_STATES *IdleStates;
unsigned int v3;
__int16 Group;
__int16 v5;
unsigned __int8 v6;
unsigned int v7;
unsigned __int64 v8;
__int64 v9;
_LIST_ENTRY *p_VetoListHead;
_LIST_ENTRY *Flink;
unsigned int i;
__int16 v13;
int v14[2];
_EVENT_DATA_DESCRIPTOR a2;
unsigned __int8 *p_GroupIndex;
int v17;
int v18;
int *p_i;
int v20;
int v21;
_LIST_ENTRY *v22;
int v23;
int v24;
__int64 v25;
int v26;
int v27;
IdleStates = Prcb->PowerState.IdleStates;
memset(v14, 0, 7);
if( IdleStates )
{
v3 = 1;
for( i = 1; v3 < IdleStates->ProcessorIdleCount; i = v3 )
{
Group = Prcb->Group;
a2.Reserved = 0;
LOWORD(v14[0]) = Group;
BYTE2(v14[0]) = Prcb->GroupIndex;
*(int *)((char *)v14 + 3) = v3;
a2.Ptr = (unsigned __int64)v14;
a2.Size = 7;
PpmEventTracePreVetoAccounting(
&PPM_ETW_PROCESSOR_PRE_VETO_ACCOUNTING_RUNDOWN,
&a2,
(INT64)&IdleStates->State[v3].VetoAccounting);
v3 = i + 1;
}
if( PpmEtwRegistered && EtwEventEnabled(PpmEtwHandle, &PPM_ETW_PROCESSOR_IDLE_VETO_RUNDOWN) )
{
v5 = Prcb->Group;
a2.Reserved = 0;
v18 = 0;
v13 = v5;
a2.Ptr = (unsigned __int64)&v13;
p_GroupIndex = &Prcb->GroupIndex;
a2.Size = 2;
v17 = 1;
v6 = KeAcquireSpinLockRaiseToDpc((UINT64 *)&stru_140C23628 + 122);
v7 = 0;
v8 = v6;
i = 0;
if( IdleStates->ProcessorIdleCount )
{
v9 = 0i64;
do
{
v21 = 0;
p_i = (int *)&i;
v20 = 4;
p_VetoListHead = &IdleStates->State[v9].VetoAccounting.VetoListHead;
Flink = p_VetoListHead->Flink;
if( p_VetoListHead->Flink != p_VetoListHead )
{
do
{
v24 = 0;
v27 = 0;
v22 = Flink + 1;
v23 = 4;
v25 = (__int64)&Flink[1].Flink + 4;
v26 = 4;
EtwWriteEx(PpmEtwHandle, &PPM_ETW_PROCESSOR_IDLE_VETO_RUNDOWN, 0i64, 0, 0, 0, 5u, &a2);
Flink = Flink->Flink;
}
while( Flink != p_VetoListHead );
v7 = i;
}
i = ++v7;
v9 = v7;
}
while( v7 < IdleStates->ProcessorIdleCount );
}
KxReleaseSpinLock((UINT64 *)&stru_140C23628 + 122);
__writecr8(v8);
}
}
}Referenced by:
PpmEventTraceControlCallback