LpTotalNumberOfClusters

Указывает на переменную, содержащую общее количество кластеров на диске.

Возвращаемые значения

Если функция выполнена успешно, возвращается ненулевое значение.

Если функция выполнена с ошибкой, возвращается нулевое значение. Для получения расширенной информации об ошибке следует вызвать функцию 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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: