Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABAS__OS.DOC
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
354.3 Кб
Скачать

4.3 Завдання до лабораторної роботи

В новому каталозі створити об’єкт Поштова скринька. Структура поштової скриньки: кількість повідомлень, загальний розмір усіх повідомлень, максимальний розмір поштової скриньки, Повідомлення 1, Повідомлення 2,… . Кожне повідомлення повинно задаватися в виді: розмір повідомлення, тіло повідомлення. Максимальний розмір поштової скриньки задається при створенні поштової скриньки.

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

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

  1. Які прапорці необхідно використовувати для функції CreateFile для створення нового і відкриття існуючого файлу?

  2. Задайте прапорці для функції CreateFile для дозволу введення – виведення з файлу іншими програмами

  3. Задайте прапорці для функції CreateFile для файлу, який спочатку читається, а потім модифікується.

  4. Яка функція використовується для визначення розміру файлу?

  5. Які параметри необхідно визначити для файлу, розмір якого менше 232 – 1?

  6. За допомогою якої функції можна зміститися в файлі на задану величину?

  7. Як задати відносно чого виконується зміщення?

5КЕРУВАННЯ ЗОВНІШНІМИ ПРИСТРОЯМИ. РОБОТА З ПРИСТРОЯМИ

5.1Мета роботи

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

5.2Підготовка до роботи

5.2.1Функції для визначення наявних пристроїв

Функція GetLogicalDrives:

DWORD WINAPI GetLogicalDrives(void);

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

Біт з номером 0 відповідає за пристрій A:

Біт з номером 1 відповідає за пристрій B:

Біт з номером 25 відповідає за пристрій Z:

Функція GetLogicalDriveStrings:

DWORD WINAPI GetLogicalDriveStrings(DWORD nBufferLength, LPTSTR lpBuffer);

Функція заповнює буфер lpBuffer розміром nBufferLength. Повертає кількість символів, які записані (без нульового завершувача). Для кожного пристрою виділяється 4 символи; інформація записується в вигляді:

L:\ і нульовий завершувач наприкінці (L – літера пристрою).

Наприкінці задається додатковий нульовий завершувач. таким чином для буфера потрібно 4n + 1 символів, де n – кількість пристроїв.

Функція GetDriveType визначає тип пристрою:

UINT GetDriveType(LPCTSTR lpRootPathName);

Повертає тип у вигляді константи:

DRIVE_UNKNOWN - невідомий пристрій;

DRIVE_REMOVABLE - знімний диск;

DRIVE_FIXED - жорсткий диск;

DRIVE_REMOTE - видалений диск;

DRIVE_CDROM - CD диск.

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

Функція

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, то такого повідомлення не буде.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]