2

我们可以在 Windows 操作系统中使用 Int 13h(直接磁盘读/写)还是 Windows 保护模式不允许我们,如果可以,是否有工作循环?提前致谢。

4

4 回答 4

7

不,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 子系统的一部分进行交互让它为你处理。

于 2010-01-23T16:09:25.473 回答
1

有了正确的权限(管理员拥有),您可以使用 Win32 CreateFile 和相关功能直接访问物理驱动器和逻辑分区。请参阅MSDN文档。

于 2010-01-23T16:20:51.313 回答
1

正如其他人所提到的,除非您使用 16 位 - MSDOS,否则它将无法工作,但如果您在 32 位系统上并且有debug.exe,您可以自己尝试一下。(你的操作系统可能会崩溃!)只需输入命令 mov ax, etc.. int 13h etc.. 然后执行它。

于 2010-01-23T16:27:18.807 回答
0

Int 13h在 Windows 中不起作用

于 2010-01-23T15:54:56.777 回答