windows - Windows保护模式下的int 13h?

标签 windows interrupt-handling protected-mode

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

最佳答案

不,Windows 子系统在引导期间初始化时会重新配置内核的 BIOS 中断处理,因为 BIOS 调用是 16 位的,而不是保护模式,因此 int 13h 将无效。这就是为什么有些驱动程序是为完全绕过 BIOS 的 32 位保护模式编写的。

这引出了一个问题 - 你为什么要这样做?

Windows 会在任何与 BIOS 通信的尝试中终止您的代码,就好像在说“嘿,你的代码,你作为 Windows 老板与我交谈,你不能绕过我,mwuah ha ha < strong>请勿踏入我的领地之外”。

唯一使用 int 13h 的时间是在 Windows 加载之前的启动阶段,或者如果您使用 MSDOS 作为系统,即没有 Windows,只需启动进入 MSDOS,那么 int 13h 将有效使用。在这两种情况下,它们都是 16 位模式,因此可以访问 BIOS。

据我所知,有一个常见的中断 0x2E,这是内核的系统调用。

简而言之,我不建议尝试绕过 Windows 系统,这就是为什么有驱动程序可以为您做这件事的原因,您最好将驱动程序作为磁盘 i 的一部分进行交互/o 子系统,让它为您处理。

关于windows - Windows保护模式下的int 13h?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2123639/

相关文章:

ios - wav 到 aac 转换 interruptListener 不在 ios 中调用

c - 在c内核保护模式下不获取键盘输入

x86 - 异常处理问题

assembly - Linux 内核从实模式到保护模式的转换

c++ - 获取当前 CPU 利用率的方法在 Windows 10 上运行不可靠

windows - 无法从 Windows 服务器克隆 GIT 存储库,但可以 SSH

iphone - 没有调用 AVAudioRecorderDelegate 中断方法

exception - 在 x86 和 x86-64 中是否有任何 CPU 状态位指示处于异常/中断处理程序中?

c# - Hook 应用

windows - VBA - 未定义用户定义类型