Re[4]: Root Directory!
От: Анна Савельева  
Дата: 18.10.04 12:50
Оценка:
Здравствуйте, Анна Савельева, Вы писали:

АС>Здравствуйте, 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 байта. Ну и считайте дальше сами;


PD>>--

PD>>With best regards,
PD>> Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.