WDM驱动程序设计

WDM驱动程序设计

ID:47204483

大小:71.40 KB

页数:17页

时间:2019-08-26

WDM驱动程序设计_第1页
WDM驱动程序设计_第2页
WDM驱动程序设计_第3页
WDM驱动程序设计_第4页
WDM驱动程序设计_第5页
资源描述:

《WDM驱动程序设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、现在Windows98和Windows2000已经成了主流操作系统的主流,原先用来实现驱动程序的VxD技术随着Win95的淡出也慢慢地将退出历史舞台,在Windows98和Windows2000中设备驱动程序将根据Windows驱动程序模型(WDM)來设计。WDM通过提供一种灵活的方式来简化驱动程序的开发,在实现对新硬件支持的基础上减少并降低所必须开发的驱动程序的数蜃和复杂性。WDM驱动程序设计—.WDM简介微软不断推出新的操作系统,现在Windows98和Windows2000已经成了主流,原先用来实现驱动程序的VxD技术随着Win95的淡出也慢慢地将退出历史舞台,在Window

2、s98和Windows2000屮设备驱动程序将根据Windows驱动程序模烈(WDM)来设计。WDM通过提供一种灵活的方式来简化骡动程序的开发,在实现对新硬件支持的基础上减少并降低所必须开发的驱动程序的数量和复杂性。Windows驱动程序模型分两个方面,除了核心模型描述设备驱动程序的标准结构外,WDM还为常见类型的设备实现了一个模块化的、分层次类型的总线驱动程序和类驱动程序。总线驱动程序实现了支持通用串行总线(USB)、1EEE1394(FireWire)协议等。类駅动程序是为实现标准Windows功能提供条件。WDM对标准类接口的支持减少了Windows95和WindowsNT所

3、需的设备驱动程序的数量和复杂性。在Windows平台上,WDM将成为21世纪主流的驱动模式。WDM支持USB、IEEE1394、ACPI等全新的硬件标准。而且以往在两个平台上同时运行时需耍编写两个截然不同的驱动程序,现在只需耍编写一个WDM驱动程序就可以了。WDI驱动程序也是分层的,即不同层上的報动程序有着不同的优先级,而Windows9x下的VxD则没有此结构。WDM还引入了功能设备对象FDO(FunctionalDeviceObject)与物理设备对象PDO(PhysicalDeviceObject)两个新类来描述硬件,一个PDO对应一个真实硬件。一个硬件只允许有一个PDO,

4、却可以拥有多个FDO,在驱动程序中直接操作的不是硬件而是相应的PDO与FDO。在用户态和内核态通讯方面,系统为每一个用户请求打包形成一个1RP结构,将其发送至驱动程序,并通过识别IRP屮的PDO来区别是发送给哪一个设备的。另外,在驱动程序的加载方而,WDM不通过驱动程序名称识别,而是通过一个128位的全局唯一标识符GUID來实现驱动程序的识别。我们用上图来说明设备驱动程序的分层及调用。写WDM和其它模式驱动程序基木上是相同的,代码中的主要区别在于如何创建设备。在WDM驱动程序中,即插即用(PnP)管理器告知何时向系统添加一个设备,或者从系统删除设备。PnP管理器使用安装的INF文件

5、查找新设备的正确驱动程序;而其它模式驱动程序必须发现它自己的设备,使用专门的安装程序安装。另外在细节上也存在很多区别,其它模式骡动程序参数一般由注册表提供,在DrivcrEntry里调用读注册表的函数,然后根据注册表再调用CrcatcDcvicc,但是WDM—般不是这样,这是曲于Windows2000下支持PnP,在加载的时候PnP管理器调用AddDevice入口点创建设备。一般在DriverEntry里创建的是一个与设备或者对象毫无关系的虚拟设备,用于管理与Win32的通讯。如果不想对该设备做什么特别的处理,或者设备不复杂,AddDevice可以简单返回Nt_Success,不用

6、调用CreatcDevicCo另外整个设备驱动树也发生了改变,从而使安装程序发生了很大的改变。WDM木身的PXP管理器被抽象地提升到了ROOT的地位。PXP管理器负责所有的总线骡动程序的加载。总线驱动程序则负责遍历所有位于总线上的设备,并且为毎个设备创建相应的设备对象。当PNP管理器发现一个设备对象,就查找该对彖对应的Driver。并调用该Driver的ADDDEVICE例程。如果Driver不在内存中,就先加载,然后调用ADDDEVICE例程。当然,总线木身并没有发出任何信号告诉PNP管理器自己的存在,所以,总线Driver是在NT的安装时设定的。而ISA设备并没有规范,因为需要

7、KMD自己检查硕件存在及状态,所以它是老式KMD存在的惟一理由。这也是微软极力在新规范里取消ISA总线的理由Z-oWDM支持PXP协议和PM协议,而且实现时仅仅需要在MAJORFUNCTION里加入一些对PXP和PM事件响应的例程即可。一个完整的驱动程序要完成以下工作:初始化;创建与删除设备;处理应用层程序的打开和关闭句柄的请求;处理应用层程序的输入/输出请求;串行化对设备的访问;访问硕件;调用英他驱动程序;取消I/O请求;超时1/0请求;处理可热插拔设备的加入和删除

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。