Управление питанием 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. Это значение реестра указывает, может ли устройство отключается при отключении (выборочная приостановка).
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 не управляются питанием. Считывает запросы пробуждения устройства при отправке. Однако устройство может стать бездействуемым во время ожидания запроса на чтение.
См. также
- Архитектура и модули WinUSB
- Выбор модели драйвера для разработки драйвера USB-клиента
- Установка WinUSB (Winusb.sys)
- Доступ к USB-устройству с помощью функций WinUSB
- Функции WinUSB для изменения политики канала
- Функции WinUSB
- Общие сведения о WinUSB для разработчиков
- WinUsb_GetPowerPolicy
- WinUsb_SetPowerPolicy