Метод IWDFDevice2::AssignSxWakeSettings (wudfddi.h)
[Предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. В UMDF 1 новые функции не добавляются, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе начало работы с UMDF.]
Метод AssignSxWakeSettings предоставляет предоставленные драйвером сведения о способности устройства активировать сигнал пробуждения, когда устройство и система находятся в состоянии низкого энергопотребления.
Синтаксис
HRESULT AssignSxWakeSettings(
[in] DEVICE_POWER_STATE DxState,
[in] WDF_POWER_POLICY_SX_WAKE_USER_CONTROL UserControlOfWakeSettings,
[in] WDF_TRI_STATE Enabled
);
Параметры
[in] DxState
Перечислитель DEVICE_POWER_STATE типа, который определяет состояние низкого энергопотребления устройства , которое будет входить устройством, когда состояние питания системы переходит в состояние пробуждения с низким энергопотреблением. Значение DxState не может быть PowerDeviceD0. DEVICE_POWER_STATE значения определяются в wdm.h.
[in] UserControlOfWakeSettings
WDF_POWER_POLICY_SX_WAKE_USER_CONTROL типизированный перечислитель, который указывает, имеют ли пользователи возможность изменять параметры пробуждения устройства.
[in] Enabled
WDF_TRI_STATE типизированный перечислитель, который указывает, может ли устройство разбудить систему (то есть восстановить систему до S0), когда система находится в состоянии с низким энергопотреблением. Этот элемент может иметь одно из следующих значений:
WdfTrue — включена функция пробуждения системы.
WdfFalse — пробуждение системы отключено.
WdfUseDefault — пробуждение системы изначально включено по умолчанию; но если для элемента UserControlOfWakeSettings задано значение WakeAllowUserControl, то параметр пользователя или INF-файл драйвера переопределяет начальное значение.
Если включена функция пробуждения системы и система скоро перейдет в состояние низкого энергопотребления, платформа вызывает функцию обратного вызова IPowerPolicyCallbackWakeFromSx::OnArmWakeFromSx , прежде чем устройство перейдет в состояние с низким энергопотреблением.
Возвращаемое значение
Функция AssignSxWakeSettings возвращает S_OK, если операция выполнена успешно. В противном случае метод может вернуть одно из следующих значений:
Код возврата | Описание |
---|---|
|
Вызывающий объект указал недопустимое значение для входного параметра. |
|
Вызывающий драйвер не является владельцем политики питания устройства. |
|
Параметр DxState указывает недопустимое состояние питания устройства или драйвер шины указывает, что устройство не может активировать сигнал пробуждения. |
Этот метод может возвращать одно из других значений, содержащихся в Winerror.h.
Комментарии
При первом вызове драйвера AssignSxWakeSettings выполняются следующие действия:
- Платформа хранит значения параметров.
- Если для параметра UserControlOfWakeSettings задано значение WakeAllowUserControl , а для параметра Enabled задано значение WdfUseDefault, платформа считывает реестр, чтобы узнать, включил ли пользователь пробуждение системы.
- Сохраняет значение параметра UserControlOfWakeSettings .
- Ищет параметр пользователя в реестре, если параметр Enabled имеет значение WdfUseDefault.
- Значение не может быть PowerDeviceD0.
- Если указать DevicePowerMaximum, платформа использует значение драйвера режима ядра для шины устройства, указанное в элементе DeviceWake структуры WDF_DEVICE_POWER_CAPABILITIES .
- Нельзя указать состояние питания устройства, которое ниже состояния питания устройства в элементе DeviceWake WDF_DEVICE_POWER_CAPABILITIES структуры драйвера шины режима ядра. (Другими словами, если значение DeviceWake драйвера шины равно PowerDeviceD2, значение DxState драйвера функции не может быть PowerDeviceD3.)
Дополнительные сведения о поддержке возможностей пробуждения устройства см. в статье Поддержка системных Wake-Up в драйверах на основе UMDF.
В следующем примере кода получается интерфейс IWDFDevice2 , а затем вызывается метод AssignSxWakeSettings.
IWDFDevice2 *pIWDFDevice2 = NULL;
HRESULT hr;
//
// Get a pointer to the IWDFDevice2 interface.
//
hr = pIWDFDevice->QueryInterface(__uuidof(IWDFDevice2),
(void**) &pIWDFDevice2);
if (SUCCEEDED(hr))
{
hr = pIWDFDevice2->AssignSxWakeSettings(PowerDeviceMaximum,
WakeAllowUserControl,
WdfUseDefault);
}
...
SAFE_RELEASE(pIWDFDevice2);
Требования
Требование | Значение |
---|---|
Дата окончания поддержки | Недоступно в UMDF 2.0 и более поздних версиях. |
Целевая платформа | Персональный компьютер |
Минимальная версия UMDF | 1,9 |
Верхняя часть | wudfddi.h (включая Wudfddi.h) |
DLL | WUDFx.dll |