可配置性
当今的外围设备必须 可配置硬件,其驱动程序必须可配置 软件。
如果设备可以接受系统硬件资源(如 I/O 端口号)的不同分配,而无需进行物理修改,则设备是硬件可配置的。 例如,如果一组可热插拔即插即用磁盘连接到独立磁盘的冗余阵列 (RAID) 配置中,则用户可以在系统运行时交换磁盘。 如果设备是硬件可配置的,则其驱动程序不能包含设备硬件资源与系统相关的硬编码值。
驱动程序是软件可配置的,前提是:
它可以动态接收和更改其设备的硬件资源。
支持即插即用的驱动程序不包含设备硬件资源的硬编码值,驱动程序也不会轮询设备以确定其资源分配。 相反,系统将资源动态分配给设备,然后向驱动程序提供资源值。
编写时没有假设可能位于其驱动程序堆栈中上方或下方的其他驱动程序。
例如,磁盘的较低级别设备驱动程序的设计必须足够灵活,以便支持由多个高级文件系统驱动程序实现的多个文件系统(可能在一台计算机上)。
此外,如果计算机有足够的大容量存储容量,则同一较低级别的磁盘驱动程序不得干扰中间驱动程序对容错的支持, (在文件系统中实现为镜像分区、条带集或卷集) 。
PnP 管理器和每个 PnP 硬件总线驱动程序协同工作,为特定类型的 I/O 总线提供平台硬件与系统软件之间的接口。 PnP 管理器生成 一个设备树,其中包含表示系统上所有设备的节点,包括总线。 对于每个设备,PnP 管理器维护两个列表:
设备能够使用 的硬件资源 列表。
实际分配给设备的硬件资源的列表。
设备驱动程序可帮助 PnP 管理器创建这些列表,这些列表在注册表中维护。 在系统中添加和删除设备时,PnP 管理器会根据需要重新分配资源并更新列表。
系统的硬件抽象层 (HAL) 组件(作为动态链接库实现)负责其他系统组件(包括内核模式驱动程序)所需的一些特定于硬件级别的平台支持。