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

 2023-09-05 阅读 147 评论 0

摘要:在上一节课我们使两边的控制码对应上了,这节课我们来实现向驱动层写入数据。 知识点:和IRP有关的系统缓冲区 pirp->AssociatedIrp.SystemBuffer; //和IRP有关的系统缓冲区 要点:这个缓冲区读和写是共享的。 为了打印出的信息更直观,我把用户层

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

知识点:和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小时内回复。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/550.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息