2016-05-06 149 views
4

私のプログラムはWindowsプラットフォームで動作するように設計されています。プログラムは0x40010004コードで終了しますか?

場合によってはエラーで終了することがあります。私はそれがインストールされている各コンピュータでそれをデバッグすることができませんでした。そこでvector例外ハンドラを追加して例外に関する情報をサーバに送信しました。 0xC0000005例外がいくつかありました。私はそれを修正したが、プログラムはまだ終了する(私は自分のPC上でエラーを再現できなかった)。

私は、メインのプロセスハンドルに待機し、別のプログラムを書いて、メインプロセスが終了すると、プロセスの終了コードでレポートを送信します。私は終了コードを見て、そのほとんどは0x40010004DBG_TERMINATE_PROCESS)でした。私は、この終了コードは、デバッガがアプリケーションに接続されて終了したときに表示されることを知っています。私はデバッガがないと確信しています。

だから...これでは他の例は、DBG_TERMINATE_PROCESS終了コードで終了するプロセスができますか?理論面では

答えて

7

TerminateProcessが終了コードパラメータを持っているので、それは、何もすることができます。

実際には、システムシャットダウンの可能性が最も高いです。 Windowsがシャットダウンすると、実行中のプログラムを正常に終了しようとします(詳細はhere)。終了を拒否した場合は、システムによって終了コード0x40010004で終了することがあります。たとえば、モーダルダイアログを表示するGUIプログラムがあり、システムをシャットダウンしようとすると、「xy.exeがシャットダウンを防止しています」というメッセージが表示されます。 「強制終了」をクリックすると、プロセスは終了コード0x40010004で強制終了されます。

これを再現する場合は、アプリケーションのプロセスHANDLEで待機中のプログラムが、のメインアプリケーションより先に終了する可能性があることに注意してください。

関連する問題