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, не можеш да ме заобиколиш, мваа ха ха < em>НЕ НАСТЪПВАЙТЕ ИЗВЪН МОЯ ДОМЕЙН'.

Единственият път, когато int 13h ще бъде използван, ще бъде по време на етапа на зареждане ПРЕДИ Windows да се зареди или ако използвате MSDOS като система, т.е. без Windows, просто стартирайте в MSDOS, тогава int 13h ще бъде валиден за използване. И в двата случая те ще бъдат в 16-битов режим и следователно BIOS ще бъде достъпен.

Вярвам, че има често срещано прекъсване 0x2E, това е системното извикване на ядрото, доколкото знам.

Накратко, не бих препоръчал да се опитвате да заобиколите системата Windows, ето защо има такова нещо като драйвер, който да прави това вместо вас, би било по-добре да взаимодействате с драйвера като част от дисковата i/o подсистема и оставете това да се справи вместо вас.

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 ax и т.н. int 13h и т.н., след което ги изпълнете.

person Community    schedule 23.01.2010

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

person AndersK    schedule 23.01.2010