Розробка програмного забезпечення файлового менеджера
ЗМІСТ ВСТУП 1 СТРУКТУРА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ФАЙЛОВОГО МЕНЕДЖЕРУ 2 СТРУКТУРА ДАНИХ 2.1 Стуктури завантажувального запису 2.2 Структура службової області FAT 2.3 Структура елемента каталогу 2.4 Програмні структури 3 ОПИС АЛГОРИТМІВ ПЗ ФМ 3.1 Алгоритм пошуку дисків й іменування дисків 3.2 Алгоритм доступу к об'єктам файлової системи 3.3Алгоритм визначення зайнятого місця на розділі 3.4 Алгоритм зрівняння директорій 4 ОПИС ПРОГРАМНИХ МОДУЛІВ. 5 МЕТОДИКА РОБОТИ 6 ДОСЛІДЖЕННЯ РЕЗУЛЬТАТІВ ВИСНОВОК ДОДАТОК А - Код програми файлового менеджеру
ВСТУП Метою даного проекту є практичне дослідження та засвоєння прийомів роботи з дисковими накопичувачами у середовищі ОС Windows та роботи на низькому рівні з файловими системами FAT16/FAT32. Також підтримується робота з NTFS. Програма розроблена як WINDOWS програма, написана мовою С++. Інтерфейс програми був розроблений схожий до існуючих файлових менеджерів середовища Microsoft Windows.
1.СТРУКТУРАПРОГРАМНОГОЗАБЕЗПЕЧЕННЯФАЙЛОВОГОМЕНЕДЖЕРУ Файловий менеджер – програма, яка виконує візуалізацію вмісту каталогу, дозволяє виконувати різноманітні операції з об’єктами каталогу, наприклад, копіювання, видалення, правка та інші. Файловий менеджер, який був розроблений згідно з завданням до проекту виконує наступні функції: - пошук і найменування всіх логічних дисків у межах даної конфігурації технічних засобів; - визначення характеристик логічних дисків; - порівняння директорій за кількісним фактом. Також була реалізована підтримка довгих імента кирилиці для об’єктів директорій. Структура файлового менеджеру на рис. 1.1. Згідно зі структурою файловий менеджер має інтерфейс, в якому можна обрати наступну дію. Список дій показаний в структурі ФМ. Програма багатомодульну структуру. Кожний модуль виконує свої функції. Кожна дія, яку можна виконати, реалізована в окремій функції. Виключення із загального правил являє собою модуль manager.cpp, який реалізує як інтерфейс (за правилами створення VCL) так і роботу з NTFS та порівняння директорії. Тому на структурній схемі проекту він зустрічається двічі. При старті програми спочатку створюється інтерфейс користувача, виконується пошук усіх логічних дисків в межах даної конфігурації технічних засобів, відбувається найменування усіх знайдених дисків. Після цього обирається завантажувальний диск та зчитується кореневий каталог цього диску. Вміст каталогу показується на екрані. Далі програма очікує наступних вказівок користувача щодо подальшої діяльності. Рисунок 1.1 – Структура ФМ
2 СТРУКТУРА ДАНИХ У програмі використовуються декілька структур даних. Структури завантажувального запису, службової частини ФС та елементу каталогу – це системні структури. Також програма містить і власні структури – інформація про логічні диски та інші. 2.1 Структури завантажувального запису Інформація про розділи жорсткого диску зберігається у першому секторі пристрою. Це – головний завантажувальний запис MBR (MasterBootRecord). Структура MBR наведена у табл. 2.1. Таблиця 2.1 - Структура MBR Зсув Розмір, байт Опис Ім’я 0 1BE h Код завантажникаMBR reserved 1BE h 40 h Масив з 4х елементів Partition Table Partition Table 1FE h 2 Сигнатура MBR (0х55АА) sign Один елементPartitionTable може визначати логічний диск або розширений розділ. У межах одного жорсткого диска може бути лише один розширений розділ. Заповнення полів PartitionTableвиконується на етапі розбивання диска на розділи. В табл. 2.2 наведена структура елементу PartitionTable. Таблиця 2.2 - Структура елементу PartitionTable Зсув Розмір, байт Опис Ім’я 0 1 Ознака активного розділу (80h - активний / 0 - неактивний) priznak 1 1 Початкова голівка розділу starthead 2 2 Початкова доріжка та сектор розділу. 6-бітний номер сектору визначається як 6 молодших бітів молодшого байту, а 10-бітний номер циліндру, як 2 старші біти молодшого байту та розташовані за ним 8 бітів старшого байту starttrack 4 1 Код системи syscode 5 1 Кінцева голівка розділу endhead 6 2 Кінцева доріжка та сектор розділу endtrack 8 4 Початковий сектор розділу startsector 12 4 Розмір розділу у секторах size Поле код системи містить інформацію про тип ФС (основний розділ) або про ознаку розширеного розділу (05h, 0Fh). Основний розділ описує логічний диск, адресу початку якого можна взяти зі структури елементу PartitionTable – поле startsector. Це ж поле у елементі PartitionTable при ознаці розширеного розділу вказує на вторинну MBR. Ця MBR може містити максимум два елементи PartitionTable з чотирьох. Перший елемент буде вказувати на черговий логічний диск, а другий – на наступну вторинну MBR. Для отримання абсолютної адреси початку логічного диска необхідно до значення поля startsector додати адресу MBR, у якій описується даний диск. 2.2 Структура службової області FAT Після отримання абсолютної адреси початку логічного диска в програмі виконується зчитування першого сектора диска. В системі FAT це – завантажувальна область (BOOT – область). BOOT – область містить параметри та характеристики логічного диска. Її структура для ФС FAT12 та FAT16 наведена у табл. 2.3, а для системи FAT32 – у табл. 2.4. Таблиця 2.3 – Структура BOOT – сектору для FAT12 та FAT16 Зсув Розмір, байт Опис Ім’я 0 3 Команда JMP на код завантажника jmpcode 3 8 Назва операційної системи, у якій виконано форматування диску os 11 2 Кількість байт у секторі BytePerSector 13 1 Кількість секторів у кластері SectorPerCluster 14 2 Кількість резервних секторів SizeReserv 16 1 Кількість копій FAT NumberCopiesFAT 17 2 Кількість елементів кореневого каталогу MaxDirElem 19 2 Розмір диску в секторахдля дисків 32MB BigSize 36 1 Тип пристрою(для першого диску в системі 80h, для інших 0) -- 37 1 Резерв -- 38 1 Сигнатура 29h. Code 39 4 Серійний номер SerialNumber 43 11 Метка диску Label 54 8 Ідентифікатор FAT (‘FAT12’ або ‘FAT16’) FATID 62 2 Код завантажника -- Таблиця 2.4 – Структура BOOT – сектору для FAT32 Зсув Розмір, байт Опис Ім’я 0 3 Команда JMP на код завантажника jmpcode 3 8 Назва операційної системи, у якій виконано форматування диску os 11 2 Кількість байт у секторі BytePerSector 13 1 Кількість секторів у кластері SectorPerCluster 14 2 Кількість резервних секторів SizeReserv 16 1 Кількість копій FAT NumberCopiesFAT 17 4 Резерв --- 21 1 Описувач середовища MediaDescriptor 22 2 Резерв --- 24 2 Секторів на доріжці SectorPerTrack 26 2 Кількість голівок Heads 28 4 Кількість схованих секторів NumberHiddenSectors 32 4 Резерв --- 38 6 Резерв reserv1 44 4 Початковий кластер кореневого каталогу StartCluster 48 2 Початковий сектор структури FS INFO BegFS 50 2 Номер сектору з копією BOOT-розділу BootCopy 52 12 Резерв reserv2 64 1 Фізичний номер пристрою PhysNum 65 1 Резерв reserv3 66 1 Розширена сігнатура ExtSign 67 4 Серійний номер пристрою SerialNumber 71 11 Метка диску Label 82 8 Ідентифікатор (‘FAT32’) FATID 90 2 55AA --- Дана структура дозволяє отримати доступ до інформаційних полів BOOT-сектора необхідного логічного диска. BOOT-область в файлових системах FAT12,16 займає 1 сектор, а в ФС FAT32 – 3 сектори. Другий сектор містить додаткові параметри та сигнатури, а третій – продовження програми завантаження. За завантажувальною областю розташовані таблиці FAT – таблиці кластерів. Їх кількість визначається у BOOT-секторі. У файлових системах FAT12,16 за таблицями кластерів знаходиться кореневий каталог. Його розмір обмежений кількістю елементів, вказаних в BOOT-секторі. Кореневий каталог FAT32 може не розміщатися відразу ж за таблицями кластерів та не має меж щодо свого розміру. За всіма цими службовими областями знаходиться область даних. Таблиця FAT містить інформацію про розподілення дискового простору під об’єкти ФС. Ця таблиця – масив елементів із розмірністю 12, 16 або 32 біти в залежності від версії ФС. Номер елементу таблиці FAT відповідає номеру кластера в області даних. У таблиці 2.5 наведені можливі значення одного елементу FAT. Таблиця 2.5 – Значення елементу FAT FAT12 FAT16 FAT32 Пояснення 0 0 0 Вільний кластер FF0-FF6 FFF0-FFF6 0FFFFFF0-0FFFFFF6 Зарезервований кластер FF7 FFF7 0FFFFFF7 BAD-кластер FF8-FFF FFF8-FFFF 0FFFFFF8-0FFFFFFF Останній кластероб’єкту Усі інші значення вказують на наступний кластер. Послідовність кластерів, яка може належати одному об’єкту в таблиці ФАТ, представляє собою односпрямований список, голова якого в явному виді відсутня, а кінець визначається ознакою кінця ланцюжка. 2.3 Структура елемента каталогу Кожен каталог представляє собою послідовність дескрипторів. Структура дескриптора об’єкта з коротким ім’ям наведена у табл. 2.6 для FAT13/FAT16 та у табл. 2.8 для FAT32. Структура байту атрибуту у табл. 2.7. Таблиця 2.6 – Структура дескриптора для FAT12 / FAT16 Зсув Розмір, байт Опис Ім’я 0 1 Ознака дескриптору: 0 – вільний; E5h - видалений; інше-перший символ імені об’єкту fn 1 7 7 символів імені об’єкту name 8 3 Розширення об’єкту ext 11 1 Байт атрибутів attr 12 10 Резерв reserv 22 2 Час створення або останньої модифікації TimeMade 24 2 Дата створення або останньої модифікації DateMade 26 2 Молодша частина початкового кластеру об’єкта FirstCluster 28 4 Розмір об’єкта в байтах SizeFileInBytes Таблиця 2.7 – Байт атрибутів об’єкта Номербіту Значення біту Опис 0 1 Об’єкт тільки для читання 1 1 Об’єктсхованого типу 2 1 Об’єкт системного типу 3 1 Мітка тому 4 1 Директорія 5 1 Архівний файл 6 Не використовується Таблиця 2.8 – Структура дескриптора для FAT32 Зсув Розмір, байт Опис Ім’я 0 1 Ознака дескриптору: 0 – вільний; E5h - видалений; інше-перший символ імені об’єкту fn 1 7 7 символів імені об’єкту name 8 3 Розширення об’єкту ext 11 1 Байт атрибутів attr 12 1 Резерв reserv 13 2 Час створення (0.1 секунд) TimeMadeSec 14 2 Час створення TimeMade 16 2 Дата створення або останньої модифікації DateMade 18 2 Дата останнього звертання DateLast 20 2 Старший байт номеру першого кластеру, який був виділений об’єкту FirstClusterHigh 22 2 Час останньої модифікації об’єкту TimeLast 24 2 Дата останнього запису об’єкту DateLastWrite 26 2 Молодший байт номеру першого кластеру, який був виділений об’єкту FirstClusterLow 28 4 Розмір файлу в байтах SizeFileInBytes Якщо об’єкт іменується довгим ім’ям, то під нього виділяється декілька дескрипторів стандартного розміру (32б). Кількість дескрипторів визначається довжиною імені об’єкта. Максимальна довжина імені об’єкта – 255 символів, які зберігаються в форматі UNICODE (по два байти на один символ). У кожному дескриптору може зберігатися 13 символів імені об’єкту. Структура дескриптора для довгого імені наведена у табл. 2.9. Таблиця 2.9 – Структура дескриптора для довгого імені Зсув Розмір, байт Опис Ім’я 0 1 Номер порції імені fn 1 10 5 символів імені об’єкту FiveSymb 11 1 Байт атрибутів, дорівнює 0Fh attr 12 1 Завжди дорівнює 0 reserv 13 1 Контрольна сума короткого ім’я CRC 14 12 6 символів імені об’єкту SixSymb 26 2 Резерв reserv2 28 4 2 символа імені об’єкту TwoSymb Ім’я в останній порції довгого імені може бути меншим за 13 символів. У такому випадку значима частина імені завершується нулем. усі інші поля імені заповнюються FFFF.
Дипломные работы по информатикеЗМІСТ ВСТУП 1 СТРУКТУРА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ФАЙЛОВОГО МЕНЕДЖЕРУ 2 СТРУКТУРА ДАНИХ 2.1 Стуктури завантажувального запису 2.2 Структура службової
Оценок: 370 (Средняя 5 из 5)
Специалисты RetsCorp работают в digital-сфере более 7 лет. За это время мы разработали более 500+ успешных проектов. Основываясь на своем опыте и знании рынка, мы с уверенностью можем сказать, что будет работать, а что — нет. Заказывая создание лендинга для бизнеса в нашей студии, вы получаете работающие решения, необходимые именно вашему бизнесу.
Сотрудничая с нами, вы будете не клиентом, а нашим партнером. Благодаря этому мы будем развивать ваш бизнес как собственный. Мы так же как и вы заинтересованы в успехе проекта, поскольку ваша успешность будет нашей рекламой.