阅读:2576回复:8
请教lower filters的相关问题
为了修改disk的属性,想写一个lower filter挂在disk.sys下面。想请教高手lowerfilter和upperfilter在编写代码时有什么不一样的地方,在注册表中设置group时是不是要和disk相同?
|
|
最新喜欢:![]() |
沙发#
发布于:2002-05-10 20:57
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E967-E325-11CE-BFC1-08002BE10318}
里加一下看看. 如果LowerFilters已经存在, 就把你的FILTER DRIVER加上. 如果不存在,自己做出来. |
|
板凳#
发布于:2002-05-13 09:10
谢谢楼上的回答。不过,我比较关心的是:
1。lower filter和upper filter在代码编写的时候有没有不同的地方? 2。filter driver在添加注册项时,除了在class中添加lowerfilters的信息之外,还要在HKLM\\system\\curcontrolset\\services\\中添加关于driver本身的信息,譬如Errorctrl,start,group,tag,type等等,不知道这里的group是不是要和disk的group一样,或者其它 3。在添加注册项的时候除了上述两处之外,还有其它地方需要添加吗? 谢谢! |
|
地板#
发布于:2002-05-13 09:25
逻辑上没有什么大的不同.只要和下层设备打交道而已.
典型的LOWER DRIVER就是CDRW的设备驱动.基本上所有的CD-RW驱动都做成CDROM.SYS 的LOWER FILTER. GROUP的设置是不必的, DISK.SYS LOAD的时候会自动LOAD你的DRIVER. ADDDEVICE被调用的时候会先自动调用你的ADDDEVICE. SERVICE里注册的时候, 只要有最小的三项就可. ERRORCONTROL. START=2 TYPE=1 这种方式登陆的CLASS FILTER里没有明确的GROUP概念. 同种DEVICE OBJECT做成的时候, 系统替你做下层或者上策的FILETR OBJECT, 并且建立正确的LINK关系. 只是有一点 [为了修改disk的属性]和[想写一个lower filter挂在disk.sys下面]看不出有任何关系. 这样可能达不到目的哟. |
|
地下室#
发布于:2002-05-13 09:49
你可以参照$ddkroot$\\src\\storage\\filters下的几个例子
|
|
|
5楼#
发布于:2002-05-14 17:04
楼上的朋友,我根据你的说法试了一下,结果我的机器还是蓝屏:(
通过使用windbg调试,发现根本没有调用filter的driverentry就死机了。按照逻辑,应该是调用lowerfilter的driverentry,adddevice之后再调用disk。sys对应的driverentry和adddevice,现在的结果是系统直接调用了disk.sys的driverentry之后就出现异常:)。 另:ddk中的filter的示例对我的程序帮助不是很大:) |
|
6楼#
发布于:2002-05-14 19:31
写成空的filter(什么都不做的那种测试程序)也出错吗?如果不出错,就是你的程序的问题了。
你的driver依赖了那些系统文件。除了hal.dll和ntoskerl.exe以外都是不行的。 [编辑 - 5/14/02 by zdhe] |
|
7楼#
发布于:2002-05-17 08:46
请问有谁知道ddk下面的filter例子diskperf的加载方法吗?
[编辑 - 5/17/02 by sureman] |
|
|
8楼#
发布于:2002-05-20 10:37
这两天经过重新看ddk的例子,获得了一些启发.我在用windbg进行内核调试时,发现无论怎么修改注册表,系统启动加载模块时都不会把filter.sys加载进去.后来,发现ddk的例子中加载filter时,先是将该filter作为一个设备的驱动程序加载了,然后使用\"addfilter\"将该filter作为disk的\"lowerfilter\"或者volume的\"upperfilter\",然后重起机器,发现就可以成功加载了.
这个正是令我比较费解的地方,为什么要先为filter driver创建一个虚拟设备(不知道这样说正不正确?),才能在系统启动时将该filter.sys模块加载? 请楼上的朋友或者有开发filter driver实际经验的人帮个忙.这个例子是ddk\\samples\\storage\\filters\\fpfilter.谢谢了!! 我将尽快给分,我的可用分不多,请包涵! |
|