硬件资源是可分配的可寻址总线路径,允许外围设备和系统处理器相互通信。 硬件资源通常包括 I/O 端口地址、中断向量和总线相对内存地址块。

在系统与 设备实例 通信之前,PnP 管理器必须根据知道哪些资源可用以及设备实例能够使用哪些资源,将硬件资源分配给设备实例。 资源分配给 设备树 中的每个设备节点, (假设表示的设备需要资源和这些资源) 可用。 PnP 管理器使用与设备节点关联的列表跟踪硬件资源。 它使用两种类型的列表:

资源要求列表
设备通常设计为在资源分配范围内运行。 例如,设备可能只需要一个中断向量,但它可能能够使用任意一系列向量。 对于每个设备实例,PnP 管理器维护资源 要求列表 ,该列表指定设备可以运行的所有硬件资源范围。 列表的名称源于将资源分配给设备时,需要 PnP 管理器从此列表中选择资源。

内核模式代码指定使用 IO_RESOURCE_REQUIREMENTS_LIST结构 ( 作为系统例程的输入或响应 IRP) 的资源要求列表。 用户模式代码指定使用 PnP 配置管理器结构作为 PnP 配置管理器 函数 的输入的资源要求列表。

当 PnP 管理器向设备分配资源时,它会通过为每个设备实例创建分配的资源列表来跟踪这些分配。 这些列表可以称为 资源分配列表 ,但该名称通常缩写为 资源列表 。 PnP 管理器可以更改资源列表内容,因为设备被添加到系统或从系统中删除,资源随后会重新分配。 (资源也可以由 PnP BIOS 分配。此外,使用 INF 文件或用户输入的安装软件可以强制 PnP 管理器将特定资源分配给 device.)

内核模式代码通过使用 CM_RESOURCE_LIST结构指定 资源列表, (作为系统例程的输入或响应 IRP) 。 用户模式代码指定使用 PnP 配置管理器结构作为 PnP 配置管理器 函数 的输入的资源列表。

PnP 管理器将资源要求列表和资源列表存储在注册表中,可以使用Regedit.exe查看它们。 驱动程序可以通过即插即用例程和 即插即用次要 IRP 间接访问这些列表。 用户模式应用程序可以使用 PnP 配置管理器函数 。 (驱动程序和应用程序不得使用注册表函数直接访问这些列表,因为存储格式在将来的 release.)

资源要求列表和资源列表都包含一个或多个 逻辑配置 。 每个逻辑配置标识一系列可接受的资源,或特定 设备实例 的一组特定资源。 此外,设备实例的每个逻辑配置都属于逻辑 配置类型 之一。 下面列出了配置类型。 可以为每个设备实例分配相同或不同类型的多个逻辑配置。

资源要求列表的逻辑配置类型

资源要求列表,用于标识由即插即用设备提供的资源范围。 驱动程序在收到 IRP_MN_QUERY_RESOURCE_REQUIREMENTS IRP 时应返回此列表。 (INF 文件中可以描述非 PnP 设备的基本配置。在这种情况下,设备安装软件读取 INF 文件并调用 PnP 配置管理器函数 来创建要求 list.)

筛选的配置
已提供给驱动程序堆栈的资源要求列表,可能是修改的,然后由驱动程序堆栈返回,以响应
IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP。 PnP 管理器使用生成的筛选配置作为分配资源的基础。

替代基本配置的资源要求列表。 通常,如果设备的 INF 文件包含 INF DDInstall.LogConfigOverride 节 ,设备安装程序会创建替代配置。 如果从系统物理删除其设备,则不会删除替代配置。

资源列表的逻辑配置类型

一个资源列表,用于标识启动系统时分配给设备实例的资源。 (对于 PnP 设备,这是 BIOS 提供的配置;对于非 PnP 设备,卡上的跳线可能会选择这些资源。) 驱动程序在收到 IRP_MN_QUERY_RESOURCES IRP 时,驱动程序应返回此资源列表。 (如果 BIOS 无法确定 device.) PnP 管理器可以在删除或重启设备时修改此列表,启动配置可能部分为空。 对于非 PnP 设备,可以使用此配置类型而不是强制配置,在这种情况下,其配置优先级低于等效的强制配置。 每个设备实例只能存在一个启动配置。

一个资源列表,用于标识设备实例必须使用的资源。 强制配置可防止 PnP 管理器将其他资源分配给设备实例。 设备安装程序可能会根据 INF 中包含的信息或从用户接收的信息创建强制配置。 如果设备从系统中物理删除,则不会删除强制配置。 每个设备实例只能存在一个强制配置。

已分配的配置
标识设备实例当前正在使用的资源的资源列表。 每个设备实例只能存在一个分配的配置。

设备驱动程序负责确定与 PnP 兼容的设备的基本配置、筛选的配置和启动配置,以及返回该信息以响应 PnP 管理器发送的 IRP。 (有关详细信息,请参阅 将 PnP 设备添加到正在运行的 System .) 驱动程序安装软件可以创建替代配置、强制配置以及非 PnP 设备启动配置。 PnP 管理器维护每个设备实例分配的配置。

创建时,会将优先级分配给每个配置。 如果 PnP 管理器发现设备实例已分配了同一类型的多个逻辑配置,则尝试先使用优先级最高的配置。 如果该配置导致资源冲突,它会尝试具有下一个较低优先级的配置。 (有关配置优先级列表,请参阅 CM_Add_Empty_Log_Conf .)