MiFlushAcquire

VOID __fastcall MiFlushAcquire(_CONTROL_AREA *ControlArea, _SUBSECTION *Subsection, _SUBSECTION *LastSubsection){
  INT64 *p_ControlAreaLock; 
  unsigned __int64 v7; 
  unsigned __int64 NumberOfMappedViews; 

  p_ControlAreaLock = (INT64 *)&ControlArea->ControlAreaLock;
  v7 = (unsigned __int8)ExAcquireSpinLockExclusive((INT64 *)&ControlArea->ControlAreaLock);
  NumberOfMappedViews = ControlArea->NumberOfMappedViews;
  if( NumberOfMappedViews == -1i64 )
  {
    ExReleaseSpinLockExclusiveFromDpcLevel(p_ControlAreaLock);
  }
  else
  {
    if( Subsection )
    {
      MiReferenceSubsection(Subsection, 0i64);
      MiReferenceSubsection(LastSubsection, 0i64);
      NumberOfMappedViews = ControlArea->NumberOfMappedViews;
    }
    ControlArea->NumberOfMappedViews = NumberOfMappedViews + 1;
    ExReleaseSpinLockExclusiveFromDpcLevel(p_ControlAreaLock);
  }
  __writecr8(v7);
}

Referenced by:

MmFlushVirtualMemory