Как пройти каталог FAT, файл

Я пытаюсь понять, как работает файловая система FAT. Из прикрепленного первого сектора раздела FAT 16 я понял,

  1. Байт на сектор = 512.
  2. Секторов на кластер = 4.
  3. Файловая система FAT 16.
  4. зарезервированные сектора = 4.
  5. Таблица FAT = 2.
  6. Количество записей в корневом каталоге = 512.
  7. Всего секторов = 204800.
  8. Сектор корневого каталога = 32.
  9. Размер таблицы FAT = 200.
  10. Первый сектор данных = 436 (4 + 2 * 200 + 32).
  11. Количество кластеров = 51091.

Первый сектор раздела FAT

Корневой каталог находится в 404-м секторе (0x32800-й байт)

Корневая директория

Корневой каталог по адресу 0x32800 прилагается. В корневом каталоге есть две папки с именами a, b и один файл с именем file.txt. На приведенном выше изображении показано, как различить файл и папку.

Сомнения, перечисленные ниже: 1. Запись в папке должна начинаться с 0x2E, но такого значения нет. Итак, как узнать, является ли данная запись файлом или папкой? 2. Как видите, каждая запись в корневом каталоге занимает 64 байта (вместо 32 байтов). Кажется, есть 2 32-байтовые записи для каждого файла и папки. Например, в папке "a" есть записи 0x32800 и 0x32820 (всего 64 байта). 3. Что означает значение 0x41 в этом контексте? Значение 0x41 появляется в 0x32800, 0x32820, 0x32840, 0x32880. Значения 0x32860 и 0x328A0 отличаются от 0x41. 4. Смещение 0x1A от адреса 0x32800 (0x32800 + 0x1a = 0x3281a) имеет значение 0, смещение 0x1A от адреса 0x32820 (0x32820 + 0x1a = 0x3283a) имеет значение 3. Какой правильный номер кластера соответствует папке 'a'?

2 ответа

Решение

Нет, записи в папке НЕ начинаются с "." (0x2E), если они не для. и.. записи подкаталогов (они не в корне). Байт атрибутов dirent имеет установленный бит 0x10, если директива является каталогом.

Вы также просматриваете каталог с длинными именами файлов. Исходная спецификация файловой системы FAT допускала только 11 имен символов, которые были в верхнем регистре и были в кодовой странице OEM. Windows 95 расширила это. Это довольно сложно объяснить в стеке потока, как это работает. Я предлагаю ознакомиться с документацией MSDN для LFN или длинных имен файлов.

http://technet.microsoft.com/en-us/library/cc938438.aspx

Файловая система FAT** сохраняет все файлы как один базовый размер, если файл не превышает этот размер, а затем повторно адаптирует размер для хранения всего файла.

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

Другие вопросы по тегам