MiRemoveViewsFromSection
NTSTATUS __stdcall MiRemoveViewsFromSection(_SUBSECTION *Subsection, UINT64 LastPteOffset){
unsigned int v2;
unsigned int v3;
_SUBSECTION *v5;
__int64 v6;
void *Object;
__int64 v8;
UINT64 v9;
UINT64 PtesInSubsection;
__int64 v12;
unsigned int v13;
v3 = v2;
v5 = Subsection;
v6 = 0i64;
Object = Subsection->ControlArea->FilePointer.Object;
do
{
LODWORD(v8) = MiDecrementSubsectionViewCount((_MSUBSECTION *)v5);
v6 += v8;
if( Object && !*(_QWORD *)&v5[1].NumberOfFullSectors && (v5->u.SubsectionFlags._bf_2 & 1) == 0 )
{
LODWORD(v12) = MiInsertUnusedSubsection((_MSUBSECTION *)v5, v9);
v6 += v12;
}
if( LastPteOffset )
{
PtesInSubsection = v5->PtesInSubsection;
if( LastPteOffset <= PtesInSubsection )
return v6;
LastPteOffset -= PtesInSubsection;
}
v5 = v5->NextSubsection;
v13 = v3 & 0xFFFFFFF7;
if( Object )
v13 = v3;
v3 = v13;
}
while( v5 );
return v6;
}Referenced by:
MiConvertStaticSubsections
MiRemoveMappedPtes
MiRemoveSystemCacheReferences
MiRemoveViewsFromSectionWithPfn
MmUnmapViewInSystemCache