MmLogSystemShareablePfnInfo
VOID __stdcall MmLogSystemShareablePfnInfo(UINT64 LoggerId, PVOID a2){
__int64 v3;
_QWORD *v4;
unsigned __int64 v5;
UINT64 v6;
_MMSUPPORT_INSTANCE *AnyMultiplexedVm;
CHAR *v8;
UINT64 AggregateWorkingSetSize;
unsigned __int64 v10;
unsigned __int64 v11;
INT64 v12;
_QWORD *v13;
int WorkingSetInfo;
__int64 v15;
int v16;
int v17[4];
v16 = (int)a2;
v17[0] = 2;
v17[1] = 3;
v3 = 0i64;
v17[2] = 4;
v4 = 0i64;
v5 = 0i64;
v6 = 0i64;
AnyMultiplexedVm = (_MMSUPPORT_INSTANCE *)MiGetAnyMultiplexedVm(0i64);
v8 = (CHAR *)AnyMultiplexedVm;
AggregateWorkingSetSize = MiGetAggregateWorkingSetSize(AnyMultiplexedVm);
if( AggregateWorkingSetSize <= v10 )
v11 = 64i64;
else
v11 = AggregateWorkingSetSize - v10 + 64;
do
{
if( v17[v3] == 2 )
{
v8 = (CHAR *)AnyMultiplexedVm;
}
else
{
if( v17[v3] == 3 )
{
v12 = 2i64;
}
else
{
if( v17[v3] != 4 )
goto LABEL_11;
v12 = 1i64;
}
v8 = MiGetAnyMultiplexedVm(v12);
}
LABEL_11:
if( v5 >= v11 )
{
memset((INT64)v4, 0i64);
}
else
{
if( v4 )
ExFreePoolWithTag(v4, 0);
v6 = 32 * v11 + 16;
LODWORD(v13) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
v4 = v13;
if( !v13 )
return;
v5 = v11;
}
WorkingSetInfo = MiGetWorkingSetInfoEx((INT64)v8, 0i64, v4, v6);
v15 = v4[1];
if( WorkingSetInfo >= 0 )
{
if( v15 )
EtwLogPfnInfoRundown(0i64, LoggerId, v16, v4);
v3 = (unsigned int)(v3 + 1);
}
else
{
v11 = v15 + 64;
}
}
while( (unsigned int)v3 < 3 );
if( v4 )
ExFreePoolWithTag(v4, 0);
}Referenced by:
EtwpKernelTraceRundown