gpt4 book ai didi

windows - 使用 TerminateProcess 时到底有什么风险?

转载 作者:可可西里 更新时间:2023-11-01 13:27:47 24 4
gpt4 key购买 nike

我的 Win32 控制台应用程序使用第三方库。在它退出 WinMain 全局对象后,破坏开始并且 AV 发生在内部深处的某个地方。我真的很想写

TerminateProcess( GetCurrentProcess(), 0 );

WinMain 末尾附近的某个地方。如果我这样做,应用程序将正常结束。

但是MSDN says这样做会损害由动态链接库 (DLL) 维护的全局数据的状态,这一点尚不清楚。我知道如果我有一些全局对象,它的析构函数不会运行,我就有可能无法完成数据库连接或类似的事情。我的程序中没有类似的东西。

使用 TerminateProcess 到底有什么风险?如何确定我是否可以将其用于我的目的?

最佳答案

根据它和 ExtiProcess 的文档,似乎主要的问题是 DLL 在没有调用带有标志 DLL_PROCESS_DETACH 的 DllMain 的情况下被卸载。

我的 2cents:文档是偏执的,你会扰乱一些在 DllMain + DLL_PROCESS_DETACH 中运行的关键操作。任何依赖它来维持临界状态的人都已经受到任务管理器的支配,所以我认为使用这个 API 不会有很大的风险。

关于windows - 使用 TerminateProcess 时到底有什么风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1276223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com