Přehled tříd rozhraní zařízení

Jakýkoli ovladač fyzického, logického nebo virtuálního zařízení, na které může kód uživatelského režimu směrovat vstupně-výstupní požadavky, musí poskytnout název pro své klienty v uživatelském režimu. Pomocí názvu identifikuje aplikace v uživatelském režimu (nebo jiná systémová komponenta) zařízení, ze kterého požaduje vstupně-výstupní operace.

V systému Windows NT 4.0 a starších verzích operačního systému založeného na technologii NT ovladače pojmenovávaly objekty zařízení a potom v registru nastavovaly symbolické odkazy mezi těmito názvy a logickým názvem Win32 viditelným uživatelem.

Počínaje Windows 2000 ovladače nepojmenovávají objekty zařízení. Místo toho využívají rozhraní zařízení , která jsou seskupené podle tříd rozhraní zařízení. Třída rozhraní zařízení je způsob exportu funkcí zařízení a ovladačů do jiných systémových komponent, včetně jiných ovladačů a aplikací v uživatelském režimu. Ovladač může zaregistrovat a povolit instanci rozhraní zařízenítřídy rozhraní zařízení pro každý objekt zařízení, do kterého se můžou odesílat vstupně-výstupní požadavky v uživatelském režimu. Každá třída rozhraní zařízení by měla představovat koncepční funkce, které by jakékoli rozhraní zařízení v této třídě mělo podporovat nebo představovat například konkrétní vstupně-výstupní kontrakt.

Každá třída rozhraní zařízení je přidružená k identifikátoru GUID. Systém definuje identifikátory GUID pro běžné třídy rozhraní zařízení v hlavičkových souborech specifických pro zařízení. Dodavatelé můžou vytvářet další třídy rozhraní zařízení.

Například tři různé typy zařízení myši mohou registrovat rozhraní zařízení, která jsou členy stejné třídy rozhraní zařízení, i když se jedno připojuje přes port USB, druhé přes sériový port a třetí přes infračervený port. Každý ovladač registruje své zařízení jako člen třídy rozhraní GUID_DEVINTERFACE_MOUSE. Tento identifikátor GUID je definován v souboru hlaviček Ntddmou.h.

Ovladače mohou zaregistrovat a povolit rozhraní zařízení pro zařízení, které řídí, pro tolik tříd rozhraní zařízení, pro něž zařízení a ovladač podporují danou funkci. Například ovladač disku, který lze připojit jako svazek, by se měl zaregistrovat pro třídu rozhraní disku (GUID_DEVINTERFACE_DISK) i třídu připojitelného zařízení jako svazku (MOUNTDEV_MOUNTED_DEVICE_GUID).

Když ovladač zaregistruje instanci rozhraní zařízení třídy rozhraní zařízení, správce vstupně-výstupních operací přidruží zařízení a identifikátor GUID třídy rozhraní zařízení k symbolickému názvu propojení. Aby byl tento symbolický odkaz použitelný pro ovladač nebo aplikaci pro odesílání vstupně-výstupních operací, musí ovladač povolitrozhraní zařízení . Registrace názvu propojení přetrvává napříč spuštěními systému, ale ovladač musí rozhraní zařízení povolit při každém výčtu zařízení. Aplikace, která používá konkrétní třídu rozhraní zařízení, může se dotazovat na instance rozhraní zařízení v této třídě a získat seznam názvů symbolických odkazů představujících zařízení, která podporují toto rozhraní. Aplikace pak může jako cíl pro vstupně-výstupní požadavky použít název symbolického odkazu.

Nezaměňujte rozhraní zařízení s rozhraními, která ovladače mohou exportovat v reakci na požadavek IRP_MN_QUERY_INTERFACE . Tento IRP slouží k předávání vstupních bodů rutin mezi ovladači v režimu jádra.