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