Dela via


Flera ljudunderenheter

En multifunktionsenhet kan innehålla två eller flera ljudunderenheter. En adapterdrivrutin kan till exempel tillåta att en åttakanals ljudenhet exponeras för systemet som fyra stereokanaler. När du skriver en adapterdrivrutin för att exponera flera underenheter på det här sättet bör du lägga till information om underenheterna i drivrutinens startsekvens och INF-fil.

För det första bör adapterdrivrutinen exponera varje stereounderenhet som en separat instans av ett port-/miniport-drivrutinspar under startsekvensen. Flera av exempeladaptrarna i Microsoft Windows Driver Kit (WDK) implementerar funktionen InstallSubdevice som skapar och registrerar en underenhet som består av en systemportdrivrutin, en miniportdrivrutin och en uppsättning resurser som ska bindas till denna parning. Under starten bör drivrutinen anropa sin InstallSubdevice funktion en gång för varje stereounderenhet och ange ett unikt namn för varje port/miniport-drivrutinspar.

Dessutom måste det unika namn som du tilldelar det här paret matcha den KSNAME-sträng som du anger i drivrutinens INF-fil. Drivrutinen kan till exempel tilldela namnen "Wave1" och "Wave2" till två underenheter vid start, som visas nedan:

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

I det här fallet bör samma namn visas i INF-filen:

  KSNAME_Wave1="Wave1"
  KSNAME_Wave2="Wave2"

INF-filen bör lägga till gränssnitt som innehåller följande namn:

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

INF-filen bör skapa AddReg-avsnitt (se INF AddReg-direktivet) för att lägga till information om dessa gränssnitt i registret:

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

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

Avsnitten AddReg bör också ange registerposterna för varje underenhet:

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

Slutligen bör INF-filen definiera de egna namnen för dessa underenheter:

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

De vänliga namnen visas på ljudkontrollpanelen för att identifiera dem som underenheter.