MmManagePartitionCreateLargePages
INT64 __fastcall MmManagePartitionCreateLargePages(INT64 a1, INT64 a2, INT8 a3){
unsigned int v5;
unsigned __int64 v6;
unsigned __int64 v7;
unsigned int LargestPageIndex;
unsigned int v9;
unsigned int v10;
__int64 *v11;
unsigned __int64 v12;
v5 = 0;
if( SeSinglePrivilegeCheck(*(_QWORD *)&SeLockMemoryPrivilege, a3) )
{
if( !*(_DWORD *)a2 && *(_DWORD *)(a2 + 4) < (unsigned int)(unsigned __int16)KeNumberNodes )
{
v6 = *(_QWORD *)(a2 + 8);
if( (v6 & 0xFFF) == 0 )
{
v7 = v6 >> 12;
LargestPageIndex = MiGetLargestPageIndex();
v10 = LargestPageIndex;
if( LargestPageIndex < 3 )
{
v11 = &MiLargePageSizes[LargestPageIndex];
do
{
if( *v11 == v7 )
break;
++v10;
++v11;
}
while( v10 < 3 );
}
if( v10 == 3 || !v10 )
return(unsigned int)-1073741637;
v12 = *(_QWORD *)(a2 + 16);
if( v12 && v12 < 0xFFFFFFFFFFFFFFFFui64 / v7 )
{
*(_QWORD *)(a2 + 24) = MiRebuildLargePage(*(_MI_PARTITION **)a1, v9) / v7;
return v5;
}
}
}
return(unsigned int)-1073741811;
}
else
{
return(unsigned int)-1073741727;
}
}Referenced by:
NtManagePartition