在哪些情况下程序会以 0x40010004 代码退出?
In which cases does program exit with 0x40010004 code?
我的程序是为 运行 在 Windows 平台上设计的。
有时它会因错误而终止。我无法在安装它的每台计算机上调试它;所以我向它添加了矢量异常处理程序,它向服务器发送一些关于异常的信息。有一些 0xC0000005
个例外;我修复了它,但程序仍然终止(我无法在我的电脑上重现错误)。
我写了另一个程序,它等待主进程句柄,并在主进程终止时发送带有进程退出代码的报告。我查看了退出代码,其中大部分是 0x40010004
(DBG_TERMINATE_PROCESS
)。我知道当调试器附加到应用程序然后终止它时会出现此退出代码;但我确定没有调试器。
所以...在哪些其他情况下可以使用 DBG_TERMINATE_PROCESS
退出代码终止进程?
理论上它可以是任何东西,因为 TerminateProcess
有一个退出代码参数。
从实际情况来看,很有可能是系统关机造成的。当 Windows 关闭时,它会尝试正常退出 运行 程序(关于 here 的更多信息)。如果他们拒绝退出,他们可能会被系统终止,退出代码为 0x40010004
。例如,如果您有一个显示模态对话框的 GUI 程序,然后您尝试关闭系统,系统将提示您一条消息 "xy.exe is preventing shutdown"。如果单击 "Force shutdown",进程将被终止,退出代码为 0x40010004
。
如果您尝试重现此问题,请注意等待您的应用程序进程 HANDLE
的程序可能会在 您的主应用程序之前终止。
使用Windows 任务计划程序,将脚本设置为在用户登录时启动。如果设置为系统启动会报错,因为时间太早了。
我的程序是为 运行 在 Windows 平台上设计的。
有时它会因错误而终止。我无法在安装它的每台计算机上调试它;所以我向它添加了矢量异常处理程序,它向服务器发送一些关于异常的信息。有一些 0xC0000005
个例外;我修复了它,但程序仍然终止(我无法在我的电脑上重现错误)。
我写了另一个程序,它等待主进程句柄,并在主进程终止时发送带有进程退出代码的报告。我查看了退出代码,其中大部分是 0x40010004
(DBG_TERMINATE_PROCESS
)。我知道当调试器附加到应用程序然后终止它时会出现此退出代码;但我确定没有调试器。
所以...在哪些其他情况下可以使用 DBG_TERMINATE_PROCESS
退出代码终止进程?
理论上它可以是任何东西,因为 TerminateProcess
有一个退出代码参数。
从实际情况来看,很有可能是系统关机造成的。当 Windows 关闭时,它会尝试正常退出 运行 程序(关于 here 的更多信息)。如果他们拒绝退出,他们可能会被系统终止,退出代码为 0x40010004
。例如,如果您有一个显示模态对话框的 GUI 程序,然后您尝试关闭系统,系统将提示您一条消息 "xy.exe is preventing shutdown"。如果单击 "Force shutdown",进程将被终止,退出代码为 0x40010004
。
如果您尝试重现此问题,请注意等待您的应用程序进程 HANDLE
的程序可能会在 您的主应用程序之前终止。
使用Windows 任务计划程序,将脚本设置为在用户登录时启动。如果设置为系统启动会报错,因为时间太早了。