我正在尝试制作一个定期记录大量内容的程序。 具体原因是如果它是蓝屏,开发人员可以回去检查很多环境,看看那个时候发生了什么。
我的问题是,他们是一种导致蓝屏的方法吗? 也许有一个windowsAPI调用(ZeroMemory可能?)。
Anywhoo,如果你能想到一种在电话中出现蓝屏的方法,我会很感激。
我正在测试它的计算机是为了拍摄这样的东西哈哈。
顺便说一下,我使用的语言是C \ C ++。 谢谢
答案 0 :(得分:12)
您可以将计算机配置为在击键时崩溃(Ctrl-ScrollLock)
由于某些系统似乎无法在某些带USB键盘的系统上运行,因此您还可以获取Windows调试工具,安装内核调试器,并使用“.crash
”命令强迫一个错误检查。
答案 1 :(得分:6)
为了引起BSOD,在内核模式下运行的驱动程序需要引起它。如果你真的想这样做,你可以编写一个驱动程序,将KeBugCheck暴露给用户模式。
http://msdn.microsoft.com/en-us/library/ms801640.aspx
感谢下面的Andrew指出这个实用程序:
答案 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)