Консультация № 161159
23.02.2009, 01:35
0.00 руб.
0 2 0
Извините может не по адресу. Меня интересует NTFS. Я в первые таким вопросом занимаюсь. Для начала пытаюсь найти начало MFT. Читаю загрузочный снктор (CreateFile ( "////.//C:", ........) qword +30h номер начального кластера MFT * SectorPerCluster*512 будет файловая позиция. На виртуальной машине (WMWare) так оно и есть. На физической не хватает еще 3Fh секторов (даже +1 сектор 40h). В поле кол. скрытых секторов (+1Сh) 3Fh присуствует, но в описании сказано это поле в NTFS не используется. Сам раздел основной, начинается как раз по смещению 3Fh секторов от MBR .Что это разные версии? Где можно найти более-менее членораздельное описание?. (И еще на другую тему: с удивлением узнал что по дескриптору открытому CreateFile ( "////.//PHYSICALDRIVE[n], ...) можно писать куда угодно. Любой желающий может "грохнуть" систему?)

Обсуждение

Неизвестный
24.02.2009, 06:18
общий
Добрый день, ZzKesha!

Если что-нить узнаете, напишите сюда тоже, интересно

А сами через CreateFile ( "////.//PHYSICALDRIVE[n], ...) систему ронять не пробовали? Оно на _запись_ открывается?
Неизвестный
24.02.2009, 21:21
общий
На запись отрывается ////.//PHYSICALDRIVE0 ////.//PHYSICALDRIVE1 и т.д., а также ////.//C: ////.//D: и т.д. ронять не пробывал, пробывал так:
HANDLE hDrive = CreateFile ("////.//PHYSICALDRIVE0", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
BYTE buf[512]; DWORD ReadBytes;
ReadFile (hDrive, buf, 512, &ReadBytes, 0);
WriteFile (hDrive, buf, 512, &ReadBytes, 0);
Все пожалуйста. Перемещать указатель обычным образом SetFilePointer..., CreateFileMapping не работает, Кроме того HANDEL Полученный таким образом можно пользовать как hDevice, в DeviceIoControl, там много интересных операций.
Я вообще-то хочу загрузчик небольшой сделать (у меня часто буки меняются конторские, с Vista-й многое старье не работает, а оно нужно), уже не раз делал, но проблема в том, что "законных" 446 байт все-таки маловато, я оставлял не распределенный кусок между разделами, и туда пихал код (DOS-кий COM файл ORG 7C00h и т.д), каким ни-будь редактором диска. Что бы сделать это по "человечески" приходится рыться во всех этих NTFS-ах.
Форма ответа