欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

顶层驱动的缓冲区为null有关问题

更新时间: 2014-01-05 03:19:47 责任编辑: Author_N1

 

顶层驱动的缓冲区为NULL问题
虚拟磁盘驱动程序,先创建设备,再设置Flags 为 DO_BUFFERED_IO方式,如下:

IoCreateDevice(DriverObject,0,&deviceName,FILE_DEVICE_DISK,FILE_DEVICE_SECURE_OPEN,FALSE,&pDevObj);
pDevObj->Flags |= DO_BUFFERED_IO;

可是接着收到的irp_mj_read却显示是系统mdl有效,AssociatedIrp.SystemBuffer为NULL,这却是对应的DIRECT_IO 方式,我设置的是buffered_io方式啊,为什么出现错误了?
有网友指出,如果驱动是顶层驱动,还需要进行特殊处理,我这个确实是顶层驱动,那么要如何特殊处理呢?
--参考方法--
原来是这样,但是我还有一个疑问,那就是,在所有的接受到的Irp中间,有2,3个Irp确实是buffer_io方式的,其MDl为NULL,而其余的10几个irp确实都是direct_io方式,均设置了MDL有效。
我的疑问就是,为什么还是有几个irp是buffer io方式呢?按照这个帖子的说法,好像应该所有的irp都是direct io方式啊。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:19:47
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20876/
本文WWW.DOC100.NET DOC100.NET版权所有。