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

 WASM Phorum —› WASM.WIN32 —› Запись секторов в NT/w2k/XP

. 1 . 2 . >>

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


Дата: Июн 20, 2004 16:26:08

Добрый день всем.

У меня возникла потребность редактировать MBR, но как это
делать в NT подобных системах я не знаю.
Пробовал через CreateFile/WriteFile но результат нулевой
хотя и ошибки не возникало.
Подскажите пожалуйста в каком направлении копать?

Зарание спасибо.

dword@nm.ru


Дата: Июн 20, 2004 16:57:58

Покапайся в hal.dll, там я видел некоторые функции для работы с таблицей разделов, может, чего нибудь и большее есть. Хотя, на мой взгляд, проще kmd написать и юзать девайс через порты. Можно сделать ioCallDriver к fs драверу, решай сам...


Дата: Июн 20, 2004 21:06:39

Есть простой способ из под админа - CreateFile(DEVICE_NAME);


Дата: Июн 20, 2004 21:12:48


Дата: Июн 21, 2004 03:30:11

Для CARDINAL
Мне кажется что должен быть более простой способ.
Вот интересно как это делает format.com (на самом деле
он EXE да еще и PE) или defrag.exe?

Для Zero Ice
Из под админа CreateFile/ReadFile читает MBR прекрасно,
а вот как писать в MBR? WriteFile в этом случае не
работает хотя и не выдает ошибку.

Для volodya
Ну нету там ничего про запись.


Дата: Июн 21, 2004 09:08:32

Кажись там было какое-то дополнительное требования - при записи размер блока должен быть кратен то-ли размеру сектора, то-ли 512 байтам....


Дата: Июн 21, 2004 09:16:12

format.com PE ехешник ?? Странно, делает он это через int 13h(). хотя,проще взять ice2.8 и им поглядеть, смотря какой версии формат.ком.
да , кстати , ты прав , это PEшник, работает как самостоятельный процесс без всяких там ntvdm, щас , погляжу чево он делает.... хм, интересно..


Дата: Июн 21, 2004 09:17:01

а вообще, дравер бы писал и не мучился, там процедура записи MBR занимает строчек 10 на асме....


Дата: Июн 21, 2004 11:35:01

Странно, а почему WriteFile не работает? Может, ты (как и я когда-то) после ReadFile забыл SetFilePointer?
Покажи код, подумаем...


Дата: Июн 23, 2004 15:55:38

> Пробовал через CreateFile/WriteFile но результат нулевой хотя и ошибки не возникало.
странно. если нет ошибки, то все должно быть ок
на kpnc.opennet.ru лежит SCSIlib.zip там дока как
обращаться к секторам в NT, приведен с десяток различных
методов, правда для CD, а не HDD, но для HDD они работают тоже, ибо с точки зрения XP между ними один хрен разница и то, и то SCSI устройства.


Дата: Июн 23, 2004 15:58:18

> Покапайся в hal.dll, там я видел некоторые функции для
> работы с таблицей разделов, может, чего нибудь и
> большее есть. Хотя, на мой взгляд, проще kmd написать и
> юзать девайс через порты. Можно сделать ioCallDriver к fs драверу, решай сам...
какие порты? господи, ну зачем там сложно... есть же ASPI/SPTI/cookie-mode/scsi mini-port... на худой конец, можно подрихтовать карту портов и сделать их доступными с прикладного уровня, хотя порты это саксь.


Дата: Июн 23, 2004 16:01:32

> Из под админа CreateFile/ReadFile читает MBR прекрасно,
> а вот как писать в MBR? WriteFile в этом случае не
> работает хотя и не выдает ошибку.
ты какой диск открываешь? физический или логический?
а шаре-доступ стоит? w2k пишет по всяком случае...
ес-но, админ должен быть.


Дата: Июн 23, 2004 16:02:27

> Кажись там было какое-то дополнительное требования -
> при записи размер блока должен быть кратен то-ли
> размеру сектора, то-ли 512 байтам....
а сам буфер выровнен на величину гранулярности памяти,
т.е. на 46 кб.


Дата: Июн 23, 2004 16:04:20

> format.com PE ехешник ??
а то!

> Странно, делает он это через int 13h().
хм? ты это серезно? в w2k - через ulib.dll


Дата: Июн 23, 2004 16:05:54

> а вообще, дравер бы писал и не мучился, там процедура записи MBR занимает строчек 10 на асме....
лучше отпадчить atapi.sys, выкинув нафиг пару джампов, тогда с диском можно будет делать все что угодно.
как падчить - написано в SCSIlib.zip

. 1 . 2 . >>


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