4386|7

69

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于AddDevice和IRP_MJ_READ的问题 [复制链接]

问题背景:修改diskperf,开发磁盘过滤驱动,想要拦截IRP_MJ_READ

问题现象:读写和创建分发指向修改正常,AddDevice可以正常添加过滤驱动,PNP操作正常,也可正常卸载,但没有任何磁盘操作被拦截,IRP_MJ_READ/WRITE/CREATE的分发处理都没有被调用

问题:
1)
DriverObject->MajorFunction[IRP_MJ_CREATE]= DiskCreate;//打开
DriverObject->MajorFunction[IRP_MJ_READ]  = DiskRead;        //读过滤
DriverObject->MajorFunction[IRP_MJ_WRITE] = DiskCacheWrite;//写过滤
为什么没有被调用?有哪些原因可以导致该现象?
2)
NTSTATUS DiskAddDevice(IN PDRIVER_OBJECT DriverObject,IN PDEVICE_OBJECT PhysicalDeviceObject)
{....
            status = IoCreateDevice(DriverObject,                        //目标驱动对象
                            DEVICE_EXTENSION_SIZE,        //设备扩展信息大小
                            NULL,                                        //不详
                            FILE_DEVICE_DISK,                //文件磁盘设备
                            0,
                            FALSE,
                            &filterDeviceObject);        //获得的过滤设备对象
       
....
        IoAttachDeviceToDeviceStack(filterDeviceObject, PhysicalDeviceObject);
....}

IoCreateDevice如何创建一个过滤设备?有无详细参数说明?是选FILE_DEVICE_DISK还是FILE_DEVICE_UNKNOW?
IoAttachDeviceToDeviceStack理论上讲是将过滤驱动附加到物理设备上,但该传入物理设备是什么?如何指定过滤某种或某个物理设备?

最新回复

不看不知道, 陈年老帖,惭愧 落伍了呀.  详情 回复 发表于 2010-3-9 17:25
点赞 关注
 

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不懂,帮顶
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
windows api里磁盘操作函数
HANDLE diskh=CreateFile("\\\\.\\PhysicalDriver0",
                         GENERIC_READ,
                         FILE_SHARE_READ,
                         NULL,
                         OPEN_EXISTING,
                         FILE_ATTRIBUTE_NORMAL,
                         NULL);
DWORD ret;
char buf[100];

DeviceIoControl(diskh,
                IOCTL_DISK_PERFORMANCE,
                NULL,
                0,
                buf,
                100,
                &ret,
                (LPOVERLAPPED)NULL);


不知是否有用.
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
问题已经自己搞定了,是INF文件没写对
谢谢各位的帮助
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

5
 
CreateFile和DeviceIoControl是在API层的调用
可惜我写的是个驱动,不过开发管理部分时一定用得上,谢谢了
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
搂主能不能讲讲如何更改inf文件,我遇到了同样的问题
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 
朋友, 我也是拦截不到. 但我的inf是ddk上例程自带的, 上边就往disk.sys上加了上部过滤.
指点一下.
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 
不看不知道, 陈年老帖,惭愧 落伍了呀.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表