структура WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS (wudfddi_types.h)

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

Структура WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS содержит предоставленные драйвером сведения, которые платформа использует, когда устройство неактивно и система находится в рабочем состоянии системы (S0).

Синтаксис

typedef struct _WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS {
  ULONG                                 Size;
  WDF_POWER_POLICY_S0_IDLE_CAPABILITIES IdleCaps;
  DEVICE_POWER_STATE                    DxState;
  ULONG                                 IdleTimeout;
  WDF_POWER_POLICY_S0_IDLE_USER_CONTROL UserControlOfIdleSettings;
  WDF_TRI_STATE                         Enabled;
  WDF_TRI_STATE                         PowerUpIdleDeviceOnSystemWake;
  WDF_TRI_STATE                         ExcludeD3Cold;
} WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, *PWUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS;

Члены

Size

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

IdleCaps

WDF_POWER_POLICY_S0_IDLE_CAPABILITIES перечислитель, который определяет возможность пробуждения устройства после установки в маломощном состоянии, в то время как система остается в рабочем состоянии (S0).

DxState

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

IdleTimeout

Время (в миллисекундах), в течение времени, когда устройство будет оставаться бездействующим, прежде чем платформа переключит его в состояние с низким энергопотреблением, предоставляемое DxState. Чтобы использовать значение времени ожидания простоя платформы по умолчанию, укажите IdleTimeoutDefaultValue. Дополнительные сведения о том, когда платформа считает устройство бездействующим, см. в разделе Поддержка бездействующих Power-Down в драйверах на основе UMDF.

UserControlOfIdleSettings

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

Enabled

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

WdfTrue — выключение питания включено.

WdfFalse — выключение питания отключено.

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

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

PowerUpIdleDeviceOnSystemWake

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

WdfTrue — если устройство и система находятся в маломощном состоянии, устройство возвращается в рабочее состояние, когда система возвращается в рабочее состояние.

WdfFalse — если и устройство, и система находятся в маломощном состоянии, устройство остается в состоянии с низким энергопотреблением, когда система возвращается в рабочее состояние.

WdfUseDefault — значение по умолчанию, используемое платформой, если драйвер не задает другое значение. Это значение имеет то же значение, что и WdfFalse.

Если для элемента PowerUpIdleDeviceOnSystemWake задано значение WdfFalse или WdfUseDefault, устройство возвращается в рабочее состояние только при доступе программного обеспечения к устройству, например когда приложение отправляет на устройство запрос ввода-вывода. Дополнительные сведения см. в разделе Устройство возвращается в рабочее состояние.

ExcludeD3Cold

Перечислитель с типом WDF_TRI_STATE, указывающий, может ли платформа поставить устройство в состояние питания D3cold по истечении периода простоя. Член ExcludeD3Cold может иметь одно из следующих значений:

WdfTrue — платформа переместит устройство в маломощное D-состояние по истечении периода простоя. Если это D-состояние — D3, устройство будет перемещено в D3hot. Если параметр ExcludeD3Cold имеет значение WdfTrue, дальнейший переход с D3hot на D3cold не будет разрешен.

WdfFalse — устройство может перейти в состояние питания D3cold по истечении времени ожидания простоя, если выполняются все следующие условия:

  • Элемент DxState этой структуры указывает PowerDeviceD3 или PowerDeviceMaximum.
  • Встроенное ПО ACPI указывает, что устройство поддерживает состояние питания D3cold.
  • Если драйвер указал IdleCanWakeFromS0 или IdleUsbSelectiveSuspend в элементе IdleCaps этой структуры, устройство может реагировать на событие внешнего пробуждения, находясь в состоянии питания D3cold. В противном случае это требование не применяется.
WdfUseDefault — платформа проверяет DDInstall. Раздел HW INF-файла драйвера. Если присутствуют следующие строки, это значение имеет то же значение, что и WdfFalse:
Include = machine.inf
Needs = PciD3ColdSupported
В противном случае это значение имеет то же значение, что и WdfTrue.

Член ExcludeD3Cold доступен, начиная с UMDF версии 1.11, и игнорируется в операционных системах, предшествующих Windows 8. Дополнительные сведения см. в разделе Примечания.

Комментарии

Структура WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS используется в качестве входных данных для IWDFDevice3::AssignS0IdleSettingsEx.

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

  • Платформа хранит значения всех элементов структуры WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS .
  • Если для элемента UserControlOfIdleSettings задано значение IdleAllowUserControl , а для элемента Enabled задано значение WdfUseDefault, платформа считывает реестр, чтобы узнать, включил ли пользователь выключение устройства при его простое.
Во время последующих вызовов IWDFDevice3::AssignS0IdleSettingsEx платформа хранит только значения элементов DxState, IdleTimeout и Enabled . Кроме того, платформа сохраняет значение члена IdleCaps в соответствии со следующими правилами:
  • Если драйвер когда-либо указывал IdleCanWakeFromS0 для значения параметра IdleCaps в предыдущем вызове AssignS0IdleSettingsEx, он не может впоследствии изменить это значение на IdleUsbSelectiveSuspend.
  • Если драйвер когда-либо указывал IdleUsbSelectiveSuspend для значения параметра IdleCaps в предыдущем вызове AssignS0IdleSettingsEx, он не может впоследствии изменить это значение на IdleCanWakeFromS0.

К значению, указанному для элемента DxState , применяются следующие правила:

  • Значение не может быть PowerDeviceD0.
  • Для USB-устройств значение не может быть PowerDeviceD0 или PowerDeviceD3.
  • Если указать DevicePowerMaximum, платформа использует значение, указанное драйвером для шины устройства в элементе DeviceWakeструктуры WDF_DEVICE_POWER_CAPABILITIES .
  • Если значение элемента IdleCaps равно IdleCanWakeFromS0, нельзя указать состояние питания устройства, которое ниже состояния питания устройства в элементе DeviceWakeструктуры WDF_DEVICE_POWER_CAPABILITIES водителя шины. (Иными словами, если значение DeviceWake драйвера шины равно PowerDeviceD2, значение DxState драйвера функции не может быть PowerDeviceD3.)
В операционных системах, предшествующих Windows 8, состояние питания D3 означает, что устройство находится в малом энергопотреблении, но некоторая мощность шины по-прежнему сохраняется. Начиная с Windows 8, прежнее состояние питания D3 называется D3hot, и доступно новое состояние питания (D3cold). Устройство может перейти в состояние D3cold, когда система находится в рабочем (S0) состоянии или в состоянии с низким энергопотреблением. Когда устройство находится в состоянии питания D3cold, шина неактивна и устройство должно активировать собственный сигнал пробуждения, когда внешнее действие (например, подключение сетевого кабеля) вызывает аппаратное событие.

Устройство, поддерживающее выключение бездействующего питания, может использовать элемент ExcludeD3Cold этой структуры, чтобы указать, должно ли состояние питания D3cold быть допустимым для состояния низкого энергопотребления устройства , которое будет введено устройством по истечении периода простоя.

Сведения о записях реестра, которые управляют возможностями простоя устройства, см. в разделе User Control of Device Idle and Wake Behavior in UMDF.

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

Требования

Требование Значение
Минимальная версия UMDF 1.11
Верхняя часть wudfddi_types.h

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

IWDFDevice3::AssignS0IdleSettingsEx

WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT