问题 Windows中的最大驱动器数量?


我试图在Windows中以编程方式找出可用的磁盘空间。为此,我需要先获取可用驱动器的列表,然后检查其中哪些是本地驱动器,然后查询每个本地驱动器上的可用字节。

我有点卡在第一部分,其中API提供了两个功能:

  1. GetLogicalDrives (http://msdn.microsoft.com/en-us/library/aa364972(VS.85).aspx)它给你一个设置位的DWORD(如果驱动器A存在,则为位0,如果驱动器B等,则为位1)
  2. GetLogicalDriveStrings (http://msdn.microsoft.com/en-us/library/aa364975(VS.85).aspx)它给你实际的字符串。

现在,虽然我稍后会使用字符串,但我更喜欢使用第一个选项进行查询。但是,在我的系统上,DWORD的类型定义为“unsigned long”,即4个字节,而驱动器字母只有A-Z(26 - 我认为 - 字符)。显然,可以在他们的系统上定义超过26个驱动器(但不太可能这样做) - 所以我想知道这些驱动器是否有任何约定。有人能指出我的资源吗?

谢谢。


10905
2017-12-22 08:14


起源

“显然,人们可以在他们的系统上定义超过26个驱动器” - 你确定吗?我很难想象如何。 - Pekka 웃
您可以在目录中装入驱动器,而不是为它们分配字母 - Vinko Vrsalovic
添加网络位置将是一种方式(打开MyComputer->右键单击 - >添加网络位置)。我现在在计算机上定义了其中一个。 - laura
但那些不是逻辑驱动,是吗? - Pekka 웃
他们不是,但他们仍然接受这些信件。 - laura


答案:


  1. 无论系统如何,DWORD总是4个字节(它是Win32类型)。

  2. 最大值 驱动器号 在Windows中是26.因为英文字母只有26个字母:)。但是,Windows允许两种方式来装入卷:

    • 致车道信
    • 到一个目录(在NTFS卷上)。 您可以将一个卷安装到多个位置(但不超过一个驱动器号,IIRC)。此任务的GUI由以下人员提供 控制面板 - >管理工具 - >计算机管理 - >磁盘管理

如果您希望拥有超过26个驱动器,则需要额外的驱动器 重定向 对于已经有效的驱动器并且可以在大多数程序中无法正常工作,那么您可以使用以下方法分配更多(请注意它们甚至不会显示在文件浏览器中):

subst ♪: C:\Temp\
cd /D ♪:\

并删除它们(也不会通过重新启动保留它们):

subst /D ♪:

您可以按照中所述枚举所有卷及其挂载点 本文


9
2017-12-22 08:49



(1)所以它是,我的立场得到纠正。 - laura


你可以用 WMI。以下WMI查询应列出所有驱动器:

SELECT * FROM Win32_DiskDrive

1
2017-12-22 08:22



我在mingw下使用gcc,所以我认为我无法访问WMI。 GetLogicalDriveStrings 做同样的事情,但这不是我问的。 - laura
没错,我误读了。抱歉 - Vinko Vrsalovic


枚举MS-DOS驱动器是不够的(顺便说一句,最多可以有26个驱动器,尽管每个驱动器可以绑定两次,一次全局,一次在本地会话),例如,可以安装一个卷到一个目录。你想要的可能是枚举系统中的所有卷,使用 FindFirstVolume 等。看看相关的MSDN


1
2017-12-22 08:49