· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Как узнать принадлежит ли сектор на диске файлу?

Посл.отвђт Сообщенiе


Дата: Ноя 4, 2004 14:50:25

Восстанавливаю данные с винта, решил немного оптимизировать свой труд.
Необходимо определить принадлежит ли заданный сектор какому нибудь файлу. Как это сделать?


Дата: Ноя 5, 2004 07:36:52

А какая файловая система?


Дата: Ноя 5, 2004 12:00:53

Изменить каждый 512 байт в файле (заксорить), а потом посмотреть, изменился ли первый байт в секторе. Потом восстановить. Должно работать с любой файловой системой и не требует умственных затрат :)


Дата: Ноя 5, 2004 20:49:03

„Изменить каждый 512 байт в файле“
Не, это лажа... вот те надо проверить сектор с номером 123456, и какой файл ты будешь колупать?
ИМХО, самое простое и надежное - разобрать бут-сектор, определить размер кластера, путем простых арифм. операций понять, какому кластеру принадлежит сектор, затем считать фат и посмотреть на запись, соответствующую найденому кластеру. Если там ноль - значит кластер(а следовательно, и сектор) пустой, если че-то есть - значит чем-то занят. Ну мож еще какие ньюансы есть, но идея такая.


Дата: Ноя 5, 2004 20:51:41

Да, это все, естественно, работает для фатов, для других - надо думать...


Дата: Ноя 6, 2004 02:13:36

ну вообщета система ФАТ32
to Stary я тоже так думал, но думал может есть готовый алгоритм...
а вообще столкнулся с тем что с этого винта не получилось считать (правда на TC) сектор не absread не через biosdisk (выходят странные ошибки типа потерены данные во время передачи или что то в этом роде)
правда на асм анологичный код делать я еще не пытался...
так что решел залить винт в файл, и читая блоками размером с сектор искать куски файлов по сигнатуре


Дата: Ноя 6, 2004 23:29:36

под дос пишешь?
А алгоритм я же дал ;-) Осталось только реализовать. Там ума то никакого не надо, только немного усидчивости...


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.065