структура WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS (wdfdevice.h)
[Относится к KMDF и UMDF]
Структура WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS содержит предоставленные драйвером сведения, которые платформа использует, когда устройство простаивает и система находится в рабочем состоянии системы (S0).
Синтаксис
typedef struct _WDF_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_POWER_POLICY_IDLE_TIMEOUT_TYPE IdleTimeoutType;
WDF_TRI_STATE ExcludeD3Cold;
} WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, *PWDF_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. Дополнительные сведения о том, когда платформа считает устройство бездействующим, см. в разделе Поддержка выключения бездействующего выключения.
UserControlOfIdleSettings
WDF_POWER_POLICY_S0_IDLE_USER_CONTROL типизированный перечислитель, который указывает, имеют ли пользователи возможность изменять параметры простоя устройства.
Enabled
WDF_TRI_STATE типизированный перечислитель, который указывает, будет ли устройство выключено, если оно остается бездействующим и пока питание системы находится на уровне S0. Этот элемент может иметь одно из следующих значений:
WdfTrue — выключение питания включено.
WdfFalse — выключение питания отключено.
WdfUseDefault — выключение питания изначально включено по умолчанию; но если для элемента UserControlOfIdleSettings задано значение IdleAllowUserControl, то параметр пользователя или INF-файл драйвера переопределяет начальное значение.
Если выключение включено, устройство имеет возможность пробуждения и истекает время ожидания простоя, платформа вызывает функцию обратного вызова EvtDeviceArmWakeFromS0 драйвера, прежде чем устройство перейдет в состояние с низким энергопотреблением.
PowerUpIdleDeviceOnSystemWake
Перечислитель типа WDF_TRI_STATE, который указывает, вернется ли устройство в рабочее (D0) состояние, когда система вернется в рабочее (S0). Этот член действителен, только если драйвер задает для элемента IdleCaps значение IdleCannotWakeFromS0. Элемент PowerUpIdleDeviceOnSystemWake может иметь одно из следующих значений:
WdfTrue — если устройство и система находятся в состоянии с низким энергопотреблением, устройство возвращается в рабочее состояние, когда система возвращается в рабочее состояние.
WdfFalse . Если и устройство, и система находятся в состоянии низкого энергопотребления, устройство остается в состоянии низкого энергопотребления, когда система возвращается в рабочее состояние.
WdfUseDefault — значение по умолчанию, используемое платформой, если драйвер не задает другое значение. Это значение имеет то же значение, что и WdfFalse.
Если для элемента PowerUpIdleDeviceOnSystemWake задано значение WdfFalse или WdfUseDefault, устройство возвращается в рабочее состояние только при доступе программного обеспечения к устройству, например, когда приложение отправляет на устройство запрос ввода-вывода. Дополнительные сведения см. в разделе Устройство возвращается в рабочее состояние.
Элемент PowerUpIdleDeviceOnSystemWake доступен в KMDF версии 1.9 и более поздних версиях и начиная с версии UMDF 2.0.
IdleTimeoutType
Перечислитель типа WDF_POWER_POLICY_IDLE_TIMEOUT_TYPE, указывающий, как используется элемент IdleTimeout .
Элемент IdleTimeoutType доступен в KMDF версии 1.11 и более поздних, а также начиная с версии 2.0 UMDF. Дополнительные сведения см. в разделе Примечания.
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. В противном случае это требование не применяется.
Include = machine.inf
Needs = PciD3ColdSupported
В противном случае это значение имеет то же значение, что и WdfTrue.
Член ExcludeD3Cold доступен начиная с KMDF версии 1.11, а также начиная с версии 2.0 UMDF и игнорируется в операционных системах, предшествующих Windows 8. Дополнительные сведения см. в разделе Примечания.
Комментарии
Структура WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS используется в качестве входных данных для WdfDeviceAssignS0IdleSettings.
При первом вызове драйвером WdfDeviceAssignS0IdleSettings выполняются следующие действия:
- Платформа хранит значения всех элементов структуры WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS .
- Если для элемента UserControlOfIdleSettings задано значение IdleAllowUserControl , а для элемента Enabled задано значение WdfUseDefault, платформа считывает реестр, чтобы узнать, включил ли пользователь выключение устройства в режиме простоя.
- Если драйвер указывает IdleUsbSelectiveSuspend для значения элемента IdleCaps , он должен сделать это при первом вызове WdfDeviceAssignS0IdleSettings и впоследствии не может изменить это значение.
- Если драйвер указывает IdleCanWakeFromS0 или IdleCannotWakeFromS0 при первом вызове WdfDeviceAssignS0IdleSettings, он может снова вызвать WdfDeviceAssignS0IdleSettings , чтобы изменить это значение (но он не может изменить значение на IdleUsbSelectiveSuspend).
Начиная с KMDF 1.11 и UMDF 2.0, драйвер KMDF может переключаться между IdleUsbSelectiveSuspend и IdleCannotWakeFromS0 в любое время.
Начиная с Windows 8, установка элемента IdleTimeoutType на SystemManagedIdleTimeout или SystemManagedIdleTimeoutWithHint приводит к регистрации платформы управления питанием (PoFx).
Если драйвер реализует поддержку функционального состояния питания для многокомпонентного устройства, драйвер должен либо задать IdleTimeoutType значениеDriverManagedIdleTimeout, либо вообще не вызывать WdfDeviceAssignS0IdleSettings .
Дополнительные сведения см. в разделах Поддержка функциональных состояний питания и Обзор платформы управления питанием.
К значению, указанному для элемента DxState , применяются следующие правила:
- Значение не может быть PowerDeviceD0.
- Для USB-устройств значением не может быть PowerDeviceD0 или PowerDeviceD3.
- Если указать PowerDeviceMaximum, платформа использует значение, которое драйвер для шины устройства предоставляется в элементе DeviceWake структуры WDF_DEVICE_POWER_CAPABILITIES .
- Если значение элемента IdleCaps равно IdleCanWakeFromS0, нельзя указать состояние питания устройства, которое ниже состояния питания устройства в элементе DeviceWakeструктуры WDF_DEVICE_POWER_CAPABILITIES водителя шины. (Другими словами, если значение DeviceWake драйвера шины равно PowerDeviceD2, значение DxState драйвера функции не может быть PowerDeviceD3.)
Начиная с KMDF 1.11 и UMDF 2.0, устройство, поддерживающее выключение в режиме простоя , может использовать член ExcludeD3Cold этой структуры, чтобы указать, должно ли состояние питания D3cold быть допустимым выбором для состояния с низким энергопотреблением устройства , которое будет введено устройством после истечения периода ожидания простоя.
Сведения о записях реестра, которые управляют бездействующими возможностями устройства, см. в разделах Управление пользователем бездействия устройства и поведением пробуждения.
Чтобы инициализировать структуру WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS , драйвер должен вызвать WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT.
Требования
Требование | Значение |
---|---|
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdfdevice.h (включая Wdf.h) |