Файлы и каталоги
Файловая система DOS, Windows, Unix имеет древовидную структуру. В корневом каталоге располагаются 32-байтовые элементы, которые содержат информацию о файлах и других каталогах. Для чтения корневого каталога необходимо определить его расположение и размер.
Корневой каталог находится сразу за последней копией FAT. Количество секторов, занимаемых одной копией FAT, находится в блоке параметров BIOS в BOOT-секторе в поле fatsize, количество копий FAT - в поле fatcnt блока BPB. Следовательно, перед корневым каталогом находится один BOOT-сектор и (fatcnt*fatsize) секторов таблицы размещения файлов FAT.
Размер корневого каталога можно определить исходя из значения поля rootsize. В этом поле при форматировании диска записывается максимальное количество файлов и каталогов, которые могут находиться в корневом каталоге. Для каждого элемента в каталоге отводится 32 байта, поэтому корневой каталог имеет длину (32*rootsize) байтов.
Корневой каталог занимает непрерывную область фиксированного размера. Размер корневого каталога задается при форматировании и определяет максимальное количество файлов и каталогов, которые могут быть описаны в корневом каталоге. Для определения количества секторов, занимаемых корневым каталогом, можно воспользоваться следующей формулой:
RootSecs = (32*rootsize) / sectsize
В этой формуле sectsize - размер сектора в байтах, он может быть получен из соответствующего поля BOOT-сектора.
После корневого каталога на логическом диске находится область файлов и подкаталогов корневого каталога. В таблице изображены все области логического диска. (Такую структуру имеют логические диски, расположенные в разделах жестких дисков, а также дискеты).
Области логического диска |
Номер начального сектора на логическом диске |
BOOT-сектор и зарезервированные секторы |
0 |
Первая копия FAT |
ressecs – количество резервных секторов |
Вторая копия FAT |
ressecs+fatsize |
Корневой каталог |
ressecs+(fatsize*fatcnt) |
Область данных |
ressecs+(fatsize*fatcnt)+ (32*rootsize) / sectsize |
Область данных разбита на кластеры, причем нумерация кластеров начинается с числа 2. Кластеру с номером 2 соответствуют первые секторы области данных.
Каталоги (корневой и подкаталоги) содержат 32-байтовые элементы - дескрипторы, описывающие файлы и другие каталоги. Формат дескриптора:
Смещение |
Размер |
Содержимое |
(+0) |
8 |
Имя файла или каталога, выравненное на левую границу и дополненное пробелами. |
(+8) |
3 |
Расширение имени файла, выравненное на левую границу и дополненное пробелами. |
(+11) |
1 |
Атрибуты файла. |
(+12) |
10 |
Зарезервировано. |
(+22) |
2 |
Время создания файла или время его последней модификации. |
(+24) |
2 |
Дата создания файла или дата его последней модификации. |
(+26) |
2 |
Номер первого кластера в цепочке, отведенной файлу. |
(+28) |
4 |
Размер файла в байтах. |