就像Linux系统报panic(恐慌)一样,Windows系统只有内核态的代码执行异常才会导致系统蓝屏。其实Windows系统是可以选择忽略错误,但Windows认为原本发生在RAM的错误,如果不终止,很有可能导致更多的错误,且可能影响到Disk存储,造成数据损坏,因此Windows选择了蓝屏显示错误并终止系统。

蓝屏(Window 7系统)

当异常发生在内核态时,系统将捕捉这个异常(由处理器自动跳转至已注册的异常处理函数中),并自动调用KeBugCheckEx函数。调用该函数时,传递了1个stop code(数字)和四个参数(与stop code相关)。我们平常在蓝屏时,在底部看到一行类似的字符串

```

*** STOP:0x000000D1(0xA35DB800,0x0000001C,0x00000000,0x9879C3DD)

```

其实第1个就是stop code,后面是KeBugCheckEx收到的四个参数,第4个参数往往是发生异常的代码地址。在蓝屏顶部还有一个stop code对应文本格式说明,例如“DRIVER_IRQL_NOT_LESS_OR_EQUAL”。

蓝屏(Window 10系统)

接下来,我们来看Windows调用KeBugCheckEx时,该函数都做了什么。

当KeBugCheckEx函数被调用时,该函数将停止所有处理器的中断,然后切换显示为低分辨率的VGA模式,接着绘制蓝色的背景,并显示stop code和说明信息。最后,它将调用两个回调集合:

1. 设备驱动通过KeRegisterBugCheckCallback函数注册的回调函数,以便设备驱动能够有机会停止设备

2. 设备驱动通过KeRegisterBugCheckReasonCallback函数注册的回调函数,以便设备驱动能够将崩溃时的关键信息写到磁盘,形成系统异常dump文件,以便后续的问题分析。这有点类似Android的ANR trace生成机制。

如果知道了系统在蓝屏时都执行的操作,后续如果我们需要在蓝屏时做一些特殊的操作,就只需要写个驱动并注册一个回调函数。比如,有些服务器虚拟化厂商在虚拟机蓝屏时,能够自动截屏,并自动重启系统,估计就是通过这个功能实现。

相关文章链接:

#后期会介绍更多关于Windows, Linux, C语言等相关知识点,以及牛人的工作经验等相关内容,增加你对IT技术的兴趣!

觉得不错,请点赞、分享或收藏↓↓↓

请关注:IT科研室

作者:Kevin一个不端不装有梦有趣的原创文字创作与分享者!

c语言运行时电脑蓝屏,Windows系统蓝屏时系统都在后台做了什么?-系统蓝屏相关推荐

  1. 正在为首次使用计算机做准备黑屏,Windows 10首次启动时意外重启计算机或遇到错误的解决方案...

    monica1_1的博客 03-28 10,000 + 计算机意外重新启动或遇到错误. Windows安装无法继续. 要安装Windows,请单击"确定"以重新启动计算机,然后重新 ...

  2. c语言运行后电脑很卡,如何让电脑提速,电脑卡是什么原因?

    前言 昨天的文章被限制了,正在申诉刚好最近有网友问小编这样一个问题:花了六千买的独显笔记本,用了才一年就卡的不行了,请问电脑卡是什么原因?小编对电脑还算颇有研究,看了网友电脑配置并不算低,导致电脑卡的 ...

  3. c语言运行后电脑很卡,上网看网页电脑弹出安全警报后电脑就很卡很闪该怎办?...

    很多朋友认为电脑弹出安全警报就应该关闭掉通知,上网一卡一卡的应该是网速问题或者内存问题.但是,小编刚刚经历了一次电脑桌面图标异常而且弹出安全警报上网一卡一卡的不说聊天对话框拖拉都卡伤眼睛啊.怎么办?看 ...

  4. C语言运行时电脑白屏怎么办,win10电脑白屏死机无响怎么回事_win10电脑白屏死机无响七种解决方法...

    win10专业版使用一段时间后出现白屏死机的问题,开机后不是登录界面,而是白色屏幕,尝试多次还是一样,怎么办呢?此故障原因无非是硬件或软件两大原因,有什么办法解决呢?此文小编告诉大家解决win10电脑 ...

  5. 装linux时电脑蓝屏如何解决,笔记本电脑开机蓝屏 怎么用u盘安装ubuntu

    笔记本电脑开机蓝屏怎么用u盘安装ubuntu?随着社会的发展,电脑已经成为我们在日常工作.生活中不可或缺的工具.但用久了难免开机蓝屏,遇到这个问题该如何处理呢?下面介绍一下笔记本电脑开机蓝屏的解决方法 ...

  6. 打印的时候计算机出现蓝屏,在电脑打印时电脑总是会蓝屏或重启怎么处理

    电脑蓝屏,又叫蓝屏死机,是微软的 Windows 系列操作系统在无法从一个系统错误中恢复过来时,为保护电脑数据文件不被破坏而强制显示的屏幕图像,最近有小伙伴反映自己在电脑打印时电脑总是会蓝屏或重启,很 ...

  7. 钉钉在线课程开启屏幕共享时电脑蓝屏问题解决办法

    钉钉在线课程开启屏幕共享时电脑蓝屏问题解决办法记录,以免忘记 蓝屏提示:igdpmd64.sys相关的问题... 联想电脑G470: 1. 开机logo处按F2进入BIOS. 2. 将[configu ...

  8. win10系统新电脑用VMware运行Ubuntu电脑就蓝屏死机

    问题描述 win10系统新电脑用VMware运行Ubuntu电脑就蓝屏死机 解决方法 用电脑管家重新下载VMware安装,然后运行Ubuntu.一切正常

  9. w ndows系统开机时黑屏,Windows 7 启动系统后出现黑屏,要怎么解决?

    陈宏斌   2020-6-24 高级软件工程师 概要 电脑黑屏是我们常见的故障之一,那Windows 7启动系统登录后,桌面出现黑屏应该如何解决呢?本文附上原因分析及解决方法. Windows 7启动 ...

  10. c语言运行时隐藏dos窗口

    c语言运行时隐藏dos窗口 只要加一个这个语句就行了. #pragma comment(linker,"/subsystem:"windows" /entry:" ...

最新文章

  1. Opencv实战 | 用摄像头自动化跟踪特定颜色物体
  2. python 的文件目录拷贝转移,自动递归目录建立目录
  3. Redmine+Apache+SVN+Postfix完整配置指南
  4. 微型计算机的内存主要包括rom,信息安全技术题库:路由器硬件组件主要包括( )、闪存、ROM、RAM。 - 作业在线问答...
  5. 各个企业创始人记录--【持续更新中!!!】
  6. 休眠事实:有利于双向集vs列表
  7. java usb 无驱打印_Windows Usb 无驱动打印
  8. [css] 请描述css的权重计算规则
  9. 前端必须掌握的经典布局:“双飞翼布局”
  10. 2017福建夏令营Day7(数论)
  11. 程序员的修炼之道——从小工到专家
  12. qq等级查询php源码,最新沉沦QQ等级代挂系源码统开源分享
  13. 玩转树莓派(六) 部署Seafile搭建私有云
  14. B - Restore Modulo
  15. 项目管理必备工具——甘特图
  16. python数据处理--按照数据差值大小进行聚类(归类)
  17. 键盘辅助功能指南:JavaScript
  18. Agg在Windows下的编译与使用
  19. 2维旋转矩阵的推导方式
  20. 样本均值方差的期望的推导

热门文章

  1. CAD命令栏不见了怎么调出来?CAD命令行调出教程
  2. 2021农行研发中心面试题总结
  3. FFmpeg将音频、无音频的视频合并为视频
  4. CPU与GPU协同工作
  5. python3读取python2的npy文件
  6. 矩阵乘法 mpi c语言,MPI实现矩阵相乘
  7. 从毕业生到高级工程师:三位腾讯高级程序员的感悟
  8. 丰巢人工智能刷脸取件被小学生破解
  9. python图片转换成文字_在python中将图像转换为字节文字 - python
  10. Sunshine 项目构思