GetDiskFreeSpaceEx 使用 64 位整數(Int64/TLargeInteger)返回磁盤空間資訊,解決舊版 GetDiskFreeSpace 无法处理 2GB 以上磁盤的限制。
function GetDiskFreeSpaceEx(
lpDirectoryName: PChar; {磁盤根路徑,如 'C:'}
var lpFreeBytesAvailableToCaller: Int64; {調用者可用空間}
var lpTotalNumberOfBytes: Int64; {總空間}
lpTotalNumberOfFreeBytes: PInt64 {剩餘空間}
): BOOL;
procedure TForm1.FormCreate(Sender: TObject);
var d1, d2, d3: Int64;
begin
GetDiskFreeSpaceEx('C:', d1, d2, @d3);
Memo1.Clear;
with Memo1.Lines do
begin
Add(Format('可用空間: %.2f GB', [d1 / 1024 / 1024 / 1024]));
Add(Format('總空間: %.2f GB', [d2 / 1024 / 1024 / 1024]));
Add(Format('剩餘空間: %.2f GB', [d3 / 1024 / 1024 / 1024]));
end;
end;
效果圖:

說明: 三個返回值單位均為字節,除以 1024³ 換算為 GB。lpFreeBytesAvailableToCaller 考慮用戶配額,可能小於 lpTotalNumberOfFreeBytes。