通过DMA读取指定地址的数据到本地缓冲区 - DmaReadDataToBin
函数简介
通过 DMA 读取指定地址的数据到本地缓冲区。支持 CE 地址格式。(高级版功能,普通版无法使用)
接口名称
DmaReadDataToBin
DLL调用
OLA_HANDLE_RETURN OLA_CALL_TYPE DmaReadDataToBin(int64_t instance, int64_t deviceId, int32_t pid, OLA_STRING_INPUT addr, int32_t len);
参数定义:
instance(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。deviceId(长整型数): 设备IDpid(整型数): 进程 PIDaddr(字符串): 地址,支持 CE 数据格式len(整型数): 读取长度(字节)
示例:
// 读取数据到本地缓冲区
int64_t buffer = DmaReadDataToBin(instance, deviceId, 1234, "0x400000", 256);
if (buffer > 0) {
printf("数据读取成功,缓冲区地址: 0x%llx\n", buffer);
// 使用缓冲区数据...
// 释放缓冲区
FreeMemoryPtr(instance, buffer);
} else {
printf("数据读取失败\n");
}
// 使用 CE 格式地址读取
int64_t buffer2 = DmaReadDataToBin(instance, deviceId, 1234, "[<Game.exe>+1234]+8+4", 512);
if (buffer2 > 0) {
printf("数据读取成功\n");
FreeMemoryPtr(instance, buffer2);
}
返回值
长整型数:
- 成功: 返回内存地址 (>0)
- 失败: 返回 0
参数说明
addr(地址):
- 支持十六进制格式:
0x400000 - 支持 CE 格式:
[[[<module>+offset1]+offset2]+offset3] - 支持模块相对地址:
<Game.exe>+1234+8+4
len(长度):
- 要读取的字节数
应用场景
- 读取大量内存数据
- 数据分析
- 内存转储
相关接口
- DmaReadData - 读取为字符串
- DmaReadDataAddrToBin - 直接地址读取
- FreeMemoryPtr - 释放内存
