首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

dll中的函数可以知道是哪个程序调用自己了吗,该怎么处理

2012-02-03 
dll中的函数可以知道是哪个程序调用自己了吗不使用函数参数的方式调用外[解决办法]GetModuleHandle,GetMod

dll中的函数可以知道是哪个程序调用自己了吗
不使用函数参数的方式调用外

[解决办法]
GetModuleHandle,GetModuleFileName
[解决办法]
不知道
[解决办法]
有一个办法,不是100%可靠。

就是通过Stack Walk找到第一个栈上不是你Module的地址。假设你的函数不是自己叫的,你可以根据Frame Pointer的值(ebp) 找到你这个函数的返回地址,这个地址应该是调用你函数的程序的执行段地址。根据这个地址就可以得到程序的信息。

这个方法不是十分有把握,如果你的函数经过FRO(Frame pointer optimization)了,这个信息就找不到了。
[解决办法]
GetProcessThreadId()取得当前进程id,然后OpenThread也能取得句柄。就能获得调用程序的路径。
[解决办法]
上面说错了,开始是用GetCurrentProcessId()。
[解决办法]
如果调用程序直接是.exe,当然可以用GetModuleFileName,或者通过Process信息得到。不过楼主大概是问哪个DLL。
[解决办法]
用GetModuleHandle(NULL)能返回调用进程的HMODULE,至于这个返回值能得到什么就不知道了.

热点排行