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.