Реализация таймера для класса аудиоустройства бездействия

Системный драйвер PortCls использует возможности обнаружения бездействия системы для реализации таймера бездействия для своих звуковых клиентов. PortCls программирует два значения тайм-аута и требуемое состояние энергосбережения в таймере при инициализации. PortCls отслеживает все обращения (например, доступы к вводу-выводу и свойствам) устройства и эффективно сбрасывает счетчик таймера при каждом обращении. Если таймер истек, система запрашивает power IRP для перевода устройства в нужное состояние простоя. После того как устройство было помещено в состояние простоя, PortCls восстановит питание устройства в случае нового действия доступа.

PortCls содержит жестко закодированные значения по умолчанию для времени ожидания простоя и состояния простоя питания. Поставщики оборудования могут при необходимости переопределить значения по умолчанию, написав собственные значения в разделы, относящиеся к драйверу, в системном реестре. Таким образом, поставщики могут выбирать значения параметров бездействия питания, которые лучше всего подходят для своих устройств.

Поставщики могут переопределить значения по умолчанию следующих параметров power-idle:

  • ConservationIdleTime

    Этот параметр задает интервал времени ожидания простоя, когда система работает в режиме сохранения питания. Это режим, который обычно используется при работе системы с питанием от батареи. Значение этого параметра по умолчанию равно 0, что отключает таймер питания в режиме экономии энергии. Поставщик оборудования может задать значение с помощью inf-файла, как показано ниже.

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
    

В приведенном выше фрагменте INF-файла отображается шестнадцатеричное значение "1e" для conservationIdleTime, а это равно времени ожидания простоя 30 секунд.

FLG_ADDREG_BINVALUETYPE

Другие параметры используются для управления тем, как добавляется ключ реестра. Например, %REG_BINARY% указывает, что данные хранятся в виде необработанных данных. Дополнительные сведения см. в директиве INF AddReg.

  • PerformanceIdleTime

    Этот параметр задает интервал времени ожидания простоя, когда система работает в режиме производительности. Это режим, который обычно используется при работе системы с питанием AC. Значение по умолчанию для этого параметра равно 0, что отключает таймер ожидания энергии в режиме производительности.

    Поставщик оборудования может задать значение с помощью inf-файла, как показано ниже.

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
    

    Значение ключа указывает интервал времени ожидания в секундах. В этом примере значение 2c 01 составит 300 секунд или пять минут.

  • IdlePowerState

    Этот параметр указывает состояние питания, в котором устройство будет помещено, если истек срок ожидания простоя. Значение по умолчанию для этого параметра равно 3, соответствующее состоянию питания устройства D3, что является самым низким состоянием низкой мощности устройства. Поставщик оборудования может задать значение с помощью inf-файла, как показано ниже.

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00
    

    Значение, помещенное в ключ, должно иметь значение 0, 1, 2 или 3, соответствующее состоянию питания устройства D0, D1, D2 или D3 соответственно.

Три ключа реестра энергосбережения существуют только, если INF-файл установки устройства создает их. Перед настройкой таймера питания в режиме ожидания, PortCls пытается получить параметры режима ожидания для конкретного драйвера из реестра. PortCls использует значения по умолчанию вместо любых параметров бездействия питания, которые не находятся в реестре. Как описано ранее, значения параметров питания по умолчанию отключают таймер простоя.

Дополнительные сведения об указании параметров ConservationIdleTime, PerformanceIdleTime иIdlePowerState см. в определениях последних трех параметров вызова в PoRegisterDeviceForIdleDetection.

Пример

Например, поставщик оборудования может потребовать указать следующие параметры питания для звукового устройства: ConservationIdleTime = 0x0000001e (30 секунд), PerformanceIdleTime = 0x0000012c (300 секунд) и IdlePowerState = 0x00000003 (состояние питания устройства D3). Чтобы включить эти параметры, файл установки устройства может включать раздел INF AddReg , содержащий следующие директивы:

[MyAudioDevice.AddReg]
HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00

См. также

PoRegisterDeviceForIdleDetection