阅读:3277回复:11
拦截另一个驱动程序的DeviceIoControl ?
怎样[拦截另一个驱动程序的DeviceIoControl]操作?
是这样的,举个例: 有一个现存的驱动程序A(可能是其它厂商提供的), 有一个调用驱动程序A的应用程序B(可能是其它厂商提供的), 我想自己再做一个驱动程序C来拦截B与A之间的DeviceIoControl操作, 使其应用程序B的DeviceIoControl命令先经过自己提供的过滤层驱动程序C过滤,然后再选择性地传递(或直接返回)到驱动程序A继续执行,实现B-C-A的命令传递, 通实现吗?大概怎么做?请高人指点(9X,2K,NT均可) |
|
最新喜欢:![]()
|
沙发#
发布于:2003-03-21 12:50
关注中
|
|
板凳#
发布于:2003-03-21 13:03
就用filter.写个A的filter,是upper filter.前提这个A driver 不是filter Driver,我想是可以的。
不过看你的驱动类型,有的是行,有的是不行,去看一下walter oney的filter那章节.不过好像filter不能拦filter. |
|
地板#
发布于:2003-03-21 13:10
驱动程序间互相调用服务都能被拦截到,如9X下可用Hook_Device_Service,我想Ring3与Ring0间的DeviceIoControl也能被HOOK到吧?但不知如何...
|
|
|
地下室#
发布于:2003-03-21 14:07
都快急死了
|
|
|
5楼#
发布于:2003-03-21 18:56
什么?????????????????????
9X平台?????????????? 我说的是2K以上平台。 |
|
6楼#
发布于:2003-03-22 00:51
关注ing
|
|
7楼#
发布于:2003-03-24 08:52
如果是2000/NT平台的,怎么作?请指点
|
|
|
8楼#
发布于:2003-03-24 12:15
我想到了一个在Win9X下基本可行但不通用的办法,就是将驱动程序A改名为A1,另自建一个驱动程序且命名为A,这样一来,应用程序B调用到的驱动程序A就是我们自建的驱动程序A,然后在自建的驱动程序A中的DeviceIoControl事件中过滤式地传递原本该A1接由的各种消息,即形成一种B-A-A1的模式,间接地实现原计划的B-C-A的模式。
Win9X下应该可行,不知NT/2000下可否用这种办法? 另注:这种方法只是一种权宜之计,最好是能找到标准的实现方法,请各位高手指点 |
|
|
9楼#
发布于:2003-03-24 16:21
其实98下的驱动也是分层处理的。Vendor-Supplied Drivers(VSD)可以理解成设备的Filter。至于具体的处理,看看98的DDK啦!
|
|
10楼#
发布于:2003-03-25 12:57
98下过滤OpenFile,ReadFile,...等API很容易实现,但好像没看到过滤DeviceIoControl的介绍
|
|
|
11楼#
发布于:2003-03-25 13:42
我想是可以的,就算A driver是个filter,但这个filter也有个control device object存在,你可以试一试,能否让一个filter attach to driver A的CDO。
|
|
|