2011-02-07 4 views
4

для некоторых коммерческий проект, который я выполняю Мне нужно уметь читать фактические данные, хранящиеся в файле $ mft.

Я нашел gpl lib, который мог бы помочь, но поскольку его gpl я не могу интегрировать его в свой код.

может кто-то пожалуйста указать мне на проект, который я мог бы использовать/или указать меня в соответствующих окнах API (то, что не требует 1000 строк кода для реализации)

Кстати, почему не окна просто разрешите мне в любом случае прочитать файл mft? (через созданный файл и метод чтения, если я хочу погубить мой диск, это мой бизнес, а не г-жа).

спасибо.

ответ

1

Это не будет тривиальное предложение. Для этого вам, вероятно, придется сворачивать свой собственный код. Вы можете получить информацию о деталях $ MFT, проверив http://www.ntfs.com/ntfs-mft.htm

Другой вариант - потратить некоторое время на просмотр исходного кода на проект с открытым исходным кодом NTFS-3g. Вы можете загрузить исходный код из http://www.tuxera.com/community/ntfs-3g-download/

Еще один хороший проект является NTFSProgs http://en.wikipedia.org/wiki/Ntfsprogs

удачи.

3

Вы должны просто открыть дескриптор тома, используя CreateFile() на \. \ X: где X - буква диска (проверьте документацию MSDN на CreateFile(), это упоминается в разделе Замечания) ,

Прочитайте первый сектор в структуре загрузочной записи NTFS (вы можете найти его в Интернете, найти Ричарда «Flatcap» Russon, изменить: я нашел его, http://www.flatcap.org/ntfs/ntfs/files/boot.html). Одно из полей в структуре загрузочного сектора дает начальное местоположение MFT в кластерах (LCN VCN 0 в $ MFT), вы должны сделать SetFilePointer(), чтобы это место было прочитано в нескольких секторах. Первые 1024 байта из этого местоположения являются файловой записью $ MFT, снова вы можете проанализировать эту структуру, чтобы найти атрибут данных, который всегда является нерезидентным, и его размер является фактическим размером файла MFT в то время.

Основные структуры для $ Boot, File Record и основных атрибутов (стандартная информация, имя файла и данные) вместе с кодом анализа должны запускать менее 1000 строк кода.