Можем ли мы использовать Int 13h (прямое чтение/запись диска) в операционных системах Windows или защищенный режим Windows не позволяет нам, и если да, то есть ли обходной путь? Заранее спасибо.
int 13h в защищенном режиме Windows?
Ответы (4)
Нет, подсистема Windows при инициализации во время загрузки перенастроила бы обработку прерываний BIOS для ядра, поскольку вызовы BIOS являются 16-битными, а не защищенным режимом, и, следовательно, int 13h будет недействительным. Вот почему существуют драйверы, написанные для 32-битного защищенного режима, который полностью обходит BIOS.
Напрашивается вопрос - зачем вы пытаетесь это сделать?
Windows уничтожит ваш код при любой попытке связи с BIOS, как бы говоря: «Эй, код, разговаривай со мной как с Windows Boss, ты не можешь обойти меня, м-у-у-ха-ха < em>НЕ ЗАХОДИТЕ ЗА ПРЕДЕЛАМИ МОЕГО ДОМЕНА'.
Единственный раз, когда int 13h будет использоваться, будет на этапе загрузки ДО загрузки Windows или если вы используете MSDOS в качестве системы, то есть без окон, просто загрузитесь в MSDOS, тогда int 13h будет допустимым для использования. В обоих случаях это будет 16-битный режим, и, следовательно, BIOS будет доступен.
Насколько я знаю, существует обычное прерывание 0x2E, это системный вызов ядра.
Короче говоря, я бы не рекомендовал пытаться обойти систему Windows, поэтому есть такая вещь, как драйвер, который сделает это за вас, вам лучше взаимодействовать с драйвером как с частью дисковой подсистемы ввода-вывода. и пусть это сделает это за вас.
Имея соответствующие разрешения (они есть у администратора), вы можете использовать Win32 CreateFile и связанные с ним функции для прямого доступа к физическим дискам и логическим разделам. См. документацию MSDN.
Как уже упоминалось, это не будет работать, если вы не используете 16-битную версию MSDOS, но если вы работаете в 32-битной системе и имеете debug.exe вы можете попробовать сами. (Вы можете сломать свою ОС!) Просто введите команды mov axe и т. д., int 13h и т. д., затем выполните их.