我正在尝试使用以下代码加载几个符号模块:
DWORD64 dwBaseDllSymLocal = 0;
SymInitializeW(GetCurrentProcess(), NULL, FALSE);
SymSetOptions(SYMOPT_DEBUG);
dwBaseDllSymLocal = SymLoadModuleExW(GetCurrentProcess(), NULL, L"C:\\module1.dll", NULL, 0, 0, NULL, 0);
if (0 == dwBaseDllSymLocal)
{
__debugbreak();
}
dwBaseDllSymLocal 现在是 10000000。
dwBaseDllSymLocal = SymLoadModuleExW(GetCurrentProcess(), NULL, L"C:\\module2.dll", NULL, 0, 0, NULL, 0);
if (0 == dwBaseDllSymLocal)
{
__debugbreak();
}
Dbghelp 给出以下消息: module1 is already loaded at 10000000
.
当我尝试两次加载相同的模块时,会发生相同的行为。(与函数文档中所写的不同)。
最后一个错误ERROR_INVALID_ADDRESS
虽然看起来并不相关,因为最后一个错误在第一次成功的函数调用之后也有这个值。
是否可以加载多个模块SymLoadModuleExW
?这样做的正确方法是什么?