可能重复:
Simulating a BlueScreen
你好,
我试图在我的C代码中以某种方式内联BSOD。我的主要背景是Java,但很幸运能够得到一些同事的辅导,并且正在帮助使用简单的C工具。
有两个部分:
1)写入硬盘(我完成了这个,并不是太糟糕)
2)在发送最后一个SCSI写命令后立即强制蓝屏
你现在可以轻松地告诉程序的意图。
到目前为止,我尝试了两件事:
1)外部调用pskill.exe(Windows实用程序)手动崩溃csrss.exe,每次强制蓝屏,因为csrss.exe是Windows的必需服务。这不起作用,因为它不够快。对外部实用程序的调用花费的时间太长,因此我们需要内联代码来使用“写入磁盘”部分进行编译,以便足够快地使计算机崩溃。
2)使用windows.h API调用TerminateProcess:http://msdn.microsoft.com/en-us/library/ms686714%28v=vs.85%29.aspx 问题是这个函数无法结束系统相关的任务,因此无法关闭csrss.exe
这让我对选项不满意。我需要一个聪明的方法来杀死我们自己的本机代码中的csrss.exe而无需外部调用或在内部代码强制蓝屏的巧妙方法或者我需要一个非常简单的驱动程序我可以加载和调用它会立即蓝屏。可以短至1行调用KeBugCheck http://msdn.microsoft.com/en-us/library/ff551948.aspx
感谢您的时间和意见。
答案 0 :(得分:2)
你最好的办法就是写一个琐碎的司机,按你自己的建议打电话KeBugCheck()
。您可以从Windows Driver Kit中获取最简单的示例,并将其剪切为准系统。
答案 1 :(得分:2)
我推荐来自sysinternals的Not My Fault。
答案 2 :(得分:1)
在内核模式下运行时,有两种方法可以获得蓝屏: