【问题标题】:How to retrieve removable storage drive letter using C/C++ [duplicate]如何使用 C/C++ 检索可移动存储驱动器号 [重复]
【发布时间】:2015-05-26 13:36:29
【问题描述】:

如何获取可移动驱动器号,以便创建路径并将数据从 PC 复制到可移动驱动器?

目前我正在使用

_getcwd(buff,b_SIZE);
MessageBox(buff);
strncpy(Root,buff,3);

如果我直接从 USB 运行我的软件没有问题,它会返回给我 D: 或 E:,这取决于我猜的可用性。但我的问题是我必须从 PC 运行我的 USB 程序,这当然是安装在 C 盘中的 PC 程序,因此这个 _getcwd 会给我 C:\ 盘符。这就是为什么我正在寻找是否有办法检查当前的可移动驱动器号。

这是我能找到的最近的问题:Detect removable drive (e.g. USB flash drive) C/C++

【问题讨论】:

  • 其他问题怎么不能回答你的问题?
  • 如果插入了 5 个可移动驱动器怎么办?也许由用户选择是最好的。
  • 嗨@Dialectus 将只有1。因为这是一台使用Windows 的机器。或者我会说我会确保只有 1 个可移动驱动器。谢谢
  • @Jongware 是的,我无法理解给出的解决方案。特别是如何使用结构dbcv_unitmask返回盘符?
  • 我认为无法确定最后插入的是哪个可移动驱动器。此类信息可能不会保存在系统中。有一些方法可以在更改发生时检测它们,但我认为这不是您想要的。

标签: c++ c windows removable-storage


【解决方案1】:

GetLogicalDrives() 将为您提供当前可用的所有驱动器。循环遍历给定的位向量(位 0 是驱动器 A:,位 1 是驱动器 B:,等等),并为每个可用的驱动器检查 GetDriveType() 是否返回 DRIVE_REMOVABLE

或者,您可以跳过 GetLogicalDrives(),并遍历所有 26 个字母,查找 DRIVE_REMOVABLE

【讨论】:

  • 好的!我可以理解这一点。让我试试谢谢!
  • 是的,我现在可以获取驱动器号。但无法区分它是否是存储可移动媒体。我目前从 C: 开始循环只是为了避免在 A: 或 B: 上出现软盘驱动器的可能性。
猜你喜欢
  • 2010-10-09
  • 2010-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
相关资源
最近更新 更多