Partilhar via


Vários subdispositivos de áudio

Um dispositivo multifuncional pode conter dois ou mais subdispositivos de áudio. Por exemplo, um driver de adaptador pode permitir que um dispositivo de áudio de oito canais seja exposto ao sistema como quatro canais estéreo. Ao escrever um driver de adaptador para expor vários subdispositivos dessa forma, você deve incorporar informações sobre os subdispositivos na sequência de inicialização do driver e no arquivo INF.

Primeiro, o driver do adaptador deve expor cada subdévico estéreo como uma instância separada de um par de driver de porta/miniport durante a sequência de inicialização. Vários dos adaptadores de exemplo no WDK (Microsoft Windows Driver Kit) implementam uma InstallSubdevice função que cria e registra um subdispositivo que consiste em um driver de porta do sistema, um driver de miniporte e um conjunto de recursos que devem ser associados a esse par. Durante a inicialização, o driver deve chamar sua InstallSubdevice função uma vez para cada subdispositivo estéreo e especificar um nome exclusivo para cada par de driver de porta/miniport.

Além disso, o nome exclusivo que você atribui a esse par deve corresponder à cadeia de caracteres KSNAME especificada no arquivo INF do driver. Por exemplo, seu driver pode atribuir os nomes "Wave1" e "Wave2" a dois subdispositivos durante a inicialização, conforme mostrado abaixo:

  InstallSubdevice(..., "Wave1",...);
  InstallSubdevice(..., "Wave2",...);

Nesse caso, os mesmos nomes devem aparecer no arquivo INF:

  KSNAME_Wave1="Wave1"
  KSNAME_Wave2="Wave2"

Seu arquivo INF deve adicionar interfaces que contenham estes nomes:

  AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave1%,Test.Interface.Wave1
  AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave2%,Test.Interface.Wave2

O arquivo INF deve criar seções AddReg (consulte Diretiva AddReg INF) para adicionar informações sobre essas interfaces ao registro:

  [Test.Interface.Wave1]
  AddReg=Test.I.Wave1.AddReg

  [Test.Interface.Wave2]
  AddReg=Test.I.Wave2.AddReg

As seções AddReg também devem especificar as entradas do Registro para cada subdispositivo:

  [Test.I.Wave1.AddReg]
  HKR,,CLSID,,%Proxy.CLSID%
  HKR,,FriendlyName,,%Test.Wave1.szName%

  [Test.I.Wave2.AddReg]
  HKR,,CLSID,,%Proxy.CLSID%
  HKR,,FriendlyName,,%Test.Wave2.szName%

Por fim, o arquivo INF deve definir os nomes amigáveis para esses subdispositivos:

  Test.Wave1.szName="Punch"
  Test.Wave2.szName="Judy"

Os nomes amigáveis aparecem no painel de controle de áudio para identificar os subdispositivos.