用户层异常与内核层异常
异常可以发生在用户空间,也可以发生在内核空间。
无论是CPU异常还是模拟异常,是用户层异常还是内核异常,都要通过 KiDispatchException函数进行分发,这个函数比较复杂。
VOID KiDispatchException (
IN PEXCEPTION_RECORD ExceptionRecord,
IN PKEXCEPTION_FRAME ExceptionFrame,
IN PKTRAP_FRAME TrapFrame,
IN KPROCESSOR_MODE PreviousMode,
IN BOOLEAN FirstChance //TRUE第一次处理该异常,FALSE不是第一次
)