MiGetNodeChannelPageCounts
VOID __stdcall MiGetNodeChannelPageCounts(
_MI_PARTITION *Partition,
UINT64 NodeNumber,
UINT64 Channel,
UINT64 *ZeroCount,
UINT64 *FreeCount,
UINT64 *StandbyCount){
unsigned int v7;
_MI_NODE_INFORMATION *v8;
unsigned __int64 TotalPagesEntireNode;
__int64 *v10;
__int64 v11;
UINT64 v12;
__int64 v13;
UINT64 v14;
__int64 v15;
_QWORD *v16;
__int64 v17;
__int64 v18;
__int64 *v19;
_MI_NODE_INFORMATION *v20;
__int64 v21;
__int64 v22;
unsigned __int64 v23;
int v24;
UINT64 v25;
__int64 v26;
unsigned int v27;
_MMPFNLIST_SHORT *v28;
UINT64 v29;
v7 = Channel;
v8 = &Partition->Core.NodeInformation[(unsigned int)NodeNumber];
if( (_DWORD)Channel == 4 )
TotalPagesEntireNode = v8->TotalPagesEntireNode;
else
TotalPagesEntireNode = v8->TotalPages[(unsigned int)Channel];
do
{
if( MmNumberOfChannels == 1 || v7 == 4 )
{
v12 = v8->FreeCount[0];
v19 = MiLargePageSizes;
v14 = v8->FreeCount[1];
v20 = v8;
v21 = 3i64;
do
{
v22 = *v19++;
v23 = v20->FreeLargePages[0].LargePageFreeCount[0] * v22;
v20 = (_MI_NODE_INFORMATION *)((char *)v20 + 1072);
v12 += v23;
v14 += v22 * v20[-1].StandbyPageList[1][1].Flink;
--v21;
}
while( v21 );
}
else
{
v10 = MiLargePageSizes;
v11 = 3i64;
v12 = v8->ChannelFreeCount[v7][0];
v13 = (__int64)v8->FreeLargePages[0].LargePagesCount + 32 * v7;
v14 = v8->ChannelFreeCount[v7][1];
do
{
v15 = *v10;
v16 = (_QWORD *)v13;
v17 = 4i64;
do
{
v18 = *v16 + v16[32];
++v16;
v12 += v15 * v18;
v14 += v15 * (v16[15] + v16[47]);
--v17;
}
while( v17 );
++v10;
v13 += 1072i64;
--v11;
}
while( v11 );
}
v24 = MmNumberOfChannels;
v25 = 0i64;
if( v7 != 4 )
v24 = v7 + 1;
v26 = 0i64;
if( v7 != 4 )
v26 = v7;
v7 = v26;
LABEL_23:
if( (_DWORD)v26 != v24 )
{
v27 = 0;
v28 = v8->StandbyPageList[v26];
while( 1 )
{
v29 = v25 + v28->Total;
if( v29 < v25 || v29 == -1i64 )
break;
++v27;
++v28;
v25 = v29;
if( v27 >= 8 )
{
v26 = (unsigned int)(v26 + 1);
goto LABEL_23;
}
}
v25 = -2i64;
}
}
while( v14 + v25 + v12 > TotalPagesEntireNode );
*ZeroCount = v12;
*FreeCount = v14;
*StandbyCount = v25;
}Referenced by:
MiGetChannelInformation