Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2011, 13:00   #1
Neolit1819
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 51
Печаль Чтение MFT файла

Добрый день. пытаюсь прочитать информацию о бэкап файле MyBackup.bkf
Который по своей структуре является MFT файлом, на сколько я понял. Нужная мне инфа(имена файлов в бэке и т.д) хранится в дескрипоторных блоках.

собственно делаю так...
Код:
HANDLE file;
DWORD DW;
char arr[10];
file =CreateFile(_T("C:\\MyBackup.bkf"),
	GENERIC_READ |GENERIC_WRITE,
	FILE_SHARE_READ,
	NULL,
	OPEN_EXISTING,
	FILE_ATTRIBUTE_NORMAL,
	0);

	if(INVALID_HANDLE_VALUE == file) cout << "ERROR OPEN FILE" << endl; 
	else cout << "FILE OPEN"<< endl;

	ReadFile(file,
		&arr,
		8, //читаю 8 байт исходя из таблице ниже
		&DW,
		NULL);

for (int i=0;i<10;i++) //выводится :TAPE и сердечко О_о
	cout << arr[i];
Offset | Field Name | Type | Size
-------------------------------------------
0 00h |DBLK Type | UINT32|4 bytes
4 04h |Block Attributes | UINT32|4 bytes

Вот структура Ощего блока дескрипотора, подозреваю, что как раз в первых 2х записях и хранится нужная мне инфа, хотя учитывая выводимую информацию я явно делаю, что то не так

Просьба, знакомым с данным форматом помочь по мере возможности.
Neolit1819 вне форума Ответить с цитированием
Старый 02.05.2011, 10:57   #2
Neolit1819
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 51
По умолчанию

Похоже MFT не сильно популярная тема =(
Neolit1819 вне форума Ответить с цитированием
Старый 02.05.2011, 14:00   #3
Dayman
Форумчанин
 
Аватар для Dayman
 
Регистрация: 12.01.2011
Сообщений: 186
По умолчанию

Вы уверены, что там формат MFT вообще?
bkf - формат NTBackUp, причем для XP/Vista/Seven формат разный.

Цитата:
Сообщение от Neolit1819 Посмотреть сообщение
Код:
for (int i=0;i<10;i++) //выводится :TAPE и сердечко О_о
	cout << arr[i];
И чего вы хотите, выводя 2 уинта по 1 байту?

P.S. Сигнатура правильная. TAPE должно быть.

http://www.cnwrecovery.com/html/mtf__bkf.html
Все-таки нашел документацию к формату: http://download.microsoft.com/downlo...ms-bkup%5D.pdf
Lingua c++ non penis caninus est.

Последний раз редактировалось Dayman; 02.05.2011 в 14:05.
Dayman вне форума Ответить с цитированием
Старый 02.05.2011, 15:35   #4
Dayman
Форумчанин
 
Аватар для Dayman
 
Регистрация: 12.01.2011
Сообщений: 186
По умолчанию

Прочитал ваше сообщение.
Структура оказывается созвучна с MFT - называется MTF (Microsoft Tape Format), на этом общее кончается.

Ссылку на документацию удалось нарыть на википедии: http://laytongraphics.com/mtf/MTF_100a.PDF
Датирована документация 2000 годом. Поменялось там что-то или нет - я не знаю, однако для Vista/Seven есть программа, читающая старый MSBackup формат, так что скорее всего поменялось.
Документация занимает около 100 страниц. Сам формат с первого взгляда показался достаточно сложным.
Стоит того это дело или нет - решайте сами.
Lingua c++ non penis caninus est.
Dayman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Считать MFT запись указанного файла FatalLight Общие вопросы C/C++ 0 10.04.2011 14:27
чтение из файла Sparky Общие вопросы C/C++ 5 13.04.2010 18:47
mft read DOLBY Общие вопросы C/C++ 7 21.03.2010 19:06
Поиск MFT the_olka Win Api 2 20.01.2010 15:59
чтение файла Arteom Общие вопросы Delphi 6 27.08.2007 18:15