Автор |
Сообщение |
zedes Форумчанин |
|
Уважаемые программеры, кто мне сможет ответить конкретно на следующие вопросы:
И так берем карту CD, форматируем в FAT, записываем на нее три файла,
далее делаем образ этой карты.
Вот мои три файла: risun1.gif Корневой каталог диска.
Давайте разберем первый файл:stroka.txt
По смешению 0x5C21F:0x5C21E:0x5C21D:0x5C21C - его размер в байтах, который равен 1200 байт, который занимает /512 = 3 кластера.
Следующий рисунок: risun2.gif. Начало таблицы Fat.
И так Первые 4 байта - подпись, F8 FF FF FF, далее по идее должно быть номера следующих кластеров, но их нет одни FF, что за хрень?
И где еще два файла?
И опять если файл дробится, то есть последовательно не записан, где тогда это записано?
Может посоветуете какую нибудь книжку хорошую по этому поводу?
risun2.gif |
Описание: |
|
Размер файла: |
3.95 KB |
Просмотрено: |
3160 раз(а) |
|
risun1.gif |
Описание: |
|
Размер файла: |
4.56 KB |
Просмотрено: |
3160 раз(а) |
|
|
|
|
|
|
sog Гуру |
|
существуют программы, которые показывают дампы в удобном для прочтения человеком виде |
|
|
|
|
zedes Форумчанин |
|
Какие программы, к примеру хотя бы одну? WinHex не предлагать.
Мне нужно как записываются файлы?
К примеру: начало таблицы (данных, файлов) FAT начинается со второго кластера. Тогда первые два кластера 0 1 отведены под так называемую таблицу размещения (разбиения) этих файлов.
При записи файла, файл пишется на первый свободный кластер (к примеру 2 кластер), далее ищется опять свободный кластер к примеру 5, и так далее. Все это должно быть отражено в начале таблицы FAT, то есть в первых двух кластерах.
Если я ручками делаю, то есть по смещению 0x0001F604 0x0001F605 и далее (03 00 04 00) для первого файла.
То все работает. Но ведь диск и без этих цифр работает.
Так все таки кто расскажет в чем причина? В чем нюанс? |
|
|
|
|
zedes Форумчанин |
|
Спасибо все за оказанное содействие.
Ларчик просто открывался: оказывается размер кластера напрямую зависит от размера диска, к примеру для 1Гбайтного - 16кБайт.
Далее каждый кластер разделен на сектора по 512 байт, в моем случае 32 сектора на кластер, то есть 32*512=16384 Байта.
Далее если файл более 16кБайт то файл занимает более одного кластера, и вот только в этом случае происходит запись информации о кластерах в начало таблицы fat.
Где то так.
Тема закрыта.
Всем еще раз спасибо за помощь. |
|
|
|
|
|
Аватары: Вкл|Выкл ЮзерИнфо: Вкл|Выкл Подписи: Вкл|Выкл
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы
|
|