KeInvalidAccessAllowed
UINT8 __stdcall KeInvalidAccessAllowed(VOID *TrapInformation){
char v1;
BOOL v2;
char v3;
__int16 v5;
UINT8 IsTraceMemoryAccess;
NTSTATUS(__stdcall *v7)();
int v9;
UINT64 v10;
int v11;
v3 = v1;
if( !TrapInformation )
return 0;
v5 = *((_WORD *)TrapInformation + 184);
IsTraceMemoryAccess = 0;
if( v5 == 16 )
{
if( (*((_DWORD *)TrapInformation + 94) & 0x200) != 0
|| (LOBYTE(v9) = KiRspInIstStack(3ui64, *((_QWORD *)TrapInformation + 48)), !v9)
&& (LOBYTE(v11) = KiRspInIstStack(2ui64, v10), !v11) )
{
v7 = ExpInterlockedPopEntrySListFault;
IsTraceMemoryAccess = KiIsTraceMemoryAccess(*((PRKEVENT *)TrapInformation + 45), v1, v2);
goto LABEL_5;
}
return 0;
}
if( v5 != 51 )
return 0;
v7 = (NTSTATUS(__stdcall *)())KeUserPopEntrySListFault;
LABEL_5:
if( (v3 & 1) == 0 && *((NTSTATUS(__stdcall **)())TrapInformation + 45) == v7 )
return 1;
return IsTraceMemoryAccess;
}Referenced by:
MiAllowGuardFault
MiCheckSystemPageTables
MiRaisedIrqlFault
MiResolveMappedFileFault
MiResolveProtoPteFault
MiSystemFault
MiValidFault
MmAccessFault