KeInvalidAccessAllowed
UINT8 __stdcall KeInvalidAccessAllowed(PVOID TrapInformation){
char v1;
char v2;
__int16 v4;
UINT8 IsTraceMemoryAccess;
INT64(*v6)(void);
UINT64 v8;
v2 = v1;
if( !TrapInformation )
return 0;
v4 = *((_WORD *)TrapInformation + 184);
IsTraceMemoryAccess = 0;
if( v4 == 16 )
{
if( (*((_DWORD *)TrapInformation + 94) & 0x200) != 0
|| !KiRspInIstStack(3ui64, *((_QWORD *)TrapInformation + 48)) && !KiRspInIstStack(2ui64, v8) )
{
v6 = ExpInterlockedPopEntrySListFault;
IsTraceMemoryAccess = KiIsTraceMemoryAccess(*((_QWORD *)TrapInformation + 45));
goto LABEL_5;
}
return 0;
}
if( v4 != 51 )
return 0;
v6 = (INT64(*)(void))KeUserPopEntrySListFault;
LABEL_5:
if( (v2 & 1) == 0 && *((INT64(**)(void))TrapInformation + 45) == v6 )
return 1;
return IsTraceMemoryAccess;
}Referenced by:
MiAllowGuardFault
MiCheckSystemPageTables
MiRaisedIrqlFault
MiResolveMappedFileFault
MiResolveProtoPteFault
MiSystemFault
MiValidFault
MmAccessFault