Più sottodispositivi audio

Un dispositivo multifunzione può contenere due o più sottodevice audio. Ad esempio, un driver di adattatore potrebbe consentire a un dispositivo audio a otto canali di essere esposto al sistema come quattro canali stereo. Quando si scrive un driver di adattatore per esporre più sottodevice in questo modo, è necessario incorporare informazioni sui sottodevice nella sequenza di avvio del driver e nel file INF.

Prima di tutto, il driver dell'adattatore deve esporre ogni sottodevice stereo come istanza separata di una coppia di driver porta/miniport durante la sequenza di avvio. Diverse schede di esempio in Microsoft Windows Driver Kit (WDK) implementano una funzione che crea e registra un InstallSubdevice subdevice costituito da un driver di porta di sistema, un driver miniport e un set di risorse che devono essere associate a questa coppia. Durante l'avvio, il driver deve chiamare la sua InstallSubdevice funzione una volta per ogni sottoinsieme stereo e specificare un nome univoco per ogni coppia di driver porta/miniport.

Inoltre, il nome univoco assegnato a questa coppia deve corrispondere alla stringa KSNAME specificata nel file INF del driver. Ad esempio, il driver potrebbe assegnare i nomi "Wave1" e "Wave2" a due sottodevice durante l'avvio, come illustrato di seguito:

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

In questo caso, gli stessi nomi devono essere visualizzati nel file INF:

  KSNAME_Wave1="Wave1"
  KSNAME_Wave2="Wave2"

Il file INF deve aggiungere interfacce contenenti questi nomi:

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

Il file INF deve creare sezioni AddReg (vedere direttiva INF AddReg) per aggiungere informazioni su queste interfacce al Registro di sistema:

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

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

Le sezioni AddReg devono specificare anche le voci del Registro di sistema per ogni sottodevice:

  [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%

Infine, il file INF deve definire i nomi descrittivi per questi sottodevice:

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

I nomi descrittivi vengono visualizzati nel pannello di controllo audio per identificare i sottodevice.