WDM驱动程序设计.docxVIP

  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文档。上传文档
查看更多
现在Windows98和Windows2000已经成了主流操作系统的主流,原先用来实现驱动程 序的VxD技术随着Win95的淡出也慢慢地将退出历史舞台,在Windows98和Windows2000 中设备驱动程序将根据Windows驱动程序模型(WDM)來设计。WDM通过提供一种灵活 的方式来简化驱动程序的开发,在实现对新硬件支持的基础上减少并降低所必须开发的驱动 程序的数蜃和复杂性。 WDM驱动程序设计 —.WDM简介 微软不断推出新的操作系统,现在Windows98和Windows2000已经成了主流, 原先用来实现驱动程序的VxD技术随着Win95的淡出也慢慢地将退出历史舞台, 在Windows98和Windows2000屮设备驱动程序将根据Windows驱动程序模烈 (WDM)来设计。WDM通过提供一种灵活的方式来简化骡动程序的开发,在实现 对新硬件支持的基础上减少并降低所必须开发的驱动程序的数量和复杂性。 Windows驱动程序模型分两个方面,除了核心模型描述设备驱动程序的标准 结构外,WDM还为常见类型的设备实现了一个模块化的、分层次类型的总线驱动 程序和类驱动程序。总线驱动程序实现了支持通用串行总线(USB)、1EEE1394 (FireWire)协议等。类駅动程序是为实现标准Windows功能提供条件。WDM对 标准类接口的支持减少了 Windows 95和Windows NT所需的设备驱动程序的数量 和复杂性。在Windows平台上,WDM将成为21世纪主流的驱动模式。 WDM支持USB、IEEE 1394、ACPI等全新的硬件标准。而且以往在两个平台 上同时运行时需耍编写两个截然不同的驱动程序,现在只需耍编写一个WDM驱动 程序就可以了。WD\I驱动程序也是分层的,即不同层上的報动程序有着不同的优 先级,而Windows 9x下的VxD则没有此结构。 WDM还引入了功能设备对象FDO (Functional Device Object)与物理设备 对象PDO (Physical Device Object)两个新类来描述硬件,一个PDO对应一个 真实硬件。一个硬件只允许有一个PDO,却可以拥有多个FDO,在驱动程序中直 接操作的不是硬件而是相应的PDO与FDO。在用户态和内核态通讯方面,系统为 每一个用户请求打包形成一个1RP结构,将其发送至驱动程序,并通过识别IRP 屮的PDO来区别是发送给哪一个设备的。另外,在驱动程序的加载方而,WDM不 通过驱动程序名称识别,而是通过一个128位的全局唯一标识符GUID來实现驱 动程序的识别。我们用上图来说明设备驱动程序的分层及调用。 写WDM和其它模式驱动程序基木上是相同的,代码中的主要区别在于如何创 建设备。 在WDM驱动程序中,即插即用(PnP)管理器告知何时向系统添加一个设备, 或者从系统删除设备。PnP管理器使用安装的INF文件查找新设备的正确驱动程 序;而其它模式驱动程序必须发现它自己的设备,使用专门的安装程序安装。 另外在细节上也存在很多区别,其它模式骡动程序参数一般由注册表提供,在 DrivcrEntry里调用读注册表的函数,然后根据注册表再调用CrcatcDcvicc,但 是WDM —般不是这样,这是曲于Windows 2000下支持PnP,在加载的时候PnP 管理器调用AddDevice入口点创建设备。一般在DriverEntry里创建的是一个与 设备或者对象毫无关系的虚拟设备,用于管理与Win32的通讯。如果不想对该设 备做什么特别的处理,或者设备不复杂,AddDevice可以简单返回Nt_Success, 不用调用 CreatcDevicCo 另外整个设备驱动树也发生了改变,从而使安装程序发生了很大的改变。WDM 木身的PXP管理器被抽象地提升到了 ROOT的地位。PXP管理器负责所有的总线 骡动程序的加载。总线驱动程序则负责遍历所有位于总线上的设备,并且为毎个 设备创建相应的设备对象。当PNP管理器发现一个设备对象,就查找该对彖对应 的Driver。并调用该Driver的ADD DEVICE例程。如果Driver不在内存中,就 先加载,然后调用ADD DEVICE例程。 当然,总线木身并没有发出任何信号告诉PNP管理器自己的存在,所以,总 线Driver是在NT的安装时设定的。而ISA设备并没有规范,因为需要KMD自己 检查硕件存在及状态,所以它是老式KMD存在的惟一理由。这也是微软极力在新 规范里取消ISA总线的理由Z-o WDM支持PXP协议和PM协议,而且实现时仅 仅需要在MAJOR FUNCTION里加入一些对PXP和PM事件响应的例程即可。 一个完整的驱动程序要完成以下工作:初始化;创建与删除设备;处理应用 层程序的打开和关闭句柄

文档评论(0)

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

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

1亿VIP精品文档

相关文档