Compartir a través de


Varios subdispositivos de audio

Un dispositivo multifunción puede contener dos o más subdispositivos de audio. Por ejemplo, un controlador de adaptador podría permitir que un dispositivo de audio de ocho canales se exponga al sistema como cuatro canales estéreo. Al escribir un controlador de adaptador para exponer varios subdispositivos de esta manera, debe incorporar información sobre los subdispositivos en la secuencia de inicio del controlador y en el archivo INF.

En primer lugar, el controlador del adaptador debe exponer cada subdispositivo estéreo como una instancia independiente de un par de controladores de puerto o minipuerto durante la secuencia de inicio. Varios de los adaptadores de ejemplo del Kit de controladores de Microsoft Windows (WDK) implementan una InstallSubdevice función que crea y registra un subdispositivo que consta de un controlador de puerto del sistema, un controlador de minipuerto y un conjunto de recursos que se van a enlazar a este par. Durante el inicio, el controlador debe llamar a su InstallSubdevice función una vez para cada subdispositivo estéreo y especificar un nombre único para cada par de controladores de puerto o minipuerto.

Además, el nombre único que asigne a este par debe coincidir con la cadena KSNAME que especifique en el archivo INF del controlador. Por ejemplo, el controlador podría asignar los nombres "Wave1" y "Wave2" a dos subdispositivos durante el inicio, como se muestra a continuación:

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

En este caso, los mismos nombres deben aparecer en el archivo INF:

  KSNAME_Wave1="Wave1"
  KSNAME_Wave2="Wave2"

El archivo INF debe agregar interfaces que contengan estos nombres:

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

El archivo INF debe crear secciones AddReg (consulte Directiva AddReg de INF) para agregar información sobre estas interfaces al registro:

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

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

Las secciones AddReg también deben especificar las entradas del 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 último, el archivo INF debe definir los nombres descriptivos de estos subdispositivos:

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

Los nombres descriptivos se muestran en el panel de control de audio para identificar los subdispositivos.