Інформація про файлову систему пристрою



Функція

BOOL WINAPI GetVolumeInformation(

LPCTSTR lpRootPathName,       // адреса кореневого пристрою

LPTSTR lpVolumeNameBuffer,  // Буфер для імені пристрою

DWORD nVolumeNameSize,      // Розмір буферу для імені

LPDWORD lpVolumeSerialNumber,    // Серійний номер пристрою

LPDWORD lpMaximumComponentLength, //Максимальний розмір імені файлу

LPDWORD lpFileSystemFlags,   // Властивості файлової системи

LPTSTR lpFileSystemNameBuffer, // Буфер для імені файлової системи

DWORD nFileSystemNameSize  // Розмір буферу для імені файлової системи

);

Можна проаналізувати багато властивостей файлових систем. Розглянемо декілька з них:

FILE_CASE_SENSITIVE_SEARCH - ім’я файлу з урахуванням регістру;

FILE_FILE_COMPRESSION     - файлова система підтримує стискання;

FILE_SUPPORTS_ENCRYPTION - файлова система підтримує прозоре шифрування;

FILE_UNICODE_ON_DISK - файлова система підтримує імена файлів у UNICODE;

FILE_VOLUME_QUOTAS        - файлова система підтримує квоти.

При виконанні цієї функції диски необхідно вставити, тобто, якщо не вставлено диску, то буде формуватися повідомлення про їх відсутність.

Для того, щоб не було такого повідомлення використовується функція SetErrorMode:

UINT WINAPI SetErrorMode(UINT uMode);

Якщо в якості режиму задати SEM_FAILCRITICALERRORS, то такого повідомлення не буде.

Визначення вільного місця на пристрої

Функція GetDiskFreeSpace визначає конфігурацію пристрою та вільне місце на ньому:

BOOL WINAPI GetDiskFreeSpace(

LPCTSTR lpRootPathName,       // Пристрій

LPDWORD lpSectorsPerCluster, // Секторів в кластері

LPDWORD lpBytesPerSector,              // Байт в секторі

LPDWORD lpNumberOfFreeClusters, //Кількість вільних кластерів

LPDWORD lpTotalNumberOfClusters //Загальна кількість кластерів

);

Нехай кількість секторів в кластері 8, тоді при розмірі сектору 512 максимальний розмір пристрою 232 * 23 * 29 = 244, тобто 16 терабайтів. Такий розмір не завжди достатній, тому є функція, яка дозволяє працювати з великими пристроями:

Функція GetDiskFreeSpaceEx:

BOOL WINAPI GetDiskFreeSpaceEx(

LPCTSTR lpDirectoryName,                           // Пристрій або каталог

PULARGE_INTEGER lpFreeBytesAvailable, //Доступних байтів

PULARGE_INTEGER lpTotalNumberOfBytes,  //Загальна кількість байтів

PULARGE_INTEGER lpTotalNumberOfFreeBytes // Вільних байті

);

Ця функція не тільки збільшує допустимі розміри, але і дозволяє заміст всього пристрою задавати папку, а також враховувати квоти на дисковий простір.

Порядок виконання лабораторної роботи

1. Визначить кількість пристроїв, які встановлені (функція GetLogicalDrives – кількість бітів, що дорівнюють 1 в полі результату);

2. Визначить імена встановлених пристроїв (функція GetLogicalDriveStrings);

3. Для кожного встановленого пристрою визначить його тип (функція GetDriveType);

4. Визначить вільний дисковий простір для усіх пристроїв (функція GetDiskFreeSpaceEx);

5. За допомогою функції GetVolumeInformation визначить серійний номер диску, його ім’я та ім’я файлової системи;

6. Реалізувати функцію копіювання файлу, яка спочатку перевіряє наявність необхідного диску і можливість виконання операції запису на нього, потім аналізує наявність необхідного вільного місця, і тільки потім виконує запис даних на диск. При читанні файлу та його записуванні виконувати шифрування (розшифрування) файлу з використанням операції складення по модулю 2 з серійним номером відповідного диску. Якщо файли на одному диску - шифрування – розшифрування не виконувати. Написати функцію для читання записів цього файлу.

 

Зміст звіту

- Документований текст розроблених програм та функцій;

- Тести, на яких перевірялась робота функцій;

- Висновки по роботі.

 

Контрольні запитання і завдання

1. Як визначити наявні пристрої для зберігання інформації. Яким чином можна узнати кількість таких пристроїв і імена кореневих каталогів для них.

2. Як узнати тип пристрою (дискета, жорсткий диск, CD, флеш, мережений диск)?

3. Як визначити максимальний розмір диску та розмір вільної пам’яті?

4. Як визначити серійний номер диску. Яку ще інформацію можна узнати за допомогою тієї ж функції?

 

ПЛАНУВАННЯ ПРОЦЕСІВ

Мета роботи

Вивчити основні алгоритми планування, реалізувати програмно ці алгоритми і порівняти їх, використовуючи різні показники.

 


Дата добавления: 2018-05-13; просмотров: 348; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!