2017-09-25 54 views
0

GetDiskFreeSpace来自MSDN的API:它是否在返回空闲空间时考虑了配额?GetDiskFreeSpace API会考虑文件夹配额吗?

例如,如果E:\驱动器有50GB可用空间,并且我有一个具有10Gb硬限制的文件夹,现在如果我使用此API获取文件夹上的可用空间,它应该返回多少? 10GB或50GB?

回答

1

是的,GetDiskFreeSpaceGetDiskFreeSpaceEx都考虑了文件夹配额。

注意:根据GetDiskFreeSpace的文档,不支持查询非根目录。我怀疑文件是过时的,但作为一项预防措施,使用GetDiskFreeSpaceEx没有这样的限制会更安全。

请注意,GetDiskFreeSpaceEx函数返回用户可用空闲字节数(考虑用户配额和文件夹配额)和空闲字节总数。如果您希望用户可用的空闲字节数,请使用lpFreeBytesAvailable,如果您希望空闲字节总数(忽略配额)使用lpTotalNumberOfFreeBytes

+0

据我所知'GetDiskFreeSpaceEx'只对卷和共享(驱动器号,装入卷和UNC根)进行操作,并且在给出完整路径时它只查找所述根。 – Anders

+0

@Anders,我在发布我的答案(Windows 7和2008 R2)之前对它进行了测试,它确实考虑了文件夹配额。那么'GetDiskFreeSpace'就是这个问题。如果我没有记错的话,它不适用于Windows XP。我对Vista/2008并不完全确定。 (虽然你的答案中的链接表示这已在Vista中修复) –

+0

非Ex版本可能仅限于根目录,它是Windows 95上唯一的版本。它也限制为2GB,因此它不再有用。如果只接受根目录,不知道如何测试文件夹上的非Ex版本? – Anders