Wie kann ich beweisen, dass ein USB-Gerät nur Daten eingeben kann?

425
sscirrus

Ich versuche zu verstehen, wie HID- und Composite-Geräte definiert werden.

Wie kann man (von der Betriebssystemseite) wissen, dass ein kürzlich angeschlossenes USB-Gerät nur Daten eingeben kann (und nicht wie eine Festplatte verbunden werden kann, eine ausführbare Datei ausführen kann oder was auch immer)?

Die Folge ist folgende: Wenn die Antwort lautet, dass das angeschlossene USB-Gerät ein HID sein muss, kann dann dieses HID aus einer Tastatur / Maus-Kombination wie einer Tastatur mit integriertem Trackpad bestehen?

2
Fragen Sie nach, wie das Gerät im Betriebssystem identifiziert wird oder nach der tatsächlichen Art des Geräts? Per Definition ist jedes USB-Gerät, das aus mehreren logischen Untergeräten besteht, immer ein zusammengesetztes USB-Gerät. Twisty Impersonator vor 6 Jahren 2
Ich frage danach, wie es im Betriebssystem erkannt wird - im Wesentlichen kümmere ich mich darum, wie man (von der Betriebssystemseite aus) weiß, dass ein kürzlich angeschlossenes USB-Gerät nur Daten eingeben kann und nichts anderes tun kann (wie etwa das Anschließen wie ein Festes) Laufwerk, Ausführen einer ausführbaren Datei oder was auch immer). sscirrus vor 6 Jahren 0

1 Antwort auf die Frage

2
AlphaComp

Die Frage ist nicht so "Cut 'n' Shut" als das. Es gibt viel mehr zur USB-Identifizierung als "eine Maus, ein Kabel = HID VS eine Maus, eine Tastatur, ein Kabel = Composite".

Zum Beispiel kann ein einzelnes Keyboard entweder ein HID- und / oder ein Composite-USB-Gerät sein, wenn Sie schon einmal eine "Gamer" -Tastatur mit integrierten Makros und Beleuchtung sowie einen eigenen Speicher zum Speichern dieser Makros für die Reise hatten Gerät, weil es mehrere Geräte in einem Bus enthält.

Im Gegenzug kann eine kabellose Logitech-Maus-Tastaturkombination nur ein HID-Gerät sein, da dies die einzige Klasse ist, obwohl es zwei Geräte gibt, die beide nur HID sind.

Ein USB-Composite-Gerät ist ein Peripheriegerät, das mehr als eine Geräteklasse unterstützt. Viele verschiedene Geräte sind als Verbundgeräte implementiert. Sie bestehen beispielsweise aus einer bestimmten Geräteklasse, aber auch aus einem USB-Laufwerk, auf dem alle erforderlichen Treiber gespeichert sind, damit das Gerät automatisch installiert werden kann, ohne dass eine bestimmte Treibersoftware benötigt wird.

Quelle: USB-Verbundgerät

Und dann gibt es einen Punkt darüber, wie Windows ein Gerät sieht.

Wenn ein neues USB-Gerät an einen Host-Computer angeschlossen wird, erstellt der USB-Bustreiber ein physisches Geräteobjekt (PDO) für das Gerät und generiert ein PnP-Ereignis, um das neue PDO zu melden. Das Betriebssystem fragt dann den Bustreiber nach den Hardware-IDs ab, die dem PDO zugeordnet sind.

Der Bustreiber überprüft auch die Geräteklasse (bDeviceClass), die Unterklasse (bDeviceSubClass) und das Protokoll (bDeviceProtocol) der Gerätedeskriptoren. Wenn diese Felder Null sind, ist das Gerät ein zusammengesetztes Gerät, und der Bustreiber meldet einen zusätzlichen kompatiblen Bezeichner (ID) von USB \ COMPOSITE für das PDO.

Quelle: Aufzählung von USB-Composite-Geräten

Ich hoffe, das hat Ihnen geholfen, ein wenig mehr zum Thema zu verstehen.

Dies ist ein großartiger Beitrag, aber es fehlt mir die spezifische Frage, die ich gestellt habe. Wenn ich eine Tastatur / Maus-Kombination in einem einzelnen USB-Gerät habe, kann dieses Gerät sich selbst so klassifizieren, dass das Betriebssystem des Computers es als HID erkennt? sscirrus vor 6 Jahren 0
Auf Empfehlung von @TwistyImpersonator habe ich die Frage erweitert, um sich auf das Problem zu konzentrieren und nicht auf die versuchte Lösung. sscirrus vor 6 Jahren 0