Чтение сектора и ошибка KRNL386.EXE
Мне необходимо считать MBR диска, boot сектор раздела и т.п. При использовании функций bios чтения сектора (INT 13h, AH = 02h и INT 13h, AH = 42h) выскакивает ошибка KRNL386.EXE
Подскажите, почему возникает ошибка? И существуют ли в Builder'е другие средства посекторного чтения?
Спасибо !
Здравствуйте!
Мне необходимо считать MBR диска, boot сектор раздела и т.п. При использовании функций bios чтения сектора (INT 13h, AH = 02h и INT 13h, AH = 42h) выскакивает ошибка KRNL386.EXE
Подскажите, почему возникает ошибка? И существуют ли в Builder'е другие средства посекторного чтения?
Спасибо !
Да нет прерываение ты использовать можешь, но винду надо сначала перевести в реальный режим (ГЕМОРНО) а потом использовать прерывание.
Выход!
посмотри функцию в MSDN - - DeviceIoControl
Да нет прерываение ты использовать можешь, но винду надо сначала перевести в реальный режим (ГЕМОРНО) а потом использовать прерывание.
Выход!
посмотри функцию в MSDN - - DeviceIoControl
Интересно позволит ли WinNT/2000/XP использовать переход в реальный режим? Или это значения не имеет?
Собственно, DeviceIoControl оказался пригодным для чтения только в Win9x, используется VWIN32.VXD для работы с некоторыми прерываниями (Using VWIN32 to Carry Out MS-DOS Functions - MSDN).
А вот в WinNT/2000/XP VWIN32 уже нет, зато имеется возможность создать хендл на устройство "\\.\PhysicalDriveN".
Создаем, используем его в ReadFile() и - вот она :D - таблица разделов жесткого диска.
Собственно, DeviceIoControl оказался пригодным для чтения только в Win9x, используется VWIN32.VXD для работы с некоторыми прерываниями (Using VWIN32 to Carry Out MS-DOS Functions - MSDN).
А вот в WinNT/2000/XP VWIN32 уже нет, зато имеется возможность создать хендл на устройство "\\.\PhysicalDriveN".
Создаем, используем его в ReadFile() и - вот она :D - таблица разделов жесткого диска.
Если нужны исходники сбрось мне на мыло запрос.
[email]mikeshilkin@nc.ru[/email]
Если нужны исходники сбрось мне на мыло запрос.
[email]mikeshilkin@nc.ru[/email]
Здравствуйте! DeviceIOControl - это хорошо, чтобы узнать геометрию диска и т.п. А как с ее помощью прочитать такой-то сектор?
Здравствуйте! DeviceIOControl - это хорошо, чтобы узнать геометрию диска и т.п. А как с ее помощью прочитать такой-то сектор?
Испрользование DeviceIOControl для вас является обязательным? Вы могли бы воспользоваться функцией ReadFile.