MiAttemptPageFileReduction

VOID __stdcall MiAttemptPageFileReduction(_MMPAGE_FILE_EXPANSION *Request){
  _MI_PARTITION *Partition; 
  __int64 v3; 
  unsigned __int8 v4; 
  unsigned __int64 v5; 
  __int64 *v6; 
  _MMPAGING_FILE **PagingFile; 
  __int64 v8; 
  _MMPAGING_FILE *v9; 
  __int64 FileInformation; 
  char v11[96]; 
  __int64 v12[14]; 

  FileInformation = 0i64;
  memset(v11, 0i64, 0x58u);
  memset(v12, 0i64, 0x68u);
  HIDWORD(v12[0]) = 0;
  Partition = Request->Partition;
  v3 = 16i64;
  v12[2] = (__int64)&v12[1];
  v12[1] = (__int64)&v12[1];
  BYTE2(v12[0]) = 6;
  v12[3] = (__int64)Partition;
  if( (Request->u1.Flags._bf_3 & 0x10) != 0 )
  {
    v4 = ExAcquireSpinLockExclusive((INT64 *)&Partition->Segments.SegmentListLock);
    Request->RequestedExpansionSize = 0i64;
    v5 = v4;
    ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&Partition->Segments.SegmentListLock);
    __writecr8(v5);
    if( !MiOkToShrinkPageFiles(Partition->Vp.TotalCommittedPages, Partition->Vp.TotalCommitLimit) )
      return;
    LODWORD(v12[4]) = 16;
  }
  else
  {
    LODWORD(v12[4]) = Request->u1.Flags.PageFileNumber;
    HIDWORD(v12[4]) = Request->ActualExpansion;
  }
  MiQueueSyncModifiedWriterApc((__int64)Partition, (INT64)v11, (INT64)MiAttemptPageFileReductionApc, (INT64)v12, v12);
  v6 = &v12[5];
  PagingFile = Partition->Vp.PagingFile;
  do
  {
    v8 = *(unsigned int *)v6;
    if( (_DWORD)v8 )
    {
      v9 = *PagingFile;
      FileInformation = v8 << 12;
      IoSetInformation(v9->File, FileAllocationInformation, 8ui64, &FileInformation);
    }
    ++PagingFile;
    v6 = (__int64 *)((char *)v6 + 4);
    --v3;
  }
  while( v3 );
}

Referenced by:

MiProcessDereferenceList