Freigeben über


Universelle Windows-Treiber für Audio

In Windows 10 können Sie einen universellen Audiotreiber schreiben, der über viele Hardwaretypen hinweg funktioniert. In diesem Thema werden die Vorteile dieses Ansatzes sowie die Unterschiede zwischen Plattformen erläutert. Zusätzlich zu den universellen Windows-Treibern für Audio unterstützt Windows weiterhin frühere Audiotreibertechnologien wie WDM.

Erste Schritte mit universellen Windows-Treibern für Audio

IHVs können einen universellen Windows-Treiber entwickeln, der auf allen Geräten (Desktops, Laptops, Tablets, Smartphones) funktioniert. Dies kann die Entwicklungszeit und die Kosten für die anfängliche Entwicklung und spätere Codewartung reduzieren.

Diese Tools stehen zur Entwicklung universeller Windows-Treiber zur Verfügung:

  • Visual Studio 2015: Legen Sie "Zielplattform" auf "Universal" fest. Weitere Informationen zum Einrichten der Treiberentwicklungsumgebung finden Sie in der Dokumentation für Windows-Hardwareentwickler und beim Erstellen eines Treibers mit dem WDK.

  • APIValidator Tool: Sie können das ApiValidator.exe Tool verwenden, um zu überprüfen, ob die APIs, die Ihr Treiber aufruft, für einen universellen Windows-Treiber gültig sind. Dieses Tool ist Teil des Windows Driver Kit (WDK) für Windows 10 und wird automatisch ausgeführt, wenn Sie Visual Studio 2015 verwenden. Weitere Informationen finden Sie unter APIValidator.

  • DDI-Referenzdokumentation: Die DDI-Referenzdokumentation wird aktualisiert, um anzugeben, welche DDIs von universellen Windows-Treibern unterstützt werden. Weitere Informationen finden Sie unter "Referenz zu Audiogeräten".

Erstellen eines universellen Audiotreibers

Eine schrittweise Anleitung finden Sie in der Dokumentation für Windows-Hardwareentwickler und beim Erstellen eines Treibers mit dem WDK. Zusammenfassung der Schritte:

  1. Laden Sie das Universelle Audio sysvad-Beispiel, um als Ausgangspunkt für Ihren universellen Audiotreiber zu verwenden. Beginnen Sie alternativ mit der leeren WDM-Treibervorlage, und fügen Sie code aus dem universellen Sysvad-Beispiel nach Bedarf für Ihren Audiotreiber hinzu.

  2. Legen Sie in den Projekteigenschaften die Zielplattform auf "Universal" fest.

  3. Erstellen Sie ein Installationspaket: Wenn Ihr Ziel das Gerät ist, auf dem Windows 10 für Desktopeditionen (Home, Pro, Enterprise und Education) ausgeführt wird, verwenden Sie eine universelle INF-Datei. Wenn Ihr Zielgerät Windows 10 Mobile ausführt, verwenden Sie PkgGen, um eine SPKG-Datei zu generieren.

  4. Erstellen, Installieren, Bereitstellen und Debuggen des Treibers für Windows 10 für Desktopeditionen oder Windows 10 Mobile.

Beispielcode

Sysvad und SwapAPO wurden in Universelle Windows-Treiberbeispiele konvertiert. Weitere Informationen finden Sie unter Beispielaudiotreiber.

Verfügbare Programmierschnittstellen für universelle Windows-Treiber für Audio

Ab Windows 10 sind die Treiberprogrammierschnittstellen Bestandteil von OneCoreUAP-basierten Editionen von Windows. Mithilfe dieses allgemeinen Satzes können Sie einen universellen Windows-Treiber schreiben. Diese Treiber werden sowohl unter Windows 10 für Desktopeditionen als auch unter Windows 10 Mobile und anderen Windows 10-Versionen ausgeführt.

Die folgenden DDIs sind verfügbar, wenn Sie mit universellen Audiotreibern arbeiten.

Konvertieren eines vorhandenen Audiotreibers in einen universellen Windows-Treiber

Führen Sie diesen Vorgang aus, um einen vorhandenen Audiotreiber in einen universellen Windows-Treiber zu konvertieren.

  1. Ermitteln Sie, ob ihre vorhandenen Treiberaufrufe unter OneCoreUAP Windows ausgeführt werden. Überprüfen Sie den Abschnitt "Anforderungen" der Referenzseiten. Weitere Informationen finden Sie unter "Referenz zu Audiogeräten".

  2. Kompilieren Sie Ihren Treiber als universellen Windows-Treiber. Legen Sie in den Projekteigenschaften die Zielplattform auf "Universal" fest.

  3. Verwenden Sie das ApiValidator.exe Tool, um zu überprüfen, ob die DDIs, die Ihr Treiber aufruft, für einen universellen Windows-Treiber gültig sind. Dieses Tool ist Teil des Windows Driver Kit (WDK) für Windows 10 und wird automatisch ausgeführt, wenn Sie Visual Studio 2015 verwenden. Weitere Informationen finden Sie unter APIValidator.

  4. Wenn der Treiber Schnittstellen aufruft, die nicht Teil von OneCoreUAP sind, meldet der Compiler Fehler.

  5. Ersetzen Sie diese Aufrufe durch alternative Aufrufe, oder erstellen Sie eine Codeumgehung, oder schreiben Sie einen neuen Treiber.

Erstellen einer komponentenbasierten Audiotreiberinstallation

Übersicht

Um eine reibungslosere und zuverlässigere Installation zu erzielen und die Komponentenwartung zu verbessern, teilen Sie den Treiberinstallationsprozess in die folgenden Komponenten auf.

  • DSP (sofern vorhanden) und Codec
  • APO
  • OEM-Anpassungen

Optional können separate INF-Dateien für DSP und Codec verwendet werden.

Dieses Diagramm fasst eine komponentenisierte Audioinstallation zusammen.

Diagramm des komponentenisierten Audiostapels mit DSP-Treiber, Codec und APOs.

Eine separate ERWEITERUNGS-INF-Datei wird verwendet, um jede Basistreiberkomponente für ein bestimmtes System anzupassen. Anpassungen umfassen Optimierungsparameter und andere systemspezifische Einstellungen. Weitere Informationen finden Sie unter Verwenden einer INF-Erweiterungsdatei.

Eine INF-Erweiterung muss eine universelle INF-Datei sein. Weitere Informationen finden Sie unter Verwenden einer universellen INF-Datei.

Informationen zum Hinzufügen von Software mithilfe von INF-Dateien finden Sie unter Verwenden einer Komponenten-INF-Datei und der DCH-Entwurfsprinzipien und bewährten Methoden.

Übermitteln von komponentenisierten INF-Dateien

APO INF-Pakete müssen separat vom Basistreiberpaket an das Partner Center übermittelt werden. Weitere Informationen zum Erstellen von Paketen finden Sie unter Windows HLK Getting Started.

SYSVAD-komponentenisierte INF-Dateien

Um ein Beispiel für komponentenisierte INF-Dateien anzuzeigen, untersuchen Sie die Sysvad/TabletAudioSample auf GitHub.

Dateiname Beschreibung
ComponentizedAudioSample.inf Die in der Basiskomponente enthaltene Audio-INF-Datei.
ComponentizedAudioSampleExtension.inf Der Erweiterungstreiber für die sysvad-Basis mit zusätzlichen OEM-Anpassungen.
ComponentizedApoSample.inf Eine INF-Beispielerweiterungsdatei für APO.

Die herkömmlichen INF-Dateien sind weiterhin im SYSVAD-Beispiel verfügbar.

Dateiname Beschreibung
tabletaudiosample.inf Eine monolithische DESKTOP-INF-Datei, die alle Informationen enthält, die zum Installieren des Treibers erforderlich sind.

Spezifische Optimierungsparameter und Featurekonfiguration von APO-Anbietern

Alle systemspezifischen Einstellungen, Parameter und Optimierungswerte des APO-Anbieters müssen über ein INF-Erweiterungspaket installiert werden. In vielen Fällen kann dies einfach mit der INF-AddReg-Direktive durchgeführt werden. In komplexeren Fällen kann eine Optimierungsdatei verwendet werden. 

Basistreiberpakete dürfen nicht von diesen Anpassungen abhängig sein, um funktionieren zu können (obwohl die Funktionalität natürlich reduziert werden kann). 

UWP-Audioeinstellungen-APPs

Verwenden Sie zum Implementieren einer Endbenutzer-UI eine Hardwareunterstützungs-App (Hardware Support App, HSA) für einen universellen Windows-Audiotreiber. Weitere Informationen finden Sie unter Hardwaresupport-App (HSA): Schritte für Treiberentwickler.

Programmgesteuertes Starten von UWP-Hardwareunterstützungs-Apps

Verwenden Sie die Windows Shell-APIs, um eine UWP-Hardwareunterstützungs-App programmgesteuert zu starten, basierend auf einem Treiberereignis (z. B. wenn ein neues Audiogerät verbunden ist). Die Windows 10-Shell-APIs unterstützen eine Methode zum Starten der UWP-Benutzeroberfläche basierend auf der Ressourcenaktivierung oder direkt über IApplicationActivationManager. Weitere Details zum automatisierten Starten von UWP-Anwendungen finden Sie unter Automatisieren des Startens von Windows 10 UWP-Apps

Verwendung der AudioModules-API von APO- und Gerätetreibern

Die Audiomodule-API/DDI wurde entwickelt, um den Kommunikationstransport (aber nicht das Protokoll) für Befehle zu standardisieren, die zwischen einer UWP-Anwendung oder einem Benutzermodusdienst an ein Kerneltreibermodul oder einen DSP-Verarbeitungsblock übergeben werden. Audiomodule erfordern einen Treiber, der den richtigen DDI implementiert, um die Modulenumeration und -kommunikation zu unterstützen. Die Befehle werden als binär übergeben, und die Interpretation/Definition bleibt dem Ersteller überlassen. 

Audiomodule sind derzeit nicht für die direkte Kommunikation zwischen einer UWP-App und einem SW-APO konzipiert, das im Audiomodul ausgeführt wird.

Weitere Informationen zu Audiomodulen finden Sie unter Implementieren von Audiomodulkommunikationsmodulen und Konfigurieren und Abfragen von Audiogerätemodulen.

APO HWID-Zeichenfolgenkonstruktion

APO-Hardware-IDs enthalten sowohl Standardinformationen als auch vom Anbieter definierte Zeichenfolgen.

Sie werden wie folgt konstruiert:

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)

Hierbei gilt:

  • v(4) ist der 4-stellige Bezeichner für den APO-Geräteanbieter. Dies wird von Microsoft verwaltet. 
  • a(4) ist der 4-stellige Bezeichner für das APO, der vom APO-Anbieter definiert wird. 
  • n(4) ist der 4-stellige PCI SIG-zugewiesene Bezeichner für den Anbieter des Subsystems für das übergeordnete Gerät. Dies ist in der Regel der OEM-Bezeichner.
  • s(4) ist der vom Anbieter definierte 4-stellige Subsystembezeichner für das übergeordnete Gerät. Dies ist in der Regel der OEM-Produktbezeichner.

Plug & Play INF-Version und Datumsauswertung für treiberupdates

Das Windows Plug & Play System wertet das Datum und die Treiberversion aus, um zu bestimmen, welches Laufwerk installiert werden soll, wenn mehrere Treiber vorhanden sind. Weitere Informationen finden Sie unter How Windows Ranks Drivers.For more information, see How Windows Ranks Drivers.

Um zuzulassen, dass der neueste Treiber verwendet werden kann, achten Sie darauf, das Datum und die Version für jede neue Version des Treibers zu aktualisieren.

APO-Treiberregistrierungsschlüssel

Verwenden Sie HKR für drittanbieterdefinierte Audiotreiber/APO-Registrierungsschlüssel.

Verwenden eines Windows-Diensts zur Erleichterung der UWP <-> APO-Kommunikation

Ein Windows-Dienst ist nicht unbedingt für die Verwaltung von Benutzermoduskomponenten wie APOs erforderlich. Wenn Ihr Design jedoch einen RPC-Server enthält, um die UWP <-> APO-Kommunikation zu erleichtern, empfehlen wir die Implementierung dieser Funktionalität in einem Windows-Dienst, der dann die APO steuert, die im Audiomodul ausgeführt wird. 

Erstellen des universellen Sysvad-Audiobeispiels für Windows 10 Desktop

Führen Sie die folgenden Schritte aus, um das Sysvad-Beispiel für Windows 10-Desktop zu erstellen.

  1. Suchen Sie die Desktop-Inf-Datei (tabletaudiosample.inf), und legen Sie den Herstellernamen auf einen Wert wie "Contoso" fest.

  2. Wählen Sie in Projektmappen-Explorer die Lösung "sysvad" aus und halten Sie sie gedrückt (oder klicken Sie mit der rechten Maustaste darauf), und wählen Sie "Configuration Manager" aus. Wenn Sie eine 64-Bit-Version von Windows bereitstellen, legen Sie die Zielplattform auf x64 fest. Stellen Sie sicher, dass die Konfigurations- und Plattformeinstellungen für alle Projekte identisch sind.

  3. Erstellen Sie alle Projekte in der Sysvad-Lösung.

  4. Suchen Sie das Ausgabeverzeichnis für den Build aus dem Build. Beispielsweise könnte es sich in einem Verzeichnis wie folgt befinden:

    C:\Program Files (x86)\Windows Kits\10\src\audio\sysvad\x64\Debug\package
    
  5. Kopieren Sie die folgenden Dateien in das System, das Sie den Sysvad-Treiber installieren möchten:

Datei Beschreibung
TabletAudioSample.sys Die Treiberdatei.
tabletaudiosample.inf Eine Informationsdatei (INF), die die für die Installation des Treibers erforderlichen Informationen enthält.
sysvad.cat Die Katalogdatei.
SwapAPO.dll Eine Beispieltreibererweiterung für eine Benutzeroberfläche zum Verwalten von APOs.
KeywordDetectorAdapter.dll Ein Beispiel für einen Schlüsselwortdetektor.

Installieren und Testen des Treibers

Führen Sie die folgenden Schritte aus, um den Treiber mithilfe von PnpUtil auf dem Zielsystem zu installieren.

  1. Öffnen Sie die Eingabeaufforderung und geben Sie Folgendes in das Verzeichnis ein, in das Sie die Treiberdateien kopiert haben.

    pnputil -i -a tabletaudiosample.inf

  2. Die Sysvad-Treiberinstallation sollte abgeschlossen sein. Wenn Fehler vorhanden sind, können Sie diese Datei auf weitere Informationen überprüfen: %windir%\inf\setupapi.dev.log

  3. Wählen Sie in Geräte-Manager im Menü "Ansicht" die Option "Geräte nach Typ" aus. Suchen Sie in der Gerätestruktur nach Microsoft Virtual Audio Device (WDM) – Sysvad-Beispiel. Dies geschieht in der Regel unter dem Knoten Audio, Video und Gamecontroller.

  4. Öffnen Sie auf dem Zielcomputer Systemsteuerung, und navigieren Sie zu "Hardware und Sound>Verwalten von Audiogeräten". Wählen Sie im Dialogfeld "Sound" das Lautsprechersymbol mit der Bezeichnung "Microsoft Virtual Audio Device (WDM) – Sysvad Sample" aus, und wählen Sie dann "Standard festlegen", aber nicht "OK" aus. Dadurch bleibt das Dialogfeld „Sound“ geöffnet.

  5. Suchen Sie eine MP3- oder andere Audiodatei auf dem Zielcomputer, und doppelklicken Sie darauf, um sie abzuspielen. Vergewissern Sie sich dann im Dialogfeld "Sound", dass die Aktivität in der Lautstärkeanzeige vorhanden ist, die dem Microsoft Virtual Audio Device (WDM) - Sysvad Sample-Treiber zugeordnet ist.