MiGenerateAccessViolation
BOOL __stdcall MiGenerateAccessViolation(UINT64 *a1){
UINT64 v1;
_QWORD **v2;
unsigned __int64 v3;
_QWORD *v4;
_EPROCESS *Process;
v1 = *a1;
if( MiDeterminePoolType(*a1) == 32 )
return 0;
v2 = (_QWORD **)&unk_140C4C640;
v3 = (unsigned __int8)ExAcquireSpinLockShared(&qword_140C4C638);
while( 1 )
{
v4 = *v2;
while( v4 )
{
if( v1 > v4[4] )
{
v4 = (_QWORD *)v4[1];
}
else
{
if( v1 >= v4[3] )
goto LABEL_14;
v4 = (_QWORD *)*v4;
}
}
if( v2 != (_QWORD **)&unk_140C4C640 )
break;
Process = KeGetCurrentThread()->ApcState.Process;
if( (Process->Flags & 0x10000) == 0 )
break;
v2 = (_QWORD **)((char *)Process->Session + 1008);
}
LABEL_14:
ExReleaseSpinLockSharedFromDpcLevel((PEX_SPIN_LOCK)&qword_140C4C638);
__writecr8(v3);
return v4 != 0;
}Referenced by:
MiCheckSystemPageTables
MiRaisedIrqlFault
MiSystemFault