自訂 HD 音訊驅動程式音量設定

自訂方塊 HD 音訊預設音訊音量和麥克風提升等級以符合特定電腦的能力,可讓 OEM 在其音訊配接器安裝參數中提供一些彈性。

注意

此處所述的程式只能在使用預設的 Microsoft HD 音訊驅動程式時使用。

根據預設,HD Audio 類別函式驅動程式會以預先決定的值設定音訊音量和麥克風提升等級,以確保使用者的「現成」體驗。

這裡稱為音訊類別驅動程式的 HD 音訊類別函式驅動程式會使用無法針對任何特定電腦自訂的各種硬式編碼預設值。 因此,OEM 無法覆寫這些值以符合自己的需求。 而要調整的最重要設定之一是音量層級,因為使用者對音訊系統的音量或靜音很敏感,特別是在第一次使用期間。

音訊類別驅動程式已經過重新設計,可讓您覆寫硬式編碼的預設值。 覆寫音訊類別驅動程式硬式編碼值的機制牽涉到撰寫 INF 檔案,以包裝音訊類別驅動程式的收件匣 INF 檔案 (hdaudio.inf) ,並使用這個包裝函式 INF 來指定所需的值。

下圖顯示範例 HD 音訊編解碼器拓撲。 個別節點有識別碼,針腳複雜識別碼。代表實體連接器的範例音訊編解碼器拓撲圖表,包括麥克風和線路輸入節點,以及具有釘選複雜識別碼的喇叭輸出節點。

針腳複雜表示相關聯裝置的實體連接器 (例如喇叭、麥克風或線條) 。

若要指定自訂音訊音量層級或麥克風提升等級,請使用包裝函式 INF 檔案來指定每個針腳複雜識別碼的自訂層級。 這些層級會以 DWORD 表示,這些層級代表類別驅動程式應該傳回的預設核心串流 (KS) 解碼層級。

當 HD Audio 類別驅動程式收到KSPROPERTY_AUDIO_VOLUMELEVEL的 GET 要求時,驅動程式會判斷登錄中是否有預設音量 (或麥克風提升) 值,以取得包含接收要求之節點的路徑。 如果登錄中有值,但沒有先前快取的值,則登錄中的預設值會套用至裝置,並在KSPROPERTY_AUDIO_VOLUMELEVEL回應中傳回。 如果登錄中沒有值,HD Audio 類別驅動程式會從子裝置圖形實作擷取預設值。

從 Windows Vista 開始,預設值如下所示:

  • 端點磁片區預設為所有裝置類型的最大減 6 dB。

  • 麥克風提升預設為 0 dB。

下列步驟摘要說明音訊類別驅動程式用來判斷要傳回的預設值,以回應KSPROPERTY_AUDIO_VOLUMELEVEL的 GET 要求:

  1. 判斷包含查詢磁片區節點之路徑終止的針腳複雜。

  2. 執行登錄查閱,以查看是否已為步驟 1 中找到的針腳複雜提供音量或麥克風提升預設值。

  3. 如果在登錄中找到值,則驅動程式會將該值設定為最小值,如果該值低於乘法器所支援的最小值,則為 。 否則值會設定為最大值,如果此值低於乘法器所支援的最大值。 如果在登錄中找到的值位於擷取器所支援的範圍內,則會傳回值以回應 GET 要求。 此外,驅動程式會在轉譯至釘選複雜或從釘選複本擷取時,使用此值來設定相關聯的 HD Audio 存放區小工具。

下列資料夾樹狀結構顯示保留預設值之驅動程式實例索引鍵的配置。

<驅動程式金鑰 DefaultVolumeLevels > 釘選複雜 (2 位數 HEX,而不是在 KS DB 步驟中加上 「0x」) 磁片區 (DWORD 步驟) 在 KS DB 步驟中提升 (DWORD 步驟)

KS DB 逐步執行值的定義如下:-2147483648 為 -infinity decibels (衰減)

-2147483647 為 -32767.99998474 decibels (衰減)

+2147483647 為 +32767.99998474 decibels (取得)

如需使用 (1/65536 dB) 測量單位的詳細資訊,請參閱 KSPROPERTY_AUDIO_VOLUMELEVEL

若要覆寫 wdmudio.inf 檔案,請使用 [包含] 和 [需求] 指示詞,如此程式碼區段中的 Microsoft 虛擬音訊裝置磁碟機範例 所示,作為 Windows Driver Kit (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 包裝函式。

;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 驅動程式)

預設音訊音量設定

KSPROPERTY_AUDIO_VOLUMELEVEL