我正在使用VS2015附带的SymLoadModuleEx
Dbghelp.h
。该函数只能运行一次,并为下一次调用返回ERROR_INVALID_ADDRESS
。当我更改调用顺序以便调用另一个DLL(完全不同,甚至位于其他地方)时,它会工作一次,并为其他人返回ERROR_INVALID_ADDRESS
。
这意味着它不是加载DLL的问题,因为它无论第一个DLL都不起作用。
初始化如下:
SymSetOptions(SYMOPT_UNDNAME | SYMOPT_LOAD_LINES);
SymInitialize(CurrentProcessHandle = GetCurrentProcess(), nullptr, true);
被称为:
SymLoadModuleEx(CurrentProcessHandle, nullptr, DllName.c_str(), nullptr, dwBaseAddr, 0, nullptr, 0);
DllName是正确的,dwBaseAddr是0。
根据MSDN SymLoadModuleEx function,一切都应该正常。