int 13h в защищенном режиме Windows?

Можем ли мы использовать Int 13h (прямое чтение/запись диска) в операционных системах Windows или защищенный режим Windows не позволяет нам, и если да, то есть ли обходной путь? Заранее спасибо.


person Auxiliary    schedule 23.01.2010    source источник
comment
Защищенный режим 32-битный, а не 16-битный. Поставщик 16-битных виртуальных машин (ntvdm.exe) подкинет вам птицу на int 13.   -  person Hans Passant    schedule 23.01.2010


Ответы (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, поэтому есть такая вещь, как драйвер, который сделает это за вас, вам лучше взаимодействовать с драйвером как с частью дисковой подсистемы ввода-вывода. и пусть это сделает это за вас.

person t0mm13b    schedule 23.01.2010
comment
Спасибо, Том. Это было именно то, что мне было нужно. - person Auxiliary; 23.01.2010

Имея соответствующие разрешения (они есть у администратора), вы можете использовать Win32 CreateFile и связанные с ним функции для прямого доступа к физическим дискам и логическим разделам. См. документацию MSDN.

person Mark Tolonen    schedule 23.01.2010

Как уже упоминалось, это не будет работать, если вы не используете 16-битную версию MSDOS, но если вы работаете в 32-битной системе и имеете debug.exe вы можете попробовать сами. (Вы можете сломать свою ОС!) Просто введите команды mov axe и т. д., int 13h и т. д., затем выполните их.

person Community    schedule 23.01.2010

Int 13h не работает в Windows попробуйте

person AndersK    schedule 23.01.2010