我试图在Windows中以编程方式找出可用的磁盘空间。为此,我需要首先获取可用驱动器的列表,然后检查哪些是本地驱动器,然后查询每个本地驱动器上的可用字节。
我有点卡在第一部分,其中API提供了两个功能:
GetLogicalDrives
(http://msdn.microsoft.com/en-us/library/aa364972(VS.85).aspx),它为您提供设置位的DWORD(如果驱动器A存在,则为位0,如果驱动器B等,则为位1)GetLogicalDriveStrings
(http://msdn.microsoft.com/en-us/library/aa364975(VS.85).aspx),它为您提供实际的字符串。现在,虽然我稍后会使用字符串,但我更喜欢使用第一个选项进行查询。但是,在我的系统上,DWORD的类型定义为“unsigned long”,这是4个字节,而驱动器号只有A-Z(26 - 我认为 - 字符)。显然,可以在他们的系统上定义超过26个驱动器(但不太可能这样做) - 所以我想知道这些驱动器是否有任何约定。有人可以指点我这个资源吗?
感谢。
答案 0 :(得分:10)
无论系统如何,DWORD总是4个字节(它是Win32类型)。
Windows中驱动器号的最大值为26.因为英文字母只有26个字母:)。但是,Windows允许两种方式来装入卷:
如果您希望有超过26个驱动器,其他驱动器重定向到已启用的驱动器,并且可以在大多数程序中无法正常工作,那么您可以使用以下方法分配更多驱动器(警告他们甚至不会出现在文件浏览器中):
subst ♪: C:\Temp\
cd /D ♪:\
并删除它们(也不会通过重新启动保留它们):
subst /D ♪:
您可以按this article。
中所述枚举所有卷及其挂载点答案 1 :(得分:1)
您可以使用WMI。以下WMI查询应列出所有驱动器:
SELECT * FROM Win32_DiskDrive
答案 2 :(得分:1)
枚举MS-DOS驱动器是不够的(顺便说一下,最多可以有26个驱动器,虽然每个驱动器可以绑定两次,一次全局,一次在本地会话),卷可以,例如,挂载到目录。您想要的是使用FindFirstVolume等来枚举系统中的所有卷。请查看相关的MSDN example。