• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

windows驱动开发第12课(R3和R0通信:写入数据)

武飞扬头像
中道而立
帮助1

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

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

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

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

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


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

学新通

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

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

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

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

学新通

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

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

学新通

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfkiikf
系列文章
更多 icon
同类精品
更多 icon
继续加载