PnP 管理器 (UMDF 1) 重新分发系统资源

警告

UMDF 2 是最新版本的 UMDF,取代了 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 未向 UMDF 1 添加新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。

存档的 UMDF 1 示例可在 Windows 11 版本 22H2 - 2022 年 5 月驱动程序示例更新中找到。

有关详细信息,请参阅使用 UMDF 入门

如果用户将设备添加到系统,并且设备需要 PnP 管理器已分配给其他设备的系统资源,则 PnP 管理器会尝试重新分配资源。

在此过程中,PnP 管理器会停止设备并将其从其工作 (D0) 状态中取出。 然后,它将新的资源列表传递给设备,以便它们可以使用新资源重启。

重新分发资源时,如果设备的一个基于 UMDF 的驱动程序提供了 IPnpCallback::OnQueryStop 回调函数,并且回调函数已否决重新分配,则 PnP 管理器不会更改设备的资源分配。

关机序列
对于支持要停止的设备的每个基于 UMDF 的函数和筛选器驱动程序,框架依次执行以下操作,一次一个驱动程序,从驱动程序堆栈中最高的驱动程序开始:

  1. 如果驱动程序使用自托管 I/O,框架将调用驱动程序的 IPnpCallbackSelfManagedIo::OnSelfManagedIoSuspend 回调函数。

  2. 框架停止设备的所有电源托管 I/O 队列。

  3. 框架调用驱动程序的 IPnpCallback::OnD0Exit 回调函数 ((如果该函数) 存在)。

  4. 框架调用驱动程序的 IPnpCallbackHardware::OnReleaseHardware 回调函数 (该函数是否存在) 传递 PnP 管理器分配给设备的硬件资源列表。

若要查看显示这些步骤的关系图,请参阅 用户拔出设备中的有序删除图。

上电序列
对于支持设备的每个基于 UMDF 的函数和筛选器驱动程序,框架依次执行以下操作,一次一个驱动程序,从驱动程序堆栈中最低的驱动程序开始:

  1. 框架调用驱动程序的 IPnpCallbackHardware::OnPrepareHardware 回调函数(如果) 存在) (,从而传递 PnP 管理器分配给设备的硬件资源列表。

  2. 框架调用驱动程序的 IPnpCallback::OnD0Entry 回调函数 ((如果存在) )。

  3. 框架会重启设备的所有电源托管 I/O 队列。

  4. 如果驱动程序使用自托管 I/O,框架将调用驱动程序的 IPnpCallbackSelfManagedIo::OnSelfManagedIoRestart 回调函数。

若要查看显示这些步骤的关系图,请参阅 用户插入设备