Указывает на переменную, содержащую общее количество кластеров на диске.
Возвращаемые значения
Если функция выполнена успешно, возвращается ненулевое значение.
Если функция выполнена с ошибкой, возвращается нулевое значение. Для получения расширенной информации об ошибке следует вызвать функцию GetLastError.
Примечания
Windows 95:
Функция GetDiskFreeSpace возвращает некорректные значения для томов, объемом более 2 гигабайт. Функция обрезает значения, сохраняемые в *lpNumberOfFreeClusters и *lpTotalNumberOfClusters так, чтобы информация об объеме никогда не была более 2 гигабайт.
Даже для томов, меньших 2 гигабайт, значения, записываемые в *lpSectorsPerCluster, *lpNumberOfFreeClusters, и *lpTotalNumberOfClusters могут быть некорректными. Операционная система делает это для того, чтобы вычисленных из этих параметров объем тома получился корректным.
Windows 95 OSR 2:
Функция GetDiskFreeSpaceEx доступна в операционных системах Windows 95, начиная с OEM Service Release 2 (OSR 2). Функция GetDiskFreeSpaceEx возвращает корректные значения всех томов, включая тома, превышающие 2 гигабайта.
Для определения количества свободных байтов на определенном диске может быть использована более простая функция, включенная в Builder C++ DiskFree.
Эта функция возвращает количество свободных байтов на диске, причем 0 = текущий диск, 1 = A, 2 = B, и так далее.
Если указан неверный номер диска, функция возвращает значение -1.
//============= Определение дискового пространства ============
DWORD disk_present;
disk_present=GetLogicalDrives();
int n_disk=31; // Количество дисков вообще
for(int i=0;i<32;i++)
{ if(((disk_present<<i)&(1<<31))==0)
N_disk--; // Количество дисков вообще (начиная со
//старшего диска)
Else
Break; // Выход, как только найден старший диск
}
num_disk=0; // Количество разделов жестких дисков
for(int i=0;i<n_disk;i++)
{ a.sprintf("%c:\\",i+'c'); // Например, для I=2
//формируется строка E:\
if(GetDriveType(a.c_str())==DRIVE_FIXED) // Проверка на
// фикс. диск
num_disk++; // Переход к следующему диску
Else