| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |