赛博仙人 发表于 2024-1-18 00:00:32

易语言DMA分散读例子

如果对你有帮助,请给个好评吧~.~


.版本 2

.程序集 读写
.程序集变量 进程PID, 整数型
.程序集变量 分散读写句柄, 整数型

.子程序 DMA初始化, 整数型
.局部变量 数组参数, 文本型, , "0"

数组参数 = { “”, “-device”, “fpga” }
VMM句柄 = VMMDLL_Initialize (取数组成员数 (数组参数), 数组参数)
返回 (VMM句柄)

.子程序 DMA关闭

DMA分散关闭 (分散读写句柄)
VMMDLL_CloseAll ()

.子程序 DMA取模块地址, 长整数型
.参数 模块名称, 文本型

返回 (VMMDLL_ProcessGetModuleBaseU (VMM句柄, 进程PID, 模块名称))

.子程序 DMA设置进程
.参数 ID, 整数型

进程PID = ID
分散读写句柄 = DMA分散初始化 (ID)

.子程序 DMA取进程ID, 整数型
.参数 进程名称, 文本型
.局部变量 ID, 整数型

VMMDLL_PidGetFromName (VMM句柄, 进程名称, ID)
返回 (ID)

.子程序 DMA读字节集, 字节集, , EX
.参数 ID, 整数型
.参数 地址, 长整数型
.参数 长度, 整数型
.局部变量 返回值, 字节集

返回值 = 取空白字节集 (长度)
VMMDLL_MemReadEx (VMM句柄, ID, 地址, 返回值, 长度, 0, 1)
返回 (返回值)

.子程序 DMA读字节集_分散, 字节集
.参数 地址, 长整数型
.参数 长度, 整数型
.局部变量 返回值, 字节集

.如果真 (分散读写句柄 > 0)
    .如果真 (DMA分散设置 (分散读写句柄, 地址, 长度))
      .如果真 (DMA分散执行 (分散读写句柄))
            返回值 = DMA分散读取 (分散读写句柄, 地址, 长度)
            DMA分散清除 (分散读写句柄, PID, 1)
      .如果真结束

    .如果真结束

.如果真结束
返回 (返回值)

.子程序 写字节集, 逻辑型
.参数 地址, 整数型
.参数 数据, 字节集

返回 (VMMDLL_MemWrite (VMM句柄, 进程PID, 地址, 数据, 取字节集长度 (数据)))

.子程序 读字节集, 字节集
.参数 地址, 长整数型
.参数 长度, 整数型

返回 (DMA读字节集 (进程PID, 地址, 长度))

.子程序 读文本型, 文本型
.参数 地址, 长整数型

返回 (取字节集数据 (读字节集 (地址, 10), 10, ))

.子程序 读逻辑型, 逻辑型
.参数 地址, 长整数型

返回 (取字节集数据 (读字节集 (地址, 4), #逻辑型, ))

.子程序 读长整数, 长整数型
.参数 地址, 长整数型

返回 (取字节集数据 (读字节集 (地址, 8), #长整数型, ))

.子程序 读整数型, 整数型
.参数 地址, 长整数型

返回 (取字节集数据 (读字节集 (地址, 4), #长整数型, ))

.子程序 读小数型, 小数型
.参数 地址, 长整数型

返回 (取字节集数据 (读字节集 (地址, 4), #小数型, ))

.子程序 DMA分散初始化, 整数型
.参数 dwPID, 整数型

返回 (VMMDLL_Scatter_Initialize (VMM句柄, dwPID, 位与 (1, 32)))

.子程序 DMA分散设置, 逻辑型
.参数 hs, 整数型
.参数 地址, 长整数型
.参数 长度, 整数型

返回 (VMMDLL_Scatter_Prepare (hs, 地址, 长度))

.子程序 DMA分散读取, 字节集
.参数 hs, 整数型
.参数 地址, 长整数型
.参数 长度, 整数型
.局部变量 _局部1, 字节集
.局部变量 _局部2, 整数型

_局部1 = 取空白字节集 (长度)
VMMDLL_Scatter_Read (hs, 地址, 长度, _局部1, _局部2)
返回 (_局部1)

.子程序 DMA分散执行, 逻辑型
.参数 hs, 整数型

返回 (VMMDLL_Scatter_ExecuteRead (hs))

.子程序 DMA分散关闭
.参数 hs, 整数型

VMMDLL_Scatter_CloseHandle (hs)

.子程序 DMA分散清除, 逻辑型
.参数 hs, 整数型
.参数 dwpid, 整数型
.参数 flags, 整数型

返回 (VMMDLL_Scatter_Clear (hs, dwpid, flags))


.版本 2

.DLL命令 VMMDLL_PidGetFromName, 逻辑型, "vmm.dll", "@VMMDLL_PidGetFromName"
    .参数 句柄, 整数型
    .参数 进程名称, 文本型
    .参数 返回进程ID, 整数型, 传址

.DLL命令 VMMDLL_CloseAll, , "vmm.dll", "@VMMDLL_CloseAll"

.DLL命令 VMMDLL_ProcessGetModuleBaseU, 长整数型, "vmm.dll", "@VMMDLL_ProcessGetModuleBaseU"
    .参数 句柄, 整数型
    .参数 PID, 整数型
    .参数 模块名称, 文本型

.DLL命令 VMMDLL_MemWrite, 逻辑型, "vmm.dll", "@VMMDLL_MemWrite"
    .参数 句柄, 整数型
    .参数 PID, 整数型
    .参数 地址, 长整数型
    .参数 写入值, 字节集, 传址
    .参数 长度, 整数型

.DLL命令 VMMDLL_MemReadEx, 逻辑型, "vmm.dll", "@VMMDLL_MemReadEx"
    .参数 句柄, 整数型
    .参数 PID, 整数型
    .参数 地址, 长整数型
    .参数 返回值, 字节集, 传址
    .参数 长度, 整数型
    .参数 pcbReadOpt, 整数型, 传址
    .参数 flags, 长整数型

.DLL命令 VMMDLL_Initialize, 整数型, "vmm.dll", "@VMMDLL_Initialize"
    .参数 数量, 整数型
    .参数 参数, 文本型, 数组
.版本 2

.DLL命令 VMMDLL_Scatter_Initialize, 整数型, "vmm.dll", "@VMMDLL_Scatter_Initialize", , HS
    .参数 句柄, 整数型
    .参数 PID, 整数型
    .参数 flags, 整数型, , 1

.DLL命令 VMMDLL_Scatter_CloseHandle, , "vmm.dll", "@VMMDLL_Scatter_CloseHandle", , HS
    .参数 hs, 整数型

.DLL命令 VMMDLL_Scatter_ExecuteRead, 逻辑型, "vmm.dll", "@VMMDLL_Scatter_ExecuteRead", , HS
    .参数 hs, 整数型

.DLL命令 VMMDLL_Scatter_Read, 逻辑型, "vmm.dll", "@VMMDLL_Scatter_Read"
    .参数 hs, 整数型
    .参数 va, 长整数型
    .参数 cd, 整数型
    .参数 pb, 字节集, 传址
    .参数 pcbRead, 整数型, 传址

.DLL命令 VMMDLL_Scatter_Prepare, 逻辑型, "vmm.dll", "@VMMDLL_Scatter_Prepare"
    .参数 hs, 整数型
    .参数 va, 长整数型
    .参数 cd, 整数型

.DLL命令 VMMDLL_Scatter_Clear, 逻辑型, "vmm.dll", "@VMMDLL_Scatter_Clear"
    .参数 hs, 整数型
    .参数 pid, 整数型
    .参数 flags, 整数型

wf999920 发表于 2025-1-19 00:43:54

有没有实际调用的分散读写例子,我用这个之后读写还是很卡

a5522901 发表于 2024-9-19 16:54:46

可以很喜欢

zangjiahe 发表于 2024-7-10 05:16:26

感谢楼主的分享,请问楼主有分散读写的模块和使用例子吗?

赛博仙人 发表于 2024-6-25 22:43:57

qinrenxin 发表于 2024-6-22 16:14
大佬求您留个联系方式,非常想跟您学习一些易语言DMA的相关知识,您无偿分享的这些资料对我来说十分珍贵是 ...

869918530{:3_41:}

qinrenxin 发表于 2024-6-22 16:14:40

大佬求您留个联系方式,非常想跟您学习一些易语言DMA的相关知识,您无偿分享的这些资料对我来说十分珍贵是很好的学习资料 ,望您留个联系方式{:sad:}{:sad:}{:sad:}{:sad:}{:sad:}{:sad:}

A飞雪 发表于 2024-5-1 22:54:04


谢谢大佬分享

蔡畅 发表于 2024-2-9 14:57:16

谢谢大佬分享

qq3712244 发表于 2024-1-18 01:04:43

谢谢大佬分享

qq3712244 发表于 2024-1-18 01:01:34

收jdDMA源码
页: [1]
查看完整版本: 易语言DMA分散读例子