gpt4 book ai didi

winapi - 如何检查我的代码是否在 DllMain 中执行

转载 作者:行者123 更新时间:2023-12-01 11:00:21 25 4
gpt4 key购买 nike

我正在为某个系统编写一个插件,但是有一些行为不端的应用程序在 dll 初始化期间调用了我的插件(来自 DllMain 或 InitInstance,它是 DllMain 的包装器)。

我想知道是否有办法找出代码是否在 DllMain 中执行。我不想优雅地失败而不导致死锁(我的插件正在执行的代码涉及 dll 加载、线程创建和等待事件,如果在 DllMain 中执行会导致死锁)。

我知道 CreateThread 在 DllMain 退出之前不会执行,但是我无法从另一个线程进行初始化,因为它涉及 COM。

最佳答案

实际上,您需要一种查看加载程序锁定状态的方法,但是 Windows API 不允许这样做,因为它不会以任何方式公开加载程序锁定。即使您能够获得锁定状态,您也无法保证它在后续代码的执行过程中保持不变——您将不得不获取它,这超出了整个目的,因为这是您想要避免的事情.

所以据我所知,解决这个问题的唯一实用方法是记录你的插件并禁止 DllMain() 的使用。如果这意味着某些组件所有者将不得不对其 DLL 初始化进行轻微的重新设计,那么就这样吧。

关于winapi - 如何检查我的代码是否在 DllMain 中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5562759/

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