MiReserveWorkingSetSwapSpace
NTSTATUS __stdcall MiReserveWorkingSetSwapSpace(
_MI_PARTITION *Partition,
VOID *ReservationRuns,
UINT64 PageFileNumber,
UINT64 SwapFileNumber,
UINT64 PagesToOutSwap,
UINT64 NumberOfPages){
unsigned int v6;
_MMPAGING_FILE *i;
unsigned int Size;
UINT64 v11;
__int64 v12;
UINT64 v13;
v6 = SwapFileNumber;
for( i = Partition->Vp.PagingFile[(unsigned int)SwapFileNumber];
;
i = Partition->Vp.PagingFile[(unsigned int)PagesToOutSwap] )
{
if( v6 == (_DWORD)PagesToOutSwap || (_DWORD)PagesToOutSwap == 16 )
{
v11 = 1i64;
}
else
{
Size = i->Size;
v11 = (i->_bf_cc & 0x20) != 0 ? Size >> 1 : Size - (Size >> 6);
}
LODWORD(v12) = MiReserveWorkingSetSwapSpaceRuns(
Partition,
NumberOfPages,
v6,
v11,
(_MI_WS_SWAP_RESERVATION_RUN *)ReservationRuns);
if( !v12 )
break;
MiFreeReservationRuns(Partition, (_MI_WS_SWAP_RESERVATION_RUN *)ReservationRuns, v13);
memset(ReservationRuns, 0i64, 0x50u);
if( v6 == (_DWORD)PagesToOutSwap || (unsigned int)PagesToOutSwap >= 0x10 )
{
LODWORD(v12) = -1073741275;
return v12;
}
v6 = PagesToOutSwap;
}
return v12;
}Referenced by:
MmOutSwapVirtualAddresses
MmOutSwapWorkingSet