文章目录

  • 需求
  • 挑战
  • 使用中可能遇到的问题
  • 资料

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.hHello.h 什么区别?
    我认为:~前者的 h意思是high-version.指rpc5 ,而后者指的是 rpc4~,include 其中之一即可
  • 添加库 rpcrt4.lib
  • 照抄例子会报错1
    hello_ClientIfHandle 它会提示你它不存在,实际它就定义在 自动生成的 hello.h文件中,它的实际名字 并不是这个,而是 类似 INTERFACENAME_v1_0_c_ifspecINTERFACENAME_v1_0_s_ifspec找到它 替换 例子。

  • 照抄例子会报错2
    有一步让你添加两个函数 在服务端 :

    有两种解决方案:

    • 创建 .c 文件
      你需要定义一个 .c 文件或者在里面进行定义
    • 直接 在 cpp 中进行声明
      exter "c" void abc(int a);声明一句
  • IDL 文件语法
    在你尝试完成第一个例子后,如果你试图增加更多的函数,发现 IDL 报错,就需要注意 IDL 里的类型并不完全和C相同,eg: bool => boolean

  • 提示: funcXXX 无法重载具有外部“C”链接的函数 参见 “rprint” 的声明

    原因是你的声明 和它自动生成的 函数不一致,查看:

eg: 我这里提示错误:

对比一下生成的代码 , 看发现:

显然 类型不完全一致,所以我们要修改 自己写的函数签名。


这样将可以排除此种错误了。

目前遇到的问题就是以上。

资料

https://docs.microsoft.com/en-us/windows/win32/rpc/tutorial

Windows RPC 初体验相关推荐

  1. 【转载】Windows进程初体验 详解

    随着家用PC的普及,越来越多的人用上了电脑也连上了网,进入了无奇不有的互联网世界.说到这里,就不得不提一下Microsoft,可以毫不夸张的说,正是英特尔划时代的386DX芯片和Windows带领大家 ...

  2. windows 2008初体验常见问题: 无线网络没有正确配置为使用IP协议 错误解决办法...

    前天装好了windows 2008,郁闷的是无线网络怎么也找不到信号. 使用诊断,错误如下: 检查: 我检查无线网卡驱动,没有问题 检查协议的设置,也没有问题, 上网搜索(关键字:windows 20 ...

  3. Windows Embedded Standard开发初体验(二)

    支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...

  4. Windows Embedded CE 6.0开发初体验(二)CE开发环境 收藏

    上一篇<Windows Embedded CE 6.0开发初体验>之"嵌入式开发流程": http://blog.csdn.net/aawolf/archive/200 ...

  5. Windows Embedded CE 6.0开发初体验(三)设置Boot-loader

    在Digi CC 9P开发板中已经预置了Boot-loader和一个CE 6.0的系统,所以,我们直接启动开发板,就可以运行一个CE 6.0的操作系统.不过,我们的最终目的是要开发一个自己的CE 6. ...

  6. Windows Embedded CE 6.0开发初体验(二)CE开发环境

    CE开发环境 下面就要让今天的主角闪亮登场了--Digi CC 9P开发板.为了感谢Digi提供的开发板,还是给他们做个广告吧:这是一家以WiFi相关产品为主营业务的公司,也生产ARM架构的CPU,所 ...

  7. Windows Embedded CE 6.0开发初体验(一)Windows CE概述

    这篇文章的目的并不是介绍Windows Embedded CE开发的方方面面,只是用一个初涉嵌入式领域的软件开发者的视角来介绍Windows CE开发中最常用的概念和知识,解决大家会在实际开发中碰到的 ...

  8. RPC 框架 Kitex 初体验 (虚拟机环境)

    目录 前提 安装代码生成工具 获取示例代码 运行示例代码 引用 附加资料 注脚 前提 按照 HTTP 框架 Hertz 初体验 已经完成相关环境配置 安装代码生成工具 安装 kitex go inst ...

  9. w ndows7中桌面图标,七仔教你学习Windows 7:桌面初体验

    [IT168 软件技巧]朋友,你还在坚守"XP"吗?你还在忍受"Vista"吗?为什么不试试Windows 7?只要你曾领略她卓越的性能.华丽的外表,就一定会为 ...

最新文章

  1. python课程与c+课程有什么不同-C和Python我该先学什么?
  2. 使用结构化的标头字段改善HTTP
  3. LINUX 文件系统如何存储文件 图解
  4. webscoket断线重连
  5. 【bzoj2555】Substring【后缀平衡树入门】
  6. P4322-[JSOI2016]最佳团体【0/1分数规划,树形背包】
  7. 拒绝不公平的师生关系,MIT霸气护学生:你换导师,我替你买单
  8. IEEE正推进制定量子计算标准
  9. python opencv3 —— 改变颜色空间(color space)
  10. 强大的SqlCacheDependency【转】
  11. Java常见的垃圾收集器GC算法整理
  12. 是时候考虑怎么用好云了
  13. python处理xps文件,从XPS文档中提取文本
  14. git 找到冲突_git怎么知道哪个文件冲突
  15. 数据分析细数周杰伦不能说的秘密
  16. Java 中的 Clone()
  17. 30分钟快速生成元宇宙专属虚拟人
  18. Linux命令全家桶以及vim/gcc/gdb/makefile/yum
  19. CentOS7中使用yum安装Nginx
  20. 前台请求后台接口数据后日期少一天Bug解决

热门文章

  1. libtorch tensor的使用
  2. 二叉树遍历(递归、非递归)
  3. mysql百万数据写入_快速写入百万数据
  4. source_ids += [tokenizer.unk_token_id for x in dfg]
  5. edg击败we视频_超神圣枪无情屠杀 EDG击败WE全取三分
  6. 算法初步--什么是算法
  7. 【Java面试题】数据库三范式
  8. 敏涵控股集团董事长刘敏: “匠心精神”的专业引路人
  9. 字典特征提取,文本特征提取。
  10. bigdata_舆情挖掘项目