我正在尝试制作一个能定期logging一大堆东西的程序。 具体的原因是,如果蓝屏,开发人员可以回去检查很多环境,看看那个时候发生了什么。
我的问题,是他们导致bluescreen的一种方式? 也许用一个windowsAPI调用(ZeroMemory也许?)。
任何人,如果你可以想办法引起一个蓝屏的电话,我会感激。
我正在testing这台计算机的目的是要采取像这样的东西哈哈。
顺便说一下,我使用的语言是C \ C ++。 谢谢
您可以配置一台机器在按键上崩溃(Ctrl-ScrollLock)
由于有些时候在某些使用USB键盘的系统上无法正常工作,因此您还可以获取Windows调试工具,安装内核调试程序,并使用“ .crash
”命令强制执行错误检查。
为了导致BSOD,以内核模式运行的驱动程序需要导致它。 如果你真的想这样做,你可以写一个驱动程序,暴露KeBugCheck usermode。
http://msdn.microsoft.com/en-us/library/ms801640.aspx
感谢下面的Andrew指出这个工具:
如果你杀了csrss进程,你会很快得到一个蓝屏。
如果你想模拟像bluescreen这样的硬碰撞,你几乎不得不抽出电源线。 不建议。
在发生崩溃的情况下,任何未保存到永久存储的内容都将丢失。 如果您想为了记录而模拟崩溃,请在记录器中写入“kill switch”,以停止记录。 现在,您可以通过查看日志记录来模拟崩溃,并确保在发生实际崩溃的情况下获得所需的数据。
首先,我建议你使用虚拟机来测试这个蓝屏 。 这将允许您保留一个备份,以防蓝屏会对系统造成一定的损害。 这里有一个关于如何简单地通过按下CTRL + SCROLLLOCK + SCROLLLOCK来产生BSOD的提示 。
有没有一个Windows API来生成一个? 不,根据这篇文章 。 不过,如果你打电话给某些API的无效数据,他们仍然可能导致内核崩溃,这将导致你的BSOD。
我不确定你会测试什么。 既然你的程序是周期性运行的,那么当系统正在运行的时候,检查信息是否按照你指定的频率转储就足够了。 您是否在蓝屏后查看信息? 根据你如何倾销它(以及你是否冲洗缓冲区),这可能不是必要的。
如果你不想写代码(驱动程序,IOCTL …),你可以使用DiskCryptor 。 请注意,不需要磁盘加密。
只需要安装驱动程序:
dcinst.exe -setup
然后使用DC控制台生成一个bsod:
dccon.exe -bsod