gpt4 book ai didi

windows - 当可以使用 __ImageBase 或 GetModuleHandleEx() 检索时,为什么框架存储自己的 HMODULE?

转载 作者:可可西里 更新时间:2023-11-01 09:48:44 25 4
gpt4 key购买 nike

This question询问如何检索包含当前执行代码的 DLL 的句柄。 A link在其中一个 answers建议取 __ImageBase 的地址作为模块句柄。这对我有用。

我的问题是:鉴于检索当前模块的句柄如此简单,为什么像 MFC 这样的框架(甚至我继承的代码库)通常存储传递给 DllMain() 的实例句柄?在一些全局变量中?有没有理由不依赖 __ImageBase

编辑:根据Raymond Chen , __ImageBase仅适用于 Microsoft 链接器。有 another question有更精确的答案,包括使用 GetModuleHandleEx() 的独立于链接器的方式.对于 Win2000 和更早版本,还有一个使用 VirtualQuery() 的解决方案.问题仍然有效:既然可以轻松检索基地址,为什么还要保存基地址?

最佳答案

__ImageBaseMicrosoft linker 提供的技巧并且可能不适用于其他编译器/链接器。即使该框架不支持其他工具集,他们也可能不知道这个魔法符号,所以这可能就是它使用不多的原因。

同样的事情可以在纯 WinAPI 中使用 VirtualQueryGetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,...)

关于windows - 当可以使用 __ImageBase 或 GetModuleHandleEx() 检索时,为什么框架存储自己的 HMODULE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9371376/

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