Windows中的最大驱动器数量是多少?

10
我正在尝试在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被typedef为"unsigned long",其长度为4字节,而驱动器字母仅范围在A-Z(26-我认为-字符)之间。显然,人们可以在其系统上定义多于26个驱动器(尽管他们很少这样做)-因此,我想知道是否有关于这些驱动器的任何约定。有人能指向一些相关资源吗?
谢谢。

显然,一个系统上可以定义超过26个驱动器 - 你确定吗?我很难想象如何做到。 - Pekka
6
可以将驱动器挂载到一个目录中,而不是为它们分配盘符。 - Vinko Vrsalovic
添加网络位置是其中一种方法(打开我的电脑->右键单击->添加网络位置)。我现在的电脑上已经定义了其中一个。 - laura
但是那些不是逻辑驱动器,对吧? - Pekka
它们并不是字母,但它们仍然占用了字母的位置。 - laura
3个回答

10
  1. DWORD无论在哪个系统中,始终是4个字节(它是Win32类型)。

  2. Windows中驱动器字母的最大值为26。因为英文字母表只有26个字母 :). 不过,Windows允许两种方式来挂载卷:

    • 挂载到驱动器字母
    • 挂载到目录(在NTFS卷上)。 您可以将一个卷挂载到多个位置(但不能超过一个驱动器字母,如果我没记错的话)。此任务的GUI由 控制面板 -> 管理工具 -> 计算机管理 -> 磁盘管理 提供。

如果您想要多于26个驱动器,并且这些额外的驱动器是指向已经激活的驱动器的redirects,并且对它们不在大多数程序中正常工作没有问题,那么您可以使用以下方法分配更多驱动器号(请注意,它们甚至不会显示在文件资源管理器中):

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

并且要删除它们(因为它们在重启后不会被保留):

subst /D ♪:
您可以按照这篇文章所述的方法枚举所有的卷及其挂载点。

1
你可以使用WMI。以下的WMI查询应该列出所有驱动器:
SELECT * FROM Win32_DiskDrive

我正在使用mingw下的gcc,因此我认为我无法访问WMI。GetLogicalDriveStrings执行相同的操作,但这不是我要求的。 - laura

1

仅枚举MS-DOS驱动器是不够的(顺便说一下,最多只能有26个,但每个驱动器可以绑定两次,全局和本地各一次),例如,卷可以被装入到目录中。你可能想要的是枚举系统中所有的卷,使用FindFirstVolume等函数。请参考相关的MSDN 示例


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接