перечисление WDF_POWER_POLICY_S0_IDLE_CAPABILITIES (wudfddi_types.h)
[Относится к KMDF и UMDF]
Перечисление WDF_POWER_POLICY_S0_IDLE_CAPABILITIES определяет возможности, которые устройство может поддерживать при переходе в состояние с низким энергопотреблением во время простоя.
Синтаксис
typedef enum _WDF_POWER_POLICY_S0_IDLE_CAPABILITIES {
IdleCapsInvalid,
IdleCannotWakeFromS0,
IdleCanWakeFromS0,
IdleUsbSelectiveSuspend
} WDF_POWER_POLICY_S0_IDLE_CAPABILITIES;
Константы
IdleCapsInvalid Только для внутреннего использования. |
IdleCannotWakeFromS0 Устройство не может выйти из состояния с низким энергопотреблением, пока система находится в рабочем состоянии (S0). |
IdleCanWakeFromS0 Устройство может выйти из состояния с низким энергопотреблением, пока система находится в рабочем состоянии (S0). |
IdleUsbSelectiveSuspend Устройство подключено к шине USB и поддерживает выборочную приостановку USB. Используйте это значение, если подключенное по USB устройство поддерживает как простой, так и пробуждение, пока компьютер находится в рабочем состоянии. Если USB-устройство поддерживает только режим простоя, используйте IdleCannotWakeFromS0. (Драйверы для USB-устройств не должны указывать IdleCanWakeFromS0.) См. примеры кода в следующем разделе Примеры. Для Windows XP платформа поддерживает выборочную приостановку USB, только если структура USB_CONFIGURATION_DESCRIPTOR устройства показывает, что устройство поддерживает удаленное пробуждение. Для Windows Vista и более поздних версий Windows платформа поддерживает выборочную приостановку usb независимо от того, поддерживает ли устройство удаленное пробуждение. |
Комментарии
Перечисление WDF_POWER_POLICY_S0_IDLE_CAPABILITIES используется в структуре WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS .
Примеры
В следующих примерах кода показано, как включить поддержку простоя для USB-устройства. В каждом случае возвращаемое значение STATUS_POWER_STATE_INVALID означает, что водитель автобуса сообщил, что устройство не может самостоятельно разбудиться.
Пример KMDF
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(&idleSettings,
IdleUsbSelectSuspend);
status = WdfDeviceAssignS0IdleSettings(device,
&idleSettings);
if (status == STATUS_POWER_STATE_INVALID){
//
// The device probably does not support wake.
// It might support idle without wake.
//
idleSettings.IdleCaps = IdleCannotWakeFromS0;
status = WdfDeviceAssignS0IdleSettings(device,
&IdleSettings);
if (!NT_SUCCESS(status) {...}
}
else {...}
Пример UMDF
hr = pIWDFDevice2->AssignS0IdleSettings(IdleUsbSelectSuspend,
PowerDeviceD3,
IDLEWAKE_TIMEOUT_MSEC,
IdleAllowUserControl,
WdfTrue);
if (hr == HRESULT_FROM_NT(STATUS_POWER_STATE_INVALID)){
//
// The device probably does not support wake.
// It might support idle without wake.
//
hr = pIWDFDevice2->AssignS0IdleSettings(IdleCannotWakeFromS0,
PowerDeviceD3,
IDLEWAKE_TIMEOUT_MSEC,
IdleAllowUserControl,
WdfTrue);
if (!SUCCEEDED(hr)) {...}
}
else {...}
Требования
Требование | Значение |
---|---|
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 1.11 |
Верхняя часть | wudfddi_types.h (включая Wdf.h) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по