通过DMA写入指定地址的数据(源为本地缓冲区) - DmaWriteDataFromBin
函数简介
通过 DMA 写入指定地址的数据,数据源为本地缓冲区。支持 CE 地址格式。(高级版功能,普通版无法使用)
接口名称
DmaWriteDataFromBin
DLL调用
int32_t OLA_CALL_TYPE DmaWriteDataFromBin(int64_t instance, int64_t deviceId, int32_t pid, OLA_STRING_INPUT addr, int64_t data, int32_t len);
参数定义:
instance(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。deviceId(长整型数): 设备IDpid(整型数): 进程 PIDaddr(字符串): 地址,支持 CE 数据格式data(长整型数): 数据缓冲区地址len(整型数): 数据长度(字节)
示例:
// 准备数据缓冲区
char buffer[] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd};
// 写入数据
int32_t result = DmaWriteDataFromBin(instance, deviceId, 1234, "0x400000", (int64_t)buffer, 7);
if (result == 1) {
printf("数据写入成功\n");
} else {
printf("数据写入失败\n");
}
// 使用 CE 格式地址写入
int32_t result2 = DmaWriteDataFromBin(instance, deviceId, 1234, "[<Game.exe>+1234]+8+4", (int64_t)buffer, 7);
if (result2 == 1) {
printf("CE格式地址写入成功\n");
}
返回值
整型数:
- 1: 成功
- 0: 失败
参数说明
data(缓冲区地址):
- 本地缓冲区的内存地址
- 包含要写入的二进制数据
len(长度):
- 要写入的字节数
addr(地址):
- 支持十六进制格式:
0x400000 - 支持 CE 格式:
[[[<module>+offset1]+offset2]+offset3] - 支持模块相对地址:
<Game.exe>+1234+8+4
应用场景
- 写入大量数据
- 代码注入
- 内存修改
相关接口
- DmaWriteData - 字符串格式写入
- DmaWriteDataAddrFromBin - 直接地址写入
