Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A capacidade de personalizar o volume de áudio padrão de áudio HD na caixa e os níveis de aumento do microfone para se adequar a um PC específico, fornece aos OEMs alguma flexibilidade em seus parâmetros de instalação do adaptador de áudio.
Observação
O processo descrito aqui só pode ser usado se o driver padrão do Microsoft HD Audio estiver sendo usado.
Por padrão, o driver de função de classe HD Audio define o volume de áudio e os níveis de aumento do microfone em valores predeterminados para garantir uma experiência agradável "fora da caixa" para o usuário.
O driver de função de classe de áudio HD, que é referido aqui como o driver de classe de áudio, usa vários valores padrão codificados que não podem ser personalizados para nenhum PC em particular. Como tal, os OEMs não são capazes de substituir esses valores para atender às suas próprias necessidades. E uma das configurações mais importantes para ajustar é o nível de volume, pois os usuários são sensíveis ao volume ou ao silêncio de seus sistemas de áudio, especialmente durante o primeiro uso.
O driver de classe de áudio foi redesenhado para permitir que você substitua os valores padrão codificados. O mecanismo para substituir os valores codificados do driver de classe de áudio envolve escrever um arquivo INF que encapsula o arquivo INF da caixa de entrada do driver de classe de áudio (hdaudio.inf) e usar esse wrapper INF para especificar os valores desejados.
O diagrama a seguir mostra um exemplo de topologia de codec HD Audio. Há IDs para os nós individuais e IDs para os complexos de pinos.
Os complexos de pinos representam os conectores físicos para o dispositivo associado (por exemplo, alto-falante, microfone ou linha).
Para especificar um nível de volume de áudio personalizado ou um nível de aumento de microfone, use o arquivo INF do wrapper para especificar níveis personalizados por ID complexo de pino. Os níveis são expressos como DWORDs que representam os níveis de decibéis padrão do kernel streaming (KS) que devem ser retornados pelo driver de classe.
Quando o driver da classe HD Audio recebe uma solicitação GET para KSPROPERTY_AUDIO_VOLUMELEVEL, o driver determina se há ou não um valor de volume padrão (ou aumento de microfone) no registro para o caminho que contém o nó que recebeu a solicitação. Se houver um valor no Registro, mas não houver nenhum valor previamente armazenado em cache, o valor padrão no Registro será aplicado ao dispositivo e também retornado na resposta KSPROPERTY_AUDIO_VOLUMELEVEL. Se não houver nenhum valor no registro, o driver da classe HD Audio recuperará um valor padrão da implementação do gráfico do subdispositivo.
A partir do Windows Vista, os valores padrão são os seguintes:
O volume padrão do endpoint é definido como o máximo menos 6 dB para todos os tipos de dispositivos.
A configuração padrão do aumento do microfone é 0 dB.
As etapas a seguir resumem o algoritmo usado pelo driver de classe de áudio para determinar os valores padrão a serem retornados em resposta a uma solicitação GET para KSPROPERTY_AUDIO_VOLUMELEVEL:
Determine o complexo de pinos em que termina o caminho contendo o nó de volume consultado.
Execute uma pesquisa de registro para ver se um valor padrão de aumento de volume ou microfone foi fornecido para o complexo de pinos encontrado na etapa 1.
Se um valor é encontrado no registro, em seguida, o driver define esse valor para o mínimo, se ele cai abaixo do valor mínimo suportado pelo amplificador. Caso contrário, o valor é definido para o máximo, se ele cai acima do valor máximo suportado pelo amplificador. Se o valor encontrado no registo estiver dentro do intervalo suportado pelo amplificador, então o valor é devolvido em resposta ao pedido GET. Além disso, o driver programa o widget amplificador de áudio HD associado com esse valor ao renderizar ou capturar a partir do complexo de pinos.
A árvore de pastas a seguir mostra o layout da chave de instância do driver que contém os valores padrão.
<Chave> do driver DefaultVolumeLevels Complexo de pinos (HEX de 2 dígitos, não precedido por "0x") Volume (DWORD em etapas KS DB) Boost (DWORD em etapas KS DB)
Os valores de revisão do KS DB são definidos da seguinte forma: -2147483648 é -infinity decibéis (atenuação)
-2147483647 é -32767.99998474 decibéis (atenuação)
O valor +2147483647 equivale a +32767.99998474 decibéis (ganho).
Para obter mais informações sobre a unidade de medida usada (1/65536 dB), consulte KSPROPERTY_AUDIO_VOLUMELEVEL.
Para substituir o ficheiro wdmudio.inf, utilize as diretivas "Include" e "Needs" conforme mostrado neste segmento de código do Microsoft Virtual Audio Device Driver Sample disponível como parte do Windows Driver Kit (WDK) 8.1 Samples.
;Copyright (c) Microsoft Corporation. All rights reserved.
;
...
[MSVAD_Simple.NT]
Include=ks.inf,wdmaudio.inf
Needs=KS.Registration, WDMAUDIO.Registration
...
Para obter mais informações sobre as diretivas Include e Needs, consulte a seção INF DDInstall.
Segue um exemplo de wrapper INF que encapsula o arquivo INF para o driver de classe 'Áudio'.
;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"
Como um caminho relativo HKR é especificado, o caminho exato do registro do driver será determinado com base na seção específica do arquivo INF que é usada. Para obter mais informações sobre caminhos relativos HKR, consulte Diretiva INF AddReg (Drivers do Windows).