none
WMI und USB-Eigenschaften RRS feed

  • 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
    Samstag, 29. August 2009 17:50

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
    Sonntag, 30. August 2009 13:30
  • 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
    Donnerstag, 3. September 2009 18:41

Alle Antworten