|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.10.2007, 20:40 | #1 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Прочитать загрузочную запись
Из знаний ассемблера, матем-ие операции .Нужно приименяя Ассемблер в Дельфи получить данные с логического диска( ИСПОЛЬЗУЯ прерывание: INT 25h ). Прочитать требуется с загрузочной записи РАЗНЫХ дисков параметры из записи. Формат загрузочной записи( Смещение, Размер байт, Содержание ): 0, 3, Команда JMP ххххх - ближний переход на программу нач-ой загрузки 3, 8, название фирмы-изготовителя OC и версия 11, 25, Расширенный блок параметров BIOS 36, 1, Физический номер устройства (0-НГМД, 80h-НМД) 37, 1, Зарезервировано 38, 1, Символ "("-признак расширенной загрузочной записи 39, 4, Серийный номер диска, создан во время форматир-ия 43, 11, Метка диска 54, 8, Содержит запись "FAT12" или "FAT16", которая идентифицирует формат таблицы размещения файлов (FAT)
|
01.10.2007, 21:17 | #2 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Цитата:
int 25 может работать только в режиме реальных адресов либо в режиме виртуального 8086 под Windows. Режим релаьных адресов исключается так как надо использовать Delphi, а дельфийские программы могут работать только под Windows. Режим виртулаьного 8086 тоже невоможен так как это исключает возможность нормальной работы самой дельфийской программы |
|
03.10.2007, 16:36 | #3 | |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Цитата:
|
|
03.10.2007, 19:52 | #4 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
первый сектор жесткого диска содержит главную загрузочную запись, в нём же содержится таблица размещения разделов (это таблица где написано расположение каждого раздела C:, D:,E:....).
Тебе надо просто считывать первый сектор жесткого диска, обработать его и вывести данные. Последний раз редактировалось rpy3uH; 03.10.2007 в 19:59. |
04.10.2007, 17:40 | #5 | |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
Цитата:
Есть слухи что в винде ХР это сделать не получится... |
|
04.10.2007, 20:16 | #6 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
правильно в WinNT это не получится. но если запустить паскалевскую прогу из под DOS, либо из под Win9x, то получится.
Надо просто считать самый первый сектор (т.е. нулевой сектор диска) жесткого диска. В регистре cx int25 принимает количество сектором для чтения, в dx логический номер сектора т.е. 0. там ещё в al надо указать номер диска и в ds bx адрес куда копировать данные. Как было уже сказано в WinNT это работать не будет. В WinNT надо использовать функции CreateFile и DeviceIoControl |
05.10.2007, 20:22 | #7 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Весь вопрос уперается в реализацию, есть мысли как это можно сделать?
|
05.10.2007, 20:57 | #8 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
вот пример: считывает первый килобайт с жётского диска и сохраняет в файл. Я дизассемблировал файл - вроде там находится первичный загрузчик и ещё какая-то ерунда, наверно таблица размещения разделов.
Код:
Код:
Последний раз редактировалось rpy3uH; 05.10.2007 в 21:04. |
25.12.2007, 17:21 | #9 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Вот код программы которую хотел получить, только ненашол структуру NTFS. В программу для упрощения использованно чтение дисков типа FAT12, FAT16 (дискет). Другие типы невводились.
Последний раз редактировалось Alter; 21.02.2008 в 19:22. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Xml, как правильно прочитать | Parcenson | Общие вопросы Delphi | 0 | 02.09.2008 06:29 |
Где прочитать про WinApi? | jurij | Win Api | 1 | 27.05.2008 13:32 |
прочитать что выдало CMD.exe | malevich | Win Api | 5 | 03.03.2008 21:35 |
Как прочитать сообщение по ICQ? | Иллидан | Работа с сетью в Delphi | 5 | 18.02.2008 18:33 |
как прочитать файл | бодяга | Общие вопросы Delphi | 1 | 09.09.2007 20:37 |