模拟蓝屏

时间:2009-03-20 19:20:41

标签: c++ windows crash bsod

我正在尝试制作一个定期记录大量内容的程序。 具体原因是如果它是蓝屏,开发人员可以回去检查很多环境,看看那个时候发生了什么。

我的问题是,他们是一种导致蓝屏的方法吗? 也许有一个windowsAPI调用(ZeroMemory可能?)。

Anywhoo,如果你能想到一种在电话中出现蓝屏的方法,我会很感激。

我正在测试它的计算机是为了拍摄这样的东西哈哈。

顺便说一下,我使用的语言是C \ C ++。 谢谢

8 个答案:

答案 0 :(得分:12)

您可以将计算机配置为在击键时崩溃(Ctrl-ScrollLock)

由于某些系统似乎无法在某些带USB键盘的系统上运行,因此您还可以获取Windows调试工具,安装内核调试器,并使用“.crash”命令强迫一个错误检查。

答案 1 :(得分:6)

为了引起BSOD,在内核模式下运行的驱动程序需要引起它。如果你真的想这样做,你可以编写一个驱动程序,将KeBugCheck暴露给用户模式。

http://msdn.microsoft.com/en-us/library/ms801640.aspx

感谢下面的Andrew指出这个实用程序:

http://download.sysinternals.com/files/NotMyFault.zip

答案 2 :(得分:4)

如果你杀死csrss进程,你会很快得到一个蓝屏。

答案 3 :(得分:1)

如果你想模拟一个像蓝屏一样的硬碰撞,你几乎不得不拉电源线。不推荐。

如果发生崩溃,任何未保存到持久存储的内容都将丢失。如果要为了记录而模拟崩溃,请在记录器中写入“kill switch”,以停止记录。现在,您可以通过终止日志记录来模拟崩溃,并确保您拥有在实际崩溃时可能需要的数据。

答案 4 :(得分:1)

首先,我建议您使用虚拟机来测试此BSOD。这将允许您保留备份,以防BSOD对系统造成一些损害。以下是有关如何生成BSOD simply by pressing CTRL+SCROLLLOCK+SCROLLLOCK的提示。

是否有Windows API生成一个?不,根据this article。但是,如果您使用无效数据调用某些API,它们仍然可能导致内核崩溃,从而导致您的BSOD。

答案 5 :(得分:0)

我不确定你要测试的是什么。由于您的程序是定期运行的,因此在系统运行时,检查信息是否以您指定的频率进行转储是否足够?您是否在蓝屏后检查信息是否存在?根据您的转储方式(以及是否正在刷新缓冲区),这可能没有必要。

答案 6 :(得分:0)

如果您不想编写代码(驱动程序,IOCTL ...),可以使用DiskCryptor。请注意,不需要磁盘加密。

只需要安装驱动程序:

  

dcinst.exe -setup

然后使用DC控制台生成一个bsod:

  

dccon.exe -bsod

答案 7 :(得分:0)