MiGetFastLargePages
NTSTATUS __stdcall MiGetFastLargePages(
INT64 PageFrameIndex,
INT64 a2,
INT64 a3,
INT64 a4,
INT64 ProtectionMask,
INT64 a6){
UINT64 v7;
UINT64 v8;
UINT64 v9;
int v10;
int v11;
char *v12;
UINT64 v13;
char *v14;
char *i;
__int64 v16;
INT64 v18;
INT64 v19;
INT64 v20;
INT64 v21;
KeGetCurrentIrql();
LODWORD(v21) = MiProtectionToCacheAttribute((unsigned int)ProtectionMask);
v11 = v10 | 1;
if( (a6 & 4) == 0 )
v11 = v10;
LODWORD(v20) = v11;
LODWORD(v18) = 1;
LODWORD(v12) = MiGetLargePagesDemoteAsNeeded(PageFrameIndex, v7, v8, v9, v18, v20, v21);
v13 = -1i64;
v14 = v12;
for( i = v12; i; i = *(char **)i )
{
v16 = (i - (char *)MmGetPfnDb()) / 48;
if( i == v14 )
v13 = MiLargePageSizes[MiGetPfnPageSizeIndex((INT64)i)];
LODWORD(v19) = 1;
MiUpdateLargePageBitMap(PageFrameIndex, v16, v13, 1ui64, v19);
}
return(int)v14;
}Referenced by:
MiAllocateLargeZeroPages