Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы СПО / Мет6.doc
Скачиваний:
28
Добавлен:
12.04.2015
Размер:
406.02 Кб
Скачать

Структура элемента каталога fat в Windows

Смеще-ние

Размер, байт

Описание

00h

8

Имя файла. Все буквы заглавные. До 8 символов имя дополняется пробелами (код 20h).

Первый символ имени (смещение 0) может иметь специальное значение:

= 00h – элемент каталога никогда не использовался

= E5h – файл удален

= 2Eh (точка) – псевдоним каталога

08h

3

Расширение файла. Все буквы заглавные. До 3 символов дополняется пробелами.

0Bh

1

Атрибуты файла – комбинация битов:

бит 0 – только чтение (readonly);

бит 1 – скрытый (hidden);

бит 2 – системный (system);

бит 3 – метка тома (volume label);

бит 4 – подкаталог (directory entry);

бит 5 – архивный (archive).

0Ch

1

Используется в Windows NT: регистр символов в полях имени и расширения (верхний / нижний)

0Dh

1

Время создания, мсек

0Eh

2

Время создания в формате DOS:

биты 0-4 – секунды, умноженные на 2 (0..30);

биты 5-10 – минуты (0..59); биты 10-15 – часы (0..23)

10h

2

Дата создания в формате DOS:

биты 0-4 – день (1..31); биты 5-8 – месяц (1..12); биты 9-15 – год от 1980 (0..119).

12h

2

Дата последнего обращения в формате DOS

14h

2

Старшее слово номера начального кластера в FAT32

16h

2

Время последней модификации в формате DOS

18h

2

Дата последней модификации в формате DOS

1Ah

2

Младшее слово номера начального кластера

1Ch

4

Размер файла в байтах (максимальный размер 4 Гб). Для каталогов равен 0.

В VFAT на каждый файл с длинным именем отводится несколько смежных 32-байтовых элементов каталога. В первых из них хранится длинное имя в кодировке Unicode (таблица 2), в последнем – короткое имя (алиас), атрибуты, длина файла и пр. в формате DOS (таблица 1).

Таблица 2

Структура элемента каталога с длинным именем

Смеще-ние

Размер, байт

Описание

00h

1

Порядковый номер. У последнего элемента к порядковому номеру прибавляется 40h

01h

10

Младшие 5 символов имени (2 байта на символ)

0Bh

1

Атрибуты (всегда равно 0Fh)

0Ch

1

Зарезервировано и равно 0

0Dh

1

Контрольная сумма, которая вычисляется из алиаса 8.3 по правилу: i=1..11, на каждом шаге сумма циклически сдвигается вправо на один бит и суммируется с i-м символом короткого имени.

Она одинакова для всех элементов, относящихся к одному файлу.

0Eh

12

Следующие 6 символов имени

1Ah

2

Номер начального кластера = 0

0Ch

4

Старшие 2 символа имени

Элементы каталога, содержащие длинное имя, нумеруются от 1 до N и хранятся в каталоге от последнего к первому: сначала располагается элемент номер N, с последними символами имени, а непосредственно перед алиасом лежит элемент номер 1 с первыми символами имени.

Программы DOS корректно работают с элементами каталога, содержащими короткие имена, и «не видят» элементы каталога с описаниями длинных имен по двум причинам. Во-первых, поле атрибутов равно 0Fh, что соответствует установленным атрибутам «только для чтения», «скрытый», «системный», «метка тома», а большинство ПО игнорирует описания файлов с атрибутом «метка тома». Во-вторых, поле «номер начального кластера» устанавливается в ноль, запрещенную величину для файлов DOS.

Все описанные ниже функции для работы с файловой системой вызываются через прерывание INT 21h. Если операция завершилась успешно, возвращается CF=0, при ошибке CF=1.

Функции LFN не поддерживаются в старых версиях DOS и Windows NT: после вызова AX=7100h, и флаг CF не изменяется. Рекомендуется перед вызовом функций LFN устанавливать CF=1. Тогда, если LFN не поддерживается, будет возвращен признак ошибки.

Е

сли длинные имена содержат русские буквы, то при вызове функцийLFN имена должны быть заданы в альтернативной кодировке DOS. В противном случае преобразование ASCII в Unicode будет некорректно, и функции LFN возвратят ошибку.

Соседние файлы в папке Лабы СПО