20楼#
发布于:2002-04-08 08:43
------------------------------------------------
我看不懂了 你不是要写过滤驱动吗? 不是先获得了目标设备的指针,又连接好了 不是已经可以过滤到IRP了吗? 怎么还用ZwCreateFile打开设备做什么??? 另:你的这个厂商的设备是不是只能独占访问啊? ------------------------------------------------- 用ZwCreateFile是采用File monitor的做法,把目标设备当作一个文件对象来打开,也可以获得目标设备的指针,与IoGetDeviceObjectPointer效果相同。 另:你说的独占访问是什么意思?我怀疑它打开设备的时候是独占方式。这样我就一点办法没有了。:( Re:TonyHuyan ---------------------------------------------------------- 你怎么确信你的Filter已经Hook到该设备上? Filter必须支持下层驱动的所有IRP_MJ_Functions,open失败,应该是你的IRP_MJ_CREATE有问题,对于启动下层驱动的IRP_MJ_CREATE,必须递下去(如何区分启动下层驱动还是启动你自己,参考File Monitor)。 ---------------------------------------------- 根据Art Baker的《Windows NT设备驱动程序设计指南》,我写了一个PassThrough, 将所有我没有重载的IRP命令,直接发给目标设备了。应该不是那个问题。 我相信我hook到目标设备上了,因为我的Filter启动之后,它的open函数失败了。我的驱动对它由直接的影响。 ---------------------------------------- 关于你前面的问题,没太明白你的意思,不过 一般在调用 IoGetDeviceObjectPointer 之后, 需要调用 ObReferenceObjectByPointer 以增加 其引用计数。 另: File Monitor 的做法是好的! ----------------------------------------- 我调用了。 另:为什么file monitor 的做法是好的?它和IoGetDeviceObjectPointer方法有什么不同? |
|
|
21楼#
发布于:2002-04-11 10:59
我知道为什么我的过滤驱动和应用程序不能同时打开目标设备了。我用同样的名字写了一个目标设备的驱动,替换了原来的驱动程序,就能够同时启动过滤驱动和应用程序。若将创建目标设备的函数IoCreateDevice得倒数第二个参数BOOLEAN Exclusive改为TRUE,表示不允许多个线程同时打开该设备。结果出现了原来的那种现象,即过滤驱动和应用程序不能同时打开目标设备。我想,应该是这个原因了。
|
|
|
22楼#
发布于:2002-04-11 11:06
Congradulations !!!
|
|
|
23楼#
发布于:2002-04-11 11:07
你那种情况,我认为IoAttachDevice函数可以帮你,我曾经试过,他在成功加载了设备并Attach后把目标设备的指针关掉(调用Close),你试试看,行不行,行了告诉大家一下~
|
|
24楼#
发布于:2002-04-11 11:36
你的目标设备类型是什么?
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Class的对应CLSID下,在UPPERFILTER里加上你的SERVICE名就可以了. 这样一来,HOOK是由OS替你做的,REFERENCE不会增加. 但这种方式对FILTER的要求比较高. |
|
25楼#
发布于:2002-04-11 14:11
Re:Jame.z
----------------------------------------------------- 你那种情况,我认为IoAttachDevice函数可以帮你,我曾经试过,他在成功加载了设备并Attach后把目标设备的指针关掉(调用Close),你试试看,行不行,行了告诉大家一下~ ------------------------------------------------------- 谢谢Jame.z,给我提了一个好idea。 我试过了,真的能够同时打开过滤驱动和应用程序。It\'s so fabulous! 我看了一下IoAttachDevice和IoAttachDeviceToDeviceStack的DDK文档,除了在调用上有区别之外,它们在功能方面的说明可以说完全一致。不知Jame.z兄知不知道这两个函数在实现上的差异? 问题解决了,希望大家都能通过我的案例得到提高。 |
|
|
上一页
下一页