您的位置:首页 > 其它

windows内核情景分析之进入与退出系统空间过程

2015-06-05 22:52 260 查看

windows内核情景分析之进入与退出系统空间过程

以下为看书和结合自己的理解所写,如有错误,请指正!

在windows操作系统中,要想进入系统空间,有三种方式——自陷,中断,异常,通过这三种方式进入系统空间后(通过中断向量表找到中断例程),都会经过一个预处理函数,这个预处理函数用来保留上下文,拷贝参数等,同时也都会调用HalBeginSystemInterrupt函数

BOOLEAN
HalBeginSystemInterrupt(
IN KIRQL Irql
IN CCHAR Vector,
OUT PKIRQL OldIrql)


这个函数的作用是判断中断处理函数的Irql是否大于当前的Irql,如果小于或者等于,则返回false;如果大于,则提升当前Irql到中断处理函数的Irql,然后调用中断处理函数,处理完后会调用HalEndSystemInterrupt(),调用这个函数时必须是关中断的。这个函数和所有 KfLowerIrql功能差不多,就是降低当前IRQL,但是也有不同的地方,当Irql要被降到APC_lever以下时,如果APC链表不为空,KfLowerIrql会调用 KiDeliverApc(KernelMode, NULL, NULL)触发apc执行,而处理完后会调用HalEndSystemInterrupt只会判断所要降到的目标irql是否小于DISPATCH_LEVER,如果是就会触发dpc的执行,而不会去判断所要降到的目标irql是否小于APC_lever

随后,当要退出系统空间到用户空间时,要必须执行一段代码,要来触发apc的执行。





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: