gpt4 book ai didi

c++ - 在 Windows 中以编程方式区分 USB 软盘驱动器和 USB 闪存驱动器

转载 作者:可可西里 更新时间:2023-11-01 18:12:09 26 4
gpt4 key购买 nike

在 Windows (XP-7) 上,是否有可靠的方法以编程方式区分 C++ 中的 USB 软盘驱动器和 USB 闪存驱动器?

目前,我正在使用 WMI 在有新 Win32_LogicalDisk 时获取更新检测实例,然后使用 LogicalDisk 对象的 DriveType 属性找出基本类型。这工作得很好,除了软盘驱动器和 USB 闪存驱动器都是 DriveType DRIVE_REMOVABLE,所以为了区分它们(软盘与闪存),我使用 IOCTL_STORAGE_GET_HOTPLUG_INFO接口(interface)来确定设备是否可热插拔,并且正在研究这意味着它是闪存驱动器而不是软盘的原理。同样,我认为这在内部软盘驱动器的情况下效果很好(如果效率有点低,同时使用 WDK API 和 WMI 获取信息),但不幸的是,USB 软盘驱动器在很多时候也是可热插拔的,所以有没有明确的方法来区分闪存和 USB 软盘驱动器,我可以看到。我知道有些属性可能有效,例如检查它是否映射到保留的驱动器 A: 或 B(编辑:仅当机器确实有软盘驱动器时才相关 - 参见 MS-KB: How to change drive letter assignments in Windows XP ),或者查看描述,但我真的想要更可靠的东西。

很抱歉解释得太长,但只是想说清楚!谢谢

最佳答案

您尝试过 Win32_LogicalDisk.MediaType 吗?它具有针对软盘的特定枚举。确保在驱动器中没有磁盘时尝试。

关于c++ - 在 Windows 中以编程方式区分 USB 软盘驱动器和 USB 闪存驱动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1797128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com