gpt4 book ai didi

c++ - 如何知道从哪个DLL加载的方法

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

在两个DLL A.dll 和B.dll 中定义了一个公共(public)方法foo()。现在,当进程 proc.exe 加载两个 DLL 并从两个线程同时调用 foo() 方法时。有什么方法可以知道 foo() 在运行时是从哪个 DLL A.dll 或 B.dll 加载的。我需要此信息用于记录目的。我在互联网上找不到任何相关内容。

GetModuleFileName()将返回进程名称 proc.exe 而不是 Dll 名称。

最佳答案

假设您有函数的地址,您应该能够使用以下内容来确定模块的基址。

HMODULE ModuleFromAddress(void *address)
{
MEMORY_BASIC_INFORMATION mbi;
if (VirtualQuery(address, &mbi, sizeof(mbi)) != 0)
return (HMODULE)mbi.AllocationBase;
return NULL;
}

然后将结果输入 GetModuleFileName

关于c++ - 如何知道从哪个DLL加载的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18373401/

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