获取模块大小 - DmaGetModuleSize
函数简介
获取指定进程中模块的大小。(高级版功能,普通版无法使用)
接口名称
DmaGetModuleSize
DLL调用
int32_t OLA_CALL_TYPE DmaGetModuleSize(int64_t instance, int64_t deviceId, int32_t pid, OLA_STRING_INPUT moduleName);
参数定义:
instance(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。deviceId(长整型数): 设备IDpid(整型数): 进程 PIDmoduleName(字符串): 模块名
示例:
// 获取主模块大小
int32_t mainModuleSize = DmaGetModuleSize(instance, deviceId, 1234, "");
if (mainModuleSize > 0) {
printf("主模块大小: %d 字节\n", mainModuleSize);
}
// 获取指定模块大小
int32_t dllSize = DmaGetModuleSize(instance, deviceId, 1234, "kernel32.dll");
if (dllSize > 0) {
printf("kernel32.dll 大小: %d 字节\n", dllSize);
}
// 计算模块范围
int64_t moduleBase = DmaGetModuleBase(instance, deviceId, 1234, "mylib.dll");
int32_t moduleSize = DmaGetModuleSize(instance, deviceId, 1234, "mylib.dll");
if (moduleBase > 0 && moduleSize > 0) {
printf("mylib.dll 范围: 0x%llx - 0x%llx\n", moduleBase, moduleBase + moduleSize);
}
返回值
整型数:
- 成功: 返回模块大小 (>0),单位为字节
- 失败: 返回 0
参数说明
moduleName(模块名):
- 空字符串
""表示主模块 - 其他值表示具体的 DLL 模块名
- 模块名不区分大小写
应用场景
- 获取模块的内存占用大小
- 计算模块的内存范围
- 内存分析和优化
相关接口
- DmaGetModuleBase - 获取模块基址
- DmaGetProcAddress - 获取模块导出函数地址
