use*_*116 7 c++ usb wmi floppy wdk
在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中的驱动器号分配),或者看一下描述,但我真的想要一些更可靠的东西.
很抱歉很长的解释,但只是想明确!谢谢
在USB级别上,无法区分传统的磁盘密钥和USB软盘.这意味着Windows本身,无法可靠地分辨出什么是什么.
你可以收集一些提示:Floppies应该:a.有大容量存储协议CBI/CB b.SCSI UFI
但是,在USB设备的世界里,每个人都做他们想做的事.唯一的测试是:"它是否适用于Windows".Windows只是检查大小,如果它是带有可移动媒体设置的USB设备和传统的软盘大小,它会认为它是一张软盘.
不能说"真正的"软盘,但随着USB附加,没有明确的方法.
| 归档时间: |
|
| 查看次数: |
2454 次 |
| 最近记录: |