структура WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS (wdfdevice.h)

[Применимо к KMDF и UMDF]

Структура WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS содержит предоставленные драйвером сведения о способности устройства к пробуждению себя и системы, когда оба устройства находятся в маломощном состоянии.

Синтаксис

typedef struct _WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS {
  ULONG                                 Size;
  DEVICE_POWER_STATE                    DxState;
  WDF_POWER_POLICY_SX_WAKE_USER_CONTROL UserControlOfWakeSettings;
  WDF_TRI_STATE                         Enabled;
  BOOLEAN                               ArmForWakeIfChildrenAreArmedForWake;
  BOOLEAN                               IndicateChildWakeOnParentWake;
} WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS, *PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS;

Члены

Size

Размер данной структуры (в байтах).

DxState

DEVICE_POWER_STATE типизированный перечислитель, идентифицирующий состояние низкого энергопотребления устройства, которое будет введено устройством, когда состояние питания системы переходит в состояние пробуждения с низким энергопотреблением. Значение DxState не может быть PowerDeviceD0. DEVICE_POWER_STATE значения определяются в wdm.h.

UserControlOfWakeSettings

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

Enabled

Перечислитель WDF_TRI_STATE, указывающий, может ли устройство разбудить систему (т. е. восстановить систему до уровня S0), когда система находится в маломощном состоянии. Этот элемент может иметь одно из следующих значений:

WdfTrue — включена пробуждение системы.

WdfFalse — пробуждение системы отключено.

WdfUseDefault — пробуждение системы изначально включено по умолчанию; но если для элемента UserControlOfWakeSettings задано значение WakeAllowUserControl, то параметр пользователя или INF-файл драйвера переопределяет начальное значение.

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

ArmForWakeIfChildrenAreArmedForWake

Логическое значение, которое, если задано значение TRUE, указывает, что возможность родительского устройства пробуждения и система должна быть включена, если эта возможность включена для дочерних устройств устройства. Дополнительные сведения см. в разделе "Примечания". Этот член доступен в KMDF версии 1.7 и более поздних версиях.

IndicateChildWakeOnParentWake

Логическое значение, которое, если задано значение TRUE, указывает, что платформа будет предоставлять состояние пробуждения дочерним устройствам, если родительское устройство обнаруживает сигнал пробуждения. Дополнительные сведения см. в разделе "Примечания". Этот член доступен в KMDF версии 1.7 и более поздних версиях.

Комментарии

Структура WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS используется в качестве входных данных для WdfDeviceAssignSxWakeSettings.

Чтобы инициализировать свою WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS структуру, драйвер должен вызвать WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_INIT.

При первом вызове драйвера WdfDeviceAssignSxWakeSettings выполняются следующие действия:

  • Платформа хранит значения всех элементов структуры WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS .
  • Если для элемента UserControlOfWakeSettings задано значение WakeAllowUserControl , а для элемента Enabled задано значение WdfUseDefault, платформа считывает реестр, чтобы узнать, включил ли пользователь пробуждение системы.
Во время последующих вызовов WdfDeviceAssignSxWakeSettings платформа не сохраняет значение элемента UserControlOfWakeSettings . Другими словами, платформа выполняет следующие действия при первом вызове драйвера WdfDeviceAssignSxWakeSettings , но не во время последующих вызовов:
  • Хранит значение элемента UserControlOfWakeSettings .
  • Ищет параметр пользователя в реестре, если для элемента Enabled задано значение WdfUseDefault.
К значению, указанному для элемента DxState , применяются следующие правила:
  • Значение не может быть PowerDeviceD0.
  • Если указать PowerDeviceMaximum, платформа использует значение, указанное драйвером для шины устройства в элементе DeviceWake структуры WDF_DEVICE_POWER_CAPABILITIES .
  • Нельзя указать состояние питания устройства, которое ниже состояния питания устройства в элементе DeviceWakeструктуры WDF_DEVICE_POWER_CAPABILITIES водителя шины. (Иными словами, если значение DeviceWake драйвера шины равно PowerDeviceD2, значение DxState драйвера функции не может быть PowerDeviceD3.)
Сведения о записях реестра, которые управляют возможностями пробуждения устройства, см. в разделе User Control of Device Idle and Wake Behavior.

Если устройство, описываемое структурой WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS , является родительским, драйвер родительского устройства может использовать элементы ArmForWakeIfChildrenAreArmedForWake и IndicateChildWakeOnParentWake Следующим образом:

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

    Чтобы снизить энергопотребление, вы можете не включать функцию пробуждения устройства, если не подключено дочернее устройство, которое также поддерживает функцию пробуждения. Если драйвер задает для элемента ArmForWakeIfChildrenAreArmedForWakeзначение TRUE, значения элемента Enabled имеют следующие значения:

    • Если параметр Включено имеет значение WdfFalse, платформа включает возможность пробуждения драйвера только в том случае, если включена возможность пробуждения дочернего устройства.
    • Если параметр Включено имеет значение WdfTrue, платформа всегда включает возможность пробуждения драйвера независимо от того, есть ли на вашем устройстве дочерние устройства с поддержкой пробуждения.
    • Если параметр Enabled имеет значение WdfUseDefault , а UserControlOfWakeSettingsWakeAllowUserControl, пользователи могут контролировать, всегда ли ваше устройство включает пробуждение или пробуждение, только если на вашем устройстве есть дочерние устройства с включенным пробуждением.
  • Если драйвер задает для элемента IndicateChildWakeOnParentWake значение TRUE, платформа вызывает функцию обратного вызова EvtDeviceWakeFromSxTriggered в драйвере родительского устройства и в драйвере для каждого дочернего устройства с поддержкой пробуждения. Если драйвер задает для этого элемента значение FALSE, платформа вызывает функцию обратного вызова EvtDeviceWakeFromSxTriggered только в драйвере родительского устройства. Драйвер должен установить для параметра IndicateChildWakeOnParentWake значение TRUE , если драйверы для дочерних устройств вашего устройства должны проверить оборудование, чтобы определить, почему система была разбужена.
Дополнительные сведения о поддержке возможности пробуждения устройства см. в разделе Поддержка пробуждения системы.

Требования

Требование Значение
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfdevice.h (включая Wdf.h)

См. также раздел

EvtDeviceArmWakeFromSx

EvtDeviceArmWakeFromSxWithReason

EvtDeviceWakeFromSxTriggered

WDF_DEVICE_POWER_CAPABILITIES

WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_INIT

WDF_POWER_POLICY_SX_WAKE_USER_CONTROL

WdfDeviceAssignSxWakeSettings

WdfDeviceIndicateWakeStatus