PpmEventIdleDurationExpiration
VOID __stdcall PpmEventIdleDurationExpiration(_KAFFINITY_EX *WakeMask){
unsigned __int16 Count;
unsigned __int16 v3;
unsigned __int16 v4;
__int64 v5;
__int64 v6;
ULONG UserDataCount;
__int64 *v8;
__int64 v9;
__int64 v10;
__int64 v11;
unsigned __int16 v12;
_EVENT_DATA_DESCRIPTOR UserData[41];
__int64 v14[40];
if( PpmEtwRegistered && EtwEventEnabled(PpmEtwHandle, &PPM_ETW_IDLE_DURATION_EXPIRATION) )
{
Count = WakeMask->Count;
v3 = 0;
v4 = 0;
v12 = 0;
do
{
v5 = 2i64 * v3;
*(_OWORD *)&v14[v5] = 0i64;
LOWORD(v14[v5 + 1]) = v4;
if( v4 >= Count )
v6 = 0i64;
else
v6 = WakeMask->Bitmap[v4];
v14[2 * v3] = v6;
if( v6 )
++v3;
++v4;
}
while( v4 < 0x14u );
v12 = v3;
UserData[0].Ptr = (unsigned __int64)&v12;
*(_QWORD *)&UserData[0].Size = 2i64;
UserDataCount = 1;
if( v3 )
{
v8 = v14;
v9 = v3;
do
{
v10 = UserDataCount;
UserData[v10].Ptr = (unsigned __int64)(v8 + 1);
*(_QWORD *)&UserData[v10].Size = 2i64;
v11 = UserDataCount + 1;
UserDataCount += 2;
UserData[v11].Ptr = (unsigned __int64)v8;
v8 += 2;
*(_QWORD *)&UserData[v11].Size = 8i64;
--v9;
}
while( v9 );
}
EtwWriteEx(PpmEtwHandle, &PPM_ETW_IDLE_DURATION_EXPIRATION, 0i64, 0, 0, 0, UserDataCount, UserData);
}
}Referenced by:
PoExecuteIdleCheck