beaveror
驱动中牛
驱动中牛
  • 注册日期2002-06-13
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1469回复:9

什么是过滤程序?

楼主#
更多 发布于:2002-08-06 14:17
什么是过滤?filter
有什么用?主要有什么功能。
只要能解决问题,就一定给分。 希望高手赐教!
gxjt
驱动老牛
驱动老牛
  • 注册日期2002-03-26
  • 最后登录2006-06-07
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-08-06 14:30
象防火墙就是啦
[color=red] “阿弥陀佛,无上医王,舍此不求,是谓痴狂。” “一句弥陀,阿伽陀药,舍此不服,是谓大错。” 南无阿弥陀佛......[/color]
beaveror
驱动中牛
驱动中牛
  • 注册日期2002-06-13
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-08-06 14:37
详细点。
过滤什么用的?
只要能解决问题,就一定给分。 希望高手赐教!
gxjt
驱动老牛
驱动老牛
  • 注册日期2002-03-26
  • 最后登录2006-06-07
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-06 14:40
处于功能驱动程序之上的过滤器驱动程序称为上层过滤器;处于功能驱动程序之下的过滤器驱动程序(仍处于总线驱动程序之上)称为下层过滤器。虽然这两种驱动程序本身用于不同的目的,但创建这两种驱动程序的机制完全相同。实际上,创建过滤器驱动程序就象创建任何其它WDM驱动程序一样,都有DriverEntry例程、AddDevice例程、一组派遣函数,等等。

上层过滤器驱动程序的用途是帮助支持这样的设备,这种设备的大多数方面都象其所属类的普通设备,但有一些附加功能。你可以依靠一个通用的功能驱动程序来支持设备的普通行为。为了处理设备的附加功能,你可以写一个上层过滤器驱动程序来干预IRP流。举一个有趣的例子,假设存在一个烤面包机设备的标准类,并且已经有人为其写了一个标准驱动程序。再假设你的特殊烤面包机有一个高级的面包片弹出特征,它可以把烤好的面包片弹到两英尺高的空中。而控制这个AWE(Advanced Waffle Eject)特征的工作就是上层过滤器驱动程序的任务
上层过滤器驱动程序的另一个用途是修正硬件或功能驱动程序中出现的bug。如果过滤器驱动程序用于这个目的,Microsoft恳求你在这个过滤器驱动程序上加上版本标签,并且如果在以后某一天这个bug被纠正,你应该在你的控制范围内修改任何相关部件的版本号。否则,Microsoft将难于使系统自动更新。

下层过滤器驱动程序不能干涉功能驱动程序直接执行的正常操作。因为功能驱动程序可能通过HAL调用直接访问硬件来实现大部分实质的请求。而下层过滤器仅能看到经过它传递的IRP,它看不到HAL调用。

下层过滤器驱动程序可以用于USB设备的驱动程序堆栈中。对于USB设备,其功能驱动程序把内部控制IRP作为URB(USB请求块)的容器。下层过滤器驱动程序可能会监视并修改这些IRP
下层过滤器驱动程序的另一个用途是帮助你写一个总线无关的驱动程序。假设一种设备有三种不同总线形式的产品,PCI总线产品、USB总线产品、PCMCIA总线产品。你可以写一个完全独立于总线结构的功能驱动程序,这样的驱动程序不直接与设备对话。另外你还要写三个下层过滤器驱动程序,每个下层过滤器对应一个总线类型。当功能驱动程序需要与硬件对话时,它就向相应的下层过滤器驱动程序发送IRP(可能是IRP_MJ_INTERNAL_DEVICE_CONTROL)。


答的好,请给分
[color=red] “阿弥陀佛,无上医王,舍此不求,是谓痴狂。” “一句弥陀,阿伽陀药,舍此不服,是谓大错。” 南无阿弥陀佛......[/color]
beaveror
驱动中牛
驱动中牛
  • 注册日期2002-06-13
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-08-06 14:48
串口驱动中除了serial.sys还有serenum.sys
那么这个serenum.sys是过滤程序吗?

那么自己写串口驱动也要写这个驱动吗?
只要能解决问题,就一定给分。 希望高手赐教!
gxjt
驱动老牛
驱动老牛
  • 注册日期2002-03-26
  • 最后登录2006-06-07
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-08-06 14:51
串口驱动中除了serial.sys还有serenum.sys
那么这个serenum.sys是过滤程序吗?

那么自己写串口驱动也要写这个驱动吗?

这个我不太清楚,真的抱歉
[color=red] “阿弥陀佛,无上医王,舍此不求,是谓痴狂。” “一句弥陀,阿伽陀药,舍此不服,是谓大错。” 南无阿弥陀佛......[/color]
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-08-06 14:54
那个是过滤驱动,
不一定要写,
过滤驱动主要是为了补充功能的

你也可以在功能驱动里实现过滤程序的作用
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
beaveror
驱动中牛
驱动中牛
  • 注册日期2002-06-13
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-08-06 14:58
那个是过滤驱动,
不一定要写,
过滤驱动主要是为了补充功能的

你也可以在功能驱动里实现过滤程序的作用


这么一说我放心了不少。多谢。
只要能解决问题,就一定给分。 希望高手赐教!
ElleLang
驱动牛犊
驱动牛犊
  • 注册日期2002-08-15
  • 最后登录2002-08-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-08-22 15:31
处于功能驱动程序之上的过滤器驱动程序称为上层过滤器;处于功能驱动程序之下的过滤器驱动程序(仍处于总线驱动程序之上)称为下层过滤器。虽然这两种驱动程序本身用于不同的目的,但创建这两种驱动程序的机制完全相同。实际上,创建过滤器驱动程序就象创建任何其它WDM驱动程序一样,都有DriverEntry例程、AddDevice例程、一组派遣函数,等等。

上层过滤器驱动程序的用途是帮助支持这样的设备,这种设备的大多数方面都象其所属类的普通设备,但有一些附加功能。你可以依靠一个通用的功能驱动程序来支持设备的普通行为。为了处理设备的附加功能,你可以写一个上层过滤器驱动程序来干预IRP流。举一个有趣的例子,假设存在一个烤面包机设备的标准类,并且已经有人为其写了一个标准驱动程序。再假设你的特殊烤面包机有一个高级的面包片弹出特征,它可以把烤好的面包片弹到两英尺高的空中。而控制这个AWE(Advanced Waffle Eject)特征的工作就是上层过滤器驱动程序的任务
上层过滤器驱动程序的另一个用途是修正硬件或功能驱动程序中出现的bug。如果过滤器驱动程序用于这个目的,Microsoft恳求你在这个过滤器驱动程序上加上版本标签,并且如果在以后某一天这个bug被纠正,你应该在你的控制范围内修改任何相关部件的版本号。否则,Microsoft将难于使系统自动更新。

下层过滤器驱动程序不能干涉功能驱动程序直接执行的正常操作。因为功能驱动程序可能通过HAL调用直接访问硬件来实现大部分实质的请求。而下层过滤器仅能看到经过它传递的IRP,它看不到HAL调用。

下层过滤器驱动程序可以用于USB设备的驱动程序堆栈中。对于USB设备,其功能驱动程序把内部控制IRP作为URB(USB请求块)的容器。下层过滤器驱动程序可能会监视并修改这些IRP
下层过滤器驱动程序的另一个用途是帮助你写一个总线无关的驱动程序。假设一种设备有三种不同总线形式的产品,PCI总线产品、USB总线产品、PCMCIA总线产品。你可以写一个完全独立于总线结构的功能驱动程序,这样的驱动程序不直接与设备对话。另外你还要写三个下层过滤器驱动程序,每个下层过滤器对应一个总线类型。当功能驱动程序需要与硬件对话时,它就向相应的下层过滤器驱动程序发送IRP(可能是IRP_MJ_INTERNAL_DEVICE_CONTROL)。


答的好,请给分


\"下层过滤器驱动程序的另一个用途是帮助你写一个总线无关的驱动程序。\"

请问:HAL不是已经抽象了BUS相关的操作吗,那么还有必要开发总线无关的驱动程序吗?
ElleLang
驱动牛犊
驱动牛犊
  • 注册日期2002-08-15
  • 最后登录2002-08-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-08-23 10:41
没人再进一步解释一下吗?
游客

返回顶部