проблема с FAT12
Короче пробую написать драйвер фат12. образ фат12 списан с кпк. и первые 36 байт - занулены(кроме первых трех - там джамп). И возникает куча вопросов. значит так.. после таблицы фат в директори тейбл идут какие-то левые данные(фиг знает что, короче неитабельная инфа), потом блок 0 и инфаормация о файлах в корневом каталоге. Это все я успешно парсю. но есть одно НО!! допустим у меня есть поддиректория!! в ней файл. поле файла которое указывает на начальный кластер скажем = 3. Инфа начинается по смещеню 0х4Е00. Второй файл начинается с класера 4. Но информация пишется по смещению 5020. То-есть получается, что лиюо файл пишется НЕ в начало кластера(чего быть не может), либо длина его 528 байт(чего быть не может тоже).. Я пробовал расчитать где находится файл, у которого 237 кластер начальный (237-2)* 512 + 0х4С00. поскольку второй кластер начинается по смещению 0х4С00.. И это равно 0х227F0. Реально данныые начинаются по смещению 0х228А0.. то-есть расхождение уже довольно большое.. Как правильно расчитать смещение по которому читать кластер??
Цитата:
То-есть получается, что лиюо файл пишется НЕ в начало кластера(чего быть не может), либо длина его 528 байт(чего быть не может тоже)..
Чего не может быть, что длина больше 512 байт?
Так не путайте, уважаемый, кластер файловой системы с сектором поверхности диска. Согласен, стандартные прерывания BIOS для IBM-совместимых ПК понимают только сектора с областью данных в 512 байт, но кластеры обычно занимают несколько секторов - до 64 максимум (32КБ).
и что сектор может быть длиной 16 байт?? довольно сомнительно.. под кпк там ваще дофига интересных вещей - как например пустых 36 первых байт и пустая таблица фат... а файлы каким-то образом извлекаются самой кпкшкой..
36 первых байт означают что драйверу они не нужны . посмотри описания BS и BPB (как раз 36 байт).
я понимаю, что драйверу они не нужны, потому-что драйвер скорее всего использует некоторые значения установленые по умолчанию.. но мне нада свой драйвер написать, и мне они нужны.. или мне придется их подбирать ((