2

重複の可能性:
BlueScreen のシミュレート

SOさん、こんにちは。

C コードで何らかの形でインラインで BSOD を誘発しようとしています。私の主なバックグラウンドは Java ですが、幸運なことに何人かの同僚から指導を受け、単純な C ユーティリティを手伝っています。

2 つのセクションがあります:
1) ハード ドライブへの書き込み (私はこれを完了しましたが、それほど悪くはありませんでした)
2) 最後の SCSI 書き込みコマンドを送信した直後にブルー スクリーンを強制します。

これでプログラムの意図を簡単に伝えることができるでしょう。

これまでに2つのことを試しました:
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 を強制終了する巧妙な方法、または内部コードでブルー スクリーンを強制する巧妙な方法が必要です。 . KeBugCheck http://msdn.microsoft.com/en-us/library/ff551948.aspxを呼び出す 1 行と同じくらい短い可能性があります

お時間をいただきありがとうございます。

4

3 に答える 3

2

あなたの最善の策はKeBugCheck()、あなた自身が提案したように呼び出す単純なドライバーを作成することです。Windows Driver Kitから最も単純な例を取り上げて、必要最小限に切り詰めることができます。

于 2011-03-25T20:49:16.353 に答える
2

sysinternals のNot My Faultをお勧めします。

于 2011-03-25T20:54:23.857 に答える
1

カーネル モードで実行しているときにブルー スクリーンを表示するには、次の 2 つの方法があります。

  1. null ポインターを逆参照する、または
  2. ゼロで割る
于 2011-03-25T20:46:44.853 に答える