Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, _ lpSectorsPerCluster As Long, _ lpBytesPerSector As Long, _ lpNumberOfFreeClusters As Long, _ lpTotalNumberOfClusters As Long) As Long
GetDiskFreeSpace возвращает информацию относительно количества места на диске. Эта информация включает число секторов в каждом кластере, число байтов в каждом секторе, число свободных кластеров и общего количества кластеров. Из-за ограничений 32-разрядного типа данных целого числа, эта функция работает должным образом только с дисками с объемом меньше, чем 2 гигабайт. Другая функция GetDiskFreeSpaceEx не имеет этих ограничений.
' Считаем и отображаем количество свободного места ' и общего объема диска C: Dim secPerClus As Long ' число секторов в кластере Dim bytePerSec As Long ' число байт в секторе Dim freeClus As Long ' число свободных кластеров Dim totalClus As Long ' общее число кластеров Dim retval As Long ' возвращаемое значение retval = GetDiskFreeSpace("c:\", secPerClus, bytePerSec, freeClus, totalClus) ' Отображаем информацию Debug.Print "Свободно:"; freeClus * secPerClus * bytePerSec; "байт" Debug.Print "Общий объем:"; totalClus * secPerClus * bytePerSec; "байт"