USB- Device als Systemgerät(Mouse,Keyboard)

Gast #2230257
Lesenswert?

Hallo!

Kann mir bitte jemand erklären, wie sich eine Firmware für ein 
USB-Gerät, dass als HID-Mouse von Windows als solche erkannt wird, von 
einem generischen HID-Treiber unterscheidet?
Ich denke, dass dies in einem der Deksriptoren stehen musss, konnte aber 
nicht finden in welchem. Also Konkret (falls meine Annahme stimmt): In 
welchem Deskriptor, gibt welches Feld an, dass es sich um ein 
Systemgerät wie zb. eine Maus handelt?

Danke und Mit freundlichen Grüßen,

Markus Stohlert
#2230286
Lesenswert?

Schau dir den HID Deskriptor an. Dieser besteht aus folgenden Teilen:
- HID configuration descriptor
- HID interface descriptor
- HID HID class descriptor
- HID interrupt IN descriptor
- HID interrupt OUT dexriptor
- HID report descriptor

Ein "eindeutiges" Feld lässt sich da nicht geben, es ist die gesamtheit 
entscheidend. Und für Maus/tastatur ist es bsw. vorgeschrieben. Da 
unterscheiden sich in der Regel nur die String Deskriptoren.
#2230299
Lesenswert?

Zur Frage wegen Generic USB Driver/Mouse Driver:
Generic bedeutet ja nichts weiter als gewöhnlich/standard. Diese HID 
Driver unterstützen also bloss das einfache austauscchen von reports 
zwischen master und Slave. Für die Maus reicht dies nicht aus, da werden 
weitere Funktionen implementiert (bsw. weitere Endpoints).
Gast #2230368
Lesenswert?

Hallo Albert!

Genau dieses Feld habe ich auch identifiziert. Ich schätze, dass dies 
das ausschlaggebende bei der Enumeration ist! Es gibt dann ja auch noch 
das bInterfaceProtocol, aba dieses ist vermutlich nur wichtig, wenn sich 
ein Interface vom Deviceprotocol unterscheidet?!

Auf alle Fälle schon ein großes Dankeschön für die Beantwortung meiner 
Frage!

Mit freundlichen Grüßen,

Markus Stohlert
#2230396
Lesenswert?

Es ist bei HID ja so das du bei einem Device (also der Hardware die du 
vor dir liegen hast) mehrere Interfaces implementieren kannst (bsw. hat 
deine Tastatur noch ein Touchpad oder ein kleines Display eingebaut). So 
kannst du dann jedem Interface ein eigenes Interfaceprotocol zuweisen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren