Windows RPC 初体验
文章目录
- 需求
- 挑战
- 使用中可能遇到的问题
- 资料
RPC的需求还是很多的,例如,我们注入一个dll到某程序中,而控制端是独立的exe。
此时 exe <=RPC=> dll
有没有一款 好用的简单的RPC呢?
笔者也有这个需求,经朋友推荐和演示,了解并尝试使用了 Windows RPC,发现真的简单。
需求
教程直接官网:
https://docs.microsoft.com/en-us/windows/win32/rpc/tutorial
一步一步做非常简单。
无需赘言。
挑战
我认为 使用 Windows RPC 的 最大挑战为 字符串(或Buffer) 的回传
为了实现能从服务端 返回给 客户端字符串,我查询了若干资料。为了防止以后用的时候再去找,所以记录于此。
https://stackoverflow.com/questions/6256400/return-a-string-from-win32-rpc-call
使用中可能遇到的问题
- 会生成
Hello_h.h
和Hello.h
什么区别?
我认为:~前者的h
意思是high-version.指rpc5 ,而后者指的是 rpc4~,include 其中之一即可 - 添加库
rpcrt4.lib
- 照抄例子会报错1
hello_ClientIfHandle
它会提示你它不存在,实际它就定义在 自动生成的hello.h
文件中,它的实际名字 并不是这个,而是 类似INTERFACENAME_v1_0_c_ifspec
和INTERFACENAME_v1_0_s_ifspec
找到它 替换 例子。
照抄例子会报错2
有一步让你添加两个函数 在服务端 :
有两种解决方案:- 创建 .c 文件
你需要定义一个 .c 文件或者在里面进行定义 - 直接 在 cpp 中进行声明
即exter "c" void abc(int a);
声明一句
- 创建 .c 文件
IDL 文件语法
在你尝试完成第一个例子后,如果你试图增加更多的函数,发现 IDL 报错,就需要注意 IDL 里的类型并不完全和C相同,eg: bool => boolean提示: funcXXX 无法重载具有外部“C”链接的函数 参见 “rprint” 的声明
原因是你的声明 和它自动生成的 函数不一致,查看:
eg: 我这里提示错误:
对比一下生成的代码 , 看发现:
显然 类型不完全一致,所以我们要修改 自己写的函数签名。
这样将可以排除此种错误了。
目前遇到的问题就是以上。
资料
https://docs.microsoft.com/en-us/windows/win32/rpc/tutorial
Windows RPC 初体验相关推荐
- 【转载】Windows进程初体验 详解
随着家用PC的普及,越来越多的人用上了电脑也连上了网,进入了无奇不有的互联网世界.说到这里,就不得不提一下Microsoft,可以毫不夸张的说,正是英特尔划时代的386DX芯片和Windows带领大家 ...
- windows 2008初体验常见问题: 无线网络没有正确配置为使用IP协议 错误解决办法...
前天装好了windows 2008,郁闷的是无线网络怎么也找不到信号. 使用诊断,错误如下: 检查: 我检查无线网卡驱动,没有问题 检查协议的设置,也没有问题, 上网搜索(关键字:windows 20 ...
- Windows Embedded Standard开发初体验(二)
支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...
- Windows Embedded CE 6.0开发初体验(二)CE开发环境 收藏
上一篇<Windows Embedded CE 6.0开发初体验>之"嵌入式开发流程": http://blog.csdn.net/aawolf/archive/200 ...
- Windows Embedded CE 6.0开发初体验(三)设置Boot-loader
在Digi CC 9P开发板中已经预置了Boot-loader和一个CE 6.0的系统,所以,我们直接启动开发板,就可以运行一个CE 6.0的操作系统.不过,我们的最终目的是要开发一个自己的CE 6. ...
- Windows Embedded CE 6.0开发初体验(二)CE开发环境
CE开发环境 下面就要让今天的主角闪亮登场了--Digi CC 9P开发板.为了感谢Digi提供的开发板,还是给他们做个广告吧:这是一家以WiFi相关产品为主营业务的公司,也生产ARM架构的CPU,所 ...
- Windows Embedded CE 6.0开发初体验(一)Windows CE概述
这篇文章的目的并不是介绍Windows Embedded CE开发的方方面面,只是用一个初涉嵌入式领域的软件开发者的视角来介绍Windows CE开发中最常用的概念和知识,解决大家会在实际开发中碰到的 ...
- RPC 框架 Kitex 初体验 (虚拟机环境)
目录 前提 安装代码生成工具 获取示例代码 运行示例代码 引用 附加资料 注脚 前提 按照 HTTP 框架 Hertz 初体验 已经完成相关环境配置 安装代码生成工具 安装 kitex go inst ...
- w ndows7中桌面图标,七仔教你学习Windows 7:桌面初体验
[IT168 软件技巧]朋友,你还在坚守"XP"吗?你还在忍受"Vista"吗?为什么不试试Windows 7?只要你曾领略她卓越的性能.华丽的外表,就一定会为 ...
最新文章
- python课程与c+课程有什么不同-C和Python我该先学什么?
- 使用结构化的标头字段改善HTTP
- LINUX 文件系统如何存储文件 图解
- webscoket断线重连
- 【bzoj2555】Substring【后缀平衡树入门】
- P4322-[JSOI2016]最佳团体【0/1分数规划,树形背包】
- 拒绝不公平的师生关系,MIT霸气护学生:你换导师,我替你买单
- IEEE正推进制定量子计算标准
- python opencv3 —— 改变颜色空间(color space)
- 强大的SqlCacheDependency【转】
- Java常见的垃圾收集器GC算法整理
- 是时候考虑怎么用好云了
- python处理xps文件,从XPS文档中提取文本
- git 找到冲突_git怎么知道哪个文件冲突
- 数据分析细数周杰伦不能说的秘密
- Java 中的 Clone()
- 30分钟快速生成元宇宙专属虚拟人
- Linux命令全家桶以及vim/gcc/gdb/makefile/yum
- CentOS7中使用yum安装Nginx
- 前台请求后台接口数据后日期少一天Bug解决
热门文章
- libtorch tensor的使用
- 二叉树遍历(递归、非递归)
- mysql百万数据写入_快速写入百万数据
- source_ids += [tokenizer.unk_token_id for x in dfg]
- edg击败we视频_超神圣枪无情屠杀 EDG击败WE全取三分
- 算法初步--什么是算法
- 【Java面试题】数据库三范式
- 敏涵控股集团董事长刘敏: “匠心精神”的专业引路人
- 字典特征提取,文本特征提取。
- bigdata_舆情挖掘项目