Windows中的最大驱动器数量?

lau*_*ura 11 windows drivers

我试图在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个字节,而驱动器号只有AZ(26 - 我认为 - 字符).显然,可以在他们的系统上定义超过26个驱动器(但不太可能这样做) - 所以我想知道这些驱动器是否有任何约定.有人能指点我这个资源吗?

谢谢.

atz*_*tzz 10

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

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

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

如果你想拥有超过26个驱动器,其他驱动器被重定向到已经激活的驱动器,并且可以在大多数程序中无法正常工作,那么你可以使用以下方法分配更多(请注意它们甚至不会出现在文件资源管理器中):

subst ?: C:\Temp\
cd /D ?:\
Run Code Online (Sandbox Code Playgroud)

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

subst /D ?:
Run Code Online (Sandbox Code Playgroud)

您可以枚举所有卷及其挂载点,如本文所述.