Можем ли да използваме Int 13h (директно четене/запис на диск) в операционни системи Windows или защитеният режим на Windows не ни позволява и ако е така, има ли работен кръг? Благодаря предварително.
int 13h в защитен режим на Windows?
Отговори (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 подсистема и оставете това да се справи вместо вас.
С правилните разрешения (администраторът ги има), можете да използвате Win32 CreateFile и свързани функции за директен достъп до физически устройства и логически дялове. Вижте документацията на MSDN.
Както други споменаха, няма да работи, освен ако не използвате 16-битова - MSDOS, но ако сте на 32-битова система и имате debug.exe можете да го изпробвате сами. (Можете да сринете вашата операционна система!) Просто въведете командите mov ax и т.н. int 13h и т.н., след което ги изпълнете.