Академический Документы
Профессиональный Документы
Культура Документы
Так выглядит файловая запись в FAT32. Большинство полей нам не интересны, нужны только следующие:
DIR_CrtTime - DIR_CrtDate – 2 байта каждое. Содержит информацию о времени и дате создания файла или
директории с точностью до двух секунд. Конкретно по битам (счёт с нуля):
o 0–4 – год (1980–2107)
o 5–8 – месяц (1–12)
o 9–13 – день (1–31)
o 14–18 – час (0–23)
o 19–24 – минуты (0–59)
o 25–29 – секунды (0–29 с шагом 2)
Возникает вопрос. А чё, FAT32 так тупо устроен, что не может мне точно секунды записать? Смотри
DIR_CrtTimeTenth – 2 байта. Содержит счётчик десятков миллисекунд времени создания (значения 0–199).
Вот здесь и лежит точная секунда и даже почти миллисекунда
Аналогично DIR_WrtTime – DIR_WrtDate (DIR_WrtTimeTenth нет) для времени и даты последней
модификации
DIR_FileSize – 4 байта. Содержит информацию о размере файла в байтах. Максимально допустимый
размер файла в FAT32 – это 4ГБ – 1Б (0xffffffff (тут 8 f-ок если что))
Вообще, у LFN-записи своя структура
Но мы её не разбирали и вообще их игнорируем, так что нам на эту структуру должно быть, мягко говоря, похуй.
Стоит только заметить, что позиция LDIR_Attr совпадает с DIR_Attr в обычной записи (12-й байт), что облегчает
идентификацию записей (просто смотреть на этот конкретный байт и больше никуда)
Каждая запись в таблице FAT32 имеет размер в 4 байта. Размер всей таблицы определяется полями "sectors per
FAT" (у нас было 23) и "bytes per sector" (у нас было 512) из загрузочного сектора
Записи в таблице FAT32 могут быть связаны в цепочки, чтобы обеспечить хранение файлов большого размера.
Каждый файл начинается с первого кластера, а каждый последующий кластер в файле ссылается на следующий
кластер в цепочке
Также создатели FAT32 зачем-то придумали две зарезервированных записи в начале (те, которые по 4 байта), из-
за чего нам при чтении приходилось отступать их. На вопрос «Для чего они нужны ?» Женя так и сказал: «Ну вот
так придумали»