我写了一个由第三方软件exe动态调用的dll。我需要在运行时从dll内部获取到dll的完整路径。我试过这个帖子:
Get DLL path at runtime
我在我的dll中写了一个引用自己的proc。
但它对我不起作用:返回的路径是exe路径,而不是dll路径。
我做错了什么?
这是proc代码(Windows 7,visual studio 2008):
void stardust_checkCDM(){
// GET this DLL path
char dllPathName[256];
HMODULE hm = NULL;
char dllLocalFunc[] = "stardust_checkCDM";
GetModuleHandleExA( GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
(LPCSTR) &dllLocalFunc, &hm );
GetModuleFileNameA( hm, dllPathName, sizeof(dllPathName) );
printf( "GetModuleFileNameA: %s\n", dllPathName );
...
}
// dllPathName returns caller exe full path name,
// instead of dll full path name.