Universella Windows-drivrutiner för ljud
I Windows 10 kan du skriva en universell ljuddrivrutin som fungerar i många typer av maskinvara. I det här avsnittet beskrivs fördelarna med den här metoden samt skillnaderna mellan plattformar. Förutom universella Windows-drivrutiner för ljud fortsätter Windows att stödja tidigare ljuddrivrutinstekniker, till exempel WDM.
Komma igång med Universella Windows-drivrutiner för ljud
IHV:er kan utveckla en Universell Windows-drivrutin som fungerar på alla enheter (stationära datorer, bärbara datorer, surfplattor, telefoner). Detta kan minska utvecklingstiden och kostnaderna för inledande utveckling och senare kodunderhåll.
Dessa verktyg är tillgängliga för att utveckla Universella Windows-drivrutiner:
Visual Studio 2015: Ange "Målplattform" lika med "Universal". Mer information om hur du konfigurerar drivrutinsutvecklingsmiljön finns i dokumentation om Windows-maskinvaruutvecklare och Skapa en drivrutin med WDK-.
APIValidator-verktyget: Du kan använda verktyget ApiValidator.exe för att kontrollera att DE API:er som dina drivrutinsanrop är giltiga för en Universell Windows-drivrutin. Det här verktyget är en del av Windows Driver Kit (WDK) för Windows 10 och körs automatiskt om du använder Visual Studio 2015. Mer information finns i APIValidator.
DDI-referensdokumentation: DDI-referensdokumentationen uppdateras för att ange vilka DDI:er som stöds av Universella Windows-drivrutiner. För mer information, se referensen för ljudenheter.
Skapa en universell ljuddrivrutin
Stegvisa anvisningar finns i dokumentation om Windows-maskinvaruutvecklare och Skapa en drivrutin med WDK-. Här är en sammanfattning av stegen:
Läs in det universella sysvad-exemplet för ljud som ska användas som startpunkt för din universella ljuddrivrutin. Du kan också börja med den tomma WDM-drivrutinsmallen och lägga till kod från det universella sysvad-exemplet efter behov för ljuddrivrutinen.
I projektegenskaperna anger du Målplattform till "Universell".
Skapa ett installationspaket: Om målet är en enhet som kör Windows 10 för skrivbordsversioner (Home, Pro, Enterprise och Education) använder du en Universal INF-fil. Om målet är en enhet som kör Windows 10 Mobile använder du PkgGen för att generera en .spkg-fil.
Skapa, installera, distribuera och felsök drivrutinen för Windows 10 för skrivbordsversioner eller Windows 10 Mobile.
Exempelkod
Sysvad och SwapAPO har konverterats till universella Windows-drivrutinsexempel. Mer information finns i Exempel på ljuddrivrutiner.
Tillgängliga programmeringsgränssnitt för Universella Windows-drivrutiner för ljud
Från och med Windows 10 är drivrutinsprogrammeringsgränssnitten en del av OneCoreUAP-baserade utgåvor av Windows. Genom att använda den gemensamma uppsättningen kan du skriva en Universell Windows-drivrutin. Dessa drivrutiner körs på både Windows 10 för skrivbordsversioner och Windows 10 Mobile och andra Windows 10-versioner.
Följande DDI:er är tillgängliga när du arbetar med universella ljuddrivrutiner.
Konvertera en befintlig ljuddrivrutin till en Universell Windows-drivrutin
Följ den här processen för att konvertera en befintlig ljuddrivrutin till en Universell Windows-drivrutin.
Avgör om dina befintliga drivrutinsanrop ska köras på OneCoreUAP Windows. Kontrollera kravavsnittet på referenssidorna. För mer information, se Referens för ljudenheter.
Kompilera om drivrutinen som en Universell Windows-drivrutin. I projektegenskaperna anger du Målplattform till "Universell".
Använd verktyget ApiValidator.exe för att kontrollera att de DDI:er som din drivrutin anropar är giltiga för en Universell Windows-drivrutin. Det här verktyget är en del av Windows Driver Kit (WDK) för Windows 10 och körs automatiskt om du använder Visual Studio 2015. Mer information finns i APIValidator.
Om drivrutinen anropar gränssnitt som inte ingår i OneCoreUAP rapporterar kompilatorn fel.
Ersätt dessa anrop med alternativa anrop eller skapa en kodlösning eller skriv en ny drivrutin.
Skapa en installation av en komponentiserad ljuddrivrutin
Överblick
Om du vill skapa en smidigare och mer tillförlitlig installationsupplevelse och för att bättre stödja komponentunderstöd delar du in drivrutinsinstallationsprocessen i följande komponenter.
- DSP (om det finns) och Codec
- APO
- OEM-anpassningar
Du kan också använda separata INF-filer för DSP och Codec.
Det här diagrammet sammanfattar en komponentiserad ljudinstallation.
En separat INF-fil för tillägg används för att anpassa varje basdrivrutinskomponent för ett visst system. Anpassningar omfattar justeringsparametrar och andra systemspecifika inställningar. Mer information finns i Using an Extension INF File.
En INF-fil för utökning måste vara en universell INF-fil. Mer information finns i Använda en universell INF-fil.
Information om hur du lägger till programvara med INF-filer finns i Using a Component INF File and DCH Design Principles and Best Practices.
Skicka komponentiserade INF-filer
APO INF-paket måste skickas till Partnercenter separat från basdrivrutinspaketet. Mer information om hur du skapar paket finns i Windows HLK Komma igång.
SYSVAD-komponentiserade INF-filer
Om du vill se ett exempel på komponentiserade INF-filer granskar du sysvad/TabletAudioSamplepå GitHub.
Filnamn | Beskrivning |
---|---|
ComponentizedAudioSample.inf | Den grundläggande komponentiserade inf-exempelfilen för ljud. |
ComponentizedAudioSampleExtension.inf | Tilläggsdrivrutinen för sysvad-basen med ytterligare OEM-anpassningar. |
ComponentizedApoSample.inf | En INF-fil för APO-exempeltillägget. |
De traditionella INF-filerna fortsätter att vara tillgängliga i SYSVAD-exemplet.
Filnamn | Beskrivning |
---|---|
tabletaudiosample.inf | En monolitisk INF-skrivbordsfil som innehåller all information som behövs för att installera drivrutinen. |
APO-leverantörsspecifika justeringsparametrar och funktionskonfiguration
Alla APO-leverantörssystemspecifika inställningar, parametrar och justeringsvärden måste installeras via ett INF-tilläggspaket. I många fall kan detta utföras på ett enkelt sätt med INF AddReg-direktivet. I mer komplexa fall kan en justeringsfil användas.
Basdrivrutinspaket får inte vara beroende av dessa anpassningar för att fungera (även om naturligtvis funktionaliteten kan minskas).
Appar för UWP-ljudinställningar
Om du vill implementera ett användargränssnitt för slutanvändare använder du en maskinvarusupportapp (HSA) för en Windows Universal Audio-drivrutin. Mer information finns i Maskinvarusupportapp (HSA): Steg för drivrutinsutvecklare.
Programmatiskt starta UWP-maskinvarusupportappar
Om du vill starta en UWP-maskinvarusupportapp programmatiskt baserat på en drivrutinshändelse (till exempel när en ny ljudenhet är ansluten) använder du Windows Shell-API:erna. Api:erna för Windows 10 Shell stöder en metod för att starta UWP-användargränssnittet baserat på resursaktivering eller direkt via IApplicationActivationManager. Du hittar mer information om automatisk start för UWP-program i Automatisera lanseringen av Windows 10 UWP-appar.
APO och enhetsdrivrutinsleverantörers användning av AudioModules-API:et
API/DDI för ljudmoduler är utformat för att standardisera kommunikationstransporten (men inte protokollet) för kommandon som skickas mellan ett UWP-program eller en användarlägestjänst till en kerneldrivrutinsmodul eller DSP-bearbetningsblock. Ljudmoduler kräver en drivrutin som implementerar rätt DDI för att stödja moduluppräkning och kommunikation. Kommandona skickas som binär och tolkning/definition lämnas upp till skaparen.
Ljudmoduler är för närvarande inte utformade för att underlätta direkt kommunikation mellan en UWP-app och en SW APO som körs i ljudmotorn.
Mer information om ljudmoduler finns i Implementera ljudmodulkommunikation och Konfigurera och fråga efter ljudenhetsmoduler.
APO HWID-strängars konstruktion
APO-maskinvaru-ID:er innehåller både standardinformation och leverantörsdefinierade strängar.
De konstrueras på följande sätt:
SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4) &REV_r(4)
SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4)
SWC\VEN_v(4)&AID_a(4)
Var:
- v(4) är 4-teckensidentifierare för APO-enhetsleverantören. Detta kommer att hanteras av Microsoft.
- a(4) är 4-teckensidentifieraren för APO som definieras av APO-leverantören.
- n(4) är den PCI SIG-tilldelade identifieraren med 4 tecken för leverantören av undersystemet för den överordnade enheten. Detta är vanligtvis OEM-identifieraren.
- s(4) är den leverantörsdefinierade undersystemidentifieraren på 4 tecken för den överordnade enheten. Detta är vanligtvis OEM-produktidentifieraren.
Plug and Play INF-version och bedömning av datum för drivrutinsuppdatering
Windows Plug and Play-systemet utvärderar datum och drivrutinsversion för att avgöra vilken enhet som ska installeras när det finns flera drivrutiner. Mer information finns i Hur Windows rangordnar drivrutiner.
Om du vill tillåta att den senaste drivrutinen används måste du se till och uppdatera datum och version för varje ny version av drivrutinen.
Registernyckel för APO-drivrutin
För tredjepartsdefinierade ljuddrivrutiner/APO-registernycklar använder du HKR.
Använda en Windows-tjänst för att underlätta UWP-<–> APO-kommunikation
En Windows-tjänst krävs inte strikt för hantering av komponenter i användarläge, till exempel API:er. Men om din design innehåller en RPC-server för att underlätta UWP-<–> APO-kommunikation rekommenderar vi att du implementerar den funktionen i en Windows-tjänst som sedan styr APO som körs i ljudmotorn.
Skapa Sysvad Universal Audio Sample för Windows 10 Desktop
Utför följande steg för att skapa sysvad-exemplet för Windows 10 Desktop.
Leta upp inf-filen för skrivbordet (tabletaudiosample.inf) och ange tillverkarens namn till ett värde som "Contoso"
I Solution Explorer-fönstret väljer du och håller (eller högerklickar på) Lösning 'sysvad' och klickar på Konfigurationshanteraren. Om du distribuerar till en 64-bitarsversion av Windows anger du målplattformen till x64. Kontrollera att konfigurations- och plattformsinställningarna är desamma för alla projekt.
Skapa alla projekt i sysvad-lösningen.
Leta upp utdatakatalogen för bygget från bygget. Den kan till exempel finnas i en katalog som den här:
C:\Program Files (x86)\Windows Kits\10\src\audio\sysvad\x64\Debug\package
Kopiera följande filer till det system som du vill installera sysvad-drivrutinen:
Fil | Beskrivning |
---|---|
TabletAudioSample.sys | Drivrutinsfilen. |
tabletaudiosample.inf | En inf-fil (information) som innehåller information som behövs för att installera drivrutinen. |
sysvad.cat | Katalogfilen. |
SwapAPO.dll | Ett exempel på drivrutinstillägg för ett användargränssnitt för att hantera API:er. |
KeywordDetectorAdapter.dll | Ett exempel på nyckelordsdetektor. |
Installera och testa drivrutinen
Följ de här stegen för att installera drivrutinen med hjälp av PnpUtil på målsystemet.
Öppna en kommandotolk som administratör och skriv följande i katalogen som du kopierade drivrutinsfilerna till.
pnputil -i -a tabletaudiosample.inf
Installationen av sysvad-drivrutinen bör slutföras. Om det finns några fel kan du undersöka den här filen för ytterligare information:
%windir%\inf\setupapi.dev.log
I Enhetshanteraren går du till menyn Visa och väljer Enheter efter typ. Leta upp Microsoft Virtual Audio Device (WDM) – Sysvad-exempel i enhetsträdet. Detta är vanligtvis under noden Ljud-, video- och spelkontrollanter.
Öppna Kontrollpanelen på måldatorn och gå till Maskinvara och ljud>Hantera ljudenheter. I dialogrutan Ljud väljer du talarikonen med etiketten Microsoft Virtual Audio Device (WDM) – Sysvad Sample och väljer sedan Ange standard, men välj inte OK. Då hålls dialogrutan Ljud öppen.
Leta upp en MP3- eller annan ljudfil på måldatorn och dubbelklicka för att spela upp den. I dialogrutan Ljud kontrollerar du sedan att det finns aktivitet i volymnivåindikatorn som är associerad med Microsoft Virtual Audio Device (WDM) – Sysvad Sample-drivrutinen.