Поделиться через


Диспетчер PnP перераспределяет системные ресурсы (UMDF 1)

Предупреждение

UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2.

Архивные примеры UMDF 1 можно найти в Windows 11 версии 22H2 — обновление примеров драйверов за май 2022 г.

Дополнительные сведения см. в разделе начало работы с помощью UMDF.

Если пользователь добавляет устройство в систему и если устройству требуются системные ресурсы, которые диспетчер PnP уже назначил другому устройству, диспетчер PnP пытается переназначить ресурсы.

Во время этого процесса диспетчер PnP останавливает устройства и выводит их из рабочих состояний (D0). Затем он доставляет новые списки ресурсов на устройства, чтобы они могли перезапуститься, используя новые ресурсы.

При перераспределении ресурсов диспетчер PnP не изменяет назначение ресурсов устройства, если один из драйверов на основе UMDF устройства предоставил функцию обратного вызова IPnpCallback::OnQueryStop , а функция обратного вызова навела вето на переназначение.

Последовательность выключения питания
Для каждой функции на основе UMDF и драйвера фильтра, поддерживающего остановленное устройство, платформа последовательно выполняет следующие действия по одному драйверу за раз, начиная с драйвера, который является самым высоким в стеке драйверов:

  1. Если драйвер использует самоуправляемый ввод-вывод, платформа вызывает функцию обратного вызова IPnpCallbackSelfManagedIo::OnSelfManagedIoSuspend драйвера.

  2. Платформа останавливает все очереди ввода-вывода устройства, управляемые питанием.

  3. Платформа вызывает функцию обратного вызова IPnpCallback::OnD0Exit драйвера (если она существует).

  4. Платформа вызывает функцию обратного вызова IPnpCallbackHardware::OnReleaseHardware (если она существует) драйвера, передавая список аппаратных ресурсов, назначенных диспетчеру PnP устройству.

Чтобы увидеть схему, на которую показаны эти шаги, см. рисунок упорядоченного удаления в разделе Пользователь отключает устройство.

Последовательность включения питания
Для каждой функции на основе UMDF и драйвера фильтра, который поддерживает устройство, платформа последовательно выполняет по одному драйверу за раз, начиная с драйвера, который является самым низким в стеке драйверов:

  1. Платформа вызывает функцию обратного вызова IPnpCallbackHardware::OnPrepareHardware драйвера (если она существует), передавая список аппаратных ресурсов, назначенных диспетчеру PnP устройству.

  2. Платформа вызывает функцию обратного вызова IPnpCallback::OnD0Entry драйвера (если она существует).

  3. Платформа перезапускает все очереди ввода-вывода устройства, управляемые питанием.

  4. Если драйвер использует самоуправляемый ввод-вывод, платформа вызывает функцию обратного вызова IPnpCallbackSelfManagedIo::OnSelfManagedIoRestart .

Схему, на которую показаны эти шаги, см. в статье Подключение пользователя к устройству.