Hardware Reference
In-Depth Information
Im Configuration Descriptor kann im Datenfeld bNumInterfaces festgestellt wer-
den, dass dieses Gerät drei Interfaces besitzt, denn es ist dort 0x03 eingetragen.
Demzufolge muss es auch über drei verschiedene Interface-Deskriptoren verfügen,
in denen jeweils eine Geräteklassifizierung eingetragen sein muss. Das untersuchte
USB-Gerät gehört also drei verschiedenen Geräteklassen an.
===>Configuration Descriptor<===
bLength:
0x09
bDescriptorType:
0x02
wTotalLength:
0x0055 -> Validated
bNumInterfaces:
0x03
bConfigurationValue
0x01
iConfiguration:
0x00
bmAttributes:
0xC0 -> Bus Powered
MaxPower:
0x01 =
2 mA
DerersteInterfaceDescriptormitderbInterfaceNumber0x00enthältimDatenfeld
bInterfaceClass den Wert 0xFF, womit festgelegt wird, dass dieses USB-Gerät in die
Klasse der anbieterspezifischen Geräte gehört. Das wird von UVCView auch so inter-
pretiert. Die Unterklasse, die mit 0x00 eingetragen ist, wird mit einem Hinweis zur
Vorsicht kommentiert, weil diese Unterklasse als ungültig anzusehen ist. Auch an
dem mit 0xFF vereinbarten Protokoll hat UVCView etwas auszusetzen und fordert,
dass es mit 0x00 als undefiniert einzutragen wäre. Eigentlich gibt es für Geräte, deren
Funktionen vom Anbieter festgelegt werden, keine Einschränkungen für die Wahl der
Unterklasse und des Protokolls, jedoch harmoniert die hier getroffene Wahl nicht mit
den Regeln, die für alle anderen Geräteklassen gelten. Das mag die Ursache dafür
sein, dass UVCView hier mit Warn-, Fehler- und Vorsichtshinweisen reagiert. Gene-
rell lässt sich an dieser Stelle sagen, dass über die Klassendefinition dieses Interfaces
keinerlei Rückschlüsse darauf möglich sind, um was für einen Gerätetyp es sich han-
delt. Die korrekten Treiber für dieses Gerät können allerdings trotzdem gefunden
werden, weil eine Identifizierung über die Device Descriptor Datenfelder idVendor
(0x04A9 = Canon Inc.), idProduct (0x1717) und bcdDevice (0x0102) ebenfalls ein-
deutig möglich ist. Allerdings muss der Hersteller die Gerätetreiber und vermutlich
auch die Anwendungsprogramme bereitstellen. Im Gegensatz dazu könnte im Falle
einer eindeutigen Klassifizierung des Geräts ein Klassentreiber auf Betriebssystem-
ebene bereitgestellt werden, wie es ja z. B. bei Memory Sticks funktioniert. Wie aus
den noch verbleibenden Interface-Deskriptoren gefolgert werden kann, ist mit dieser
Anbieterklasse übrigens offenbar der Scanner des Multifunktionsgeräts definiert.
===>Interface Descriptor<===
bLength:
0x09
bDescriptorType:
0x04
bInterfaceNumber:
0x00
bAlternateSetting:
0x00
Search WWH ::




Custom Search