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


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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

Раздел реестра Описание
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 не управляются питанием. Запросы на чтение активируют устройство при отправке. Однако во время ожидания запроса на чтение устройство может неактивно.