2

可能重复:
模拟蓝屏

你好,

我试图在我的 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

感谢您的时间和投入。

4

3 回答 3

2

最好的办法是编写一个简单的驱动程序,KeBugCheck()按照您自己的建议进行调用。您可以从Windows 驱动程序工具包中获取最简单的示例并将其简化为准系统。

于 2011-03-25T20:49:16.353 回答
2

我从 sysinternals推荐Not My Fault 。

于 2011-03-25T20:54:23.857 回答
1

以下是在内核模式下运行时出现蓝屏的两种方法:

  1. 取消引用空指针,或
  2. 除以零
于 2011-03-25T20:46:44.853 回答