WDM驱动程序介绍(引)

http://zhidao.baidu.com/question/56715021.html

WDM(Windows driver model)是微软为开发人员提供的一种编写运行在Windows平台下新硬件驱动程序的有效方法,此即所谓的Windows驱动程序模型。WDM提供了设备类(device classes),由此形成的源代码可以运行在各类Windows平台:Win XP/2000/Me/98。需要指出的是,职业开发人员往往使用的是更有深度的DDK,它除了可以开发WDM类型的驱动程序外,还可以开发非WDM类型Windows驱动程序。

  WDM是一种便捷式的编程技术,它使开发人员写出的驱动程序可以跨平台运行,支持编写微软所支持的WDM 总线驱动程序,在WDM中"总线"(Bus)的概念是一种附加在其它设备(包括物理设备、逻辑设备、虚拟设备)上的设备协议,例如Windows XP内置的WDM技术支持的总线类型包括:PCI(Peripheral Component Interconnect)、动态式即插即用串行I/O总线(如USB和IEEE 1394)、SCSI(Small Computer System Interface)、NDIS(Network Driver Interface Specification)以及远程式NDIS (RNDIS)。

  新版WDM中的RNDIS属于新内容:如简化了对网络设备硬件的开发,减弱了网络设备对驱动程序的依赖性,使最终用户对网络设备的设置安装更简便。WDM新版中对设备的支持主要包括:USB设备类,比如其中的类HID(Human Interface Device);数码相机/扫描仪;通过IEEE 1394标准的视频捕捉设备;音频;控制调制解调器的WinModem。在WDM 类代码中提供的port/miniport 驱动范式,支持第三方厂商为其特殊设备编写"迷你型"驱动minidriver。Windows DDK其实是建立在WDM基础之上,它提供了:Driver Verifier 及 Windows Hardware Compatibility Tests测试工具;被WHQL(Windows Hardware Quality Labs)所识别的第三方驱动程序等集成环境。

  WDM驱动程序的三种类型

  WDM支持的驱动程序具有分层结构,换言之,对于一种设备而言,它可以具有三种类型的drivers:总线driver,或者函数driver,或者过滤式驱动程序(它可以假定或修正设备的行为值)。为一台设备服务的这些驱动程序链就是所谓驱动程序栈。一个驱动程序栈分阶段地处理用户的请求,这些驱动程序一个个相互叠加在一起,低层的总线驱动程序可用于处理与硬件的所有基本联系,而中间的类驱动程序对整个一类驱动程序提供共同的设施。

  微软提供了针对Windows的总线驱动程序,并为第三方设备开发商提供有关服务,如枚举设备、对即插即用和I/O所需电源的管理,并提供了独立于设备管理方式。设备开发商更多地是提供函数式驱动,其基本内容包括:对设备的操作界面,对设备的读写句柄,对设备电源的管理策略。过滤式驱动程序安装在驱动栈一个或多个设备之上或下端,它可以截获设备、或设备类、或总线的请求,判断这些请求,并可以修改其内容或对其进行响应,例如USB键盘的高层过滤驱动程序可以增强加密检查,而适用于鼠标的低层类过滤有助于提高鼠标性能。

  函数式驱动是这样一种结构:属于某类设备的常规执行可以通过其类驱动实现,即是说驱动程序在开发时,开发人员的工作只需要写出非常少的驱动代码minidriver去与硬件打交道,大部分工作可以通过调用类驱动完成。微软提供的类驱动可以实现常见的系统任务,比如即插即用和电源管理。WDM class drivers主要内容包括:

  (1)流式类驱动,以内核模式支持多媒体内容;

  (2)具有支持输入设备的HID类驱动;

  (3)USB 和 IEEE 1394总线类驱动;

  (4)支持串行和并行方式的存储协议。

  Windows支持WDM驱动的各个系统内核组件包括:

  (1)Kernel组件,指基本的同步、性能计算和及时、延缓与IRQ控制;

  (2)Object Manager组件,对象说明;

  (3)Executive执行组件,内存分配、互锁及列项操作;

  (4)I/O 管理组件,包括I/O IRP(Request Packet)控制,设备对象,工作项目,注册表访问,系统状态提示,DMA及中断;

  (5)内存管理,虚拟到物理内存映像,物理内存托管和锁定,驱动程序映像内存锁定,机动I/O空间;

  (6)处理服务,系统线程生成和删除;

  (7)Run-time Library,大容量外存,Unicode和数据类型转换;

  (8)电源管理,电源状态改变,电源IRP控制,设备空闲检测;

  (9)即插即用子系统,硬件检测和资源分配,PnP(Plug and Play) IRP控制以及硬件事件;

  (10)WMI(Windows Management Instrumentation),用于支持设备测试以及检测指示数据的支撑结构;

  (11)内核式流,是连接流数据设备的支撑结构;

  (12)硬件提取层,提取平台,访问和调用I/O端口及内存映像设备。

  电源管理可以是系统级或设备级,前者可以请求整个系统关闭。系统电源有六种状态:不可完全开启、完全关闭、三种休闲状态和一种休眠状态。设备级电源管理则有四种状态:完全开启、完全关闭,加两种休眠状态。一个设备可自行关闭,即使系统其它部分正全速运行。

你可能感兴趣的:(介绍)