Benutzer mit den meisten Antworten
WMI und USB-Eigenschaften

Frage
-
Hi,
ich hoffe, ich bin hier richtig. Falls nicht - entschuldigt bitte...
Ich beschäftige mich momentan mit USB Geräten. Für mein aktuelles Programm benötige ich den Laufwerksbuchstaben, die VID/PID sowie die interne Seriennummer eines USB Gerätes, welches 'gerade' angeschlossen wurde. Mittlerweile bin ich bei der Nutzung von WMI gelandet. Allerdings kenne ich mich da nicht sehr gut aus.
Hat irgendjemand eine Ahnung, wie ich die genannten Eigenschaften per WMI auf Basis der VID/PID (die bekomme ich übergeben, wenn das USB Gerät angeschlossen wird) auslesen kann? Bisher kann ich nur die Daten aller Geräte auslesen und das auch unzusammenhängend, sprich die ausgelesenen Daten (Seriennummer, VID/PID und Buchstabe) können nicht zusammen einem Gerät zugeordnet werden.
Gruß
L.Tiger
Antworten
-
Hallo L.Tiger,
jetzt würde mich ehrlich interessieren wie Du bisher an die Sache herangegangen bist. Die Klasse CIM_USBDevices mit allen Deinen gewünschten Informationen gibt es erst seit dem finalen Release von CIM 2.22 (also seit Juni 2009). Eine äquivalente Klasse in WMI habe ich nicht gefunden.
Es gibt einen Ansatz der im Windows PowerShell Blog veröffentlicht wurde, vielleicht hilft es Dir bei der Lösung:
http://blogs.msdn.com/powershell/archive/2007/02/24/displaying-usb-devices-using-wmi.aspx
Schöne Grüße
Oliver- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 17. September 2009 12:24
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 24. September 2009 11:05
-
Hallo,
mittlerweile bin ich ein bisschen weiter...
Über einen WMI-Event kann ich Daten der Klasse Win32_UsbControllerDevice abfangen. Über das Dependent-Attribut im Format "USBSTOR\\Disk&Ven..." kann ich auf die Klasse Win32_DiskDrive zugreifen, in der ich schonmal die Signatur eines Gerätes auslesen kann. Laut der Microsoft-Doku ein Wert zur eindeutigen Identifikation. Ebenso kann ich über einen Umweg über die Klassen Win32_DiskDriveToDiskPartition, Win32_LogicalDiskToPartition und Win32_DiskPartition auf die Klasse Win32_LogicalDisk zugreifen und dort den Laufwerksbuchstaben und die VolumeSerialNumber auslesen...
Soweit so gut. Das einzige was ich bisher noch nicht hinbekommen habe ist, das Dependent-Attribut aus dem WMI-Event im Format "USBSTOR\\Disk&Ven..." einem Format "USB\\VID_1234&PID5678\\5&..." zuzuordnen. Da USB-Geräte aber nicht nur portable Speicher (USBSTOR) sind, kann ich den USBSTOR-Wert nicht generell nutzen, wobei sich aber jedes USB-Gerät mindestens mit einer "USB\\VID.."-Zeichenfolge meldet. Irgendwie muss es möglich sein, eine Verbindung beider Formate zu erstellen, da Windows dies selbst kann (siehe die Details eines USB-Geräts im Gerätemanager). Die Frage ist nur wie?
Gruß
l.Tiger- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 17. September 2009 12:24
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 24. September 2009 11:05
Alle Antworten
-
Hallo L.Tiger,
jetzt würde mich ehrlich interessieren wie Du bisher an die Sache herangegangen bist. Die Klasse CIM_USBDevices mit allen Deinen gewünschten Informationen gibt es erst seit dem finalen Release von CIM 2.22 (also seit Juni 2009). Eine äquivalente Klasse in WMI habe ich nicht gefunden.
Es gibt einen Ansatz der im Windows PowerShell Blog veröffentlicht wurde, vielleicht hilft es Dir bei der Lösung:
http://blogs.msdn.com/powershell/archive/2007/02/24/displaying-usb-devices-using-wmi.aspx
Schöne Grüße
Oliver- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 17. September 2009 12:24
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 24. September 2009 11:05
-
Hallo Tiger,
Schau Dir mal die folgenden Links an. Vielleicht können Sie Dir weiter helfen. Es sind Diskussionen und Artikel über WMI und USB.
Secrets of Windows Management Instrumentation à http://www.microsoft.com/technet/scriptcenter/resources/wmifaq.mspx
WMI Tasks: Disks and File Systems à http://msdn.microsoft.com/en-us/library/aa394592(VS.85).aspx
Using WMI to get USB device drive letter à http://www.codeguru.com/forum/showthread.php?p=1795283
WMI Code Creator v1.0 à http://www.microsoft.com/downloads/details.aspx?familyid=2CC30A64-EA15-4661-8DA4-55BBC145C30E&displaylang=en
http://social.msdn.microsoft.com/forums/en-US/winforms/thread/02ce0f87-283a-4b2d-9011-02325289ccab
Grüße,
Robert
-
Hallo,
mittlerweile bin ich ein bisschen weiter...
Über einen WMI-Event kann ich Daten der Klasse Win32_UsbControllerDevice abfangen. Über das Dependent-Attribut im Format "USBSTOR\\Disk&Ven..." kann ich auf die Klasse Win32_DiskDrive zugreifen, in der ich schonmal die Signatur eines Gerätes auslesen kann. Laut der Microsoft-Doku ein Wert zur eindeutigen Identifikation. Ebenso kann ich über einen Umweg über die Klassen Win32_DiskDriveToDiskPartition, Win32_LogicalDiskToPartition und Win32_DiskPartition auf die Klasse Win32_LogicalDisk zugreifen und dort den Laufwerksbuchstaben und die VolumeSerialNumber auslesen...
Soweit so gut. Das einzige was ich bisher noch nicht hinbekommen habe ist, das Dependent-Attribut aus dem WMI-Event im Format "USBSTOR\\Disk&Ven..." einem Format "USB\\VID_1234&PID5678\\5&..." zuzuordnen. Da USB-Geräte aber nicht nur portable Speicher (USBSTOR) sind, kann ich den USBSTOR-Wert nicht generell nutzen, wobei sich aber jedes USB-Gerät mindestens mit einer "USB\\VID.."-Zeichenfolge meldet. Irgendwie muss es möglich sein, eine Verbindung beider Formate zu erstellen, da Windows dies selbst kann (siehe die Details eines USB-Geräts im Gerätemanager). Die Frage ist nur wie?
Gruß
l.Tiger- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 17. September 2009 12:24
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 24. September 2009 11:05
-
Hallo Tiger,
Also Du versuchst Die Verbindung zwischen physischem Laufwerk und Vid/Pid USB-Gerät machen?
Kann folgende eine Idee sein? 1. Du hast schon herausgefunden die USB Vid/Pid von jedem physischem Laufwerk
2. Sende IOCTL_STORAGE_GET_DEVICE_NUMBER zu jedem physischen-logischen Laufwerk
um die entsprechende Korrespondenz herauszufinden. Muss noch weiter lesen J
Schau Dir mal den folgenden Diskussionsfaden an. Vielleicht kann er Dir irgendwie weiter helfen.
http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/ada87c89-59b7-4885-ac21-f0abb559eefa
Ich glaube Du hast dass schon gesehen J
http://forum.fachinformatiker.de/net/131070-wmi-usb.html
Es gibt ein command line tool dass alle USB anzeigt mit dem Befehl devcon findall usb\vid*
http://support.microsoft.com/kb/311272
Grüße,
Robert
- Bearbeitet Robert BreitenhoferModerator Freitag, 4. September 2009 08:49 Link Korrektur