Device Descriptor auslesen vom Device
Ist es möglich mit Powershell den DeviceDescriptor eines angeschlossenen Gerätes z.B. USB-Tastatur auszulesen?
Und zwar direkt vom Device und nicht die in der Registry eingetragenen Werte.
D.h. ich suche nach einer Möglichkeit wie per Linux: lsusb -v -d <Device>
den original Device Descriptor auszulesen.
Z.B. benötige ich die Werte von idVendor, iProduct u.a. siehe Bild (Beispielbild stammt von einer Website).
wenn ich via Powershell mit "Get-vmiObject-Class w32_keyboard" arbeite, bekomme ich diese Werte nicht,
siehe Bild.
Hat jemand eine Idee oder kann weiterführende Infos geben?
Für mich ist es wünschenswert diese Angaben nicht als Windows nativ names aufgelöst zu bekommen.
Danke im voraus.
Und zwar direkt vom Device und nicht die in der Registry eingetragenen Werte.
D.h. ich suche nach einer Möglichkeit wie per Linux: lsusb -v -d <Device>
den original Device Descriptor auszulesen.
Z.B. benötige ich die Werte von idVendor, iProduct u.a. siehe Bild (Beispielbild stammt von einer Website).
wenn ich via Powershell mit "Get-vmiObject-Class w32_keyboard" arbeite, bekomme ich diese Werte nicht,
siehe Bild.
Hat jemand eine Idee oder kann weiterführende Infos geben?
Für mich ist es wünschenswert diese Angaben nicht als Windows nativ names aufgelöst zu bekommen.
Danke im voraus.
Please also mark the comments that contributed to the solution of the article
Content-ID: 8177925381
Url: https://administrator.de/contentid/8177925381
Printed on: October 9, 2024 at 22:10 o'clock
31 Comments
Latest comment
keine Ahnung. Was genau verstehst du an dem Wort "genau" nicht?
Keine Lust hier noch eine Sekunde zu investieren...
Moin.
Guckst du einfach mal in die USB-Device-Descriptor Specifications:
https://www.beyondlogic.org/usbnutshell/usb5.shtml#DeviceDescriptors
Das was Linux da oben in deiner Grafik hin schreibt ist der Linux-Treibername den es zugewiesen hat, das steht also niemals im Gerät sondern in der Driver-Description(inf) bzw. unter Linux in der USB Device List!!
Es zählen einzig und allein die USB/PCI PNP Device-IDs zur eindeutigen Identifizierung.
Gruß siddius
Im Powershell sehe ich aber nur iProduct 0x02.
Ist Normal denn das Feld ist immer nur ein Index Wert !Guckst du einfach mal in die USB-Device-Descriptor Specifications:
https://www.beyondlogic.org/usbnutshell/usb5.shtml#DeviceDescriptors
iProduct 1 Index Index of Product String Descriptor
The idVendor and idProduct are used by the operating system to find a driver for your device. The Vendor ID is assigned by the USB-IF.
The idVendor and idProduct are used by the operating system to find a driver for your device. The Vendor ID is assigned by the USB-IF.
Das was Linux da oben in deiner Grafik hin schreibt ist der Linux-Treibername den es zugewiesen hat, das steht also niemals im Gerät sondern in der Driver-Description(inf) bzw. unter Linux in der USB Device List!!
Es zählen einzig und allein die USB/PCI PNP Device-IDs zur eindeutigen Identifizierung.
Gruß siddius
Zitat von @PenKathi:
Genauso, wie idVendor nur als 0x wie auch immer angegeben ist aber die Auflösung des Herstellernamens fehlt.
Genauso, wie idVendor nur als 0x wie auch immer angegeben ist aber die Auflösung des Herstellernamens fehlt.
http://www.linux-usb.org/usb.ids
http://pci-ids.ucw.cz/
Get-PnpDevice
Mehr bekommst du mit Bordmitteln nicht.
Ansonsten musst du dir selbst ne DB organisieren oder mit einer aus dem Web abgleichen (Webservice etc.).
Oder mal AIDA64 anschauen.
Get-PNPdevice | select * | Out-Gridview
Ansonsten musst du dir selbst ne DB organisieren oder mit einer aus dem Web abgleichen (Webservice etc.).
Oder mal AIDA64 anschauen.
Ich kann dein gezetere nicht verstehen. Es steht dir frei, ein entsprechendes Modul zu bauen. Genau so, wie es mit lsusb schon andere vor dir getan haben. Die haben sogar schon mehr getan - die haben nämlich die Datenbank aufgebaut, die du brauchst, um so ein Vorhaben umzusetzen. Und das Beste ist: Du darfst diese benutzen...
Zitat von @PenKathi:
@7907292512, erst einmal Danke.
AIDA nutzt nichts, da die Werte in einem Script gebraucht werden welches sich automatisch aktualisiert wenn entweder ein neues Gerät angeschlossen wird, bzw. bzgl. Tastaturen sogar erkennen soll wenn Tastatur xyz von X gleichzeitig angeschlossenen Tastaturen benutzt wird.
Tja eben doch, AIDA hat auch einen commandline Modus!@7907292512, erst einmal Danke.
AIDA nutzt nichts, da die Werte in einem Script gebraucht werden welches sich automatisch aktualisiert wenn entweder ein neues Gerät angeschlossen wird, bzw. bzgl. Tastaturen sogar erkennen soll wenn Tastatur xyz von X gleichzeitig angeschlossenen Tastaturen benutzt wird.
Außerdem frage ich mich, wie z.B. die Namen in Systemsteuerung / Geräte und Drucker aufgelöst werden. Solch eine DB müsste doch eigentlich im System schon irgendwo vorhanden sein.
Die kommen wie schon oben gesagt aus den installierten Treiber-Dateien (*.inf).Die "Namen" und "Descriptions" der Geräte stehen aber auch schon in den WMI oder PNP Infos!
Was meinst du wohl warum es so Programme wie AIDA gibt, die Hersteller pflegen aufwendig eigene Datenbanken für die detaillierten Informationen rund um die Geräte.
Aufgabe ist aber eine Realisierung mit System eigenen Mitteln.
Dann mach, scheint ja deine Hausaufgabe zu sein, Infos was Sache ist haben wir dir ja zu Genüge geliefert .Trotzdem ist AIDA leider nutzlos, da es ja separat gekauft werden muss.
Dan musst du halt selbst Gehirnschmalz reinstecken, ummesöns kommt auch kein Hähnchen in die Kauleiste geflogen.Ach ja, leider stehen die Namen nicht in WMI oder PNP Infos,
Doch, nochmal genau hinschauen.
Ich möchte hier dann doch noch einmal auf den ERSTEN Post in diesem Thread verweisen:
Da der TO nicht in der Lage ist, diese einfache Frage zu beantworten, ist das alles hier raten im freien Fall...
Da der TO nicht in der Lage ist, diese einfache Frage zu beantworten, ist das alles hier raten im freien Fall...
Ansonsten liefert auch devcon (kostenlos) alles nötige, was aber die o.g. Befehle auch schon liefern, nur mit ein paar Zusatzfeatures
https://learn.microsoft.com/de-de/windows-hardware/drivers/devtest/devco ...
https://learn.microsoft.com/de-de/windows-hardware/drivers/devtest/devco ...
Da der TO nicht in der Lage ist, diese einfache Frage zu beantworten, ist das alles hier raten im freien Fall...
Schau mal in das Profil des TO.
Wenn kein expliziter device spezifischer Hersteller-Treiber genutzt wird, normal.
Wie nun zum xten mal wiederholt, windows zieht evt. vorhandene Infos aus den Treiber-Dateien (C:\windows\inf\*.inf), genauso wie Linux aus dessen Listen und Treiber-Metadaten.
Sind das nunmal Standard-Treiber, dann steht da auch nicht mehr.
Wie nun zum xten mal wiederholt, windows zieht evt. vorhandene Infos aus den Treiber-Dateien (C:\windows\inf\*.inf), genauso wie Linux aus dessen Listen und Treiber-Metadaten.
Sind das nunmal Standard-Treiber, dann steht da auch nicht mehr.
Zitat von @PenKathi:
Habe dazu eine private Nachricht geschrieben, nur finde ich solche Kommentare bzgl. Arbeitslos unter aller Sau.
Habe dazu eine private Nachricht geschrieben, nur finde ich solche Kommentare bzgl. Arbeitslos unter aller Sau.
wer "Arbeitslos" als Beruf in ein Forenprofil schreibt, kann nur Masochist oder Realitätsfremd sein
Und dein Problem ließe sich relativ elegant lösen, wenn das keine völlig unbekannte Hardware ist.
Wer nicht will, der hat schon...