Udostępnij przez


Instalowanie interfejsów urządzeń dla adaptera audio

Klient uzyskuje dostęp do urządzenia audio za pośrednictwem zestawu interfejsów urządzenia określonych przez dostawcę w pliku INF adaptera. Interfejsy urządzeń określone w pliku INF mają korespondencję jeden do jednego z podurządzeniami tworzonymi przez sterownik karty podczas inicjowania urządzenia (zobacz Tworzenie urządzenia podrzędnego). Dla każdego interfejsu urządzenia plik INF określa wartość wpisu FriendlyName , która jest dostępna w trybie użytkownika w kluczu rejestru interfejsu.

W architekturze strumieniowania jądra kategorie topologii (zobacz KSPROPERTY_TOPOLOGY_CATEGORIES) reprezentują klasy interfejsów urządzeń.

W poniższej tabeli wymieniono kategorie topologii, których adaptery audio najczęściej używają do opisywania możliwości urządzeń podrzędnych.

Kategoria Opis
KSCATEGORY_ACOUSTIC_ECHO_CANCEL Urządzenie audio, które może wykonać anulowanie echa akustycznego (zobacz DirectSound Capture Effects) rejestruje się w tej kategorii.
KSCATEGORY_AUDIO Wszystkie urządzenia audio rejestrują się w tej kategorii.
KSCATEGORY_CAPTURE Urządzenie audio, które może przechwytywać strumień danych, rejestruje się w tej kategorii.
KSCATEGORY_DATATRANSFORM Urządzenie audio, które wykonuje transformację danych na strumieniu rejestruje się w tej kategorii.
KSCATEGORY_MIXER Urządzenie audio, które może mieszać strumienie danych rejestruje się w tej kategorii.
KSCATEGORY_RENDER Urządzenie audio, które może renderować strumień danych, rejestruje się w tej kategorii.
KSCATEGORY_SYNTHESIZER Urządzenie audio, które może konwertować komunikaty MIDI na próbki dźwięku falowego lub analogowy sygnał wyjściowy rejestruje się w tej kategorii (zobacz Syntetyzatory i ujścia fali).
KSCATEGORY_TOPOLOGY Sterownik miniportu topologii urządzenia rejestruje się w tej kategorii.
KSCATEGORY_DRM_DESCRAMBLE Urządzenie audio, które potrafi rozszyfrować falę dźwiękową chronioną przez DRM, rejestruje się w tej kategorii (zobacz Digital Rights Management).

Aby uzyskać pełną listę kategorii topologii, zobacz identyfikatory GUID KSCATEGORY_XXX zdefiniowane w plikach nagłówków Ks.h i Ksmedia.h.

Wszystkie urządzenia audio są klasyfikowane w KSCATEGORY_AUDIO, ale urządzenie audio może być również klasyfikowane w ramach dodatkowych kategorii, takich jak KSCATEGORY_RENDER (dla urządzenia renderowania audio) lub KSCATEGORY_SYNTHESIZER (dla syntezatora). Dla każdej kategorii określonej przez plik INF dla urządzenia Instalator Windows tworzy zestaw wpisów rejestru dla tego urządzenia pod nazwą kategorii (zobacz Fabryki filtrów).

Tylko urządzenie, które zawiera wbudowany syntetyzator, powinno zarejestrować się w kategorii KSCATEGORY_SYNTHESIZER. Należy pamiętać, że ta kategoria nie obejmuje czystego urządzenia MPU-401. Czyste urządzenie MPU-401, które może wyprowadzać lub wprowadzać nieprzetworzone MIDI do lub z UART, powinno zarejestrować się w ramach następujących kategorii:

  • KSCATEGORY_AUDIO

  • KSCATEGORY_RENDER

  • KSCATEGORY_CAPTURE

Należy pamiętać, że sterownik systemowy SysAudio rezerwuje kategorię rejestru KSCATEGORY_AUDIO_DEVICE wyłącznie dla swoich wirtualnych urządzeń audio. Sterowniki adapterów nie powinny rejestrować się w tej kategorii.

W poniższym przykładzie zainstalowano cztery typowe interfejsy urządzeń zdefiniowanych przez system, które zwykle obsługuje adapter dla urządzenia audio.

Przykład: instalowanie interfejsów urządzeń audio

W tym przykładzie sekcja device-install dla urządzenia audio XYZ używa dyrektywy INF AddInterface w celu zainstalowania czterech interfejsów adaptera audio. W poniższych instrukcjach każda z czterech dyrektyw przypisuje unikatowy ciąg odwołania do interfejsu, którego sterownik karty może użyć do odróżnienia wystąpień każdej klasy interfejsu.

  [XYZ-Audio-Device.Interfaces]
  AddInterface=%KSCATEGORY_AUDIO%,%KSName_Wave%,XYZ-Audio-Device.Wave
  AddInterface=%KSCATEGORY_RENDER%,%KSName_Wave%,XYZ-Audio-Device.Wave
  AddInterface=%KSCATEGORY_CAPTURE%,%KSName_Wave%,XYZ-Audio-Device.Wave
  AddInterface=%KSCATEGORY_TOPOLOGY%,%KSName_Topology%,XYZ-Audio-Device.Topology

Pierwsze trzy dyrektywy AddInterface określają sekcję add-interface o nazwie XYZ-Audio-Device.Wave. Ostatni element określa sekcję dodawania interfejsu o nazwie XYZ-Audio-Device.Topology. Każda sekcja dodawania interfejsu dodaje następujące wpisy rejestru do podklucza interfejsu urządzenia, który jest dostępny w trybie użytkownika w kluczu rejestru \DeviceClasses\<InterfaceGUID>:

  • Wpis rejestru FriendlyName określa przyjazną nazwę dla każdego interfejsu urządzenia.

  • Program Microsoft DirectShow wymaga wpisu rejestru CLSID, ustawionego na wartość identyfikatora GUID serwera proxy, co wskazuje, że adapter może być dostępny i kontrolowany przez sterownik systemowy KSProxy.

Dwa sekcje interfejsu dodawania są wyświetlane w poniższym przykładzie, który zawiera wpisy pliku INF, które dodają do rejestru identyfikatory FriendlyName i CLSID każdego interfejsu:

  [XYZ-Audio-Device.Wave]
  AddReg=XYZ-Audio-Device.Wave.AddReg
  [XYZ-Audio-Device.Wave.AddReg]
  HKR,,FriendlyName,,%WaveDeviceName%
  HKR,,CLSID,,%Proxy.CLSID%

  [XYZ-Audio-Device.Topology]
  AddReg=XYZ-Audio-Device.Topology.AddReg
  [XYZ-Audio-Device.Topology.AddReg]
  HKR,,FriendlyName,,%WaveDeviceMixerName%
  HKR,,CLSID,,%Proxy.CLSID%

Słowo kluczowe HKR w tym przykładzie oznacza ścieżkę rejestru dostarczoną przez system dla urządzenia. Aby uzyskać więcej informacji, zobacz dyrektywę INF AddReg.

Poniżej znajduje się sekcja ciągów dla tego przykładu.

  [Strings]
  KSCATEGORY_AUDIO="{6994AD04-93EF-11D0-A3CC-00A0C9223196}"
  KSCATEGORY_RENDER="{65E8773E-8F56-11D0-A3B9-00A0C9223196}"
  KSCATEGORY_CAPTURE="{65E8773D-8F56-11D0-A3B9-00A0C9223196}"
  KSCATEGORY_TOPOLOGY="{DDA54A40-1E4C-11D1-A050-405705C10000}"
  Proxy.CLSID="{17CCA71B-ECD7-11D0-B908-00A0C9223196}"
  WaveDeviceName="XYZ Audio Device"
  WaveDeviceMixerName="XYZ Audio Device Super Mixer"

Nazwa ciągu określona przez dyrektywę AddInterface dla interfejsu urządzenia KSCATEGORY_XXX nie może być zlokalizowana, ponieważ sterownik karty używa tej samej nazwy wewnętrznie co stała ciągu. Przykładowe sterowniki adapterów z zestawu Windows Driver Kit (WDK) stosują następujące nazwy ciągów dla swoich interfejsów urządzeń audio:

  KSNAME_Wave="Wave"
  KSNAME_UART="UART"
  KSNAME_FMSynth="FMSynth"
  KSNAME_Topology="Topology"
  KSNAME_Wavetable="Wavetable"
  KSNAME_DMusic="DMusic"

Ze względu na jednolitość twój zastrzeżony sterownik powinien przypisać te same nazwy do odpowiednich interfejsów urządzeń. Jeśli sterownik obsługuje dodatkowe interfejsy urządzeń, które są własnością, możesz wymyślić własne nazwy zastrzeżone dla tych interfejsów. Upewnij się, że nazwy używane przez sterownik są zgodne z nazwami w pliku INF. Jeśli ciągi nie są zgodne, konfiguracja systemu nie załaduje sterownika.