Владение политикой управления питанием в UMDF

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

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

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

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

Для каждого устройства один (и только один) из драйверов устройства должен быть владельцем политики управления питанием. Владелец политики управления питанием определяет соответствующее состояние питания устройства и отправляет запросы в стек драйверов устройства всякий раз, когда состояние питания устройства должно меняться.

Драйверы на основе платформы не содержат код, который запрашивает изменения в состоянии питания устройства, так как платформа предоставляет этот код. По умолчанию всякий раз, когда система переходит в спящий режим, платформа просит водителя для шины устройства понизить состояние питания устройства до D3. (Драйвер может изменить поведение по умолчанию, чтобы платформа установила для устройства состояние спящего режима D1 или D2, если устройство предоставляет возможности пробуждения.) Когда питание системы возвращается в рабочее (S0), платформа запрашивает у драйвера шины восстановление устройства до рабочего (D0) состояния.

Владелец политики управления питанием также отвечает за включение и отключение следующих функций устройства:

  • Возможность устройства перейти в состояние с низким энергопотреблением (спящий режим), когда оно находится в режиме простоя, а система остается в рабочем (S0) состоянии

  • Возможность выхода устройства из спящего режима при обнаружении внешнего события

  • Возможность устройства пробуждения всей системы из спящего состояния системы при обнаружении внешнего события

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

По умолчанию драйверы на основе UMDF не являются владельцами политик питания. Драйвер функции режима ядра устройства является владельцем политики питания по умолчанию. (Если отсутствует драйвер функции режима ядра и драйвер автобуса вызвал WdfPdoInitAssignRawDevice, драйвер автобуса является владельцем политики управления питанием. Если вы хотите, чтобы драйвер на основе UMDF был владельцем политики питания для стека драйверов, драйвер должен вызвать IWDFDeviceInitialize::SetPowerPolicyOwnership, а владелец политики управления питанием в режиме ядра по умолчанию должен вызвать WdfDeviceInitSetPowerPolicyOwnership , чтобы отключить владение.

Кроме того, если вы предоставляете драйвер на основе UMDF для USB-устройства и хотите, чтобы драйвер был владельцем политики управления питанием, INF-файл драйвера должен содержать директиву INF AddReg , которая задает значение WinUsbPowerPolicyOwnershipDisabled в реестре. Если для этого REG_DWORD размера задано любое ненулевое число, драйвер WinUSB не сможет быть владельцем политики управления питанием устройства. Директива AddReg должна находиться в разделе INF DDInstall.HW, как показано в следующем примере.

[MyDriver_Install.NT.hw]
AddReg=MyDriver_AddReg

[MyDriver_AddReg]
HKR,,"WinUsbPowerPolicyOwnershipDisabled",0x00010001,1

Платформа выполняет следующие действия для владельца политики управления питанием:

  • Он обрабатывает все обмен данными с политикой питания между драйвером и остальной частью стека драйверов. Например, вашему водителю не нужно запрашивать у водителя автобуса изменение состояния питания устройства, так как платформа выполняет запрос.

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

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

Дополнительные сведения об обязанностях владельца политики управления питанием см. в следующих разделах: