【问题标题】:Retrieve available disk drives检索可用的磁盘驱动器
【发布时间】:2015-01-16 03:19:11
【问题描述】:

我有一个函数:

void get_disk_drives() {
  DWORD drives_bitmask = GetLogicalDrives();

  for (int i = 0; i < 26; i++) {
    if (((drives_bitmask >> i) & 1)) {
      char drive_name = (char)(65 + i);
      cout << drive_name << endl;
    }
  }
}

输出是:

A
C
D
W
X
Y
Z

但我的系统(Mac OS X 上的 Parallels 中的 Windows 8)向我显示,可用的磁盘驱动器是:

C
W 
X
Y
Z

怎么了?


UPD:

我在 MacBook Air 中没有软盘和 CD/DVD。

【问题讨论】:

    标签: winapi visual-c++


    【解决方案1】:

    我猜这意味着驱动器 AD 存在,但其中没有媒体。我的猜测是A 是旧式软盘驱动器,D 是光驱 (CD/DVD)。

    您可以致电GetDriveType 了解更多信息。

    【讨论】:

    • 感谢您的回答,但我在 Mac 上没有软盘和 CD/DVD
    • 它们可能已被 Parallels 虚拟化。为什么不问机器?
    • GetLogicalDrives()(和GetLogicalDriveStrings())不关心驱动器中是否有媒体。只要驱动器本身存在并分配了驱动器号,就会被报告。因此,如果GetLogicalDrives() 报告驱动器AD,那么就Windows 而言它们确实存在。您可以使用 Windows 的磁盘管理器(我的电脑 > 管理 > 存储 > 磁盘管理)进行验证,或者只需在 Windows 资源管理器中查看。正如 David 所说,Parallels 可能会为 AD 提供虚拟设备,如果它们在 Mac 主机上实际上并不存在的话。
    猜你喜欢
    • 2011-03-16
    • 2014-12-01
    • 2011-04-26
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多