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


Управление режимами простоя и пробуждения устройства пользователем

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

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

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

Обе эти структуры позволяют драйверу включить эту возможность, отключить ее или предоставить пользователям контроль над возможностями. Чтобы предоставить пользователям контроль, в соответствующей структуре параметров драйвер задает элемент UserControlOfIdleSettings или UserControlOfWakeSettings значение IdleAllowUserControl или WakeAllowUserControl соответственно, и член Enabled для WdfTrue или WdfUseDefault.

Если драйвер позволяет пользователям изменять параметры простоя и пробуждения, платформа предоставляет пользовательский интерфейс в виде страницы листа свойств, отображаемой диспетчером устройств, чтобы пользователи могли включить или отключить возможности простоя и пробуждения. (Платформа изменяет значения реестра IdleInWorkingState и WakeFromSleepState . Драйверы и их файлы установки не должны считывать или изменять эти значения.)

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

Если драйвер позволяет пользователям изменять параметры простоя и пробуждения, платформа включает эти параметры по умолчанию. Разработчики драйверов могут захотеть сначала отключить параметры, прежде чем разрешить пользователям их изменять.

Поэтому для версий 1.9 и более поздних версий KMDF платформа предоставляет два определяемых драйверами значения реестра с именем WdfDefaultIdleInWorkingState и WdfDefaultWakeFromSleepState, которые хранятся в подразделе "Параметры устройства\WDF ", в разделе аппаратного ключа устройства. Значения типа REG_DWORD, где "0" указывает, что возможность отключена, а "1" указывает, что возможность включена.

INF-файл драйвера может использовать директиву INF INF AddReg для создания и задания значений реестра WdfDefaultIdleInWorkingState и WdfDefaultWakeFromSleepState. Например, если драйвер активирует возможность отключения устройства при простое, но при установке устройства эту возможность необходимо отключить, inf-файл драйвера может задать WdfDefaultIdleInWorkingState значение "0".

Фреймворк проверяет значения реестра WdfDefaultIdleInWorkingState и WdfDefaultWakeFromSleepState только в том случае, если драйвер установил член UserControlOfIdleSettings или UserControlOfWakeSettings в значение IdleAllowUserControl или WakeAllowUserControl соответственно, и член Enabled в WdfTrue или WdfUseDefault в соответствующей структуре настроек.