内核APC
线程切换
SwapContext 判断是否有内核APC
KiSwapThread
KiDeliverApc 执行内核APC函数
定位到SwapContext
函数,然后查看KernelApcPending
的值是否为空,不为空则跳转,这里只是进行判断,我们往上跟
然后回到KiSwapContext
再往上走得到KiSwapThread
这里判断后进行跳转
然后调用KiDeliverApc
系统调用、中断或者异常
当要执行用户APC之前,先要执行内核APC,这里找到KiServiceExit
,有一个比较检验UserApcPending
的值是否有APC请求
然后调用KiDeliverApc
内核层APC执行
KiDeliverApc
继续往里面跟,判断内核APC的链表是否为空,若不为空则跳转