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


Управление питанием WinUSB

WinUSB использует компьютеры состояний KMDF для управления питанием. Политики питания управляются с помощью вызовов WinUsb_SetPowerPolicy.

Чтобы изменить поведение power в WinUSB, параметры реестра по умолчанию можно изменить в INF устройства. Эти значения должны быть записаны в определенное расположение устройства в реестре, добавив значения в HW. Раздел AddReg в INF.

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

Пробуждение системы

Эта функция управляется параметром реестра DWORD SystemWakeEnabled . Это значение указывает, следует ли разрешить устройству пробуждение системы из состояния низкой мощности.

HKR,,SystemWakeEnabled,0x00010001,1
  • Значение нуля или отсутствие этого значения указывает, что устройство не может проснуть систему.
  • Чтобы разрешить устройству проснуть систему, задайте для SystemWakeEnabled значение, отличное от нуля. Флажок на странице свойств устройства автоматически включен, чтобы пользователь смог переопределить параметр.

Примечание.

Изменение параметра SystemWakeEnabled не влияет на выборочную приостановку, это значение реестра относится только к приостановке системы.

Выборочная приостановка

Выборочная приостановка может быть отключена любым из нескольких параметров системы или WinUSB. Один параметр не может принудительно включить выборочную приостановку WinUSB.

Следующие параметры политики питания, указанные в параметре PolicyType WinUsb_SetPowerPolicy, влияют на поведение выборочной приостановки:

  • AUTO_SUSPEND Если задано равно нулю, устройство не устанавливает выборочный режим приостановки.
  • SUSPEND_DELAY Задает время между временем простоя устройства и при запросе WinUSB устройства перейти к выборочной приостановке.

В следующей таблице показано, как разделы реестра влияют на выборочную функцию приостановки.

Раздел реестра Description
DeviceIdleEnabled Это значение DWORD. Это значение реестра указывает, может ли устройство отключается при отключении (выборочная приостановка).
  • Значение нуля или отсутствие этого значения указывает, что устройство не поддерживает выключение при простое.
  • Значение, отличное от нуля, указывает, что устройство поддерживает выключение питания при простое.
  • Если DeviceIdleEnabled не задан, значение параметра политики питания AUTO_SUSPEND игнорируется.

HKR,,DeviceIdleEnabled,0x00010001,1
DeviceIdleIgnoreWakeEnable Если задано значение, отличное от нуля, оно приостанавливает устройство, даже если оно не поддерживает RemoteWake.
UserSetDeviceIdleEnabled Это значение является значением DWORD. Это значение реестра указывает, следует ли включить флажок на странице свойств устройства, которая позволяет пользователю переопределить значения по умолчанию простоя. Если параметр UserSetDeviceIdleEnabled имеет ненулевое значение, флажок включен, и пользователь может отключить питание устройства при простое. Значение нуля или отсутствие этого значения указывает, что флажок не включен.
  • Если пользователь отключает экономию питания устройства, значение параметра политики питания AUTO_SUSPEND игнорируется.
  • Если пользователь включает экономию питания устройства, то значение AUTO_SUSPEND используется для определения того, следует ли приостановить устройство при простое.

UserSetDeviceIdleEnabled игнорируется, если DeviceIdleEnabled не задан.

HKR,,UserSetDeviceIdleEnabled,0x00010001,1
DefaultIdleState Это значение DWORD. Это значение реестра задает значение по умолчанию для параметра политики питания AUTO_SUSPEND. Этот раздел реестра используется для включения или отключения выборочной приостановки, если дескриптор не открыт для устройства.
  • Значение нуля или отсутствие этого значения указывает, что по умолчанию устройство не приостановлено при простои. Устройство может быть приостановлено при простое, только если включена политика питания AUTO_SUSPEND.
  • Значение, отличное от нуля, указывает, что по умолчанию устройство может быть приостановлено при простое.

Это значение игнорируется, если DeviceIdleEnabled не задан.

HKR,,DefaultIdleState,0x00010001,1
DefaultIdleTimeout Это значение DWORD. Это значение реестра задает состояние по умолчанию для параметра политики питания SUSPEND_DELAY.

Значение указывает время ожидания в миллисекундах перед определением простоя устройства.

HKR,,DefaultIdleTimeout,0x00010001,100

Обнаружение бездействия

Все операции записи и управление передают устройство в состояние питания D0 и сброс таймера простоя. Очереди конечных точек IN не управляются питанием. Считывает запросы пробуждения устройства при отправке. Однако устройство может стать бездействуемым во время ожидания запроса на чтение.