Viele USB-Geräte enthalten eine eindeutige Seriennummer (die eigentlich eine Unicode-Zeichenfolge ist), die der Host in Verbindung mit den 16-Bit-Hersteller- und Produkt-ID-Nummern verwenden kann Gerät.Abrufen der Seriennummer einer USB-Tastatur unter Windows
Ich versuche herauszufinden, wie man eine Windows-Anwendung schreibt, die in der Lage wäre, eine Liste aller an das System angeschlossenen USB-Human-Interface-Geräte anzuzeigen. Die Liste würde für jede HID eine Zeile enthalten, einschließlich der Systemtastaturen. In der Liste würden Spalten für die Hersteller-ID, die Produkt-ID und die Seriennummer stehen.
Ich kann eine Liste von USB-HIDs erhalten, indem durch wiederholten Aufruf SetupDiEnumDeviceInterfaces
SetupDiGetClassDevs
mit der GUID zurückgegeben von HidD_GetHidGuid
und Schleife durch das Ergebnis aufrufen. Ich kann dann SetupDiGetDeviceInterfaceDetail
anrufen, um den Pfad zu jedem Gerät zu bekommen, das ich mit CreateFile
öffnen kann, solange ich vorsichtig bin, keine Lese- oder Schreibberechtigung zu fordern, die für eine Systemtastatur verweigert würde. Von dort kann ich die Hersteller- und Produkt-ID-Nummern abrufen, indem ich HidD_GetAttributes
aufrufen.
Was ich habe Probleme herauszufinden, ist, wie die Seriennummer Zeichenfolge abrufen. Wenn ich nach Lösungen für dieses Problem suche, finde ich eine Menge Informationen darüber, wie man Seriennummern für USB-Massenspeichergeräte bekommt, aber nichts, was so aussieht, könnte für irgendeinen anderen Typ von USB-Gerät gelten. Ich wäre glücklich, entweder eine generische Methode oder eine HID-spezifische Methode zum Abrufen der Seriennummer String zu entdecken.
Ich habe das Gefühl, dass die Win32-Port libusb
dies ohne allzu viel Mühe verwalten könnte, aber leider muss ich eine Lösung, die nur auf Bibliotheken abhängt, die mit Windows kommen, wie die setupapi
und hid
DLLs, die die Funktionen enthalten, erwähnt über.
Alle Vorschläge würden sehr geschätzt werden!
Leider ist ein USB-String-Deskriptor weder ein HID-Eingabebericht noch ein Ausgabebericht oder ein Featurebericht. Trotzdem danke! – zaphod