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