Архітектура ЕОМ
Наступні 5 байтів для 12-бітового формату або 7 байтів для 16-бітового формату завжди містять значення 0ffh.
Вся інша частина FAT складається з 12-бітових або 16-бітових комірок, кожна комірка відповідає одному кластеру диска. Ці комірки можуть містити такі значення: FAT12 FAT16
Що означає 000h0000h –вільний кластер,
ff0h - ff6hfff0h - fff6h –зарезервований кластер,
ff7hfff7h –поганий кластер,
ff8h - fffhfff8h - ffffh –останній кластер у списку,
002h - fefh0002h - ffefh –номер такого кластера в списку.
Безпосередній доступ до FAT може знадобитися для:
організації сканування каталогів для пошуку потрібних файлів;
для читання каталогів як файлів;
для організації захисту інформації від несанкціонованого копіювання.
Загальна схема використання FAT така:
1.•Читаємо FAT у пам'ять.Як уже зазначалося FAT розташовується відразу після BOOT-сектора (логічний сектор із номером 1). Для точного визначення початкового сектора FAT потрібно прочитати у пам'ять BOOT-сектор і проаналізувати вміст блока параметрів BIOS. У поле ressecs записана кількість зарезервованих секторів, що розташовуються перед FAT. Поле fatsize містить розмір FAT у секторах. Крім того, варто враховувати, що на диску може знаходитися декілька копій FAT. Операційна система використовує тільки першу копію, інші потрібні для утіліт відновлення вмісту диска. Кількість копій FAT знаходиться в полі fatcnt BOOT-сектора.
2.•Потім необхідно визначити номер першого кластера файла, для якого необхідно визначити його розташування на диску.
3.•Використовуємо номер першого кластера як індекс у FAT для отримання номера такого кластера.
4.•Повторюємо цю процедуру доти, поки отримане з FAT значення не буде відповідати кінцю файла.
Процедура витягу номера кластера з FAT залежить від формату таблиці розміщення файлів.
16-бітову FAT можна уявити як масив 16-бітових чисел. Для визначення номера такого кластера треба просто отримати 16-бітове значення з FAT, використавши в якості індексу номер попереднього кластера.
Для 12-бітової FAT процедура значно складніша.
Необхідно виконати такі дії:
•Помножити номер початкового кластера на 3.
•Розділити результат на 2 (тому що кожний елемент таблиці має довжину 1.5 байта).