Disk bilgilerini bulmak için aşağıdaki Windows API'sini kullanabiliriz.
Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long
Bu fonksiyonda kernel32.dll içinde tanımlanmıştır.İlk parametreyi biz tanımlarız. Fonksiyon başarılı olmuş ise verilen parametrelerin içine disk bilgilerini koyar.Şimdi bu parametrelerin özelliklerine bakalım:
lpRootPathName As String : Bu parametre bizim tarafımızda verilen disk'in root'udur.
lpSectorsPerCluster As Long : Cluster başına düşen sector sayısıdır.
lpBytesPerSector As Long :Bir sector'ün byte olarak kapasitesidir.
lpNumberOfFreeClusters As Long : Boş cluster sayısıdır.
lpTtoalNumberOfClusters As Long : Toplam cluster sayısıdır.
Örnek
Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long
Bu fonksiyonda kernel32.dll içinde tanımlanmıştır.İlk parametreyi biz tanımlarız. Fonksiyon başarılı olmuş ise verilen parametrelerin içine disk bilgilerini koyar.Şimdi bu parametrelerin özelliklerine bakalım:
lpRootPathName As String : Bu parametre bizim tarafımızda verilen disk'in root'udur.
lpSectorsPerCluster As Long : Cluster başına düşen sector sayısıdır.
lpBytesPerSector As Long :Bir sector'ün byte olarak kapasitesidir.
lpNumberOfFreeClusters As Long : Boş cluster sayısıdır.
lpTtoalNumberOfClusters As Long : Toplam cluster sayısıdır.
Örnek
Kod:
[FONT=Arial]Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName [/FONT]
[FONT=Arial]As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lp [/FONT]
[FONT=Arial]TtoalNumberOfClusters As Long) As Long[/FONT]
[FONT=Arial]Private Sub Form_Load()[/FONT]
[FONT=Arial]Dim RootPathName As String[/FONT]
[FONT=Arial]Dim SectorsPerCluster As Long[/FONT]
[FONT=Arial]Dim BytesPerSector As Long[/FONT]
[FONT=Arial]Dim NumberOfFreeClusters As Long[/FONT]
[FONT=Arial]Dim TotalNumberOfClusters As Long[/FONT]
[FONT=Arial]Dim bos_kapasite As Double[/FONT]
[FONT=Arial]Dim dolu_kapasite As Double[/FONT]
[FONT=Arial]Dim toplam_kapasite As Double[/FONT]
[FONT=Arial]Dim ret As Long[/FONT]
[FONT=Arial]RootPathName = "c:"[/FONT]
[FONT=Arial]ret = GetDiskFreeSpace(RootPathName, SectorsPerCluster, BytesPerSector, NumberOfFreeClusters, [/FONT]
[FONT=Arial]TotalNumberOfClusters)[/FONT]
[FONT=Arial]MsgBox SectorsPerCluster, , "SectorPerCluster"[/FONT]
[FONT=Arial]MsgBox BytesPerSector, , "BytesPerSector"[/FONT]
[FONT=Arial]MsgBox NumberOfFreeClusters, , "FreeClusters"[/FONT]
[FONT=Arial]MsgBox TotalNumberOfClusters, , "TotalCluster"[/FONT]
[FONT=Arial]toplam_kapasite = SectorsPerCluster * BytesPerSector * TotalNumberOfClusters[/FONT]
[FONT=Arial]MsgBox toplam_kapasite, , "C sürücüsünün toplam alany bytes"[/FONT]
[FONT=Arial]bos_kapasite = SectorsPerCluster * BytesPerSector * NumberOfFreeClusters[/FONT]
[FONT=Arial]MsgBox bos_kapasite, , "C sürücüsününü boş alanı bytes"[/FONT]
[FONT=Arial]dolu_kapasite = toplam_kapasite - bos_kapasite[/FONT]
[FONT=Arial]MsgBox dolu_kapasite, , "C sürücüsündeki dolu alan bytes"[/FONT]
[FONT=Arial]End Sub[/FONT]


