Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

VFAT

Файловая система VFAT (Virtual FAT), реализованная в Windows NT 3.5, Windows 95 (DOS 7.0), - это файловая система FAT , включающая поддержку длинных имен файлов (Long File Name, LFN) в кодировке UNICODE (каждый символ имени кодируется 2 байтами). VFAT использует ту же самую схему распределения дискового пространства, что и файловая система FAT, поэтому размер кластера определяется величиной раздела.

В VFAT ослаблены ограничения, устанавливаемые соглашениями по именам файлов FAT:

  • имя может быть длиной до 255 символов.
  • в имя можно включать несколько пробелов и точек, однако, текст после последней точки рассматривается как расширение.
  • регистр символов в именах не различается, но сохраняется.

Основной задачей при разработке VFAT была необходимость корректной работы старых программ, не поддерживающих длинные имена файлов. Как правило, прикладные программы для доступа к файлам используют функции ОС. Если у элемента каталога установить “нереальную” комбинацию битов атрибутов: “только для чтения”, “скрытый”, “системный”, “метка тома” – то любые файловые функции старых версий DOS и Windows не заметят такого элемента каталога. В итоге для каждого файла и подкаталога в VFAT хранится два имени: длинное и короткое в формате 8.3 для совместимости со старыми программами. Длинные имена (LFN) хранятся в специальных записях каталога, байт атрибутов, у которых равен 0Fh. Для любого файла или подкаталога непосредственно перед единственной записью каталога с его именем в формате 8.3 находится группа из одной или нескольких записей, представляющих длинное имя. Каждая такая запись содержит часть длинного имени файла не более 13 символов, из всех таких записей ОС составляет полное имя файла. Поскольку одно длинное имя файла может занимать до 21 записи, а корневой каталог FAT ограничен 512 записями, желательно ограничить использование длинных имен в корневом каталоге.

Содержание

Размер (байт)

Порядок следования

1

Первые пять символов LFN

10

Байт атрибутов (0Fh)

1

Указатель типа (всегда 0)

1

Контрольная сумма части имени

1

Следующие шесть символов LFN

12

Номер начального кластера (всегда 0)

2

Следующие два символа LFN

4

Табл. 4. Элемент каталога для длинного имени

Короткое имя генерируется файловой системой автоматически в формате 8.3. Для создания коротких имен (псевдонимов) файлов используется следующий алгоритм :

  • Из длинного имени удалить все символы не допустимые в именах FAT. Удалить точки в конце и начале имени. После этого удалить все точки, находящиеся внутри имени кроме последней.
  • Обрезать строку, расположенную перед точкой, до 6 символов и добавить в ее конец "~1". Обрезать строку за точкой до 3 символов.
  • Полученные буквы преобразовать в прописные. Если сгенерированное имя совпадает с уже существующим, то увеличить число в строке "~1".

Данный алгоритм зависит от версии операционной системы и в будущих версиях может меняться.

Редактирование файлов программами, не поддерживающими длинные имена файлов, может приводить к потере длинных имен. Windows обнаруживает подобные элементы каталога, так как их контрольная сумма не соответствует больше тому, что записано в последующей записи каталога в формате 8.3. Однако такие записи не удаляются системой автоматически, они занимают дисковое пространство, до тех пор, пока вы не запустите программу ScanDisk, входящую в состав операционной системы. Большинство старых дисковых утилит воспримут записи, соответствующие длинным именам, как ошибки логической структуры диска. Попытки использовать данные утилиты, в лучшем случае приведет к потере длинных имен, а в худшем - к потере информации на диске.