我们可以在 Windows 操作系统中使用 Int 13h(直接磁盘读/写)还是 Windows 保护模式不允许我们,如果可以,是否有工作循环?提前致谢。
4 回答
不,Windows 子系统在启动期间初始化时,会重新配置内核的 BIOS 中断处理,因为 BIOS 调用是 16 位的,不是保护模式,因此 int 13h 将无效。这就是为什么有些驱动程序是为完全绕过 BIOS 的 32 位保护模式编写的。
这就引出了一个问题——你为什么要这么做?
Windows 将在任何尝试与 BIOS 通信时终止您的代码,就好像在说“嘿,您的代码,您作为 Windows Boss 与我交谈,您无法绕过我,mwuah haha 不要在我的领域之外践踏”。
唯一会使用 int 13h 的时间是在加载 windows 之前的引导阶段,或者如果您使用 MSDOS 作为系统,即没有 windows,只需启动到 MSDOS,那么 int 13h 将有效使用。在这两种情况下,它们都是 16 位模式,因此可以访问 BIOS。
据我所知,我相信有一个常见的中断 0x2E,那就是内核的系统调用。
简而言之,我不建议尝试绕过 Windows 系统,这就是为什么有一个驱动程序可以为你做这件事,你最好将驱动程序作为磁盘 i/o 子系统的一部分进行交互让它为你处理。
有了正确的权限(管理员拥有),您可以使用 Win32 CreateFile 和相关功能直接访问物理驱动器和逻辑分区。请参阅MSDN文档。
正如其他人所提到的,除非您使用 16 位 - MSDOS,否则它将无法工作,但如果您在 32 位系统上并且有debug.exe,您可以自己尝试一下。(你的操作系统可能会崩溃!)只需输入命令 mov ax, etc.. int 13h etc.. 然后执行它。
Int 13h在 Windows 中不起作用