Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 40038.doc
Скачиваний:
7
Добавлен:
30.04.2022
Размер:
229.89 Кб
Скачать

Распознавание типа диска

Тип диска выводится с помощью компоненты Label.

TLabel *Label1;  

void main () 

char lpDiskName[]="C:\\"; 

drvtype=GetDriveType(lpDiskName); 

switch (drvtype) 

 { 

  case 0: Label1->Caption="диск не может быть определен";break; 

  case 1: Label1->Caption="корневой директорий несуществует";break; 

  case DRIVE_REMOVABLE : Label1->Caption="гибкий диск";break

  case DRIVE_FIXED : Label1->Caption="жесткий диск";break

  case DRIVE_REMOTE : Label1->Caption="удаленный диск";break

  case DRIVE_CDROM : Label1->Caption="компакт диск";break

  case DRIVE_RAMDISK : Label1->Caption="виртуальный диск";break

 

Информация о файловой системе

Компоненты Label1 - Label6 отображают значения флагов системы, Edit1 - метка тома, Edit2 - серийный номер, Edit3 - максимальная длина имени файла, Edit4 - имя файловой системы (FAT, CDFS,NTFS,HPFS).  

TEdit *Edit1;  TEdit *Edit2;  TEdit *Edit3;  TEdit *Edit4;  TLabel *Label1;  TLabel *Label2;  TLabel *Label3;  TLabel *Label4;  TLabel *Label5;  TLabel *Label6;  char lpVolumeNameBuffer[20];  DWORD nVolumeNameSize;  DWORD far lpVolumeSerialNumber;  DWORD far lpMaximumComponentLength;  DWORD far lpFileSystemFlags;  char lpFileSystemNameBuffer[20];  DWORD nFileSystemNameSize;  void main ()   {   char chper[25];   char lpDiskName[]="C:\\";   nVolumeNameSize=20;   nFileSystemNameSize=20;   if (GetVolumeInformation(lpDiskName,lpVolumeNameBuffer,     nVolumeNameSize,&lpVolumeSerialNumber,&lpMaximumComponentLength,     &lpFileSystemFlags,lpFileSystemNameBuffer,nFileSystemNameSize))       {  Edit1->Text=lpVolumeNameBuffer;  Edit2->Text=(AnsiString)CharUpper(ultoa(lpVolumeSerialNumber,chper,16))+"h";  Edit3->Text=(int)lpMaximumComponentLength;  Edit4->Text=lpFileSystemNameBuffer;  if (lpFileSystemFlags&FS_CASE_IS_PRESERVED)Label1->Caption="FS_CASE_IS_PRESERVED";  if (lpFileSystemFlags&FS_CASE_SENSITIVE) Label2->Caption="FS_CASE_SENSITIVE";  if (lpFileSystemFlags&FS_UNICODE_STORED_ON_DISK)   Label3->Caption="FS_UNICODE_STORED_ON_DISK";  if (lpFileSystemFlags&FS_PERSISTENT_ACLS)  Label4->Caption="FS_PERSISTENT_ACLS";  if (lpFileSystemFlags&FS_FILE_COMPRESSION) Label5->Caption="FS_FILE_COMPRESSION";  if (lpFileSystemFlags&FS_VOL_IS_COMPRESSED)Label6->Caption="FS_VOL_IS_COMPRESSED";       }  } 

Информация об объеме диска

Компоненты отображают: Edit1 - общее количество кластеров, Edit2 - количество свободных кластеров, Edit3 - количество занятых кластеров, Edit4 - количество секторов в кластере, Edit5 - количество байт в секторе. Edit6 - Edit8 общее, свободное и занятое дисковое пространство в байтах.   

TEdit *Edit1;  TEdit *Edit2;   TEdit *Edit3;  TEdit *Edit4;  TEdit *Edit5;  TEdit *Edit6;  TEdit *Edit7;  TEdit *Edit8;  DWORD far lpSectorsPerCluster;  DWORD far lpBytesPerSector;  DWORD far lpFreeClusters;  DWORD far lpClusters;  void main ()  {   char chper[25];   char lpDiskName[]="C:\\";   DWORD diskspace;// емкость диска в байтах   DWORD freediskspace;// свободная емкость диска в байтах     if (GetDiskFreeSpace(lpDiskName,&lpSectorsPerCluster,&lpBytesPerSector,  &lpFreeClusters,&lpClusters))  {       diskspace=lpClusters*lpSectorsPerCluster*lpBytesPerSector;       freediskspace=lpFreeClusters*lpSectorsPerCluster*lpBytesPerSector;  Edit1->Text=ultoa(lpClusters,chper,10);  Edit2->Text=ultoa(lpFreeClusters,chper,10);  Edit3->Text=ultoa(lpClusters-lpFreeClusters,chper,10);// занятые кластеры  Edit4->Text=ultoa(lpSectorsPerCluster,chper,10);  Edit5->Text=ultoa(lpBytesPerSector,chper,10);  Edit6->Text=ultoa(diskspace,chper,10);  Edit7->Text=ultoa(freediskspace,chper,10);  Edit8->Text=ultoa(disksize-freediskspace,chper,10);// занятая емкость диска в байтах  - }  } 

Именно эти функции подразумевают, когда говорят о проверке конфигурации файловой и дисковой системы. Файловые информационные функции - это те функции, которые получают более частную информацию о конкретных файлах и каталогах (директориях). К такой информации можно отнести следующие ее основные виды:

  • текущая директория;

  • полный путь к файлу и имя файла;

  • атрибуты файла;

  • размер файла;

  • наличие либо отсутствие искомого файла.