MiObtainFreePages

VOID __stdcall MiObtainFreePages(_MI_PARTITION *Partition){
  char *WorkingSetControl; 
  _EPARTITION *PartitionObject; 
  INT64 v4; 
  INT64 v5; 
  unsigned __int64 TotalPagesForPagingFile; 
  INT64 v7; 

  WorkingSetControl = (char *)Partition->WorkingSetControl;
  if( WorkingSetControl && WorkingSetControl[52] != 1 )
  {
    PartitionObject = Partition->Core.PartitionObject;
    if( PsReferencePartitionSafe((INT64)PartitionObject) )
    {
      CcNotifyWriteBehindEx((_ETHREAD *)1, (INT64)PartitionObject);
      PsDereferencePartition((INT64)PartitionObject);
    }
    TotalPagesForPagingFile = Partition->Vp.TotalPagesForPagingFile;
    if( Partition->Vp.ModifiedPageListHead.Total - TotalPagesForPagingFile >= 0x10 )
    {
      KeSetEvent((PRKEVENT)Partition->Modwriter.gap160, 0, 0);
      TotalPagesForPagingFile = Partition->Vp.TotalPagesForPagingFile;
    }
    if( TotalPagesForPagingFile >= 0x10 )
      MiWakeModifiedPageWriter(Partition, 0xFFFFFFFFFFFFFFFFui64, v4, v5, v7);
    if( WorkingSetControl[98] )
      KeSetEvent((PRKEVENT)(WorkingSetControl + 96), 0, 0);
  }
}

Referenced by:

MiDecreaseAvailablePages
MiUnlinkFreeOrZeroedPage
MiUnlinkPageFromList
MiWaitForFreePage