Настройка параметров громкости драйвера HD Audio Driver
Возможность настраивать стандартные уровни громкости звука и увеличения микрофона в коробке hd audio в соответствии с конкретным компьютером, обеспечивает изготовителям оборудования некоторую гибкость в параметрах установки аудиоадаптера.
Примечание
Описанный здесь процесс можно использовать только в том случае, если используется драйвер Microsoft HD Audio по умолчанию.
По умолчанию драйвер функции класса HD Audio устанавливает уровни громкости звука и увеличения микрофона по заранее заданным значениям, чтобы обеспечить пользователю приятный "из коробки" интерфейс.
Драйвер функции класса HD Audio, который здесь называется драйвером класса Audio, использует различные жестко закодированные значения по умолчанию, которые нельзя настроить для какого-либо конкретного компьютера. Таким образом, изготовители оборудования не могут переопределить эти значения в соответствии с собственными требованиями. И одним из наиболее важных параметров для настройки является уровень громкости, так как пользователи чувствительны к громкости или тишине своих звуковых систем, особенно во время первого использования.
Драйвер класса audio был переработан, чтобы вы могли переопределить жестко заданные значения по умолчанию. Механизм переопределения жестко закодированных значений драйвера аудиокласса включает в себя запись INF-файла, который заключает в себя INF-файл для папки "Входящие" драйвера Audio Class (hdaudio.inf), и использование этой оболочки INF для указания нужных значений.
На следующей схеме показан пример топологии кодека HD Audio. Существуют идентификаторы для отдельных узлов и идентификаторы для комплексов контактов.
Комплексы контактов представляют физические соединители для связанного устройства (например, динамик, микрофон или линия).
Чтобы указать пользовательский уровень громкости звука или уровень увеличения микрофона, используйте INF-файл оболочки, чтобы указать пользовательские уровни для каждого сложного идентификатора контакта. Уровни выражаются в виде DWORD, которые представляют уровни децибела потоковой передачи ядра по умолчанию (KS), которые должен возвращать драйвер класса.
Когда драйвер класса HD Audio получает запрос GET для KSPROPERTY_AUDIO_VOLUMELEVEL, драйвер определяет, есть ли в реестре значение громкости (или увеличения микрофона) по умолчанию для пути, содержащего узел, который получил запрос. Если в реестре есть значение, но ранее кэшированное значение отсутствует, значение по умолчанию в реестре будет применено к устройству, а также возвращено в ответе KSPROPERTY_AUDIO_VOLUMELEVEL. Если в реестре нет значения, драйвер класса HD Audio получает значение по умолчанию из реализации графа подустройства.
Начиная с Windows Vista значения по умолчанию:
По умолчанию для всех типов устройств используется максимальный том конечной точки минус 6 дБ.
Увеличение микрофона по умолчанию — 0 дБ.
Ниже приведена сводка алгоритма, используемого драйвером класса Audio для определения значений по умолчанию, возвращаемых в ответ на запрос GET для KSPROPERTY_AUDIO_VOLUMELEVEL.
Определите комплекс закрепления, в котором завершается путь, содержащий запрашиваемый узел тома.
Выполните поиск в реестре, чтобы узнать, задано ли значение по умолчанию громкости или увеличения микрофона для комплекса контактов, обнаруженного на шаге 1.
Если значение найдено в реестре, драйвер устанавливает для него минимальное значение, если оно меньше минимального значения, поддерживаемого усилителем. В противном случае значение устанавливается на максимальное значение, если оно превышает максимальное значение, поддерживаемое усилителем. Если значение, найденное в реестре, находится в диапазоне, поддерживаемом усилителем, оно возвращается в ответ на запрос GET. Кроме того, драйвер запрограммировать соответствующее мини-приложение усилителя HD Audio с этим значением при отрисовке или записи из комплекса контактов.
В следующем дереве папок показан макет для ключа экземпляра драйвера, который содержит значения по умолчанию.
<> Ключ драйвера DefaultVolumeLevels Pin Complex (2 цифры HEX, не предшествующее "0x") Volume (DWORD в шагах KS DB) Boost (DWORD в шагах KS DB)
Пошаговые значения базы данных KS определяются следующим образом: -2147483648 является децибелами -infinity (затухание)
-2147483647 равно -32767,99998474 децибел (затухание)
+2147483647 равно +32767.99998474 децибел (выигрыш)
Дополнительные сведения об используемой единице измерения (1/65536 дБ) см. в разделе KSPROPERTY_AUDIO_VOLUMELEVEL.
Чтобы переопределить файл wdmudio.inf, используйте директивы Include и Needs, как показано в этом сегменте кода из примера драйвера виртуального аудиоустройства Майкрософт, доступного в составе комплекта драйверов Windows (WDK) 8.1.
;Copyright (c) Microsoft Corporation. All rights reserved.
;
...
[MSVAD_Simple.NT]
Include=ks.inf,wdmaudio.inf
Needs=KS.Registration, WDMAUDIO.Registration
...
Дополнительные сведения о директивах Include и Needs см. в разделе INF DDInstall.
Ниже приведен пример программы-оболочки INF, которая упаковывает INF-файл для драйвера класса Audio.
;Copyright (c) Microsoft Corporation. All rights reserved.
;
;Module Name:
; HDAUDVOL.INF
;
;Abstract:
; Wrapper INF file for installing the Microsoft UAA Function Driver for High
; Definition Audio with specific INF overrides
[Version]
Signature="$Windows NT$"
Class=MEDIA
ClassGuid={4d36e96c-e325-11ce-bfc1-08002be10318}
Provider=Microsoft
DriverVer=07/28/2012,6.2.9201.0
CatalogFile=hdaudvol.cat
PnpLockdown=1
[Manufacturer]
Microsoft = Microsoft,ntamd64,ntarm
[ControlFlags]
ExcludeFromSelect = *
;;====================================================================================
;; Edit the PNP ID (HDAUDIO\FUNC_01...) below to match the codec + subsystem you are ;; configuring.
;;====================================================================================
[Microsoft]
%HdAudModel_DefaultVolume_DeviceDesc% = HdAudModel_DefaultVolume, HDAUDIO\FUNC_01&VEN_10EC&DEV_0889&SUBSYS_00000000&REV_1000
[Microsoft.ntamd64]
%HdAudModel_DefaultVolume_DeviceDesc% = HdAudModel_DefaultVolume, HDAUDIO\FUNC_01&VEN_10EC&DEV_0889&SUBSYS_00000000&REV_1000
[Microsoft.ntarm]
%HdAudModel_DefaultVolume_DeviceDesc% = HdAudModel_DefaultVolume, HDAUDIO\FUNC_01&VEN_10EC&DEV_0889&SUBSYS_00000000&REV_1000
;;===================== HdAudModel_DefaultVolume ==============================
[HdAudModel_DefaultVolume]
Include=hdaudio.inf
Needs=HDAudModel
AddReg=HdAudModel_DefaultVolume.HdAudInit
[HdAudModel_DefaultVolume.HW]
Include=hdaudio.inf
Needs=HdAudModel.HW
[HdAudModel_DefaultVolume.Services]
Include=hdaudio.inf
Needs=HdAudModel.Services
[HdAudModel_DefaultVolume.Interfaces]
Include=hdaudio.inf
Needs=HdAudModel.Interfaces
[HdAudModel_DefaultVolume.HdAudInit]
;;====================================================================================
;; Units are in KS dB so 1dB == 65536 (0x00010000)
;; ======================================================================================
HKR,DefaultVolumeLevels\18,Volume,1,00,00,FE,FF ; Set to 0xFFFE0000 to set to -2dB
HKR,DefaultVolumeLevels\18,Boost,1,00,00,0A,00 ; Set to 0x000A0000 to set to 10dB
[Strings]
HdAudModel_DefaultVolume_DeviceDesc = "High Definition Audio Device"
Так как указан относительный путь HKR, точный путь к реестру драйверов определяется на основе конкретного раздела INF-файла, который используется. Дополнительные сведения об относительных путях HKR см. в разделе Директива INF AddReg (драйверы Windows).