MiNodeFreeZeroPages
NTSTATUS __stdcall MiNodeFreeZeroPages(_MI_NODE_INFORMATION *NodeInformation, UINT64 Channel, UINT64 Flags){
__int64 v3;
volatile unsigned __int64 *FreeCount;
__int64 v5;
__int64 v6;
_MMLISTS v7;
__int64 v8;
int v9;
volatile unsigned __int64 *v11;
__int64 v12;
__int64 v14;
v3 = (unsigned int)Channel;
FreeCount = NodeInformation->FreeCount;
v5 = ((unsigned int)~(_DWORD)Flags >> 1) & 1;
v6 = 0i64;
v7 = ZeroedPageList;
v8 = 0i64;
v9 = Flags & 0x1000;
do
{
if( (unsigned int)MmNumberOfChannels > 1 )
v11 = &NodeInformation->ChannelFreeCount[v3][v8];
else
v11 = FreeCount;
v6 += *v11;
v12 = v6;
if( v9 )
{
LODWORD(v14) = MiNodeLargeFreeZeroPages(NodeInformation, (unsigned int)v3, v7);
v6 = v12 + v14;
}
++v7;
++v8;
++FreeCount;
}
while( v8 <= v5 );
return v6;
}Referenced by:
MiDemoteLocalLargePage
MiFreeZeroPageSlistSufficient
MiPruneStandbyPages
MiRebalanceZeroFreeLists
MiRebuildLargePage
MiRebuildLargePages
MiReplenishPageSlist
MiSignalLargePageRebuild