基于windows设备驱动程序开发与优化.docVIP

基于windows设备驱动程序开发与优化.doc

  1. 1、本文档共6页,可阅读全部内容。
  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文档。上传文档
查看更多
基于windows设备驱动程序开发与优化

基于windows设备驱动程序开发与优化   摘 要:设备驱动程序是连接软件与硬件之间的接口,对于完成特定功能,强化操作系统的运算能力具有重要作用。当前基于windows平台下的设备驱动程序模型较为普遍,本文也将从WDM(windows driver model)中进行介绍,并从程序的开发、调试上进行说明和实现。   关键词:WDM 设备驱动程序;DDK;Driver Studio   Windows 系统作为常见的操作平台,在设备驱动程序的开发中较为主流。设备驱动程序主要是满足硬件与软件的数据交互,也是操作系统内核的重要内容之一,一旦出现接口错误很容易导致系统的崩溃。因此,在进行设备驱动程序设计与开发中,通常需要反复测试以避免程序规则出现漏洞或错误。在操作系统中,对于驱动程序多以文件形式存在,应用程序通过调用设备句柄,与驱动程序进行读写请求,并在设备句柄关闭后完成访问操作。   一、Windows下设备驱动程序模型   Windows是微软公司推出的操作系统,最初的DOS平台上是对ROM、BIOS以及一些周边硬件设备进行控制的驱动程序,随着虚拟设备驱动程序的应用,微软公司的虚拟驱动程序模型技术更加成熟。如VxD技术的升级版是基于Windows NT上的驱动技术,采用分层结构来完成对内核系统的驱动,以确保驱动程序能够更加灵活,快捷、有效的实现硬件开展。作为新一代NT技术的驱动程序体系,Windows Driver Model对电源的管理,满足直插即用,并且可以从不同平台上来进行更加灵活的开发,客服了传统VxD技术的很多缺陷。随着Windows 2000、Windows XP 技术的推广,对于虚拟驱动技术的摈弃,使其能够全面支持WDM。WDM模型的设计是对NT分层技术的应用,并重新确立了分层结构,以满足多种方式驱动的目标。在WDM结构中,从系统的扩展上既有系统功能,又有扩展功能,还能够支持驱动程序的开发。WDM驱动程序模型的建立,是通过两个驱动模块来完成,一个是总线驱动程序、一个是功能驱动程序,同时还辅以过滤器驱动程序。借助于总线驱动程序来实现对硬件的连接和访问,并未新的硬件提供了公共的设备标识体系。从外设硬件访问流程来看,对于总线结构模式下的各设备的标识符、系统资源、以及完成相应的功能,如初始化、I/O操作过程中的中断等等,都可以从用户需求上来灵活的选择设备控制方式,以确保设备逻辑功能的有效执行。另外,对于过滤器驱动程序主要是针对总线请求,就相应设备及类设备进行针对性操作,以实现对标准硬件设备的驱动变更等行为。   我们来分析功能驱动程序的内核体系,作为功能驱动程序,主要是由两个独立的可执行文件来组成,一方面负责类驱动程序,结合操作系统的请求,对整个设备类进行分析和明确,并设定相应的操作;另一方面是微小驱动程序或小端口驱动程序,主要是针对外设中的显示设备、网络设备、SCSI设备等进行应用。两者共同构成一个完整的满足相应功能的驱动程序体系。结合上述探讨,我们从完整的驱动程序例程中进行细化,并从各个操作中进行流程规划。当操作系统收到一个IRP指令时,WDM驱动程序调用其中的例程,如Add Device、Driver Entry、DispatchPower、DispatchWmi、DispatchPnP等。从IRP队列中进行选择,如StartIo例程,而其他硬件设备是以中断方式来提供中断服务例程,或者采用延迟方式来调用DPC例程;或者通过构建Adap torControl来执行例程。由此可见,对于WDM驱动程序进行开发时,需要结合具体设备情况来选择相应的例程。举例来看,对于某一设备对象堆栈来说,当操作系统需要从设备对象中调用相应软件或硬件时,则需要从堆栈的最底层来选择,该对象就是功能设备对象Physical Device Object,经过过滤器设备对象,再逐步上升至具体的设备对象。其堆栈创建过程如下:一是借助于总线驱动程序来对所有硬件进行检测,当收到创建需求PDO时,需要就PNP管理器进行预设,并构建设备对象堆栈;二是通过查询注册表来查找相关PDO的过滤器驱动程序和功能驱动程序,依照PNP管理器来进行调用函数AddDevice,以此来构建FDO;三是利用AddDevice函数进行PDO与FDO的连接,以满足PnP管理器对相应设备进行功能调用,实现相应设备对象堆栈执行任务。   二、基于Windows的设备驱动程序开发   构建对硬件设备的驱动需要开发具体功能的驱动程序,在Windows系统中,对于驱动程序多以*.sys为扩展名的动态链接库DLL,可以利用C语言或C++来进行编写,以完成对相应设备相应功能的实现。在C语言编辑器中,C++具有较好的可视性,但对于大多数标准库及类来说,由于对内存资源的占用较大,在开发相

文档评论(0)

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

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

1亿VIP精品文档

相关文档