在哪些情况下程序退出0x40010004代码?

时间:2016-05-06 18:16:42

标签: windows debugging terminate

我的程序旨在在Windows平台上运行。

有时会因错误而终止。我无法在安装它的每台计算机上调试它;所以我向它添加了向量异常处理程序,它向服务器发送一些有关异常的信息。有一些0xC0000005例外;我修复了它,但程序仍然终止(我无法在我的电脑上重现错误)。

我编写了另一个程序,它等待主进程句柄,并在主进程终止时发送带有进程退出代码的报告。我查看了退出代码,其中大部分都是0x40010004DBG_TERMINATE_PROCESS)。我知道当调试器附加到应用程序然后终止它时,会出现此退出代码;但我确信没有调试器。

那么......使用DBG_TERMINATE_PROCESS退出代码可以处理哪些其他情况?

1 个答案:

答案 0 :(得分:10)

理论上它可以是任何东西,因为TerminateProcess有一个退出代码参数。

在实际方面,这很可能是由于系统关闭造成的。当Windows关闭时,它会尝试正常退出正在运行的程序(更多内容是here)。如果他们拒绝退出,系统可能会使用退出代码0x40010004终止它们。例如,如果您有一个显示模式对话框的GUI程序,然后您尝试关闭系统,系统将提示您“xy.exe正在阻止关机”。如果单击“强制关闭”,则将使用退出代码0x40010004终止该过程。

如果您尝试重现此操作,请注意等待应用程序进程HANDLE的程序可能会在主应用程序之前终止。