MiResetAccessBitPte
NTSTATUS __fastcall MiResetAccessBitPte(INT64 a1, UNICODE_STRING *a2, ULONG *a3, PVOID *a4, _BYTE *a5){
__int64 v5;
int v6;
_MMSUPPORT_INSTANCE *v7;
UINT64 v9;
_QWORD *v11;
__int64 v12;
UINT64 *v13;
unsigned __int64 v14;
int VaAge;
int v17;
INT64 v18;
unsigned __int64 v19;
INT64 v20;
INT64 v21;
UINT64 v22;
v5 = *(_QWORD *)(a1 + 168);
v6 = (int)a3;
v7 = *(_MMSUPPORT_INSTANCE **)(a1 + 24);
v9 = *(_QWORD *)&a2->Length;
v22 = v9;
if( (v9 & 0x20) == 0 )
return 0;
MiPteInShadowRange((UINT64)&v22);
v11 = (_QWORD *)((char *)MmGetPfnDb() + 48 * ((v9 >> 12) & 0xFFFFFFFFFi64));
if( v6 )
{
if( (v11[3] & 0x3FFFFFFFFFFFFFFFi64) != 1 || (unsigned int)MiIsPageTableLocked((INT64)v7, (UINT64)a2) )
return 0;
}
if( (v11[5] & 0x1000000000i64) == 0 )
{
v12 = v11[1];
if( v12 > 0 )
MiDemoteCombinedPte(v7, (_MMPTE *)a2, (_MMPTE *)(v12 | 0x8000000000000000ui64));
}
v13 = *(UINT64 **)(v5 + 16);
v14 = (__int64)(((_QWORD)a2 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
if( !v13 || v14 > 0x7FFFFFFEFFFFi64 )
{
VaAge = (unsigned __int8)MiGetVaAge((INT64)v13, v14);
if( VaAge == 7 && (unsigned int)MiGetPfnPriority((INT64)v11) < dword_140C4E56C )
{
v17 = 0;
}
else
{
v17 = 1;
if( (unsigned int)(VaAge - 1) <= 5 )
MiSetVaAgeList((INT64)v7, v14, (UINT8 *)1, 0);
}
v18 = *(_QWORD *)(v5 + 8);
LODWORD(v21) = 0;
LODWORD(v20) = *(_DWORD *)v5;
if( !(unsigned int)MiClearPteAccessed((INT64)v7, (INT64)v11, (UINT64)a2, v18, v20, v21) )
return 0;
if( v17 == 1 && *(_DWORD *)v5 )
{
if( !v18 )
{
MiLogPageAccess((INT64)v7, (UINT64)a2);
return 0;
}
}
else if( !v18 )
{
return 0;
}
v19 = qword_140C4DCD0;
if( (*(_BYTE *)(v18 + 4) & 2) == 0
&& *(_DWORD *)v18 == 1
&& *(_QWORD *)(*((_QWORD *)KeGetCurrentThread() + 23) + 2288i64) )
{
v19 = -1i64;
}
if( (*(_DWORD *)(v18 + 12) >= *(_DWORD *)(v18 + 8) || *(_BYTE *)(v18 + 5) || *(_QWORD *)(v18 + 16) > v19)
&& v19 >= 0x400
&& !*(_BYTE *)(v18 + 5) )
{
MiFlushTbList(v18);
}
return 0;
}
if( (unsigned int)MiInsertVmAccessedEntry(v13, v14) )
return MiResetAccessBitsTail(a1);
return 0;
}Referenced by:
No references.