Системное программное обеспечение. Особенности программирования 32-разрядных процессоров. Рощин А.В. - 92 стр.

UptoLike

Составители: 

92
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
break; // Выход с последним найденным фикс. диском
}
a="";
for(int i=0; i<num_disk;i++)
{ if(DiskFree(i+3)/(1024*1024)>1000) // В мегабайтах
{ a="aa"; // Взведение флага, если свободно
// более 1 гигабайта
break;
}
}
if(a!="aa")
     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<1000) // В мегабайтах
        { a="aa";        // Взведение флага, если свободно
                         // более 1 гигабайта
          break;
        }
    }
  if(a!="aa")



                                       92