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


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

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

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

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

  • 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

    Этот параметр задает интервал времени ожидания простоя, когда система работает в режиме производительности. Это режим, который обычно используется, когда система работает от питания переменного тока. Значение по умолчанию для этого параметра равно 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 соответственно.

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

Дополнительные сведения об указании параметров 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