2017-09-25 50 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