VB聲明
Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long
說明
獲取與一個磁碟的組織有關的信息,以及了解剩餘空間的容量
返回值
Long,非零表示成功,零表示失敗。會設定GetLastError
參數表
參數 類型及說明
lpRootPathName String,不包括卷名的一個磁碟根路徑
lpSectorsPerCluster Long,用於裝載一個簇內扇區數的變數
lpBytesPerSector Long,用於裝載一個扇區內位元組數的變數
lpNumberOfFreeClusters Long,用於裝載磁碟上剩餘簇數的變數
lpTtoalNumberOfClusters Long,用於裝載磁碟上總簇數的變數
註解
在採用FAT16格式的windows95系統中,如一個驅動器(分區)的容量超過了2GB,則不應使用這個函式。此時,這個函式能識別的最大分區容量只有2GB
VC聲明
BOOL GetDiskFreeSpace(
LPCTSTR lpRootPathName, //rootpath
LPDWORD lpSectorsPerCluster, //sectorspercluster
LPDWORD lpBytesPerSector ,//bytespersector
LPDWORD lpNumberOfFreeClusters, //freeclusters
LPDWORD lpTotalNumberOfClusters //totalclusters
);
BOOL GetDiskFreeSpace(
LPCTSTR lpRootPathName,//盤符
LPDWORD lpSectorsPerCluster, //每簇的扇區數
LPDWORD lpBytesPerSector, //每扇區的位元組數
LPDWORD lpNumberOfFreeClusters,//空餘簇的數量
LPDWORD lpTotalNumberOfClusters //全部簇的數量
);
簇 - 檔案系統用來管理檔案數據的最小單位。
每一個簇都是由連續的幾個扇區組成,例如
通常是由1/2/4/8/16...扇區組成。
FAT16/32 - 4K、8K
NTFS - 4K
剩餘空間(TotalLetfSize) = 空餘簇數量 * 每簇的扇區數 * 每扇區位元組數。
功能說明
該函式是獲取指定磁碟的信息(包括剩餘空間的信息)
函式不能獲取到卷的大小超過2GB的磁碟的信息,如果要獲得可以使用GetDiskFreeSpaceEx函式;來實現
參數說明
lpRootPathName,磁碟的根目錄,如果設定為空,函式就使用當前目錄作為這個參數傳入,如果指定的是一個UNC名的話,檔案名稱的最後必須帶上一個反斜槓
lpSectorsPerCluster, 指定每個簇的扇區數目
lpBytesPerSector 指定每個扇區的位元組數目
lpNumberOfFreeClusters, 磁碟總的空閒簇數目
lpTotalNumberOfClusters 磁碟總的簇數目
返回值
調用成功 將返回一個非0值
調用不成功 返回0 可以通過GetLastError來獲得錯誤信息