0

这是几个问题汇编成一篇文章。

1) 判断 USB 大容量存储设备是否已插入的最佳方法是什么。

2) 将数据写入 USB 驱动器的最佳方法是什么

3)你能像对待普通内存一样对待 USB 驱动器上的内存吗?(我可以像 malloc 一样使用,或者直接用值 / 写两个它,或者将它归零吗?)

4

2 回答 2

5

USB 驱动器显示为驱动器号。GetDriveType您可以使用API检测到它可能是 USB 设备。然而,这只告诉你它是可移动的,而不是它实际上是一个 USB 驱动器。要说明这一点,您可能需要查看SetupDiGetDeviceRegistryProperty函数(引用自GetDriveTypeMSDN 参考)。此外,安装的磁盘可能不是驱动器号,或者驱动器号不代表磁盘安装,因此要查找所有 USB 驱动器,您需要查看其他一些 SetupDi... 功能。

因为它是一个驱动器号,所以读取和写入 USB 驱动器的常用方法是使用文件系统函数,例如fopenWindows CreateFile. 如果您想像记忆一样直接写入它,您可以创建一个跨越整个设备的文件,然后对该文件进行内存映射。但是,我不建议这样做,除非在专门的应用程序中,因为如果出现 I/O 错误(包括例如用户拔出驱动器),那么您的程序将得到一个 SEH 异常,这会带来很多复杂性最好避免。

于 2009-04-04T03:34:32.563 回答
0

你可能想看看HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR。它会告诉您哪些 USB 存储设备是已知的。这些条目都包含一个 ParentIdPrefix。如果驱动器当前存在,则可以在HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices值的数据部分中找到。

于 2009-04-09T08:09:31.613 回答