Windows NT Native Applications是否可以访问x86软件中断(如int 19)?

时间:2013-10-25 21:55:33

标签: x86 interrupt kernel-mode ntdll

假设我想编写一个在Windows NT Native模式下运行的应用程序或驱动程序(即只使用NTDLL.DLL函数,并在ntoskrnl.exe启动时运行。

此应用程序是否可以访问x86中断? IE,我可以写这样的代码:

    __asm
    {
        int 19
    }

让它返回启动菜单?或者即使在内核模式下仍然不允许这样做?

1 个答案:

答案 0 :(得分:4)

没有。你问的问题有些不对劲。

首先,“Native Applications”(仅与NTDLL.dll链接的那些)仍然是用户模式(Ring 3)应用程序。它们不处于内核模式(Ring 0) - 就CPU /硬件而言,它们没有额外的权限。它们在内核启动时不会自动运行。

其次,您所询问的内容(例如int 19h - Bootstrap loader)是16位 BIOS调用,而不仅仅是一般的x86中断。由于系统在保护模式中运行,因此内核甚至都不能调用它们。

在启动过程中的某个时刻,当切换到保护模式时,内核会安装自己的中断向量表(IVT),它基本上会覆盖BIOS之前为BIOS调用提供的那个。此表中对于用户模式进程有用的唯一条目是int 3用于断点,以及用于旧式系统调用的那个(在Linux上它是int 80h)。 / p>

读: