MiClusterVadFull
NTSTATUS __stdcall MiClusterVadFull(_MMPFN *Pfn1, _SUBSECTION *Subsection){
unsigned __int64 v2;
signed __int64 v3;
_MMPTE *SubsectionBase;
unsigned __int64 v5;
union {$8D9ED47C9F2F2CD645B633E301950288 __s0;unsigned __int64 EntireField;} *p_u4;
unsigned int v7;
unsigned __int64 v8;
v2 = Pfn1->PteLong | 0x8000000000000000ui64;
v3 = Pfn1 - MmGetPfnDb();
if( Subsection )
{
SubsectionBase = Subsection->SubsectionBase;
if( v2 < (unsigned __int64)SubsectionBase
|| v2 >= (unsigned __int64)&SubsectionBase[Subsection->PtesInSubsection - (Subsection->_bf_34 & 0x3FFFFFFF)] )
{
return 0;
}
v5 = (__int64)(v2 - (_QWORD)SubsectionBase) >> 3;
}
else
{
v5 = (unsigned __int64)LODWORD(Pfn1->PteLong) >> 3;
}
if( (((unsigned __int8)v5 ^ (unsigned __int8)v3) & 0xF) == 0 )
{
p_u4 = &Pfn1[1].u4;
v7 = 1;
v8 = v2 + 8;
while( (p_u4[-4]._bf_0 | 0x8000000000000000ui64) == v8
&& (p_u4->_bf_0 & 0xFFFFFFFFFi64) == (Pfn1->u4._bf_0 & 0xFFFFFFFFFi64) )
{
v8 += 8i64;
++v7;
p_u4 += 6;
if( v7 >= 0x10 )
return 1;
}
}
return 0;
}Referenced by:
MiPfnsWorthTrying
MiTrimSharedPage