Udostępnij przez


Architektura HID

Architektura stosu sterowników HID w systemie Windows jest oparta na sterowniku klasy o nazwie hidclass.sys. Klienci i minidrivery transportu uzyskują dostęp do sterownika klasy z trybu użytkownika lub trybu jądra.

Sterownik klasy HID

Sterownik klasy HID dostarczany przez system jest sterownikiem funkcji WDM i sterownikiem magistrali dla klasy konfiguracji urządzenia HID (HIDClass). Składnik wykonywalny sterownika klasy HID jest hidclass.sys. Sterownik klasy HID to klej między klientami HID i różnymi transportami, dzięki czemu klient HID może być napisany w niezależny sposób od transportu. Ten poziom abstrakcji umożliwia klientom kontynuowanie pracy (bez żadnych modyfikacji) w przypadku wprowadzenia nowego standardu lub transportu innej firmy.

Na poniższym diagramie przedstawiono reprezentację architektury HID.

Diagram uproszczonego stosu sterowników HID przedstawiający klientów HID, sterownik klasy HID i składniki transportu HID.

Powyższy diagram obejmuje:

  • Klienci HID — identyfikuje klientów systemu Windows i innych firm oraz ich interfejsy.
  • Sterownik klasy HID — plik wykonywalny hidclass.sys.
  • HID transport minidriver — identyfikuje transporty systemu Windows i innych firm oraz ich interfejsy.

Oto diagram stosu urządzeń ogólnego klienta HID i transportu.

Diagram stosu urządzeń HID dla ogólnego klienta HID i transportu.

Oto inny diagram stosu urządzeń przedstawiający kolekcje klawiatury i myszy HID za pośrednictwem portu USB.

Diagram stosu urządzeń HID dla klawiatury i myszy na USB.

Klienci HID

Klienci HID to sterowniki, usługi lub aplikacje komunikujące się z HIDClass.sys i często reprezentują określony typ urządzenia (na przykład czujnik, klawiatura, mysz itd.). Identyfikują urządzenie za pośrednictwem identyfikatora sprzętu lub określonej kolekcji HID i komunikują się z kolekcją HID, korzystając z poniższych wskazówek.

Sterowniki i aplikacje w trybie użytkownika oraz sterowniki trybu jądra wykonują następujące czynności, aby obsługiwać kolekcje HID:

  • Sterowniki i aplikacje w trybie użytkownika używają procedur pomocy technicznej HIDClass (HidD_Xxx), aby uzyskać informacje o kolekcji HID.
  • Sterowniki trybu jądra, sterowniki trybu użytkownika i aplikacje używają procedur obsługi analizy HID (HidP_Xxx), a sterowniki trybu jądra używają sterowników IOCTL klasy HID do obsługi raportów HID.

Poniższa tabela upraszcza informacje.

Tryb Sterowniki Aplikacje
Tryb użytkownika HidD_Xxx HidP_Xxx
Tryb jądra HidD_Xxx LUB IOCTL_HID_xxx N/A

Aby uzyskać więcej informacji, zobacz Otwieranie kolekcji HID.

Klienci HID obsługiwani w systemie Windows

System Windows obsługuje następujące kolekcje najwyższego poziomu:

Strona użytkowania Zastosowanie Notatki Tryb dostępu
0x0001 0x0001 — 0x0002 Sterownik klasy myszy i sterownik mapujący Wyłączny
0x0001 0x0004 — 0x0005 Kontrolery gier Udostępniona
0x0001 0x0006 — 0x0007 Sterownik klasy klawiatury/klawiatury numerycznej i sterownik mapowania Wyłączny
0x0001 0x000C Przełącznik trybu lotu Udostępniona
0x0001 0x0080 Kontrolki systemowe (Zasilanie) Udostępniona
0x000C 0x0001 Kontrolki konsumentów Udostępniona
0x000D 0x0001 Zewnętrzne urządzenie długopisowe Wyłączny
0x000D 0x0002 Zintegrowane urządzenie długopisowe Wyłączny
0x000D 0x0004 Ekran dotykowy Wyłączny
0x000D 0x0005 Precyzyjny touchpad (PTP) Wyłączny
0x0020 *Wielokrotny Czujniki Udostępniona
0x0084 0x0004 Bateria HID UPS Udostępniona
0x008C 0x0002 Skaner kodów kreskowych (hidscanner.dll) Udostępniona

W poprzedniej tabeli tryb dostępu dla klientów wejściowych HID jest wyłączny , aby uniemożliwić innym klientom HID przechwytywanie lub odbieranie globalnego stanu danych wejściowych, gdy nie są docelowym odbiorcą tych danych wejściowych. Ze względów bezpieczeństwa Raw Input Manager (RIM) wyłącznie otwiera wszystkie takie urządzenia.

Jeśli RIM otworzy urządzenie w trybie wyłącznym, użytkownik nadal może otworzyć interfejs urządzenia HID bez żądania uprawnień do odczytu i zapisu oraz uzyskać informacje o urządzeniu HID za pośrednictwem procedur pomocniczych HIDClass (HidD_GetXxx).

Tryb udostępniania umożliwia wielu aplikacjom dostęp do urządzenia. Na przykład wiele aplikacji może uzyskać dostęp do skanera kodów kreskowych, aby uzyskać informacje o możliwościach urządzeń i pobrać statystyki. Jednak pobieranie zdekodowanych danych ze skanera kodów kreskowych odbywa się w trybie wyłącznym . Użycie jest definiowane w tabelach użyciaUSB-IF.

*Wiele: Zastosowania czujników z 0x00 — 0xFF są segmentowane w różnych celach. Na przykład 0x10 wskazuje czujnik biometryczny; 0x40 wskazuje czujnik światła. Te alokacje nie są ciągłe. Aby uzyskać listę użycia czujników, zobacz USB-IF Definicje klas urządzeń dla funkcji HID. Aby uzyskać informacje na temat użycia czujników obsługiwanych w systemie Windows, zobacz HID Sensors Usages (Użycie czujników HID).

Sterownik transportu HID

Sterownik klasy HID jest przeznaczony do używania minidriverów HID w celu uzyskania dostępu do sprzętowego urządzenia wejściowego. Minidriver HID abstrahuje specyficzne dla poszczególnych urządzeń operacje wejściowych, które obsługuje. Minidriver HID wiąże swoją operację ze sterownikiem klasy HID, rejestrując się za pomocą sterownika klasy HID. Sterownik klasy HID komunikuje się z minidriverem HID, wywołując jego funkcje wspomagające. Z kolei minidriver HID wysyła komunikaty w dół stosu sterowników do bazowej magistrali lub sterownika portu.

Transporty HID obsługiwane w systemie Windows

Aby uzyskać listę obsługiwanych transportów HID, zobacz Omówienie transportu HID.

ogólne TEST HID USB w zestawie Windows Hardware Lab Kit (HLK) obejmuje sterowniki HidUsb i HidClass. Nie ma testu HLK dla minidriverów firm trzecich dla urządzeń HID.