如何获取指定内存所在的模块、当前模块、当前函数的返回模块
2006-05-12 15:22
543 查看
利用一个函数VirtualQuery可以获取指定内存所在的模块:
inline HMODULE GetModuleFromAddr(PVOID p)
{
MEMORY_BASIC_INFORMATION m = {0};
VirtualQuery(p, &m, sizeof(MEMORY_BASIC_INFORMATION));
return (HMODULE) m.AllocationBase;
}
有了上面的函数,就非常容易获取当前模块的句柄(比如在静态LIB链接到DLL的项目中,需要知道模块句柄的情况):
HMODULE hThisModule = GetModuleFromAddr(当前模块中的任意函数或变量地址);
更进一步的应用,假如我们需要知道那个模块在调用自己,可以结合_ReturnAddress() intrinsic来实现:
全局声明:EXTERN_C PVOID _ReturnAddress();
调用:HMODULE hCallerModule = GetModuleFromAddr(_ReturnAddress());
inline HMODULE GetModuleFromAddr(PVOID p)
{
MEMORY_BASIC_INFORMATION m = {0};
VirtualQuery(p, &m, sizeof(MEMORY_BASIC_INFORMATION));
return (HMODULE) m.AllocationBase;
}
有了上面的函数,就非常容易获取当前模块的句柄(比如在静态LIB链接到DLL的项目中,需要知道模块句柄的情况):
HMODULE hThisModule = GetModuleFromAddr(当前模块中的任意函数或变量地址);
更进一步的应用,假如我们需要知道那个模块在调用自己,可以结合_ReturnAddress() intrinsic来实现:
全局声明:EXTERN_C PVOID _ReturnAddress();
调用:HMODULE hCallerModule = GetModuleFromAddr(_ReturnAddress());
相关文章推荐
- 如何获取指定内存所在的模块、当前模块、当前函数的返回模块
- 如何获取指定内存所在的模块、当前模块、当前函数的返回模块 - Yonsm.NET - SHARE YONSM'S IDEAS
- 运行时如何获取运行当前代码所在的函数,一个神奇的宏
- Python 中如何获取当前位置所在的文件名,函数名,以及行号
- 获取指定进程所有线程的当前执行模块
- [WinAPI] API 12 [获取程序所在的目录、程序模块路径,获取和设置当前目录]
- ThinkPHP RBAC如何自动获取所有模块的函数 推荐
- Atitit 网络设备的自动发现机制 需求如下: 1、自动获取当前设备所在网段及当前与当前网段有连接的网段的所有IP,并判断出是哪类设备。如:服务器、交换机、防火墙等。 2、如何根据第1点得到的
- mysql 实现行号的方法——如何获取当前记录所在行号
- 如何获取当前进程所在目录的方法
- python中获取当前位置所在的行号和函数名(转)
- iOS如何获取当前View所在控制器的方法
- 关于几个js获取当前时间和处理返回数据改变时间格式的函数
- Python基础 —— 获取当前文件所在目录,遍历当前目录,获取指定后缀的文件
- JavaScript如何获取当前页面上的指定对象.
- mysql中如何获取当前时间以及对时间的处理函数
- 使用GetModuleFileName函数获取当前程序所在目录
- winform学习之-----关于按键操作的一些小知识(如何获取焦点所在的当前控件)20160623
- SDK获取程序所在的目录,程序模块路径,获取和设置当前目录
- 使用GetModuleFileName函数获取当前程序所在目录