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