系统蓝屏前后所做的事情

By jingzhongrong

下述过程出自《Windows File System Internals》

首先,关闭所有中断

请求其他的用户节点(在多处理器系统中)停止当前的操作

使用HalDisplayString() 函数答应出错信息

在屏幕上出现蓝色背景的提示,包括BugCheckCode等信息(包括KeBugCheckEx的其他可选参数)

如果有描述BugCheckCode的信息,调用HalDisplayString() 函数显示。

接下来,KeBugCheckEx() 函数会尝试对当前机器状态进行转储。如果有KeBugCheckEx()参数是一个有效的代码地址,那么系统会尝试着打印出包含这个代码地址的映像文件。例程会打印当前执行的操作系统版本并尝试显示已加载的模块列表。能显示多少模块取决于你的显示器所能显示的行数。最后,函数试图转储当前栈,然后停止系统的执行。

 

上面情况是没有调试器连接到当前系统时系统的操作过程,如果有调试器连接到系统,那么KeBugCheckEx() 函数会通过DbgPrint() 将下面信息显示到调试器:

Fatal System Error: 0x%1X (0x%1X,  0x%1X,  0x%1X,  0x%1X)

之后通过DbgBreakPoint() 函数设置断点进入调试器,此时你将会有机会在上面操作继续执行之前对系统当前状态进行检查,查找出错的原因。并选择是否继续执行上述的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值