Поделиться через


Метод 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, если операция выполнена успешно. В противном случае метод может вернуть одно из следующих значений:

Код возврата Описание
E_INVALIDARG
Вызывающий объект указал недопустимое значение для входного параметра.
HRESULT_FROM_NT(STATUS_INVALID_DEVICE_REQUEST)
Вызывающий драйвер не является владельцем политики питания устройства.
HRESULT_FROM_NT(STATUS_POWER_STATE_INVALID)
Параметр DxState указывает недопустимое состояние питания устройства или драйвер шины указывает, что устройство не может активировать сигнал пробуждения.
 

Этот метод может возвращать одно из других значений, содержащихся в Winerror.h.

Комментарии

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

  • Платформа хранит значения параметров.
  • Если для параметра UserControlOfWakeSettings задано значение WakeAllowUserControl , а для параметра Enabled задано значение WdfUseDefault, платформа считывает реестр, чтобы узнать, включил ли пользователь пробуждение системы.
Во время последующих вызовов AssignSxWakeSettings платформа не сохраняет значение параметра UserControlOfWakeSettings . Другими словами, платформа выполняет следующие действия при первом вызове драйвера AssignSxWakeSettings , но не во время последующих вызовов:
  • Сохраняет значение параметра UserControlOfWakeSettings .
  • Ищет параметр пользователя в реестре, если параметр Enabled имеет значение WdfUseDefault.
Следующие правила применяются к значению, указанному для параметра DxState :
  • Значение не может быть PowerDeviceD0.
  • Если указать DevicePowerMaximum, платформа использует значение драйвера режима ядра для шины устройства, указанное в элементе DeviceWake структуры WDF_DEVICE_POWER_CAPABILITIES .
  • Нельзя указать состояние питания устройства, которое ниже состояния питания устройства в элементе DeviceWake WDF_DEVICE_POWER_CAPABILITIES структуры драйвера шины режима ядра. (Другими словами, если значение DeviceWake драйвера шины равно PowerDeviceD2, значение DxState драйвера функции не может быть PowerDeviceD3.)
Сведения о записях реестра, управляющих возможностями пробуждения устройства, см. в разделах Управление пользователем простоя устройства и поведение пробуждения в UMDF.

Дополнительные сведения о поддержке возможностей пробуждения устройства см. в статье Поддержка системных 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

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

IWDFDevice2

IWDFDevice2::AssignS0IdleSettings