Windows中的最大驱动器数量?

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

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

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

现在,尽pipe稍后我会使用string,但我更愿意使用第一个选项来查询。 但是,在我的系统上,一个DWORD被typedef-ed“unsigned long”,这是4个字节,而驱动器号只有范围AZ(26 – 我想 – 字符)。 显然,他们可以在系统上定义26个以上的驱动器(不过不太可能),所以我想知道这些驱动器是否有任何约定。 有人可以指向我的资源吗?

谢谢。

Solutions Collecting From Web of "Windows中的最大驱动器数量?"

  1. DWORD总是4个字节,不管系统是什么(这是一个Win32类型)。

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

    • 到一个盘符
    • 到一个目录(在NTFS卷上)。 您可以将一个卷装入多个位置(但不能多于一个驱动器号,IIRC)。 此任务的GUI由控制面板 – >管理工具 – >计算机管理 – >磁盘管理提供

如果你想有超过26个驱动器,其他驱动器被重定向到已经激活的驱动器,并且在大多数程序中它们不能正常工作,那么你可以使用下面的方法分配更多的驱动器(警告他们甚至不会显示出来在文件浏览器中):

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

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

 subst /D ♪: 

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

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

 SELECT * FROM Win32_DiskDrive 

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