Programmgesteuertes Unterscheiden zwischen USB-Diskettenlaufwerk und USB-Flash-Laufwerk in Windows

Gibt es unter Windows (XP-7) eine zuverlässige Möglichkeit, programmgesteuert zwischen USB-Diskettenlaufwerken und USB-Flash-Laufwerken in C ++ zu unterscheiden?

Im Moment verwende ich WMI, um Updates zu erhalten, wenn es neu istWin32_LogicalDisk Instanzen werden erkannt und anschließend mit dem DriveType-Attribut des LogicalDisk-Objekts ein Basistyp ermittelt. Dies funktioniert recht gut, außer dass sowohl Diskettenlaufwerke als auch USB-Flash-Laufwerke vom Typ DriveType sindDRIVE_REMOVABLE, um zwischen diesen zu unterscheiden (Floppy vs. Flash), benutze ich dieIOCTL_STORAGE_GET_HOTPLUG_INFO Schnittstelle, um herauszufinden, ob das Gerät Hot-Plug-fähig ist, und arbeitete nach dem Prinzip, dass dies bedeutete, dass es ein Flash-Laufwerk und keine Diskette war. Wiederum denke ich, dass dies bei internen Diskettenlaufwerken recht gut funktioniert (wenn auch ein wenig ineffizient, wenn sowohl die WDK-API als auch WMI zum Abrufen von Informationen verwendet werden), aber leider sind USB-Diskettenlaufwerke häufig auch hot-plug-fähig Es gibt keine eindeutige Unterscheidung zwischen Flash- und USB-Diskettenlaufwerken, die ich sehen kann. Ich weiß, dass es Eigenschaften gibt, diekann B. zu prüfen, ob es den reservierten Laufwerken A: oder B zugeordnet ist (Bearbeiten: Nur relevant, wenn der Computer definitiv ein Diskettenlaufwerk hat - sieheMS-KB: Ändern der Laufwerksbuchstaben in Windows XP) oder in der Beschreibung nachsehen, aber ich hätte wirklich gerne etwas zuverlässigeres.

Entschuldigung für die lange Erklärung, aber wollte nur klar sein! Vielen Dank

Antworten auf die Frage(4)

Ihre Antwort auf die Frage