2

私は、管理されていないユーザーモードのWindowsプロセスが「クラッシュ」する方法を理解しようとしています(これは、実際にはあまりにも多くの包括的な用語です)。

これまでに私が知っている方法は次のとおりです。

  • 未処理の構造化例外
    • デフォルトのUnhandledExceptionFilter:pre-Vistaの事後デバッガ。Vista+のWerFault
    • カスタムUnhandledExceptionFilter:静かに終了するなど、好きなことを実行できますか?
  • 「ハード」クラッシュ(これに専門用語があるかどうかはわかりません)
    • たとえば、スタックオーバーフローの処理中にスタックオーバーフローガードページにアクセスする:OSは、トレースなしでプロセスを単に非表示にしますか?
  • 「通常の」終了:
    • たとえば、言語が独自のエラー処理メカニズムを提供し、アプリケーションが正常にシャットダウンしたように、致命的なクラッシュをOSに見せます。

これは大まかに正しいですか?ユーザーモードのWindowsプロセスを終了させる他の方法はありますか?

4

1 に答える 1

2
  • 未処理の例外-これは通常、人々が「クラッシュ」と呼ぶものです
  • スタックが破損した場合の例外-スタックが破損していて例外チェーンをウォークできない場合、プロセスはサイレントに強制終了されます。
  • 明示的な終了
    • TerminateProcessを呼び出す別のプロセス(TaskManager、kill.exeなど)から、
    • C / C ++ランタイムの致命的なエラー、/GSスタックCookieの破損など。
  • デバッガーを接続し、切り離さずにデバッガーを終了します
  • 対応するconhost.exeプロセスを強制終了すると、コンソールアプリケーションが終了します
于 2011-01-28T22:35:12.480 に答える