在C代码中强制使用蓝屏(来自一个简单的驱动程序错误?)

在C代码中强制使用蓝屏(来自一个简单的驱动程序错误?),c,bsod,C,Bsod,可能重复: 你好 我试图在我的C代码中内联一个BSOD。我的主要背景是Java,但很幸运,我得到了一些同事的指导,我正在帮助完成一个简单的C实用程序 有两个部分: 1) 写入硬盘驱动器(我完成了,还不错) 2) 在发送最后一个SCSI写入命令后立即强制显示蓝屏 现在,您可能可以很容易地说出程序的意图 到目前为止,我已经尝试了两件事: 1) 从外部调用pskill.exe(windows实用程序)手动崩溃csrss.exe,这会强制每次出现蓝屏,因为csrss.exe是windows的必需服务。

可能重复:

你好

我试图在我的C代码中内联一个BSOD。我的主要背景是Java,但很幸运,我得到了一些同事的指导,我正在帮助完成一个简单的C实用程序

有两个部分:
1) 写入硬盘驱动器(我完成了,还不错)
2) 在发送最后一个SCSI写入命令后立即强制显示蓝屏

现在,您可能可以很容易地说出程序的意图

到目前为止,我已经尝试了两件事:
1) 从外部调用pskill.exe(windows实用程序)手动崩溃csrss.exe,这会强制每次出现蓝屏,因为csrss.exe是windows的必需服务。这不起作用,因为它不够快。调用外部实用程序花费的时间太长,因此我们需要内联代码来使用写入磁盘部分进行编译,以便足够快地使计算机崩溃

2) 使用windows.h API调用TerminateProcess: 问题是此函数无法结束与系统相关的任务,因此无法关闭csrss.exe

这使我缺乏选择。我需要一个聪明的方法在我们自己的本地代码中杀死csrss.exe而不需要外部调用,或者需要一个聪明的方法在内部代码中强制蓝屏,或者我需要一个非常简单的驱动程序,我可以加载并调用它,它将立即蓝屏显示机器。可以短到一条叫KeBugCheck的电话线


感谢您的时间和投入。

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

  • 取消对空指针的引用,或
  • 除零

  • 最好的办法是编写一个简单的驱动程序,按照您自己的建议进行调用。您可以从中选取最简单的示例,并将其简化为基本内容。

    我建议从系统内部进行编译。

    我现在有点密集,所以,你能解释一下这个程序的意图吗?我猜OP正在开发一个工具来测试硬件对内核停止的恢复能力。目的是检查存储缓存的速度和完整性。在这种情况下,使用远程电源开关可能会很有趣。我们从两个角度来解决这个问题:软件和硬件。最终也会有一个硬件解决方案来解决这个问题。并且使用这个结果(例如,在某个地方打印它)来避免编译器优化它。被零除会导致内核模式停止吗?真正地无论如何,有一个专门的功能来触发停止。OP的问题似乎是,他还没有任何在内核模式下运行的代码。我知道如何做到这两个,但我不确定如何进入“内核”模式,我的同事告诉我,编写一个驱动程序相当困难,所以我正在寻找一个可以加载的简单驱动程序,其唯一目的是BSOD。你是对的——我读了这个问题就像OP已经在内核中运行一样。带有bug检查的驱动程序框架是最直接的方法。刚刚下载了它,我会检查它。谢谢。这里好像有很多代码。速度是至关重要的,所以用我有限的C语言知识将其剥离将是一个挑战。我会把它作为一个可以依靠的东西。可能有很多代码,但我看不出为什么它对于你的需求来说会太慢。重要的是这条路的表现会引起停站。我的猜测是,当您执行停止操作时,大多数其他代码都不会运行。这一点很好。我会再看一看。如果能链接到这个“ddk”,我将不胜感激。谢谢它现在被称为Windows驱动程序工具包,我添加了一个链接,任何websearch引擎都会把你带到那里。谢谢你的帮助。