代码之家  ›  专栏  ›  技术社区  ›  Auxiliary

Int 13h在Windows保护模式下?

  •  2
  • Auxiliary  · 技术社区  · 15 年前

    我们是否可以在Windows操作系统中使用int 13h(直接磁盘读/写),或者Windows保护模式不允许我们使用,如果允许,是否有解决方案? 事先谢谢。

    4 回复  |  直到 12 年前
        1
  •  6
  •   t0mm13b    12 年前

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

    这就引出了一个问题——你为什么要这么做?

    Windows会在任何尝试与BIOS通信时终止代码,就好像在说' 嘿,你编代码,你跟我说你是Windows的老板,你不能绕过我,哇哈哈。 不要踏出我的领域 '.

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

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

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

        2
  •  1
  •   Mark Tolonen    15 年前

    使用正确的权限(管理员拥有这些权限),您可以使用win32 createfile和相关函数直接访问物理驱动器和逻辑分区。查看 MSDN 文档。

        3
  •  1
  •   user113476    15 年前

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

        4
  •  0
  •   AndersK    15 年前

    Int 13h在Windows中不工作 try