操作系统遍历所有驱动器的句柄



我正在使用Borland c++ Builder进行一个连接到数据库的项目。

有一个备份到USB驱动器的配置。当前方法的问题是驱动器是由最终用户手动配置的,有时事情会变得混乱。人们将USB驱动器移动到不同的端口,得到不同的字母,然后备份过程不再工作。顺便说一句,我们有其他"更好"的流程来备份到云等,但是有些地方没有互联网接入,也没有运行在RAID上…所以备份到USB可以让他们免于高清崩溃。

我希望做一些编码来帮助消除这个问题。我希望能够得到操作系统(Windows 8/7/XP)的处理,并能够识别机器上的驱动器。一旦我有了这些,我就可以遍历它们并检查路径位置(例如文件标记,所以如果文件存在,我知道它是我们提供的USB)。然后,一旦我有了它,我就可以做备份了。

作为更坏的情况,我将能够遍历所有26个字母来测试每个驱动器。然而,我把它作为一个学习的机会,希望得到一个操作系统的处理,以减少我可能遇到的检查/失败的数量。此外,我很好奇是否有人有更好的方法:)

我不认为尝试做一些比迭代26个驱动器号更高级的事情有什么好处。

在尝试检查标记路径是否存在之前,您可以添加对GetDriveType的调用,并将返回值与DRIVE_REMOVABLE进行比较。这将确保您的代码不会启动CD/DVD驱动器,或者在映射共享的情况下撞击网络。

最新更新