在上一节课我们使两边的控制码对应上了,这节课我们来实现向驱动层写入数据。

知识点:和IRP有关的系统缓冲区

pirp->AssociatedIrp.SystemBuffer; //和IRP有关的系统缓冲区
要点:这个缓冲区读和写是共享的。

为了打印出的信息更直观,我把用户层写入的数据修改一下,具体操作步骤如下:
在MFC工程项目里选“资源视图”在对话框里双击“写数据”按钮,修改后的代码如下:

char WriteData[] = "DeviceIoControl->来自用户层R3写入数据的操作\n";

整个写数据的代码如下图(图1):

然后编译生成,(注意MFC的要生成Release版的)。

当我们在用户层(MFC对话框上)点击“写数据”按钮时,数据就传递到了驱动层的SystemBuffer里。
我们把驱动层的SystemBuffer的数据打印出来验证一下。代码如下:

char* IrpSysBuffer = (char*)pirp->AssociatedIrp.SystemBuffer; //和IRP有关的系统缓冲区
KdPrint(("zdsoft:和IRP有关的系统缓冲区=%s", IrpSysBuffer));

驱动层的IRP_CALL函数整体代码如下图(图2):

然后编译生成,(注意:驱动层生成Debug版) 。

然后把这两个文件复制到虚拟机里,测试效果如下图(图3):

好了,今天的这节课就到这里,希望看到此文章的朋友给个关注,谢谢!有不懂的可以留言,一般24小时内回复。

windows驱动开发第12课(R3与R0通信之写入数据)相关推荐

  1. Windows驱动开发第10课(R3与R0通信交换数据第一节)

    首先,先解释一下R3与R0是什么意思,R是Ring的首字母(中文:环).在计算机技术里把对CPU的访问控制的权限抽象成一环套着一环,分为4个级别,Ring0-Ring3.Ring0层拥有最高的权限,在 ...

  2. Windows驱动开发第4课(标准化程序入口,Kdprint()函数,虚拟机里加载驱动)

    一.标准化程序入口 标准化程序入口代码如下: #include <ntifs.h> NTSTATUS DriverEntry(_In_ PDRIVER_OBJECT DriverObjec ...

  3. c语言windows驱动编程入门,Windows驱动开发技术详解 PDF扫描版[175MB]

    Windows驱动开发技术详解由浅入深.循序渐进地介绍了windows驱动程序的开发方法与调试技巧.本书共分23章,内容涵盖了windows操作系统的基本原理.nt驱动程序与wdm驱动程序的构造.驱动 ...

  4. 9、Windows驱动开发技术详解笔记(5) 基本语法回顾

    5.在驱动中获取系统时间 1)获取启动毫秒数 在ring3 我们可以通过一个GetTickCount 函数来获得自系统启动开始的毫秒数,在ring0也有一个与之对应的KeQueryTickCount ...

  5. Windows驱动开发学习笔记(六)—— Inline HOOK

    Windows驱动开发学习笔记(六)-- Inline HOOK SSDT HOOK Inline Hook 挂钩 执行流程 脱钩 实验一:3环 Inline Hook 实验二:0环 Inline H ...

  6. 15、Windows驱动开发技术详解笔记(11) 基本概念

    9.Windows驱动程序的入口函数规定为_DriverEntry@8,所以用C++编写时要用extern. 驱动程序中,不能使用编译器运行时函数,甚至C语言中的malloc,C++的new函数都不能 ...

  7. 《Windows驱动开发技术详解》学习笔记

    Abstract   如果推荐 Windows 驱动开发的入门书,我强烈推荐<Windows驱动开发技术详解>.但是由于成书的时间较早,该书中提到的很多工具和环境都已不可用或找不到,而本文 ...

  8. 竹林蹊径:深入浅出Windows驱动开发(china-pub预订中)

    竹林蹊径:深入浅出Windows驱动开发(china-pub预订中) 基本信息 作者: 张佩   马勇   董鉴源 出版社:电子工业出版社 ISBN:9787121125553 内容简介 本书是作者根 ...

  9. Windows驱动开发书籍简介

    分享到 一键分享 QQ空间 新浪微博 百度搜藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 首页 我的主页 相册 广 ...

最新文章

  1. 【iOS】NSDate分类,获得中国农历
  2. iPhone App开发导航条(Navigation Bar)素材PSD下载
  3. 没有数据也能翻译?一文读懂「无监督」机器翻译
  4. Java主线程等待所有子线程执行完毕再执行解决办法(转)
  5. 有没有python与机械结合的工作-Python3从零开始搭建一个语音对话机器人的实现...
  6. clickhouse安装包_ClickHouse单机部署
  7. java 闹钟_JAVA可视化闹钟源码
  8. 数学--数论--欧拉降幂--P5091 欧拉定理
  9. JavaScript -- arguments、apply 、call、bind
  10. NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(二): NHibernate数据访问层实现
  11. 三种背包问题的例题(各一道)
  12. php使用到的函数记录一
  13. 普林斯顿微积分读本03第二章--编程实现函数图像绘制、三角学回顾
  14. Qt界面开发(一)(各种控件以及图表)
  15. 微型计算机原理中MOD指令的含义,微机原理习题库含答案
  16. java楼盘管理系统_课内资源 - 基于Java面向对象开发的房屋中介管理系统
  17. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如 6=1+2+3, 编程找出 1000 以内的所有完数。
  18. 青果教务系统php源码,使用PHP 的 curl 爬取 青果教務系統 課表
  19. rebase操作步骤
  20. 给定一个不多于5位的正整数,判断它是几位数,并输出。 输入

热门文章

  1. 上海水务局智慧水务解决方案
  2. idea创建web项目步骤
  3. 鉴于Eclipse下在线安装Pydev插件所遇见的问题,及其替代的离线安装的方法
  4. 工业互联网创新迭代的推手
  5. OpenCV3.2 Java图像处理视频学习教程-贾志刚-专题视频课程
  6. JAVA历险记--java基础知识--随堂笔记
  7. 浅谈计算机视觉、机器视觉、图像处理
  8. 计算机外围设计原理,CPLD无刷直流电机的驱动设计及原理分析
  9. HTML5 和 CSS3 提高篇 下 2D转换 transform(移动、旋转、缩放、中心点、综合写法);动画(animation);3D转换;浏览器私有前缀;背景色线性渐变
  10. IOT技术在农业生产上的应用