Согласие на немедленное истечение времени ожидания простоя
В этом разделе рассматривается значение реестра ImmediateIdle , которое драйвер Windows может использовать для немедленного отключения питания, когда питание больше не требуется.
В дополнение к параметрам питания по умолчанию, описанным в разделе Параметры питания реестра PortCls, Windows 8 появилось значение реестра ImmediateIdle, которое также находится в разделе реестра PowerSettings для связанного драйвера.
В этом INF-файле показано, как задать ImmediateIdle.
[MyAudioDevice.AddReg]
HKR,PowerSettings,ImmediateIdle,%REG_BINARY%, 0x00, 0x00, 0x00, 0x00
ImmediateIdle имеет тип данных REG_DWORD, а значение по умолчанию — "0", что приравнивается к FALSE. В предыдущем фрагменте синтаксиса шестнадцатеричное значение "0" означает, что устройство не будет немедленно выключать питание, когда питание больше не требуется.
Чтобы драйвер согласился на немедленное выключение питания, когда питание больше не требуется, необходимо использовать следующий синтаксис:
[MyAudioDevice.AddReg]
HKR,PowerSettings,ImmediateIdle,%REG_BINARY%, 0x01, 0x00, 0x00, 0x00
В предыдущем примере шестнадцатеричное значение "1" приравнивается к TRUE, и это означает, что устройство немедленно выключится, когда питание больше не требуется.
Когда платформа управления питанием среды выполнения вызывает обратный вызов метода DevicePowerRequired , указывая, что устройству больше не требуется питание, PortCls затем запрашивает IRP Power Device для D-State, указанного значением реестра IdlePowerState . Если состояние не указано, используется значение по умолчанию D3.
Если драйвер выбирает немедленное управление бездействующим питанием, он должен убедиться, что подключаемый модуль Power Engine (PEP) для системы содержит логику, необходимую для предотвращения ненужного и непрерывного включения питания адаптера для IRP, полученных немедленно подряд. Некоторые правила расположения должны быть применены, чтобы устройство было выключено для пакетов запросов ввода-вывода.
Кроме того, интерфейс, представленный в Windows 7, который позволяет драйверам программно включать или отключать управление бездействующим питанием, по-прежнему учитывается, если драйвер не согласился на немедленное управление бездействующим питанием. Это делается с помощью метода IPortClsPower::SetIdlePowerManagement и переопределяет параметры в реестре, за исключением случая, когда ImmediateIdle имеет значение 1 (TRUE).