gpt4 book ai didi

winapi - 为什么不能从 DllMain 函数调用 CreateProcess?

转载 作者:行者123 更新时间:2023-12-02 17:36:06 26 4
gpt4 key购买 nike

我在多个来源中了解到,CreateProcess 不得从 DllMain 函数中调用。

CreateProcess :

不要从 DllMain 函数调用 CreateProcess。这会导致应用程序停止响应。

Dynamic-Link Library Best Practices :

您永远不应在 DllMain 中执行以下任务:调用创建过程。创建一个进程可以加载另一个DLL。

问题

这是为什么呢?它声明它导致应用程序停止响应,但这只是一个症状。真正的原因是什么?

我问的原因是我尝试从 DllMain 函数创建一个进程,它看起来工作正常。

最佳答案

DllMain 在加载程序锁定时执行。正如您引用的文档所解释的那样,CreateProcess 可能会导致加载 DLL。这可能会导致加载器锁死锁。发生死锁是因为装载程序锁已经被持有。

文档很清楚。不要从 DllMain 调用 CreateProcess。从 DllMain 完成任务的标准方法是创建一个线程来完成工作。尽管您不能等待该线程,因为这会导致完全相同的死锁。

关于winapi - 为什么不能从 DllMain 函数调用 CreateProcess?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26754014/

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