在上一节课我们使两边的控制码对应上了,这节课我们来实现向驱动层写入数据。
知识点:和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小时内回复。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态