Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > MBR


Автор: Delphist 11.3.2004, 18:55
Как с помощью ассемблера получит доступ к из любой файловой системы - скажем NTFS, с любого логического диска - cкажем диска D получить доступ к 1 сектору 0 дорожки 0 головки жестокго диска, я подчеркиваю именно к 1 сектору 0 дорожки 0 головки жесткого диска, а не логического диска на котором находится код программы который читает 1 сектор 0 дорожку 0 головку.

Автор: p0s0l 11.3.2004, 20:50
Если из доса, то было бы проще паренной репы. А под Win - такой вопрос и меня интересует... В 98-ой еще видал способ (в MSDN где-то описан), в 2k/XP - не знаю (тот, что в 98-ой работает, в NT-ях не катит)...

Автор: p0s0l 11.3.2004, 22:37
Опа! Попробовал тот же способ, что и для чтения локальных дисков - работает!!! Круть! Все до ужасного ужаса просто оказалось.
Если надо читать логический диск, то делаешь CreateFile для имени:
"\\.\C:"
А если же надо, например, первый физический диск - то:
"\\.\PhysicalDrive0"
Как раз при чтении с нулевой позиции и будет тебе MBR, преобразование CHS в абсолютный № сектора думаю не вызовут проблем...
После CreateFile юзай SetFilePointer и ReadFile/WriteFile...

Автор: p0s0l 11.3.2004, 22:44
PS: для CD-ROM-ов вроде имена такие "\\.\Cdrom0"
Про способ для 98-ой: через "\\.\vwin32" можно вызывать прерывания DOS 13h, 25h, 26h...

Автор: Jin X 11.3.2004, 23:09
Файловая система тут ни при чём.
Если пишешь прогу под ДОС, используй ah=2/int 13h, но это будет работать только в ДОСе и в Win9X/ME.
Если пишешь под винду, то... см. http://forum.sources.ru/index.php?showtopic=13507

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)