Управление питанием 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. Это значение реестра указывает, может ли устройство отключается при простое (выборочная приостановка).
HKR,,DeviceIdleEnabled,0x00010001,1 |
DeviceIdleIgnoreWakeEnable | Если задано ненулевое значение, устройство приостанавливается, даже если оно не поддерживает RemoteWake. |
UserSetDeviceIdleEnabled | Это значение является значением DWORD. Это значение реестра указывает, следует ли включить поле проверка на странице свойств устройства, которое позволяет пользователю переопределять значения по умолчанию в режиме простоя. Если параметр UserSetDeviceIdleEnabled имеет ненулевое значение, поле проверка включено и пользователь может отключить выключение устройства при простое. Значение, равное нулю, или отсутствие этого значения указывает на то, что поле проверка не включено.
Параметр UserSetDeviceIdleEnabled игнорируется, если параметр DeviceIdleEnabled не задан. HKR,,UserSetDeviceIdleEnabled,0x00010001,1 |
DefaultIdleState | Это значение DWORD. Это значение реестра задает значение по умолчанию для параметра политики управления питанием AUTO_SUSPEND. Этот раздел реестра используется для включения или отключения выборочной приостановки, если дескриптор не открыт для устройства.
Если параметр DeviceIdleEnabled не задан, это значение игнорируется. HKR,,DefaultIdleState,0x00010001,1 |
DefaultIdleTimeout | Это значение DWORD. Это значение реестра задает состояние по умолчанию для параметра политики управления питанием SUSPEND_DELAY. Значение указывает время ожидания в миллисекундах, прежде чем определить, что устройство находится в состоянии простоя. HKR,,DefaultIdleTimeout,0x00010001,100 |
Обнаружение простоя
Все операции записи и передачи управления заставляют устройство переходить в состояние питания D0 и сбрасывают таймер простоя. Очереди конечных точек IN не управляются питанием. Запросы на чтение активируют устройство при отправке. Однако во время ожидания запроса на чтение устройство может неактивно.