Sdílet prostřednictvím


Zařízení WinUSB

Přečtěte si, jak Systém Windows rozpozná zařízení WinUSB v tomto článku.

Informace v tomto článku platí pro vás, pokud jste výrobce OEM nebo nezávislý výrobce hardwaru (IHV), který vyvíjí zařízení, které bude používat Winusb.sys jako ovladač funkce. Tento článek ukazuje, jak načíst ovladač automaticky, aniž byste museli poskytnout vlastní soubor INF.

Co je zařízení WinUSB

Zařízení WinUSB je zařízení USB (Universal Serial Bus), jehož firmware definuje určité deskriptory funkcí operačního systému Microsoftu, které hlásí "WINUSB" jako kompatibilní ID.

Účelem zařízení WinUSB je umožnit systému Windows načíst Winusb.sys jako ovladač funkce zařízení bez vlastního souboru INF. U zařízení WinUSB nemusíte distribuovat soubory INF pro vaše zařízení, aby proces instalace ovladače pro koncové uživatele byl jednoduchý. Naopak, pokud potřebujete zadat vlastní INF, neměli byste definovat své zařízení jako zařízení WinUSB a zadat ID hardwaru zařízení v INF.

Společnost Microsoft poskytuje winusb.inf obsahující informace vyžadované k instalaci Winusb.sys jako ovladače zařízení USB.

Před Windows 8 bylo potřeba načíst Winusb.sys jako ovladač funkce, k čemuž bylo nutné poskytnout vlastní INF. Vlastní INF určuje ID hardwaru specifické pro zařízení a také obsahuje oddíly z integrovaného souboru Winusb.inf. Tyto části se vyžadují pro vytvoření instance služby, kopírování binárních souborů doručené pošty a registraci identifikátoru GUID rozhraní zařízení, které aplikace potřebují k vyhledání zařízení a komunikaci s ním. Informace o psaní vlastního souboru INF naleznete v oddílu Instalace WinUSB (Winusb.sys).

V systému Windows 8 je soubor Winusb.inf, který je součástí systému, aktualizován tak, aby systém Windows automaticky přiřadil INF k zařízení WinUSB.

Instalace zařízení WinUSB pomocí in-box Winusb.inf

Ve Windows 8 se aktualizuje soubor Winusb.inf v boxu. INF obsahuje instalační sekci, která odkazuje na kompatibilní ID nazvané USB\MS_COMP_WINUSB.

[Generic.Section.NTamd64]
%USB\MS_COMP_WINUSB.DeviceDesc%=WINUSB,USB\MS_COMP_WINUSB

Aktualizovaná inf také obsahuje novou třídu nastavení s názvem USBDevice.

Třída nastavení USBDevice je k dispozici pro zařízení, pro která Microsoft neposkytuje ovladač v krabici. Taková zařízení obvykle nepatří do dobře definovaných tříd USB, jako jsou Audio, Bluetooth atd., a vyžadují vlastní ovladač. Pokud je vaše zařízení systémem WinUSB, s největší pravděpodobností zařízení nepatří do třídy USB. Proto musí být vaše zařízení nainstalované ve třídě nastavení USBDevice. Aktualizovaný soubor Winusb.inf tento požadavek usnadňuje.

Použití třídy USBDevice

Nepoužívejte třídu nastavení USB pro neklasifikovaná zařízení. Tato třída je vyhrazená pro instalaci kontrolerů, rozbočovačů a složených zařízení. Nesprávné použití třídy USB může vést k významným problémům se spolehlivostí a výkonem. Použijte USBDevice pro neklasifikovaná zařízení.

V systému Windows 8 přidejte tuto definici do souboru INF pro použití třídy zařízení USBDevice:

  [Version]
  ...
  Class=USBDevice
  ClassGuid={88BAE032-5A81-49f0-BC3D-A4FF138216D6}
  ...

Ve Správci zařízení se podívejte na nový uzel s názvem zařízení USB Universal Serial Busa vaše zařízení se zobrazí pod tímto uzlem.

V systému Windows 7 je kromě předchozích řádků nutné vytvořit tato nastavení registru v INF:

  ;---------- Add Registry Section ----------
  [USBDeviceClassReg]
  HKR,,,,"Universal Serial Bus devices"
  HKR,,NoInstallClass,,1
  HKR,,SilentInstall,,1
  HKR,,IconPath,%REG_MULTI_SZ%,"%systemroot%\system32\setupapi.dll,-20"

Ve Správci zařízení se vaše zařízení zobrazí v sekci zařízení USB Universal Serial Bus. Popis třídy zařízení je však odvozen z nastavení registru zadaném ve vašem INF.

Třída USBDevice není omezena na WinUSB. Pokud máte vlastní ovladač pro vaše zařízení, můžete ve vlastním souboru INF použít třídu zařízení USBDevice.

Během výčtu zařízení načte USB ovladačový zásobník kompatibilní ID ze zařízení. Pokud je "WINUSB" kompatibilní ID, Systém Windows ho použije jako identifikátor zařízení a najde shodu v aktualizovaném souboru Winusb.inf a pak načte Winusb.sys jako ovladač funkce zařízení.

Tato image je určená pro jedno zařízení MUTT rozhraní definované jako zařízení WinUSB a v důsledku toho se Winusb.sys načte jako ovladač funkce zařízení.

snímek obrazovky Správce zařízení Windows zobrazující zařízení WinUSB

V případě verzí systému Windows starších než Windows 8 je aktualizace Winusb.inf dostupná prostřednictvím služby Windows Update. Pokud je počítač nakonfigurovaný tak, aby automaticky získá aktualizaci ovladačů, nainstaluje se ovladač WinUSB bez zásahu uživatele pomocí nového balíčku INF.

Změna popisu zařízení pro zařízení WinUSB

U zařízení WinUSB se ve Správci zařízení jako popis zařízení zobrazuje "Zařízení WinUsb". Tento řetězec je odvozen z Winusb.inf. Pokud existuje více zařízení WinUSB, všechna zařízení získají stejný popis zařízení.

Aby bylo možné jedinečně identifikovat a rozlišovat zařízení v Správci zařízení, poskytuje Windows 8 novou vlastnost pro třídu zařízení, která systému říká, aby upřednostnil popis zařízení oznámený zařízením (v jeho iProduct řetězcovém popisovači) před popisem v INF souboru. Třída USBDevice definovaná v systému Windows 8 nastaví tuto vlastnost. Když je zařízení nainstalováno v třídě USBDevice, Windows se dotazuje na popis zařízení a nastaví popis zařízení ve Správci zařízení na to, co je z dotazu získáno. V takovém případě se popis zařízení uvedený v inf ignoruje. Všimněte si řetězců popisu zařízení, například "MUTT", na předchozím obrázku. Řetězec je poskytován zařízením USB ve svém deskriptoru řetězce produktu.

Nová vlastnost třídy není v dřívějších verzích Windows podporovaná. Pokud chcete mít přizpůsobený popis zařízení ve starší verzi systému Windows, musíte napsat vlastní soubor INF.

Konfigurace zařízení WinUSB

Pokud chcete identifikovat zařízení USB jako zařízení WinUSB, musí firmware zařízení obsahovat popisovače Microsoft OS. Informace o popisovačích naleznete v specifikacích popsaných zde: popisovače operačního systému Microsoft OS.

Podpora rozšířených popisovačů funkcí

Aby zásobník ovladačů USB věděl, že zařízení podporuje rozšířené popisovače funkcí, musí zařízení definovat popisovač řetězce operačního systému uložený v řetězcovém indexu 0xEE. Během výčtu se zásobník ovladačů dotazuje na popisovač řetězce. Pokud popisovač existuje, zásobník ovladačů předpokládá, že zařízení obsahuje jeden nebo více popisovačů funkcí operačního systému a data potřebná k načtení těchto popisovačů funkcí.

Načtený popisovač řetězce má pole s hodnotou bMS_VendorCode. Hodnota označuje kód dodavatele, který musí zásobník ovladačů USB použít k načtení popisovače rozšířených funkcí.

Informace o tom, jak definovat popisovač řetězce OS, naleznete ve specifikacích popsaných zde: Microsoft OS Descriptors.

Nastavení kompatibilního ID

Rozšířený popisovač funkcí OS s kompatibilním ID, který je nutný pro zajištění shody s vestavěným Winusb.inf a načtení modulu ovladače WinUSB.

Rozšířený popisovač funkce operačního systému ID obsahuje oddíl záhlaví následovaný jedním nebo více oddíly funkce v závislosti na tom, jestli je zařízení složené nebo nekompatibilní zařízení. Oddíl záhlaví určuje délku celého popisovače, počet oddílů funkce a číslo verze. V případě nekompozitního zařízení následuje za hlavičkou jedna funkční sekce přidružená k jedinému rozhraní zařízení. Pole compatibleID v této části musí specifikovat hodnotu pole jako "WINUSB". U složeného zařízení existuje několik funkčních sekcí. Pole compatibleID každé části funkce musí obsahovat hodnotu WINUSB.

Registrace identifikátoru GUID rozhraní zařízení

Popisovač funkcí operačního systému rozšířených vlastností, který je nutný k registraci identifikátoru GUID rozhraní zařízení. Identifikátor GUID se vyžaduje k vyhledání zařízení z aplikace nebo služby, konfiguraci zařízení a provádění vstupně-výstupních operací.

V předchozích verzích Windows se registrace GUID rozhraní zařízení provádí prostřednictvím specifického INF, který zajišťuje tuto funkci. Počínaje Windows 8 by vaše zařízení mělo hlásit identifikátor GUID rozhraní pomocí popisovače funkcí operačního systému rozšířených vlastností.

Popisovač rozšířených vlastností OS obsahuje část záhlaví a následuje jedna nebo více částí pro vlastní vlastnosti. Oddíl záhlaví popisuje celý popisovač rozšířených vlastností, včetně jeho celkové délky, čísla verze a počtu oddílů vlastních vlastností. Pokud chcete zaregistrovat identifikátor GUID rozhraní zařízení, přidejte oddíl vlastní vlastnosti, který nastaví pole bPropertyName na DeviceInterfaceGUID a wPropertyNameLength na 40 bajtů. Pomocí generátoru GUID vygenerujte jedinečné rozhraní zařízení GUID a nastavte pole bPropertyData na tento GUID, například "{8FE6D4D7-49DD-41E7-9486-49AFC6BFE475}". Identifikátor GUID je zadán jako řetězec Unicode a délka řetězce je 78 bajtů (včetně ukončovací funkce null).

       
bPropertyData 78 bajtů 7B 00 38 00 46 00 45 00 36 00 44 00 34 00 44 00 37 00 2D 00 34 00 39 00 00 44 00 2D 00 34 00 31 00 45 00 37 00 2D 00 39 00 34 00 38 00 36 00 2D 00 34 00 39 00 41 00 46 00 43 00 36 00 42 00 46 00 45 00 34 00 37 00 35 00 7D 00 00 00 Hodnota vlastnosti je {8FE6D4D7-49DD-41E7-9486-49AFC6BFE475}.

Během výčtu zařízení načte USB ovladačový zásobník hodnotu DeviceInterfaceGUID z popisovače funkcí rozšířených vlastností OS a zaregistruje zařízení v hardwarovém klíči zařízení. Aplikace může načíst hodnotu pomocí rozhraní API SetupDiXxx (viz SetupDiOpenDevRegKey). Další informace naleznete v tématu Jak získat přístup k zařízení USB pomocí funkcí WinUSB.

Povolení nebo zakázání funkcí řízení spotřeby WinUSB

Před Windows 8 jste ke konfiguraci funkcí řízení spotřeby WinUSB museli psát hodnoty položek registru v části HW.AddReg vaší vlastní INF.

Ve Windows 8 a novějších můžete v zařízení zadat nastavení napájení. Hodnoty můžete hlásit prostřednictvím popisovače funkcí operačního systému rozšířených vlastností, který povolí nebo zakáže funkce ve WinUSB pro dané zařízení. Můžeme nakonfigurovat dvě funkce: selektivní pozastavení a probuzení systému. Selektivní pozastavení umožňuje, aby zařízení při nečinnosti vstoupilo do stavu nízkého výkonu. Funkce probuzení systému označuje schopnost zařízení probudit systém, když je v režimu nízké spotřeby energie.

Informace o funkcích řízení spotřeby systému WinUSB naleznete v tématu WinUSB Řízení spotřeby.

Název vlastnosti Popis
Povolený režim nečinnosti zařízení Tato hodnota je nastavená na hodnotu 1, která označuje, že zařízení může vypnout při nečinnosti (selektivní pozastavení).
Výchozí stav nečinnosti Tato hodnota je nastavená na hodnotu 1, aby bylo možné zařízení pozastavit, když je ve výchozím nastavení nečinné.
Výchozí časový limit nečinnosti Tato hodnota je v milisekundách nastavená na 5000 milisekund, která označuje dobu čekání před určením, že zařízení je nečinné.
UserSetDeviceIdleEnabled Tato hodnota je nastavená na hodnotu 1, aby uživatel mohl řídit schopnost zařízení povolit nebo zakázat selektivní pozastavení USB. Zaškrtávací políčko Povolit počítači vypnout toto zařízení, aby ušetřil napájení na stránce vlastností zařízení Řízení spotřeby umožňuje uživateli zaškrtnout nebo zrušit zaškrtnutí pro aktivaci nebo deaktivaci selektivního pozastavení USB.
SystemWakeEnabled Tato hodnota je nastavená na hodnotu 1, aby uživatel mohl řídit schopnost zařízení probudit systém z nízkého stavu napájení. Pokud je tato možnost povolená , zobrazí se na stránce vlastností řízení spotřeby zařízení zaškrtávací políčko Povolit tomuto zařízení probuzení počítače. Uživatel může zaškrtnutím nebo zrušením zaškrtnutí políčka povolit nebo zakázat probuzení systému USB.

Pokud chcete například povolit selektivní pozastavení zařízení, přidejte oddíl vlastní vlastnosti, který nastaví pole bPropertyName na řetězec Unicode, DeviceIdleEnabled a wPropertyNameLength na 36 bajtů. Nastavte pole bPropertyData na "0x00000001". Hodnoty vlastností jsou uloženy jako malá 32bitová celá čísla.

Během výčtu načte zásobník ovladačů USB popisovače rozšířených vlastností a vytvoří položky registru pod tímto klíčem:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\USB\<Identifikátor zařízení>\<Identifikátor instance>\Parametry zařízení

Tento obrázek ukazuje ukázková nastavení pro zařízení WinUSB.

Snímek obrazovky Editoru registru systému Windows zobrazující nastavení pro zařízení WinUSB

Další příklady najdete v specifikacích popisovačů operačního systému Microsoft OS.