【发布时间】:2009-11-25 14:07:30
【问题描述】:
在 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: How to change drive letter assignments in Windows XP),或看着描述,但我真的想要更可靠的东西。
对不起,解释太长了,但只是想清楚一点!谢谢
【问题讨论】:
-
A: 和 B: 为软盘保留?来源?
-
我是从MS-KB:How to change drive letter assignments in Windows XP 那里得到的,这是他们的措辞,但正如它也指出的那样,如果机器没有软盘驱动器,那么它们可以用于其他驱动器,因此可以说它是用词不当,当然也不能表明该驱动器是否是软盘驱动器。我将改写问题以使其更清楚。
-
啊,从用户的角度来看,当您手动更改驱动器号时。有道理,我是从操作系统的角度思考的。