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