Magistrala USB jest fizycznie zaprojektowana tak, że kontroler hosta może rozpoznać czynność włożenia (i usunięcia) wtyczki. Kiedy wydarzy się to zdarzenie „podłącz”, kontroler hosta informuje sterownik urządzenia, który skanuje magistralę i prosi każde urządzenie o identyfikację.
Wszystkie urządzenia USB zawierają zbiór informacji o urządzeniu, zwanych deskryptorami. Deskryptory urządzeń są pobierane ze wszystkich urządzeń za pomocą tego samego polecenia. Dzięki temu sterownik urządzenia dla samej magistrali USB może skutecznie zapytać nowo podłączone urządzenie, co to jest, i oczekiwać rozsądnej odpowiedzi.
Ze wszystkich deskryptorów tylko kilka jest używanych bezpośrednio do dopasowania sterowników do większości urządzeń. Wynika to z faktu, że USB definiuje klasy urządzeń i zwykle sterownik systemowy dla każdej klasy urządzeń jest wystarczający do obsługi urządzeń, które twierdzą, że należą do tej klasy.
Wszystkie klawiatury będą twierdziły, że należą do klasy HID (Human Interface), podobnie jak myszy, tablety i kontrolery gier. Klasa HID ma kilka podklas (klawiatury, myszy itp.), Więc każda z nich jest obsługiwana w oczekiwany sposób.
Większość urządzeń podobnych do dysku twierdzi, że należy do klasy pamięci masowej, a sterownik systemowy działa również dla nich.
Oprócz klasy i podklasy deskryptory obejmują również identyfikator dostawcy (VID), identyfikator produktu (PID) i wersję. Identyfikatory dostawcy są przypisywane przez komitet normalizacyjny (głównie w kolejności wydania, ale niektóre firmy otrzymały specjalne żądania: na przykład dane wywiadowcze to 0x8086). Identyfikatory produktu są przypisywane przez każdego dostawcę, a kombinacja VID i PID musi być unikalna dla każdego wydanego produktu.
Kiedy urządzenie jest instalowane po raz pierwszy, VID, PID, wersja, klasa i podklasa są używane w przewidywalny sposób do wyboru załadowanego sterownika urządzenia. Posiadanie nazw specyficznych dla dostawcy i produktu umożliwia dostawcy dostosowanie urządzenia, które w innym przypadku mogłoby być obsługiwane (prawie) poprawnie przez sterownik systemu magazynowego.
Innym ważnym deskryptorem jest numer seryjny urządzenia. Jeśli urządzenie ma numer seryjny, można je rozpoznać i traktować tak samo po ponownym podłączeniu, nawet jeśli używany jest inny fizyczny port USB. Jest to ważne dla urządzeń pamięci masowej, aby otrzymały taką samą literę dysku, a dla urządzeń takich jak adaptery portów szeregowych i modemy, aby miały takie same oznaczenie portu COM.
Cały proces jest udokumentowany w MSDN , ale szczegóły są rozmieszczone w różnych miejscach.
Pytania :
Lunatik ma pierwszą część odpowiedzi, w jaki sposób tak zwany kierowca autobusu znajduje urządzenie.
źródło
Chciałbym polecić dobrą książkę o usb:
Wiem, że o to nie prosiłeś, ale dobrze jest wiedzieć trochę o urządzeniach USB, które mają się połączyć.
źródło