共用方式為


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

能夠自定義盒裝 HD 音訊預設音訊音量和麥克風提升等級以符合特定電腦,讓 OEM 在其音訊配接器安裝參數中具有一些彈性。

備註

只有在使用預設Microsoft HD 音訊驅動程式時,才能使用這裡所述的程式。

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

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

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

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

代表相關聯裝置(例如,喇叭、麥克風或音訊線)的實體連接器之插針組合。

若要指定自定義音訊音量層級或麥克風提升等級,請使用封裝 INF 檔案來指定每個針腳組 ID 的自定義層級。 層級會以 DWORD 表示,代表類別驅動程式應該傳回的預設核心串流 (KS) 分貝層級。

當 HD Audio 類別驅動程式收到 KSPROPERTY_AUDIO_VOLUMELEVEL 的 GET 請求時,驅動程式會判斷登錄中是否有預設音量(或 Mic boost)值,該路徑包含接收請求的節點。 如果登錄中有值,但沒有先前快取的值,則登錄中的預設值會套用至裝置,並在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,不加 "0x" 前綴) 音量(KS DB 步驟中的 DWORD) 提升(KS DB 步驟中的 DWORD)

KS DB 步進值的定義如下:-2147483648 相當於衰減 -infinity 分貝。

-2147483647 為 -32767.99998474 分貝(衰減)

+2147483647 相當於 +32767.99998474 分貝(增益)

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

若要覆蓋 wdmudio.inf 檔案,請使用 Include 和 Needs 指令,如這段來自 Windows 驅動程式套件 (WDK) 8.1 範例中提供的 Microsoft 虛擬音頻設備驅動器範例的程式碼片段所示。

;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