Továrny na filtry
Ovladač zvukového adaptéru poskytuje objekty pro vytváření filtrů pro správu vytváření instancí filtrů. Každá továrna filtrů může vytvořit instanci jednoho nebo více filtrů KS určitého typu. Pokud typ filtru zapouzdřuje určitou hardwarovou funkci, počet filtrů tohoto typu, které může výrobce instancovat, je omezen základními hardwarovými prostředky.
Vzhledem k tomu, že filtrovací továrna spravuje z velké části autonomní blok hardwarových funkcí, může být každá továrna filtrů považována za ovladač zařízení ve svém vlastním právu. Ve skutečnosti termín „ovladač adaptéru“, jak je použit v předchozím odstavci, odkazuje na kolekci souvisejících ovladačů – továrny filtrů –, které jsou souborně zabaleny, aby spravovaly různé hardwarové funkce na kartě adaptéru.
Stejně jako jakýkoli jiný ovladač Microsoft Windows Driver Model (WDM), modul pro filtrování zpracovává správu napájení a funkčnost nastavení. Během instalace soubor INF ovladače zaregistruje jeden nebo více názvů zařízení filtru (viz identifikační řetězce zařízení). Tento proces načte názvy do systémového registru a přidruží každou továrnu na filtry k jedné nebo více kategoriím filtrů KS, jak je popsáno v Instalace rozhraní zařízení pro zvukový adaptér. Všechna zvuková zařízení jsou klasifikována v rámci KSCATEGORY_AUDIO, ale zvukové zařízení může být také klasifikováno do dalších kategorií, jako jsou KSCATEGORY_RENDER (pro zařízení pro vykreslování zvuku) nebo KSCATEGORY_CAPTURE (pro zařízení pro zachytávání zvuku). Ovladač inzeruje obecné možnosti zařízení pomocí různých kategorií, pod kterými zaregistruje filtr pro toto zařízení. Když ovladač systému SysAudio, například vyžaduje zvukové zařízení určitého typu, hledá v registru zařízení, která spadají do příslušných kategorií.
Operační systém používá Setup API, jak je popsáno v části Součásti instalace zařízení, ke zjišťování a výčtu všech továrních filtrů KSCATEGORY_AUDIO v registru. Položka registru pro každou továrnu určuje jak srozumitelný název továrny pro filtrování, tak název jejího zařízení, což je dlouhý řetězec, který klient předá volání create-file, které vytvoří instanci filtru. Toto volání může být provedeno ZwCreateFile z režimu jádra nebo CreateFile z uživatelského režimu. Filtr je objekt v režimu jádra a je identifikován popisovačem jádra. Volání create-file vrátí popisovač instance, který mohou klienti použít k odkazu na filtr. Klienti v uživatelském režimu nebo upstreamové filtry ve zvukovém grafu můžou pomocí tohoto popisovače odesílat nebo předávat požadavky IOCTL filtru. Další informace o CreateFilenaleznete v dokumentaci k sadě Microsoft Windows SDK.
Typická karta zvukového adaptéru WDM se může nacházet například ve sběrnici PCI a obsahuje několik vstupně-výstupních konektorů pro vykreslování nebo zachytávání vlnových dat. Jedno zvukové zařízení na této kartě může obsahovat analogové konektory pro výstup zvuku, které slouží k připojení sady reproduktorů a linkového výstupního kabelu, a analogové konektory pro vstup zvuku pro příjem signálů z mikrofonu a linkového vstupního kabelu. Zvukový systém WDM představuje zařízení jako filtr a představuje zvukové konektory jako špendlíky na daném filtru.
Filtr pro zvukové zařízení se implementuje jako samostatné portové a miniportové ovladače, které jsou svázané dohromady, aby fungovaly společně.
Ovladač miniportu obsahuje kód specifický pro hardware.
Ovladač portu obsahuje obecný kód, který je společný pro všechny filtry určitého typu.
Dodavatel zapíše ovladač miniportu, který obsahuje veškerý proprietární kód, který filtr potřebuje ke správě zvukového hardwaru. Operační systém poskytuje ovladač portu, který je přístupný prostřednictvím systémového ovladače PortCls (Portcls.sys; viz ovladač adaptéru třídy portu a ovladač systému PortCls). Rozdělení implementace filtru na ovladače portů a miniportů zjednodušuje úlohu zápisu ovladače pro vlastní zařízení.
Když objekt pro vytváření filtrů vytvoří instanci filtru, nejprve vytvoří objekt ovladače miniportu pro filtr. Objekt pro vytváření filtrů pak vytvoří instanci příslušného objektu portu a vytvoří vazbu objektu ovladače miniportu na danou instanci, aby vytvořil plně funkční filtr. Tento proces ilustruje příklad kódu v vytvoření podzařízení. Ovladače portů a miniportů vzájemně komunikují prostřednictvím dobře definovaných softwarových rozhraní. Další informace o těchto rozhraních naleznete v tématu Miniport Interfaces a Podpora zařízení.
Zvukový filtr zveřejňuje strukturu základního zvukového zařízení jako kolekci továren pinů, uzlů a interních připojení. Ovladač miniportu tyto informace konsoliduje do popisovače filtru, což je struktura typu PCFILTER_DESCRIPTOR. Tato struktura zase obsahuje jednotlivé deskriptory pro továrny, uzly a interní připojení filtru. Tyto popisovače jsou struktury následujících typů:
Chcete-li získat popisovač filtru z ovladače miniportu, ovladač portu volá metodu IMiniport::GetDescription.
Příklad nastavení struktury PCFILTER_DESCRIPTOR ovladače naleznete v ukázkovém ovladači Sysvad, který je popsán v Ukázkové zvukové ovladače.