WDM英文Windows Driver Model(WDM)的缩写。
简介
WDM
WDM是WINDOWS2000认证的驱动程序,WIN2000由NT发展而来,所以对于设备的支持功能有限,同时为了最大限度的保障稳定性,所以推崇WDM驱动,但同时WDM驱动也就是功能最少的。因为设备厂商开发进度以及微软的态度,可能会禁止某些功能,所以像8738和PCI128D这类声卡在WIN2000中都是不能驱动四声道的。
Windows驱动程序模型(Windows Driver Model,WDM)是Windows98和Windows2000使用的新的驱动程序设计规范。使用WDM使得硬件驱动程序更加稳定,让操作系统对硬件更加有效地控制硬件。除了定义一个驱动程序与操作系统连接的标准接口以外,WDM也指明了驱动程序应该采用的更加模块化的设计。
WDM特性
动态构造WDM驱动程序堆栈是实现即插即用设备支持的关键
模块化的WDM体系结构中灵活统一的接口,使操作系统可以动态地配置不同的驱动程序模块来支持特定的设备。一个典型的驱动程序堆栈由通用设备、协议及特定协议和特定总线的微型驱动程序联接的总线类驱动程序构成。动态构造WDM驱动程序堆栈是实现即插即用设备支持的关键。
WDM流媒体应用程序
对于流媒体应用程序,WDM在核心态提供了快速反应的接口来处理I/O流。WDM的流接口是通过标准的WDM类接口提供出的。
WDM支持硬件标准
WDM支持USB、IEEE 1394、ACPI等全新的硬件标准。而且以往在两个平台上同时运行时需要编写两个截然不同的驱动程序,现在只需要编写一个WDM驱动程序就可以了。
程序模型
WDM(Win32Driver Model),即Win32驱动程序模型,是Microsoft力推的全新驱动程序模式,旨在通过提供一种灵活的方式来简化驱动程序的开发,在实现对新硬件支持的基础上减少并降低所必须开发的驱动程序的数量和复杂性。
程序结构
除了通用的平台服务和扩展外,WDM还实现了一个模块化的、分层次类型的微型驱动程序结构。类型驱动程序实现了支持通用总线、协议或设备类所需的功能性接口。类型驱动程序的一般特性是为逻辑设备的命令设置、协议和代码重用所需的总线接口实现标准化提供必要的条件。
基本上,WDM规范依靠一个标准化的类驱动程序来控制一类硬件的最常用和基本的功能。Windows2000为每一类硬件包括一个本地类驱动程序,然后,对应于某个特定厂商或者硬件型号的迷你驱动程序加入在类驱动中未包括的特殊或定制功能。厂商还可以更进一步地加入过滤器驱动程序来提供在类驱动的上层或底层进行的微调特性,以此来提供驱动程序本身和由硬件设备执行的任务最大的效率。在绝大多数情况下,这种设计将得到各方面均兼容于Windows2000的驱动程序,提供更好的性能,消耗更少的系统资源,并且对驱动程序大小的缩减经常达到90%。注意此处大小指的只是厂商/型号特定驱动程序,而不包括本地类驱动程序。
程序体系
在Windows2000中包括WDM不但扩展了支持设备的数量,也给微软的主要网络操作系统带来了即插即用能力。尽管Windows2000并不能支持市面上所有的硬件,它的硬件兼容性列表(Hardware Compatibility list,HCL)已经远远大于WindowsNT4.0的Windows2000的驱动程序体系包括类驱动程序,总线驱动程序,迷你驱动程序和过滤器驱动程序。
类驱动
类驱动是设计来控制一个硬件类别的常用、通用和基本的功能和能力的驱动程序。硬件类别有很多,例如键盘,鼠标,显示器,控制卡,视频设备,CDROM,软驱,硬盘等等。
总线驱动
总线驱动程序是用来连接设备和计算机的控制器的驱动程序。
总线类型有周边元件扩展接口(Peripheral Component Interconnect,PCI),通用串行总线(Universal Serial Bus,USB),IEEE(Instituteof Electricaland Electronics Engineers,国际电子电气工程师协会)1394,小型计算机系统接口(Small Computer Systems Interface,SCSI),PC卡(PCMCIA)工业标准体系(Industrial Standard Architecture,ISA),扩展工业标准体系(Extended Industrial Standard Architecture,EISA),增强型集成设备电子接口(Enhanced Integrated Device Electronics,EIDE),扩展能力端口(Extended Capabilities Port,ECP)和COM端口等等。
迷你驱动
Windows2000包括控制这些控制器连接的驱动程序。总线设备的驱动程序既有标准类驱动程序,也有迷你驱动程序和过滤器驱动程序的厂商特定实现。
迷你驱动程序与类驱动和总线驱动相接口,提供操作系统对硬件的控制和存取,它定义了硬件和类驱动间的接口,并提供对类驱动不提供的特定或专有的功能和能力的控制机制。
过滤器驱动
过滤器驱动程序用于对设备能力限制或授予更广泛的存取,通过安装在类驱动程序的上层或下层实现。过滤器经常用来防止给设备发送不支持的命令或者用来将命令由类驱动程序的语法翻译为硬件设备要求的语法。
Windows Driver Model(WDM)架构有利于提升音效处理的效能:原来需要在影像、音效设备上的程序代码,现在可以直接包含在操作系统中,因此能更快地与硬件同步更新。
支持三种
数据流类
支持数据流的高带宽传输,得到更快的数据处理速度。这个类驱动程序经常与音频端口类驱动程序结合使用,以支持实时的视频和音频。该类驱动也负责多任务时序,直接内存存取(DMA),内存优化,即插即用和I/O缓冲区管理。
输入设备类
管理多种总线(如USB)间的数据与指令语法翻译。大多数时候,本类驱动控制由用户交互接口传来的数据,如键盘,鼠标和游戏杆等。
音频端口类
支持多媒体的实时流式回放。它依靠数据流类驱动程序,直接控制硬件,该驱动程序主要使用COM1(I/O地址03F8-03FF)COM2(I/O地址02F8-02FF)
下面内容由微软官网提供:WDM 驱动程序的类型 - Windows drivers | Microsoft Docs
WDM 驱动程序的类型
有三种类型的 WDM 驱动程序:总线驱动程序、函数驱动程序和筛选器驱动程序。
- 总线驱动程序驱动单个 I/O 总线设备,并提供与设备无关的单槽功能。 总线驱动程序还检测并报告连接到总线的子设备。
- 函数驱动程序驱动单个设备。
- 筛选器驱动程序筛选设备的 I/O 请求、设备类或总线。
在此上下文中,总线是其他物理、逻辑或虚拟设备连接到的任何设备;总线包括传统总线(如 SCSI 和 PCI)以及并行端口、串行端口和 i8042 端口。
驱动程序开发人员必须了解不同类型的 WDM 驱动程序并知道自己正在编写哪种类型的驱动程序,这一点非常重要。 例如,驱动程序是否处理每个即插即用 IRP 以及如何处理此类 IRP 取决于所编写的驱动程序的类型(总线驱动程序、函数驱动程序或筛选器驱动程序)。
下图显示了设备的总线驱动程序、函数驱动程序和筛选器驱动程序之间的关系。
每个设备通常都有针对父 I/O 总线的总线驱动程序、针对设备的函数驱动程序,以及零个或零个以上针对设备的筛选器驱动程序。 需要许多筛选器驱动程序的驱动程序设计不会获得最佳性能。
上图中的驱动程序详述如下:
-
总线驱动程序为总线控制器、适配器或桥提供服务。 总线驱动程序是必需的驱动程序;计算机上的每个总线类型都有一个总线驱动程序。 Microsoft 为大多数常见总线提供总线驱动程序。 IHV(Independent Hardware Vendor,独立硬件商)和 OEM(Original Equipment Manufacturer,原始设备制造商)可以提供其他总线驱动程序。
-
总线筛选器驱动程序通常会将值添加到总线,由 Microsoft 或系统 OEM 提供。 一个总线可以有任意数量的总线筛选器驱动程序。
-
底层筛选器驱动程序通常修改设备硬件的行为。 它们是可选的,通常由 IHV 提供。 一个设备可以有任意数量的底层筛选器驱动程序。
-
函数驱动程序是设备的主驱动程序。 函数驱动程序通常由设备供应商编写,并且是必需的(除非在原始模式下使用设备)。
-
上层筛选器驱动程序通常为设备提供增值功能。 它们是可选的,通常由 IHV 提供。