MiGetPageFileSectionForReservation
VOID __fastcall MiGetPageFileSectionForReservation(
_MMPTE *ProtoPte,
_MI_PAGEFILE_SECTION_RESERVE_INFO *Info,
UINT64 LockProtoPool){
int v3;
_SUBSECTION *v6;
_SUBSECTION *v7;
unsigned __int64 v8;
unsigned __int64 v9;
unsigned __int64 SubsectionBase;
unsigned __int64 v11;
_MMPFN *v12;
v3 = LockProtoPool;
v6 = MiReferencePfBackedSection(ProtoPte);
v7 = v6;
if( v6 )
{
*(_QWORD *)Info = v6->ControlArea;
v8 = (unsigned __int64)ProtoPte & 0xFFFFFFFFFFFFF000ui64;
*((_QWORD *)Info + 2) = (unsigned __int64)ProtoPte & 0xFFFFFFFFFFFFF000ui64;
v9 = ((unsigned __int64)ProtoPte & 0xFFFFFFFFFFFFF000ui64) + 4088;
*((_QWORD *)Info + 3) = v9;
SubsectionBase = (unsigned __int64)v7->SubsectionBase;
if( ((unsigned __int64)ProtoPte & 0xFFFFFFFFFFFFF000ui64) < SubsectionBase )
v8 = (unsigned __int64)v7->SubsectionBase;
*((_QWORD *)Info + 2) = v8;
v11 = SubsectionBase + 8i64 * (v7->PtesInSubsection - 1);
if( v9 > v11 )
v9 = v11;
*((_QWORD *)Info + 3) = v9;
if( v3 )
{
v12 = MiLockProtoPoolPage(ProtoPte, (UINT8 *)Info + 32);
*((_QWORD *)Info + 1) = v12;
if( !v12 )
MiReleasePageFileSectionInfo(Info);
}
else
{
*((_QWORD *)Info + 1) = 0i64;
}
}
}Referenced by:
MiBuildReservationCluster
MiReservePageFileSpace