开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 529|回复: 9
收起左侧

[C/C++] c++函数转成易语言DLL命令

[复制链接]
结帖率:92% (57/62)
发表于 2024-5-7 13:45:55 | 显示全部楼层 |阅读模式   河南省洛阳市
30精币
一个c++写的函数,编译成dll供易语言调用,下面这个函数不知道应该怎么调用了:

_Success_(return) BOOL VMMDLL_Map_GetEATU(_In_ VMM_HANDLE hVMM, _In_ DWORD dwPID, _In_ LPSTR  uszModuleName, _Out_ PVMMDLL_MAP_EAT* ppEatMap);

前三个参数转换易语言之后是 整数型、整数型、文本型,主要是第四个参数不知道怎么传了

PVMMDLL_MAP_EAT的原型是:

typedef struct tdVMMDLL_MAP_EAT {
    DWORD dwVersion;                // VMMDLL_MAP_EAT_VERSION
    DWORD dwOrdinalBase;
    DWORD cNumberOfNames;
    DWORD cNumberOfFunctions;
    DWORD cNumberOfForwardedFunctions;
    DWORD _Reserved1[3];
    QWORD vaModuleBase;
    QWORD vaAddressOfFunctions;
    QWORD vaAddressOfNames;
    PBYTE pbMultiText;              // multi-str pointed into by VMM_MAP_EATENTRY.wszFunction
    DWORD cbMultiText;
    DWORD cMap;                     // # map entries.
    VMMDLL_MAP_EATENTRY pMap[];     // map entries.
} VMMDLL_MAP_EAT, * PVMMDLL_MAP_EAT;



VMMDLL_MAP_EATENTRY 的原型是:
typedef struct tdVMMDLL_MAP_EATENTRY {
    QWORD vaFunction;
    DWORD dwOrdinal;
    DWORD oFunctionsArray;          // PIMAGE_EXPORT_DIRECTORY->AddressOfFunctions[oFunctionsArray]
    DWORD oNamesArray;              // PIMAGE_EXPORT_DIRECTORY->AddressOfNames[oNamesArray]
    DWORD _FutureUse1;
    union { LPSTR  uszFunction; LPWSTR wszFunction; };      // U/W dependant
    union { LPSTR  uszForwardedFunction; LPWSTR wszForwardedFunction; };    // U/W dependant (function or ordinal name if exists).
} VMMDLL_MAP_EATENTRY, * PVMMDLL_MAP_EATENTRY;


求个大牛将VMMDLL_Map_GetEATU这个函数转换成易语言的dll命令


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:100% (2/2)

签到天数: 20 天

发表于 2024-5-7 14:14:13 | 显示全部楼层   辽宁省朝阳市
自定义数据类型。5个整数 2个文本就行了

补充内容 (2024-5-7 14:17):
忘记第一个了自定义数据类型  第一个 9个 整数 一个字节传址 2个整数 一个 上面的自定义类型

补充内容 (2024-5-7 14:20):
第一个类型后面那个自定义数据类型 是数组
回复

使用道具 举报

结帖率:92% (57/62)

签到天数: 7 天

 楼主| 发表于 2024-5-7 14:22:43 | 显示全部楼层   河南省洛阳市
weidongjun 发表于 2024-5-7 14:14
自定义数据类型。5个整数 2个文本就行了

补充内容 (2024-5-7 14:17):

最后那个数组给多大大小呢?
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 20 天

发表于 2024-5-7 14:23:58 | 显示全部楼层   辽宁省朝阳市
我都好久没用易语言了,易语言的数组声明 直接填0就行
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 20 天

发表于 2024-5-7 14:24:22 | 显示全部楼层   辽宁省朝阳市
Fu浮华 发表于 2024-5-7 14:22
最后那个数组给多大大小呢?

易语言的数组 直接填0就行,
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 20 天

发表于 2024-5-7 14:26:01 | 显示全部楼层   辽宁省朝阳市
Fu浮华 发表于 2024-5-7 14:22
最后那个数组给多大大小呢?

那个传址你自己试试,感觉易语言有什么很神奇,不需要传址也可以,有时候必须传址
回复

使用道具 举报

结帖率:92% (57/62)

签到天数: 7 天

 楼主| 发表于 2024-5-7 14:30:59 | 显示全部楼层   河南省洛阳市
weidongjun 发表于 2024-5-7 14:24
易语言的数组 直接填0就行,

自定义数据类型里的数组不能填0 - -
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 20 天

发表于 2024-5-7 14:34:10 | 显示全部楼层   辽宁省朝阳市
Fu浮华 发表于 2024-5-7 14:30
自定义数据类型里的数组不能填0 - -

你可以试试整数型传址,到时候用的时候取出来内存地址穿进去

补充内容 (2024-5-7 14:37):
数组 在C/C++也是属于内存地址,类似指针

补充内容 (2024-5-7 14:40):
还是老话 传址和不传址都试试。,应该是可以的

补充内容 (2024-5-7 14:41):
易语言 总之很神奇的,所以我早就放弃了。有时候搞不明白,也没深入研究
回复

使用道具 举报

结帖率:50% (2/4)

签到天数: 23 天

发表于 2024-5-7 14:46:14 | 显示全部楼层   广西壮族自治区柳州市
DWORD=整数型
QWORD=长整数型
PBYTE这是一个指针,32位进程这是4字节=整数型,64位进程为8字节=长整数型
LPSTR也是个指针,长度同上

其实这个参数 out 就是表示是存储返回数据的缓冲区,给它一段空白内存就行
回复

使用道具 举报

结帖率:92% (57/62)

签到天数: 7 天

 楼主| 发表于 2024-5-7 15:01:44 | 显示全部楼层   河南省洛阳市
dnxl 发表于 2024-5-7 14:46
DWORD=整数型
QWORD=长整数型
PBYTE这是一个指针,32位进程这是4字节=整数型,64位进程为8字节=长整数型

QQ截图20240507150103.png

这样写对吗?


补充内容 (2024-5-7 15:02):
_Reserved1   设置数组3也试过,都不行,调用后取不到值
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表