Здравствуйте, Анна Савельева, Вы писали:
АС>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>Привет!
PD>>Анна Савельева wrote: >>> >>> Здравствуйте, Аноним, Вы писали: >>> >>> А>Доброго времени суток! >>> >>> А>На днях решил пополнить свои знания относительно FAT, MBR и т.д. Эксперименты проводил с дискеткой и стандартным отладчиком( debug.exe ) Windows. Ну так вот. При создании директории в корне дискетки ее имя должно быть не больше 255 символов — это общеизвестно. Создадим такую директорию. Смотрим в Far'е — на это ушло 512байт. Хорошо! Теперь посмотрим через отладчик сколько на это ушло кластеров — и получается, что 2. Но это ведь уже 1024байта!!! В чем здесь может быть заковыка? >>> >>> Таблица FAT задает список кластеров файла. Если физически данные файла занимают один кластер, то в таблице FAT под этот файл выделяется две записи. Одна — для кластера с данными, и другая — просто содержит запись типа end-of-file.
PD>>Если данные файла занимают один кластер, то и в FAT используется один PD>>элемент, содержащий end-of-file. А номер первого кластера (он же PD>>единственнный) хранится в каталоге. АС>Точно. Я неправильно поняла код fat.
Все понятно. Дальше начала копать код; Обнаружила, что обычный FAT выделяет под имя 8 байт и под расширение 3 байта. Если имя файла 255 символов, то это уже extended fat, то есть там для одного файла создается несколько file dentry (их еще называют в коде слотами), причем для совместимости с первоначальным fat это сделано очень криво. В этом случае имя файла — в unicode и соответственно на каждый символ имени отводится по 2 байта. Ну и считайте дальше сами;