0
GetDiskFreeSpace
來自MSDN的API:它是否在返回空閒空間時考慮了配額?GetDiskFreeSpace API會考慮文件夾配額嗎?
例如,如果E:\驅動器有50GB可用空間,並且我有一個具有10Gb硬限制的文件夾,現在如果我使用此API獲取文件夾上的可用空間,它應該返回多少? 10GB或50GB?
GetDiskFreeSpace
來自MSDN的API:它是否在返回空閒空間時考慮了配額?GetDiskFreeSpace API會考慮文件夾配額嗎?
例如,如果E:\驅動器有50GB可用空間,並且我有一個具有10Gb硬限制的文件夾,現在如果我使用此API獲取文件夾上的可用空間,它應該返回多少? 10GB或50GB?
是的,GetDiskFreeSpace
和GetDiskFreeSpaceEx
都考慮了文件夾配額。
注意:根據GetDiskFreeSpace
的文檔,不支持查詢非根目錄。我懷疑文件是過時的,但作爲一項預防措施,使用GetDiskFreeSpaceEx
沒有這樣的限制會更安全。
請注意,GetDiskFreeSpaceEx
函數返回用戶可用空閒字節數(考慮用戶配額和文件夾配額)和空閒字節總數。如果您希望用戶可用的空閒字節數,請使用lpFreeBytesAvailable
,如果您希望空閒字節總數(忽略配額)使用lpTotalNumberOfFreeBytes
。
據我所知'GetDiskFreeSpaceEx'只對卷和共享(驅動器號,裝入卷和UNC根)進行操作,並且在給出完整路徑時它只查找所述根。 – Anders
@Anders,我在發佈我的答案(Windows 7和2008 R2)之前對它進行了測試,它確實考慮了文件夾配額。那麼'GetDiskFreeSpace'就是這個問題。如果我沒有記錯的話,它不適用於Windows XP。我對Vista/2008並不完全確定。 (雖然你的答案中的鏈接表示這已在Vista中修復) –
非Ex版本可能僅限於根目錄,它是Windows 95上唯一的版本。它也限制爲2GB,因此它不再有用。如果只接受根目錄,不知道如何測試文件夾上的非Ex版本? – Anders