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

本文探讨了Windows操作系统中进入和退出系统空间的过程,重点介绍了通过自陷、中断和异常进入系统空间的方法,并详细解析了HalBeginSystemInterrupt函数的功能及其实现机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的执行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值