如果我有一个名为“foo.dll”的dll,最终用户将其重命名为“bar.dll”。在调用LoadLibrary之后,如何从我的dll中获取名称“bar.dll”?
是GetModuleFileName(hModule,buffer); ?
答案 0 :(得分:7)
是的,您需要将hModule存储在DllMain
中BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
hModule = hinstDLL;
break;
}
}
答案 1 :(得分:4)
您需要提供DllMain函数,存储您在静态变量中传递的模块句柄,然后使用该变量调用GetModuleFilename。你应该避免在DllMain本身中调用GetModuleFilename(或任何其他函数),因为Windows非常挑剔你在那里可以做什么和不能做什么。