2000XP下IO设备驱动程序设计.docVIP

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

Windows 2000/XP下I/O设备驱动程序的设计 李建 戴胜华 (北方交通大学电子工程学院 自动控制教研室,北京 100044) 摘要:本文介绍了Windows 2000/XP下WDM驱动程序的基本设计方法;阐述了I/O设备驱动程序的基本构成,硬件资源的配置和访问的方法;提出了设备驱动程序在实际应用中的层次化结构。 关键词:WDM;设备驱动程序;I/O端口;DLL Design of I/O Device Driver under Windows 2000/XP Abstract:This paper introduce the primary designing methods of WDM driver under Windows 2000/XP. It describe the basic structure of an I/O device driver, and the method of configing and accessing the hardware resources. It also put forward the layered structure of device driver in the real implement. Keyword:WDM;device driver; I/O port; DLL 引言 在开发微机应用系统的过程中,尤其是在控制系统中,通常会遇到在Windows环境下对具有特定功能的硬件设备(如数据采集卡),进行直接访问和控制的问题。因为在Windows操作系统下,CPU运行于保护模式,并且统一管理硬件资源,执行于用户态的应用程序不能直接访问硬件,而是通过调用执行于核心态的设备驱动程序提供的各种服务间接地对硬件资源进行访问,这一机制确保了系统的安全。所以,以前在Dos和Windows 98下可以很容易完成的I/O端口读写,在Windows 2000/XP下必须编写驱动程序,才能够实现。 由于各种操作系统结构的不同影响了设备驱动程序的兼容性,为此微软公司在1997提出了一种全新的Windows驱动程序模型(WDM),并在推出Windows 2000操作系统时正式引入了这一技术。WDM以Windows NT4.0的内部结构为基础,同时引入了Windows 9x的即插即用特性,为存在于Windows 9x和Windows 2000操作系统中的设备驱动程序提供了一个统一的参考框架[1]。在Windows 98/Me,Windows 2000和更高版本的操作系统上运行的设备驱动必须是WDM驱动[4]。 WDM驱动程序的基本结构 可以把一个完整的WDM驱动程序看作一个容器,其中包含了许多子例程,操作系统调用这个容器中的例程来执行针对IRP(I/O请求包)的各种操作,图1表示了这一概念。 基本驱动程序 I/O控制 分发例程 DrvierEntryAddDevice DrvierEntry AddDevice StartIo AdapterControl OnInterrupt DpcForIsr DispatchPnp DispatchPower DispatchWmi DispatchRead DispatchWriter 必须的驱动例程 处理排队请求应包括StartIo 如果设备有中断应包括OnInerrupt和DpcForIsr 对DMA操作应包括AdapterControl 可选的分发例程 图1 WDM驱动程序可执行包中的内容[2] 在每一个驱动程序中,都包括DriverEntry、AddDevice和几种IRP分发例程。需要对IRP排队的驱动程序一般都有StartIo例程;执行DMA传输的驱动程序应有一个AdaperControl例程;大部分能产生硬件中断的设备,需要有一个中断服务例程(Interrupt Service Routine,ISR)和一个延迟过程调用(Deferred Procedure Call,DPC)例程。多数的驱动程序都还有几个支持不同类型IRP的分发例程。WDM开发人员的任务之一就是选择自己特定驱动中需要的例程[2]。 设备的创建和初始化 驱动程序向操作系统显露名为DriverEntry的函数,DriverEntry例程只在驱动程序第一次被装入时执行一次,但是一个驱动程序可以被多个实际设备利用,所以WDM驱动程序有一个特殊的AddDevice函数,PnP管理器为每个设备实例调用该函数。创建设备可以在AddDevice函数中实现,它的主要任务是为建立和启用的设备,建立一个符号链接名或者注册设备接口,将当前驱动程序添加到设备栈中。 硬件的访问 PnP管理程序调用的

文档评论(0)

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

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

1亿VIP精品文档

相关文档