MiAllowGuardFault
_BOOL8 __fastcall MiAllowGuardFault(unsigned __int64 a1){
_ETHREAD *CurrentThread;
unsigned __int64 v2;
_BYTE *v3;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
if( CurrentThread->Tcb.ApcStateIndex == 1 )
return 0i64;
v2 = a1 & 1;
v3 = (_BYTE *)(a1 & 0xFFFFFFFFFFFFFFFEui64);
if( (a1 & 1) == 0 )
goto LABEL_3;
if( *v3 == 1 )
goto LABEL_11;
if( (a1 & 1) == 0 )
{
LABEL_3:
if( KeInvalidAccessAllowed((VOID *)a1) != 1 )
return(CurrentThread->Tcb._bf_0 & 0x20) == 0;
LABEL_11:
if( !v2 || *v3 != 6 )
return 0i64;
return(CurrentThread->Tcb._bf_0 & 0x20) == 0;
}
if( *v3 == 3 || *v3 == 6 )
goto LABEL_11;
return(CurrentThread->Tcb._bf_0 & 0x20) == 0;
}Referenced by:
MiAccessCheck
MiResolveProtoPteFault
MiUserFault
MiZeroFault