Uniwersalne sterowniki systemu Windows dla audio
W systemie Windows 10 można napisać uniwersalny sterownik audio, który będzie działać w wielu typach sprzętu. W tym temacie omówiono zalety tego podejścia, a także różnice między platformami. Oprócz sterowników uniwersalnych systemu Windows dla dźwięku system Windows nadal obsługuje poprzednie technologie sterowników audio, takie jak WDM.
Wprowadzenie do uniwersalnych sterowników Windows dla dźwięku
IHVs może opracować uniwersalny sterownik systemu Windows, który działa na wszystkich urządzeniach (komputery stacjonarne, laptopy, tablety, telefony). Może to skrócić czas programowania i koszty początkowej konserwacji kodu i późniejszej konserwacji kodu.
Te narzędzia są dostępne do tworzenia sterowników uniwersalnych systemu Windows:
Visual Studio 2015: ustaw wartość "Platforma docelowa" na wartość "Universal". Aby uzyskać więcej informacji na temat konfigurowania środowiska deweloperskiego sterowników, zobacz dokumentację dewelopera sprzętu systemu Windows i Tworzenie sterownika za pomocą zestawu WDK.
Narzędzie APIValidator: możesz użyć narzędzia ApiValidator.exe, aby sprawdzić, czy interfejsy API, które wywołuje sterownik, są prawidłowe dla sterownika uniwersalnego systemu Windows. To narzędzie jest częścią zestawu Windows Driver Kit (WDK) dla systemu Windows 10 i jest uruchamiane automatycznie, jeśli używasz programu Visual Studio 2015. Aby uzyskać więcej informacji, zobacz APIValidator.
Dokumentacja referencyjna DDI: dokumentacja referencyjna DDI została zaktualizowana, aby wskazać, które DDI są obsługiwane przez uniwersalne sterowniki Windows. Aby uzyskać więcej informacji, zobacz
Audio Devices Reference (Dokumentacja urządzeń audio ).
Tworzenie uniwersalnego sterownika audio
Aby uzyskać szczegółowe wskazówki, zobacz dokumentację dewelopera sprzętu systemu Windows i Tworzenie sterownika przy użyciu zestawu WDK. Poniżej przedstawiono podsumowanie kroków:
Załaduj przykład uniwersalny sysvad audio, aby użyć go jako punktu wyjścia dla uniwersalnego sterownika audio. Alternatywnie zacznij od pustego szablonu sterownika WDM i dodaj kod z uniwersalnego przykładu sysvad zgodnie z potrzebami dla sterownika audio.
We właściwościach projektu ustaw wartość "Platforma docelowa" na "Universal".
Utwórz pakiet instalacyjny: jeśli twoim celem jest urządzenie z systemem Windows 10 dla wersji klasycznych (Home, Pro, Enterprise i Education), użyj uniwersalnego pliku INF. Jeśli elementem docelowym jest urządzenie z systemem Windows 10 Mobile, użyj narzędzia PkgGen, aby wygenerować plik spkg.
Kompilowanie, instalowanie, wdrażanie i debugowanie sterownika dla systemu Windows 10 dla wersji klasycznych lub Windows 10 Mobile.
Przykładowy kod
Systemy Sysvad i SwapAPO zostały przekonwertowane na przykłady sterowników uniwersalnych systemu Windows. Aby uzyskać więcej informacji, zobacz Przykładowe sterowniki audio.
Dostępne interfejsy programistyczne dla uniwersalnych sterowników systemu Windows do obsługi dźwięku
Począwszy od systemu Windows 10, interfejsy programowania sterowników są częścią wydań opartych na protokole OneCoreUAP systemu Windows. Za pomocą tego wspólnego zestawu można napisać sterownik uniwersalny systemu Windows. Te sterowniki będą działać zarówno w systemie Windows 10 dla wersji klasycznych, jak i Windows 10 Mobile oraz w innych wersjach systemu Windows 10.
Podczas pracy z uniwersalnymi sterownikami audio dostępne są następujące identyfikatory DDI.
Konwertowanie istniejącego sterownika audio na sterownik uniwersalny systemu Windows
Postępuj zgodnie z tym procesem, aby przekonwertować istniejący sterownik audio na sterownik uniwersalny systemu Windows.
Ustal, czy istniejące wywołania sterowników będą działać w systemie Windows OneCoreUAP. Sprawdź sekcję wymagań stron referencyjnych. Aby uzyskać więcej informacji, zobacz Audio Devices Reference.
Ponownie skompiluj sterownik jako sterownik uniwersalny systemu Windows. We właściwościach projektu ustaw wartość "Platforma docelowa" na "Universal".
Użyj narzędzia ApiValidator.exe, aby sprawdzić, czy identyfikatory DDI wywoływane przez sterownik są prawidłowe w kontekście uniwersalnego sterownika Windows. To narzędzie jest częścią zestawu Windows Driver Kit (WDK) dla systemu Windows 10 i jest uruchamiane automatycznie, jeśli używasz programu Visual Studio 2015. Aby uzyskać więcej informacji, zobacz APIValidator.
Jeśli sterownik wywołuje interfejsy, które nie są częścią oneCoreUAP, kompilator zgłasza błędy.
Zastąp te wywołania alternatywnymi wywołaniami lub utwórz obejście kodu lub napisz nowy sterownik.
Tworzenie modułowej instalacji sterowników audio
Przegląd
Aby zapewnić bezproblemowe i bardziej niezawodne środowisko instalacji oraz lepszą obsługę składników, podziel proces instalacji sterownika na następujące składniki.
- DSP (jeśli istnieje) i Codec
- APO
- Dostosowania producenta OEM
Opcjonalnie można używać oddzielnych plików INF dla dsP i Codec.
Ten diagram podsumowuje modułową instalację audio.
Oddzielny plik INF rozszerzenia służy do dostosowywania każdego podstawowego składnika sterownika dla określonego systemu. Dostosowania obejmują parametry dostrajania i inne ustawienia specyficzne dla systemu. Aby uzyskać więcej informacji, zobacz Korzystanie z pliku INF rozszerzenia.
Plik INF rozszerzenia musi być uniwersalnym plikiem INF. Aby uzyskać więcej informacji, zobacz Używanie uniwersalnego pliku INF.
Aby uzyskać informacje na temat dodawania oprogramowania przy użyciu plików INF, zobacz Korzystanie z pliku INF komponentu oraz Zasady projektowania i najlepsze praktyki DCH.
Przesyłanie składnikowych plików INF
Pakiety APO INF muszą być przesyłane do Centrum partnerskiego oddzielnie od podstawowego pakietu sterowników. Aby uzyskać więcej informacji na temat tworzenia pakietów, zobacz Windows HLK Getting Started.
Pliki INF podzielone na składniki SYSVAD
Aby wyświetlić przykład składnikowych plików INF, sprawdź sysvad/TabletAudioSamplew witrynie GitHub.
Nazwa pliku | Opis |
---|---|
ComponentizedAudioSample.inf | Podstawowy zkomponentyzowany przykładowy plik INF audio. |
ComponentizedAudioSampleExtension.inf | Sterownik rozszerzenia bazy sysvad z dodatkowymi dostosowaniami producenta OEM. |
ComponentizedApoSample.inf | Przykładowy plik INF rozszerzenia obiektu APO. |
Tradycyjne pliki INF są nadal dostępne w przykładzie SYSVAD.
Nazwa pliku | Opis |
---|---|
tabletaudiosample.inf | Integralny plik INF na komputerze zawierający wszystkie informacje potrzebne do zainstalowania sterownika. |
Parametry dostrajania specyficzne dla dostawcy i konfiguracja funkcji APO
Wszystkie ustawienia, parametry i wartości dostrajania systemu dostawców APO muszą być zainstalowane za pośrednictwem pakietu INF rozszerzenia. W wielu przypadkach można to wykonać w prosty sposób za pomocą dyrektywy INF AddReg. W bardziej złożonych przypadkach można użyć pliku dostrajania.
Podstawowe pakiety sterowników nie mogą zależeć od tych dostosowań w celu działania (chociaż oczywiście funkcjonalność może zostać zmniejszona).
Aplikacje ustawień dźwięku platformy uniwersalnej systemu Windows
Aby zaimplementować interfejs użytkownika końcowego, użyj aplikacji do obsługi sprzętu (HSA) dla sterownika uniwersalnego audio systemu Windows. Aby uzyskać więcej informacji, zobacz Hardware Support App (HSA): Steps for Driver Developers.
Programowe uruchamianie aplikacji do obsługi sprzętu platformy UWP
Aby programowo uruchomić aplikację wsparcia sprzętu UWP na podstawie zdarzenia sterownika (np. po podłączeniu nowego urządzenia audio), użyj interfejsów API powłoki systemu Windows. Interfejsy API powłoki systemu Windows 10 obsługują metodę uruchamiania interfejsu użytkownika platformy UWP na podstawie aktywacji zasobów lub bezpośrednio za pośrednictwem IApplicationActivationManager. Więcej informacji na temat automatycznego uruchamiania aplikacji platformy UWP można znaleźć w Automate launching Windows 10 UWP apps.
Obiekt APO i dostawca sterowników urządzeń korzystają z interfejsu API AudioModules
Interfejs API/DDI modułów audio jest przeznaczony do standaryzacji transportu komunikacyjnego (ale nie protokołu) dla poleceń przekazywanych między aplikacją platformy UWP lub usługą trybu użytkownika do modułu sterownika jądra lub bloku przetwarzania DSP. Moduły audio wymagają sterownika implementującego poprawne DDI do obsługi wyliczania i komunikacji modułów. Polecenia są przekazywane jako binarne, a interpretacja/definicja pozostaje do twórcy.
Moduły audio nie są obecnie zaprojektowane w celu wsparcia bezpośredniej komunikacji między aplikacją UWP a SW APO uruchomionym w silniku audio.
Aby uzyskać więcej informacji na temat modułów audio, zobacz Implementowanie komunikacji modułu audio i Konfigurowanie i wykonywanie zapytań dotyczących modułów urządzeń audio.
Tworzenie ciągów HWID dla APO
Identyfikatory sprzętowe obiektu APO zawierają zarówno standardowe informacje, jak i ciągi zdefiniowane przez dostawcę.
Są one skonstruowane w następujący sposób:
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)
Gdzie:
- v(4) to 4-znakowy identyfikator dostawcy urządzenia APO. Będzie to zarządzane przez firmę Microsoft.
- a(4) to 4-znakowy identyfikator APO zdefiniowany przez dostawcę APO.
- n(4) jest 4-znakowym identyfikatorem interfejsu PCI SIG przypisanym do dostawcy podsystemu dla urządzenia nadrzędnego. Jest to zazwyczaj identyfikator OEM.
- s(4) to 4-znakowy identyfikator podsystemu zdefiniowanego przez dostawcę dla urządzenia nadrzędnego. Jest to zazwyczaj identyfikator produktu OEM.
Plug and Play INF wersja i ocena daty aktualizacji sterownika
System Windows Plug and Play ocenia datę i wersję sterownika, aby określić dysk do zainstalowania, gdy istnieje wiele sterowników. Aby uzyskać więcej informacji, zobacz How Windows Ranks Drivers.
Aby zezwolić na używanie najnowszego sterownika, upewnij się i zaktualizuj datę i wersję dla każdej nowej wersji sterownika.
Klucz rejestru sterownika APO
W przypadku kluczy rejestru sterowników audio/APO zdefiniowanych przez inną firmę używaj HKR.
Używanie usługi Windows do ułatwienia komunikacji platformy UWP <-> APO
Usługa systemu Windows nie jest ściśle wymagana do zarządzania składnikami trybu użytkownika, takimi jak APOs. Jeśli jednak Twój projekt zawiera serwer RPC w celu ułatwienia komunikacji <-> APO na platformie UWP, zalecamy zaimplementowanie tej funkcji w usłudze Windows, która następnie kontroluje obiekt APO uruchomiony w silniku audio.
Tworzenie przykładu Sysvad Universal Audio dla systemu Windows 10 Desktop
Wykonaj poniższe kroki, aby skompilować przykład sysvad dla systemu Windows 10 Desktop.
Znajdź plik inf pulpitu (tabletaudiosample.inf) i ustaw nazwę producenta na wartość taką jak "Contoso"
W Eksploratorze rozwiązań wybierz i przytrzymaj (lub kliknij prawym przyciskiem myszy) rozwiązanie "sysvad" i wybierz pozycję Configuration Manager. Jeśli wdrażasz w 64-bitowej wersji systemu Windows, ustaw platformę docelową na x64. Upewnij się, że ustawienia konfiguracji i platformy są takie same dla wszystkich projektów.
Zbuduj wszystkie projekty w rozwiązaniu sysvad.
Znajdź katalog wyjściowy kompilacji z kompilacji. Na przykład może on znajdować się w katalogu w następujący sposób:
C:\Program Files (x86)\Windows Kits\10\src\audio\sysvad\x64\Debug\package
Skopiuj następujące pliki do systemu, który chcesz zainstalować sterownik sysvad:
Plik | Opis |
---|---|
TabletAudioSample.sys | Plik sterownika. |
tabletaudiosample.inf | Plik informacyjny (INF), który zawiera informacje potrzebne do zainstalowania sterownika. |
sysvad.cat | Plik katalogu. |
SwapAPO.dll | Przykładowe rozszerzenie sterownika interfejsu użytkownika do zarządzania interfejsami API. |
KeywordDetectorAdapter.dll | Przykładowy detektor słów kluczowych. |
Instalowanie i testowanie sterownika
Wykonaj następujące kroki, aby zainstalować sterownik przy użyciu PnpUtil w systemie docelowym.
Otwórz wiersz polecenia administratora i wpisz następujące polecenie w katalogu, do którego skopiowano pliki sterowników.
pnputil -i -a tabletaudiosample.inf
Instalacja sterownika sysvad powinna zostać ukończona. Jeśli występują jakiekolwiek błędy, możesz sprawdzić ten plik, aby uzyskać dodatkowe informacje:
%windir%\inf\setupapi.dev.log
W Menedżerze urządzeń w menu Widok wybierz pozycję Urządzenia według typu. W drzewie urządzeń znajdź pozycję Microsoft Virtual Audio Device (WDM) — próbna wersja Sysvad. Zazwyczaj znajduje się to w węźle Dźwięk, wideo i kontrolery gier.
Na komputerze docelowym otwórz Panel sterowania i przejdź do sprzętu i dźwięku>Zarządzanie urządzeniami audio. W oknie dialogowym Dźwięk wybierz ikonę głośnika oznaczoną jako Microsoft Virtual Audio Device (WDM) — Przykład Sysvad, a następnie wybierz pozycję Ustaw wartość domyślną, ale nie wybieraj przycisku OK. Spowoduje to otwarcie okna dialogowego Dźwięk.
Znajdź plik MP3 lub inny plik audio na komputerze docelowym i kliknij go dwukrotnie, aby go odtworzyć. Następnie w oknie dialogowym Dźwięk sprawdź, czy wskaźnik poziomu głośności skojarzony z urządzeniem Microsoft Virtual Audio Device (WDM) — sterownik Sysvad Sample wskazuje aktywność.