Universele Windows-stuurprogramma's voor audio
In Windows 10 kunt u een universeel audiostuurprogramma schrijven dat op veel soorten hardware werkt. In dit onderwerp worden de voordelen van deze benadering en de verschillen tussen platforms besproken. Naast de Universele Windows-stuurprogramma's voor audio, blijft Windows ondersteuning bieden voor eerdere technologieën voor audiostuurprogramma's, zoals WDM.
Aan de slag met Universele Windows-stuurprogramma's voor Audio
IHD's kunnen een Universeel Windows-stuurprogramma ontwikkelen dat werkt op alle apparaten (desktops, laptops, tablets, telefoons). Dit kan de ontwikkeltijd en kosten voor de eerste ontwikkeling en het latere codeonderhoud verminderen.
Deze hulpprogramma's zijn beschikbaar voor het ontwikkelen van Universele Windows-stuurprogramma's:
Visual Studio 2015: Stel 'Doelplatform' in op 'Universeel'. Zie Documentatie voor Windows-hardwareontwikkelaars en Een stuurprogramma bouwen met de WDK-voor meer informatie over het instellen van de ontwikkelomgeving voor stuurprogramma's.
APIValidator Tool: u kunt het hulpprogramma ApiValidator.exe gebruiken om te controleren of de API's van uw stuurprogramma's geldig zijn voor een Universeel Windows-stuurprogramma. Dit hulpprogramma maakt deel uit van de Windows Driver Kit (WDK) voor Windows 10 en wordt automatisch uitgevoerd als u Visual Studio 2015 gebruikt. Zie APIValidator-voor meer informatie.
DDI-referentiedocumentatie: de DDI-referentiedocumentatie wordt bijgewerkt om aan te geven welke DDIs worden ondersteund door Universele Windows-stuurprogramma's. Zie Referentie voor audioapparatenvoor meer informatie.
Een Universal Audio Driver maken
Zie Windows-documentatie voor hardwareontwikkelaars en Een stuurprogramma bouwen met de WDK-voor stapsgewijze instructies. Hier volgt een samenvatting van de stappen:
Laad het universele audio sysvad-voorbeeld om te gebruiken als uitgangspunt voor uw universele audiostuurprogramma. U kunt ook beginnen met de lege WDM-stuurprogrammasjabloon en zo nodig code toevoegen uit het universele sysvad-voorbeeld voor uw audiostuurprogramma.
Stel doelplatform in de projecteigenschappen in op 'Universeel'.
Maak een installatiepakket: Als het apparaat Windows 10 voor desktop-edities (Home, Pro, Enterprise en Education) uitvoert, gebruikt u een universeel INF-bestand. Als uw doelapparaat Windows 10 Mobile draait, gebruikt u PkgGen om het SPKG-bestand te genereren.
Bouw, installeer, rol uit en los fouten op in het stuurprogramma voor Windows 10 voor desktopversies of Windows 10 Mobile.
Voorbeeldcode
Sysvad en SwapAPO zijn geconverteerd naar universele Windows-stuurprogrammavoorbeelden. Zie Voorbeeldaudiostuurprogramma'svoor meer informatie.
Beschikbare programmeerinterfaces voor universele Windows-stuurprogramma's voor audio
Vanaf Windows 10 maken de programmeerinterfaces voor stuurprogramma's deel uit van op OneCoreUAP gebaseerde edities van Windows. Door deze algemene set te gebruiken, kunt u een Universeel Windows-stuurprogramma schrijven. Deze stuurprogramma's worden uitgevoerd op zowel Windows 10 voor desktopversies als Windows 10 Mobile en andere Versies van Windows 10.
De volgende DDIs zijn beschikbaar wanneer u met universele audiostuurprogramma's werkt.
Een bestaand audiostuurprogramma converteren naar een Universeel Windows-stuurprogramma
Volg dit proces om een bestaand audiostuurprogramma te converteren naar een Universeel Windows-stuurprogramma.
Bepaal of uw bestaande stuurprogrammaaanroepen worden uitgevoerd in OneCoreUAP Windows. Controleer de sectie Vereisten van de referentiepagina's. Zie voor meer informatie de Audio Devices Reference .
Uw stuurprogramma opnieuw compileren als een Universeel Windows-stuurprogramma. Stel doelplatform in de projecteigenschappen in op 'Universeel'.
Gebruik het hulpprogramma ApiValidator.exe om te controleren of de DDIs's die uw stuurprogramma-aanroepen geldig zijn voor een Universeel Windows-stuurprogramma. Dit hulpprogramma maakt deel uit van de Windows Driver Kit (WDK) voor Windows 10 en wordt automatisch uitgevoerd als u Visual Studio 2015 gebruikt. Zie APIValidator-voor meer informatie.
Als het stuurprogramma interfaces aanroept die geen deel uitmaken van OneCoreUAP, meldt de compiler fouten.
Vervang deze aanroepen door alternatieve aanroepen, maak een omweg in de code of schrijf een nieuw stuurprogramma.
Een componentgerichte installatie van een audiostuurprogramma maken
Overzicht
Als u een soepelere en betrouwbaardere installatie-ervaring wilt creëren en het onderhoud van onderdelen beter wilt ondersteunen, verdeelt u het installatieproces van het stuurprogramma in de volgende onderdelen.
- DSP (indien aanwezig) en Codec
- APO
- OEM-aanpassingen
U kunt eventueel afzonderlijke INF-bestanden gebruiken voor de DSP en Codec.
Dit diagram bevat een overzicht van een gecomponentde audio-installatie.
Er wordt een afzonderlijk INF-extensiebestand gebruikt om elk basisstuurprogrammaonderdeel voor een bepaald systeem aan te passen. Aanpassingen omvatten afstemmingsparameters en andere systeemspecifieke instellingen. Zie voor meer informatie Een extensie INF-bestand gebruiken.
Een extensie-INF-bestand moet een universeel INF-bestand zijn. Zie Een universeel INF-bestand gebruikenvoor meer informatie.
Zie Using a Component INF File and DCH Design Principles and Best Practicesvoor informatie over het toevoegen van software met behulp van INF-bestanden.
In onderdelen geplaatste INF-bestanden verzenden
APO INF-pakketten moeten afzonderlijk van het basisstuurprogrammapakket naar het Partnercentrum worden verzonden. Zie Aan de slag met Windows HLKvoor meer informatie over het maken van pakketten.
INF-bestanden met SYSVAD-onderdelen
Als u een voorbeeld wilt zien van gecomponenterde INF-bestanden, bekijkt u de sysvad/TabletAudioSample-op GitHub.
Bestandsnaam | Beschrijving |
---|---|
ComponentizedAudioSample.inf | Het gecomponenteerde INF-bestand van de voorbeeld-audio. |
ComponentizedAudioSampleExtension.inf | Het extensiestuurprogramma voor de sysvad-basis met extra OEM-aanpassingen. |
ComponentizedApoSample.inf | Een APO-voorbeeldextensie INF-bestand. |
De traditionele INF-bestanden blijven beschikbaar in het SYSVAD-voorbeeld.
Bestandsnaam | Beschrijving |
---|---|
tabletaudiosample.inf | Een monolithisch INF-bestand van het bureaublad dat alle informatie bevat die nodig is om het stuurprogramma te installeren. |
APO-leverancierspecifieke afstemmingsparameters en functieconfiguratie
Alle systeemspecifieke instellingen, parameters en afstemmingswaarden van APO-leveranciers moeten worden geïnstalleerd via een extensie INF-pakket. In veel gevallen kan dit op een eenvoudige manier worden uitgevoerd met de INF AddReg-richtlijn. In complexere gevallen kan een afstemmingsbestand worden gebruikt.
Basisstuurprogrammapakketten mogen niet afhankelijk zijn van deze aanpassingen om te kunnen functioneren (hoewel de functionaliteit natuurlijk kan worden verminderd).
UWP Audio-instellingen-apps
Als u een gebruikersinterface van eindgebruikers wilt implementeren, gebruikt u een HSA (Hardware Support App) voor een Windows Universal Audio-stuurprogramma. Zie Hardware Support App (HSA) voor meer informatie: stappen voor stuurprogrammaontwikkelaars.
Programmatisch UWP Hardware Support Apps starten
Als u programmatisch een UWP Hardware Support-app wilt starten op basis van een stuurprogramma-gebeurtenis (bijvoorbeeld wanneer een nieuw audioapparaat is verbonden), gebruikt u de Windows Shell-API's. De Windows 10 Shell-API's ondersteunen een methode voor het starten van de UWP-gebruikersinterface op basis van resourceactivering of rechtstreeks via IApplicationActivationManager. Meer informatie over het automatisch starten van UWP-toepassingen vindt u in Automate voor het starten van Windows 10 UWP-apps.
Gebruik van de AudioModules-API door leveranciers van APO's en apparaatstuurprogramma's
De Audio Modules-API/DDI is ontworpen om het communicatietransport (maar niet het protocol) te standaardiseren voor opdrachten die tussen een UWP-toepassing of gebruikersmodusservice worden doorgegeven aan een kernelstuurprogrammamodule of DSP-verwerkingsblok. Voor audiomodules is een stuurprogramma vereist dat de juiste DDI implementeert ter ondersteuning van de opsomming en communicatie van modules. De opdrachten worden doorgegeven als binair en interpretatie/definitie wordt aan de maker overgelaten.
Audiomodules zijn momenteel niet ontworpen om directe communicatie tussen een UWP-app en een SW APO die wordt uitgevoerd in de audio-engine te vergemakkelijken.
Zie voor meer informatie over audiomodules Het implementeren van audiomodulecommunicatie en modules voor audioapparaten configureren en opvragen.
Constructie van APO HWID tekenreeksen
APO-hardware-id's bevatten zowel standaardinformatie als door de leverancier gedefinieerde tekenreeksen.
Ze worden als volgt samengesteld:
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)
Waar:
- v(4) is de id van vier tekens voor de leverancier van het APO-apparaat. Dit wordt beheerd door Microsoft.
- a(4) is de id van 4 tekens voor de APO, gedefinieerd door de APO-leverancier.
- n(4) is de PCI SIG-id met vier tekens voor de leverancier van het subsysteem voor het bovenliggende apparaat. Dit is doorgaans de OEM-id.
- s(4) is de door de leverancier gedefinieerde subsysteem-id van vier tekens voor het bovenliggende apparaat. Dit is doorgaans de OEM-product-id.
Plug en Play INF-versie- en datumevaluatie voor het updaten van stuurprogramma's
Het Windows Plug en Play-systeem evalueert de datum en de versie van het stuurprogramma om te bepalen welk stuurprogramma moet worden geïnstalleerd wanneer er meerdere stuurprogramma's beschikbaar zijn. Zie Hoe Windows Stuurprogramma'srangschikt voor meer informatie.
Als u wilt toestaan dat het meest recente stuurprogramma wordt gebruikt, moet u de datum en versie voor elke nieuwe versie van het stuurprogramma controleren en bijwerken.
Registersleutel van APO-stuurprogramma
Gebruik HKR voor door derden gedefinieerde audiostuurprogramma's/APO-registersleutels.
Een Windows-service gebruiken om UWP-<-> APO-communicatie te vergemakkelijken
Een Windows-service is niet strikt vereist voor het beheer van gebruikersmodusonderdelen, zoals API's. Als uw ontwerp echter een RPC-server bevat om UWP-<-> APO-communicatie te vergemakkelijken, raden we u aan die functionaliteit te implementeren in een Windows-service die vervolgens de APO beheert die wordt uitgevoerd in de audio-engine.
Het Sysvad Universal Audio Sample voor Windows 10 Desktop bouwen
Voer de volgende stappen uit om het sysvad-voorbeeld voor Windows 10 desktop te bouwen.
Zoek het bureaublad-inf-bestand (tabletaudiosample.inf) en stel de naam van de fabrikant in op een waarde zoals Contoso
Selecteer en houd de oplossing sysvad in Solution Explorer ingedrukt (of klik erop met de rechtermuisknop) en kies Configuration Manager. Als u implementeert in een 64-bits versie van Windows, stelt u het doelplatform in op x64. Zorg ervoor dat de configuratie- en platforminstellingen voor alle projecten hetzelfde zijn.
Bouw alle projecten in de sysvad-oplossing.
Zoek de uitvoermap voor de build vanuit de build. De map kan bijvoorbeeld in een directory zoals deze staan:
C:\Program Files (x86)\Windows Kits\10\src\audio\sysvad\x64\Debug\package
Kopieer de volgende bestanden naar het systeem dat u het sysvad-stuurprogramma wilt installeren:
Bestand | Beschrijving |
---|---|
TabletAudioSample.sys | Het stuurprogrammabestand. |
tabletaudiosample.inf | Een informatiebestand (INF) dat informatie bevat die nodig is om het stuurprogramma te installeren. |
sysvad.cat | Het catalogusbestand. |
SwapAPO.dll | Een voorbeeldstuurprogrammaextensie voor een gebruikersinterface voor het beheren van API's. |
KeywordDetectorAdapter.dll | Een voorbeeld van een trefwoorddetector. |
Het stuurprogramma installeren en testen
Volg deze stappen om het stuurprogramma te installeren met behulp van de PnpUtil op het doelsysteem.
Open en administrator opdrachtprompt en typ het volgende in de map waarnaar u de stuurprogrammabestanden hebt gekopieerd.
pnputil -i -a tabletaudiosample.inf
De installatie van het sysvad-stuurprogramma moet zijn voltooid. Als er fouten zijn, kunt u dit bestand voor meer informatie bekijken:
%windir%\inf\setupapi.dev.log
Kies in Apparaatbeheer in het menu Beeld de optie Apparaten per type. Zoek in de apparaatstructuur naar Microsoft Virtual Audio Device (WDM) - Sysvad Sample. Dit bevindt zich doorgaans onder het knooppunt Geluids-, video- en gamecontrollers.
Open het Configuratiescherm op de doelcomputer en navigeer naar Hardware en Geluid>Audioapparaten beheren. Selecteer in het dialoogvenster Geluid het luidsprekerpictogram met het label Microsoft Virtual Audio Device (WDM) - Sysvad Sample en selecteer Standaard instellen, maar selecteer niet OK. Hierdoor blijft het dialoogvenster Geluid geopend.
Zoek een MP3- of ander audiobestand op de doelcomputer en dubbelklik erop om het af te spelen. Controleer vervolgens in het dialoogvenster Geluid of er activiteit is in de volumeniveauindicator die is gekoppeld aan het stuurprogramma Microsoft Virtual Audio Device (WDM) - Sysvad Sample.