MiReserveWorkingSetSwapSpaceRuns
NTSTATUS __stdcall MiReserveWorkingSetSwapSpaceRuns(
_MI_PARTITION *Partition,
UINT64 NumberOfPages,
UINT64 PageFileNumber,
UINT64 ReservationBoundary,
_MI_WS_SWAP_RESERVATION_RUN *ReservationRuns){
char v5;
unsigned __int64 v6;
INT64 v7;
_MI_WS_SWAP_RESERVATION_RUN *v9;
__int64 v10;
__int64 v11;
unsigned int FreePageFileSpace;
v5 = PageFileNumber;
v6 = NumberOfPages;
v7 = (unsigned int)ReservationBoundary;
if( Partition->Vp.PagingFile[(unsigned int)PageFileNumber]->FreeReservationSpace >= NumberOfPages )
{
v9 = ReservationRuns;
if( ReservationRuns < ReservationRuns + 20 )
{
v10 = 80i64;
do
{
if( !v6 )
break;
LODWORD(v11) = MiMakePageFilePte(v7);
*(_QWORD *)v9 = ((unsigned __int64)(v5 & 0xF) << 12) | v11 & 0xFFFFFFFFFFFF0FFFui64;
FreePageFileSpace = MiFindFreePageFileSpace(Partition, (_MMPTE *)v9, v6, 0x29ui64);
v9[2] = FreePageFileSpace;
if( (unsigned __int64)FreePageFileSpace * (v10 >> 4) < v6 )
break;
v6 -= FreePageFileSpace;
v9 += 4;
v10 -= 16i64;
}
while( v9 < ReservationRuns + 20 );
}
}
return v6;
}Referenced by:
MiReserveWorkingSetSwapSpace