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的执行。
相关文章推荐
- 2015,我依然幸福生活在北师大的2015
- Contains Duplicate II
- 冒泡排序
- 2013能量篇终止,2014精致篇起航
- windows内核情景分析之—— KeRaiseIrql函数与KeLowerIrql()函数
- MVC模型
- 写一些,给2013
- Jquery核心函数
- windows内核情景分析之——APC的执行
- Android下网络请求的两个封装类
- 严重: StandardServer.await: create[8005]:
- LeetCode——Median of Two Sorted Arrays
- 说说健身这件小事儿
- 我在寻求工作治理的方法(转)
- GitHub for Windows安装失败
- 【eclipse】【插件】myeclipse10 离线安装aptana插件
- Python快速入门(5)
- 转发:C#加密方法汇总
- 第二次冲刺——第二次总结
- 时间秒数转成时间格式