Windows支持一组范围广泛的设备驱动程序类型和各种编程环境。对于一个驱动程序,最为宽泛的分类是,它是一个用户模式驱动程序还是一个内核模式驱动程序。Windows支持以下几种类型的用户模式驱动程序。
虚拟设备驱动程序(VDD)被用于仿真16位MS-DOS应用程序。它们把"MS-DOS应用程序所认为是I/O端口的引用"捕获住,并且将它们转译成原生的Window I/O函数,然后,通过这些函数传递到实际的设备驱动程序中。
Windows子系统打印机驱动程序(printer driver)把与设备无关的图形请求转译成与打印机相关的命令。然后这些命令通常被转达到一个内核模式的端口驱动程序中,比如并行端口驱动程序(Parport.sys)或者通用串行总线(USB, universal serial bus)打印机端口驱动程序(Usbprint.sys)。
内核模式的驱动程序也有很多种类型,它们可以被划分成以下基本的类别。
文件系统驱动程序(file system driver)接受针对文件的请求,然后,通过向大容量存储设备(mass storage)或网络设备驱动程序发送它们自己的,更为显式的请求,以此来满足所接收到的I/O请求;
即插即用驱动程序(Plug and Play driver)与硬件一起工作,并且与Windows电源管理器和PnP管理器结合起来。它们包含了大容量存储设备,视频适配器,输入设备和网络适配器的驱动程序。
非即插即用驱动程序(Non-Plug and Play driver, 也称为内核扩展)扩展了系统的功能,它们为用户模式的程序提供了“访问内核模式的服务和驱动程序”的途径。它们并不与PnP管理器或电源管理器结合在一起。这种驱动程序的例子有网络API和协议驱动程序。
WDM驱动程序
WDM驱动程序是指遵从Windows驱动程序模型(WDM, Windows Driver Model)的设备驱动程序。WDM包含了对Windows电源管理,即插即用和WMI的支持,而且,绝大多数即插即用驱动程序都遵循WDM规范。WDM驱动程序有以下三种类型。
总线型驱动程序(bus driver)管理一个逻辑的或物理的总线。总线的例子有PCMCIA, PCI, USB, IEEE 1394和ISA。一个总线型驱动程序负责检测在它控制的总线上所附载的设备,检测到以后通知PnP管理器,它也管理该总线的电源设置;
功能型驱动程序(function dirver)管理某一特定类型的设备。总线型驱动程序通过PnP管理器,将设备展示给功能型驱动程序。所谓功能型驱动程序,是指该驱动程序将一个设备的操作接口导出给操作系统。一般而言,它是掌握了最多关于该设备操作的知识的驱动程序;
过滤型驱动程序(filter dirver)在逻辑上位于功能型驱动程序之上层或下层,增加或者改变一个设备或另一个驱动程序的行为。
在WDM中,没有一个驱动程序负责控制一个特定设备的所有方面。总线型驱动程序负责检测总线上成员的变化(设备加入或移除),帮助PnP管理器列举该总线上的设备,访问与该总线有关的配置寄存器,以及在某些情况下,还要控制该总线上设备的电源。功能型驱动程序通常只是一个访问该设备硬件的驱动程序而已。
Note: 在Windows 2000, Windows XP和Windows Server 2003中,HAL的角色与它在Windows NT中的角色并不相同。在Window 2000以前,第三方硬件厂商如果想要为"Windows系统本身并不支持的硬件总线"提供支持,则必须实现一个定制的HAL。Windows 2000,Window XP和Windows Server 2003允许第三方实现一个总线型驱动程序,为Windows系统本身不支持的硬件总线提供支持。
分层的驱动程序
系统对硬件单独部分的支持通常被分散在几个驱动程序之中,每个驱动程序提供了一部分功能,这些功能只有联合起来才能使该设备正确地工作。除了WDM总线型驱动程序,功能型驱动程序和过滤型驱动程序以外,对硬件的支持也可能在以下的组件之间划分。
类驱动程序(class driver)实现了某一特定类型的设备的I/O处理。这种特定类型的设备如磁盘,磁带,CD-ROM等。在这种特定类型的设备中,硬件接口已经被标准化了,所以,一个驱动程序可以为来自各种生产商的设备提供服务;
端口驱动程序(portf driver)实现了与某一类型I/O端口相关的I/O请求的处理,比如SCSI,它们被实现为内核模式的函数库,而不是真正的设备驱动程序;
小端口驱动程序(miniport driver)将“针对一种类型端口的通用I/O请求”映射为一种适配器类型,比如某种特定的SCSI适配器。小端口驱动程序是真正的设备驱动程序,它们需要导入(import)一个端口驱动程序所提供的函数。
No comments:
Post a Comment