问题描述
我们可以在Windows操作系统中使用Int 13h(直接磁盘读/写),还是Windows保护模式不允许我们这样做?预先感谢.
Could we use the Int 13h (direct disk read/write) in Windows operating systems or does the windows protected mode not allow us, and if so is there a work round?Thanks in advance.
推荐答案
否,Windows子系统在引导过程中进行初始化时会重新配置内核的BIOS中断处理,因为BIOS调用是16位的,不是保护模式因此int 13h将是无效的.这就是为什么有些驱动程序是为32位保护模式编写的,从而完全绕过了BIOS.
No, The Windows sub-system, upon initialization during boot, would have reconfigured the BIOS interrupt handling for the kernel as the BIOS calls are 16bit, not protected mode and hence int 13h would be invalid. That is the reason why there are drivers which are written for 32bit protected mode which bypasses the BIOS completely.
哪个请求解决-您为什么要尝试这样做?
Which begs the question - why are you trying to do that?
任何试图与BIOS通信的Windows都会杀死您的代码,就像在说'嘿,您的代码,您以Windows Boss的身份与我交谈,您不能绕过我,mwuah哈哈 请勿在我的域之外踩 ".
Windows will kill your code on any attempt to communicate with the BIOS as if saying 'Hey, you code, you talk to me as the Windows Boss, you cannot bypass me, mwuah ha ha DO NOT TREAD ON OUTSIDE MY DOMAIN'.
只能使用int 13h的时间是在Windows加载之前的引导阶段,或者如果您使用MSDOS作为系统,即没有窗口,只需引导到MSDOS,则int 13h才可以使用.在这两种情况下,它们都是16位模式,因此可以访问BIOS.
The only time int 13h would be used would be during boot stage BEFORE windows loads or if you are using MSDOS as the system i.e. no windows, just boot into MSDOS, then the int 13h would be valid to use. In both cases, they would be 16bit mode and hence the BIOS would be accessible.
据我所知,我相信有一个通用的中断0x2E,即内核的系统调用.
There is a common interrupt 0x2E I believe, that is the kernel's system call, as far as I know.
简而言之,我不建议您尝试绕过Windows系统,这就是为什么会有诸如驱动程序之类的东西为您做的事情,您最好与作为磁盘一部分的驱动程序进行交互./o子系统,让它为您处理.
In short, I would not recommend trying to bypass the Windows system, that is why there is a such thing as a driver to do that for you, you would be better off to interact with the driver as part of the disk i/o subsystem and let that handle it for you.
这篇关于int 13h在Windows保护模式下?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!