在 Windows (XP-7) 上,是否有一种可靠的方法可以在 C++ 中以编程方式区分 USB 软盘驱动器和 USB 闪存驱动器?
目前,我使用 WMI 在Win32_LogicalDisk
检测到新实例时获取更新,然后使用 LogicalDisk 对象的 DriveType 属性来确定基本类型。这很好用,除了软盘驱动器和 USB 闪存驱动器都是 DriveType DRIVE_REMOVABLE
,所以为了区分它们(软盘与闪存),我使用IOCTL_STORAGE_GET_HOTPLUG_INFO
接口来确定设备是否可热插拔,并且正在处理意味着它是闪存驱动器而不是软盘的主体。再一次,我认为这在内部软盘驱动器的情况下非常有效(如果效率有点低,使用 WDK API 和 WMI 来获取信息),但不幸的是 USB 软盘驱动器在很多时候也是热插拔的,所以有我可以看到,没有明确的方法可以区分闪存和 USB 软盘驱动器。我知道有些属性可能会起作用,比如检查它是否映射到保留的驱动器 A: 或 B(编辑:仅当机器肯定有软盘驱动器时才相关 - 请参阅MS-KB:如何在 Windows XP 中更改驱动器号分配),或查看描述,但我真的想要更可靠的东西。
很抱歉解释太长,但只是想清楚一点!谢谢