基于WDF过滤驱动的监控系统的设计与实现.docVIP

基于WDF过滤驱动的监控系统的设计与实现.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于WDF过滤驱动的监控系统的设计与实现.doc

基于WDF过滤驱动的监控系统的设计与实现   摘 要:WDF是微软推出的下一代驱动程序开发模型,它所提供的KMDF框架为内核模式驱动开发提供了一个面向对象、事件驱动的开发框架,它隔离了设备驱动程序与操作系统内核,降低了驱动程序对内核的影响。滤器驱动程序是一类中间驱动程序。根据其在驱动程序堆栈中所处位置的不同,它可以分为上层过滤器驱动程序和下层过滤器驱动程序两种。过滤器驱动程序可以监视、拦截和修改IRP流,在不影响已有驱动程序功能的前提下增加一些附加功能。本文深入研究了WDF驱动模型和过滤器驱动技术,设计和实现了一个针对我司自主研发的USBCAN设备“BULKDevice”的数据监控系统。并通过一个简单的实例介绍了基本编程技巧。   关键词:WDF;过滤驱动程序;监控   中图分类号:TP311.1   随着CAN总线网络在汽车电子行业中的普及,成为国际上应用最广泛、最有前途的现场总线之一。USBCAN越来越大量的应用到各个项目研发中去,但每一套USBCAN都要付费购买相应的licenses及其配套软件,这造成了项目巨量的开销。在自主研发了USBCAN设备之后,相应的配套监控调试软件也亟待解决。   过滤驱动程序可以修改已有驱动的功能,也可以对数据进行过滤加密。在不影响USB设备的正常数据通讯情况下,采用过滤驱动技术,将之附于功能驱动的下层,获取USB设备输入输出的数据流,并将其分类显示出来,达到监控的目的。   1 WDF模型   自Windows 2000开始,开发驱动程序均以WDM(Windows Driver Model)为基础,是一个标准的驱动模型,用户可以在这个模型上有所改动。   WDF是微软推出的新一代驱动开发模型,全称为Windows Driver Foundation,以WDM为基础进行了建模和封装,显著特点是降低了开发难度[1]。此模型比WDM更先进、合理,将WDF中关于电源、PnP等一些复杂的细节由微软实现,所以在此模型上开发驱动比以前要简单。   WDF改变了操作系统内核与驱动程序之间的关系,WDM驱动程序中,一方面要处理硬件,另一方面要处理驱动程序与操作系统内核的交互。现在WDF则将驱动程序与操作系统内核之间进行了分离,驱动程序与操作系统交互工作交给框架内封装的方法(函数)完成,这样驱动开发者只需专注处理硬件的行为即可。这不仅避免了顾此失彼两面不周的弊端,也由于双方的分离,对操作系统内的某些改动,硬件制造商配套驱动程序的开发都有莫大的好处。   WDF一方面能兼容WDM,或者说是能轻松切换到WDM,不至于使程序员代码编写了一大半时,突然发现某个只能用WDM才能解决的问题,而头痛不已;另一方面WDF也对旧的NT内核的操作系统兼容,这使得一个驱动能同时支持win2000、XP、Vista、Win7这些系统,而不用在代码中进行判断,更不用给每个系统各写一个驱动。   WDF包含两套子框架:KMDF(内核驱动)和UMDF(用户驱动),大部分情况,WDF仅指KMDF[2]。本文所述的程序是在内核模式框架下研发的。无论内核模式的驱动程序或者用户模式的驱动程序,都使用同一环境进行构建,这一环境称为WDK;都采用同一套对象模型构建,采用同一个基础承载,这个基础就是WDF。   2 过滤驱动技术原理   过滤驱动无处不在。通常它被称作Hook,是一种Hack手段;很多时候它又是必不可少的,这种技术甚至被操作系统自己使用。   过滤驱动程序有两种:一种是高层过滤驱动程序(High FDO),处于功能驱动(FDO)之上;一种是低层过滤程序,处于功能驱动之下,总线驱动之上。WDF根据设备对象堆栈来完成驱动程序的分层,过滤驱动程序则通过过滤流经它的IRP来捕捉、修改或者拦截设备传输的数据。   WDF模型将原先WDM模型里的IRP进行了封装,成为WDFREQUEST对象,表示一个I/O请求。WDF还提供了另外一个对象也就是WDFQUEUE,用来存放IRP请求。   如果将过滤程序附在功能驱动(FDO)的下面,这样介于FDO和PDO之间的过滤驱动称为低层过滤驱动程序,一般记为Lower-level FiDO。如果被附在功能驱动(FDO)的上面,则称上层过滤驱动程序,一般记为Upper-level FiDO[3]。   在WMF框架中的过滤驱动可以相互嵌套,层层叠加,即上层过滤驱动程序之上可以再附加更高层的过滤驱动程序,同理低层过滤驱动程序可以被更低层的过滤驱动所过滤。   过滤驱动可以在设备栈的任何层次中插入。I/O管理器发出的请求将会沿着图1的顺序从上往下传递并返回。因此,我们可以使用过滤驱动程序来检查、修改、完成它接收到的IRP,或者构造自己的IRP。   图1 设备对象和驱动程

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档