MiFinishPageFileExtension
VOID __stdcall MiFinishPageFileExtension(
_MI_PARTITION *Partition,
_MMPAGING_FILE *PagingFile,
UINT64 AdditionalAllocation){
INT64 *p_SpinLock;
unsigned __int8 v7;
_MI_PAGING_FILE_SPACE_BITMAPS *Bitmaps;
UINT32 Size;
unsigned __int64 v10;
p_SpinLock = (INT64 *)&PagingFile->SpinLock;
v7 = ExAcquireSpinLockExclusive((INT64 *)&PagingFile->SpinLock);
Bitmaps = PagingFile->Bitmaps;
Size = PagingFile->Size;
v10 = v7;
RtlClearBits(&Bitmaps->AllocationBitmap, PagingFile->Size, AdditionalAllocation);
RtlClearBits(&Bitmaps->ReservationBitmap, Size, AdditionalAllocation);
LOBYTE(Bitmaps) = BYTE2(PagingFile->_bf_cc);
PagingFile->Size += AdditionalAllocation;
PagingFile->FreeSpace += AdditionalAllocation;
PagingFile->FreeReservationSpace += AdditionalAllocation;
++PagingFile->RefreshAllocationCluster;
MiCoalescePageFileBitmapsCache(PagingFile, 0i64, Size);
MiUpdateReserveClusterInfo(PagingFile->Partition, 0i64, 0i64);
ExReleaseSpinLockExclusiveFromDpcLevel(p_SpinLock);
__writecr8(v10);
if( ((unsigned __int8)Bitmaps & 1) == 1 )
KeSetEvent((PRKEVENT)Partition->Modwriter.gap1B8, 0, 0);
}Referenced by:
MiAttemptPageFileExtension