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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2010, 11:57   #1
the_olka
Новичок
Джуниор
 
Регистрация: 03.01.2010
Сообщений: 1
По умолчанию Поиск MFT

Код:
Возникла проблема с поиском MFT - начинаю так 
h = CreateFile("\\\\.\\С:", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
DWORD dwBytesRead; DWORD dwBytesWrite; LONG BeginMFTSector;
ReadFile(h, buf, 512, &dwBytesRead, NULL);//чита первый сектор
//.....заполняю структуру NTFS_BOOT_SECTOR 
BeginMFTSector = sbpbntfs.bSecPerClust * sbpbntfs.FirstMFT;
//проверяла утилитой Disk Explorer - сектор начала МФТ находит правильно
DWORD dwPtrLow = SetFilePointer (h, sbpbntfs.wBytesPerSec*(BeginMFTSector+20),NULL, FILE_BEGIN);//ставим указатель файла на начало МФТ 
ReadFile(h, buf_FileRec, 1024, &dwBytesRead, NULL);//и читаю файловую запись
И тут вместо сигнатуры FILE0 выдает BOOT MGR или NTLDR-почему?хотя если работать с отформатированной флэшкой,то все практически нормально.

Последний раз редактировалось the_olka; 03.01.2010 в 15:53.
the_olka вне форума Ответить с цитированием
Старый 14.01.2010, 22:58   #2
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

[QUOTE=the_olka;429519]
Код:
DWORD dwPtrLow = SetFilePointer (h, sbpbntfs.wBytesPerSec*(BeginMFTSector+20),NULL, FILE_BEGIN);//ставим указатель файла на начало МФТ
А зачем 20 секторов пропускаешь?

И кстати, результат выражения sbpbntfs.wBytesPerSec*(BeginMFTSect or+20) может легко не вписаться в 32 бита, поэтому результат вычисления смещения нужно помещать в LARGE_INTEGER и передавать в SetFilePointer его LowPart и HighPart.

Последний раз редактировалось Stilet; 20.01.2010 в 16:02.
maxionans вне форума Ответить с цитированием
Старый 20.01.2010, 15:59   #3
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
;//ставим указатель файла на начало МФТ
Откуда Вы знаете, что начало MFT начинается с 20 сектора?
туплю

Последний раз редактировалось psycho-coder; 20.01.2010 в 16:08.
psycho-coder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
mft read DOLBY Общие вопросы C/C++ 7 21.03.2010 19:06
поиск red-serg Помощь студентам 1 09.01.2009 22:20
Поиск в БД Karinka БД в Delphi 9 07.12.2008 16:25
Поиск в бд KAKTYC SQL, базы данных 3 25.07.2008 13:21
Поиск Andr Microsoft Office Excel 2 18.07.2007 11:49