Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
La possibilità di personalizzare il volume audio predefinito in scatola HD e i livelli di boost del microfono per adattarsi a un PC specifico, offre agli OEM una certa flessibilità nei parametri di installazione della scheda audio.
Annotazioni
Il processo descritto qui può essere usato solo se viene usato il driver audio Microsoft HD predefinito.
Per impostazione predefinita, il driver di funzione della classe Audio HD imposta il volume audio e i livelli di boost del microfono a valori predeterminati per garantire un'esperienza piacevole per l'utente sin da subito.
Il driver di funzione della classe Audio HD, indicato qui come driver di classe audio, usa vari valori predefiniti hardcoded che non possono essere personalizzati per qualsiasi PC specifico. Di conseguenza, gli OEM non sono in grado di eseguire l'override di questi valori per soddisfare i propri requisiti. E una delle impostazioni più importanti per regolare è il livello di volume, in quanto gli utenti sono sensibili alla rumorosità o alla tranquillità dei loro sistemi audio, soprattutto durante il primo utilizzo.
Il driver della classe audio è stato riprogettato per consentire di sostituire i valori predefiniti codificati a mano. Il meccanismo per eseguire l'override dei valori hard-coded del driver della classe audio prevede la scrittura di un file INF che avvolge il file INF predefinito (hdaudio.inf) del driver, utilizzando questo file wrapper INF per specificare i valori desiderati.
Il diagramma seguente illustra una topologia codec HD Audio di esempio. Sono disponibili ID per i singoli nodi e ID per i complessi di pin.
I complessi pin rappresentano i connettori fisici per il dispositivo associato (ad esempio, altoparlante, microfono o linea).
Per specificare un livello personalizzato di volume audio o di amplificazione del microfono, utilizzare il file INF wrapper per specificare livelli personalizzati per ciascun ID complesso di pin. I livelli sono espressi come un DWORD che rappresenta i livelli decibel predefiniti di streaming del kernel (KS) che il driver di classe dovrebbe restituire.
Quando il driver della classe AUDIO HD riceve una richiesta GET per KSPROPERTY_AUDIO_VOLUMELEVEL, il driver determina se nel Registro di sistema è presente o meno un valore di volume predefinito (o Mic boost) per il percorso che contiene il nodo che ha ricevuto la richiesta. Se nel Registro di sistema è presente un valore, ma non è presente alcun valore memorizzato nella cache in precedenza, il valore predefinito nel Registro di sistema verrà applicato al dispositivo e restituito anche nella risposta KSPROPERTY_AUDIO_VOLUMELEVEL. Se non è presente alcun valore nel Registro di sistema, il driver della classe HD Audio recupera un valore predefinito dall'implementazione del grafico del sotto-dispositivo.
A partire da Windows Vista, i valori predefiniti sono i seguenti:
Per impostazione predefinita, il volume endpoint è massimo meno 6 dB per tutti i tipi di dispositivo.
Per impostazione predefinita, il boost del microfono è 0 dB.
La procedura seguente riepiloga l'algoritmo usato dal driver della classe audio per determinare i valori predefiniti da restituire in risposta a una richiesta GET per KSPROPERTY_AUDIO_VOLUMELEVEL:
Determinare il complesso di pin in corrispondenza del quale termina il percorso contenente il nodo del volume sottoposto a query.
Eseguire una ricerca del Registro di sistema per verificare se è stato specificato un valore predefinito per il volume o il boost del microfono per il blocco pin trovato nel passaggio 1.
Se nel Registro di sistema viene trovato un valore, il driver imposta tale valore sul valore minimo, se scende al di sotto del valore minimo supportato dall'amplificatore. In caso contrario, il valore viene impostato sul valore massimo, se scende al di sopra del valore massimo supportato dall'amplificatore. Se il valore trovato nel registro è compreso nell'intervallo supportato dall'amplificatore, il valore viene restituito in risposta alla richiesta GET. Inoltre, il driver programma il widget amplificatore HD Audio associato con questo valore durante il rendering o l'acquisizione dal complesso pin.
L'albero delle cartelle seguente mostra il layout per la chiave dell'istanza del driver che contiene i valori predefiniti.
<Driver Key> DefaultVolumeLevels Pin Complex (2 cifre HEX, non preceduto da "0x") Volume (DWORD nei passaggi KS DB) Boost (DWORD nei passaggi KS DB)
I valori di istruzione KS DB sono definiti come segue: -2147483648 è -infinity decibel (attenuazione)
-2147483647 è -32767.99998474 decibel (attenuazione)
+2147483647 è +32767.99998474 decibel (guadagno)
Per altre informazioni sull'unità di misura usata (1/65536 dB), vedere KSPROPERTY_AUDIO_VOLUMELEVEL.
Per eseguire l'override del file wdmudio.inf, usare le direttive Include e Needs come illustrato in questo segmento di codice dell'esempio di driver audio virtuale Microsoft disponibile come parte degli esempi di 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
...
Per altre informazioni sulle direttive Include e Needs, vedere la sezione INF DDInstall.
Di seguito è riportato un wrapper INF di esempio che esegue il wrapping del file INF per il driver della classe 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"
Poiché viene specificato un percorso relativo HKR, il percorso esatto del Registro di sistema del driver verrà determinato in base alla sezione specifica del file INF usata. Per altre informazioni sui percorsi relativi HKR, vedere Direttiva INF AddReg (driver Windows).For more information about HKR relative paths, see INF AddReg Directive (Windows Drivers).