MiGetLargePageChain
_MMPFN *__stdcall MiGetLargePageChain(UINT64 RequiredNode, UINT64 NumberOfPages){
unsigned int v2;
_MMPFN *v3;
UINT64 v4;
_BOOL4 v5;
UINT64 v6;
_MMPFN **v7;
INT64 v9;
INT64 v10;
INT64 v11;
v2 = RequiredNode;
if( *(_QWORD *)(4544i64 * (unsigned int)RequiredNode + qword_140C50AD0 + 4176) || (MiFlags & 0x30) == 0 )
{
v3 = 0i64;
v4 = NumberOfPages >> 9;
v5 = *(&stru_140C50B28 + 852) > 0x110000ui64;
v6 = 0i64;
if( !(NumberOfPages >> 9) )
return v3;
while( 1 )
{
LODWORD(v11) = 1;
LODWORD(v10) = v5;
LODWORD(v9) = 0;
LODWORD(v7) = MiGetLargePagesDemoteAsNeeded((INT64)&Irp, v2, 0x200ui64, 0x200ui64, v9, v10, v11);
if( !v7 )
break;
++v6;
*v7 = v3;
v3 = (_MMPFN *)v7;
if( v6 >= v4 )
return v3;
}
MiFreeLargePageChain(v3);
}
return 0i64;
}Referenced by:
MiInitializePoolCommitPacket