Windows NT本机应用程序是否可以访问x86软件中断(如INT19)?

Windows NT本机应用程序是否可以访问x86软件中断(如INT19)?,x86,interrupt,kernel-mode,ntdll,X86,Interrupt,Kernel Mode,Ntdll,假设我想编写一个在Windows NT本机模式下运行的应用程序或驱动程序(即只使用NTDLL.DLL函数,并在ntoskrnl.exe启动时运行) 此应用程序是否可以访问x86中断?即,我是否可以编写如下代码: __asm { int 19 } 然后让它返回到启动菜单?或者即使在内核模式下也不允许这样做?不。您所要求的有一些问题 首先,“本机应用程序”(仅与NTDLL.dll链接)仍然是用户模式(第3环)应用程序。它们不在内核模式(第0环)-就CPU/硬

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

此应用程序是否可以访问x86中断?即,我是否可以编写如下代码:

    __asm
    {
        int 19
    }

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

不。您所要求的有一些问题

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

其次,你要问的(例如)是16位BIOS调用,而不仅仅是一般的x86中断。因为系统运行在保护模式下,所以即使是内核也不能调用这些

在引导过程中的某个时刻,当切换到受保护模式时,内核会安装自己的中断向量表(IVT),它基本上覆盖了BIOS先前为BIOS调用提供的中断向量表。此表中对用户模式进程有用的唯一条目是断点的
int 3
,以及(我记不清其号码)用于旧式系统调用(在Linux上是
int80h

阅读:


没有。你的要求有一些地方不对劲

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

其次,你要问的(例如)是16位BIOS调用,而不仅仅是一般的x86中断。因为系统运行在保护模式下,所以即使是内核也不能调用这些

在引导过程中的某个时刻,当切换到受保护模式时,内核会安装自己的中断向量表(IVT),它基本上覆盖了BIOS先前为BIOS调用提供的中断向量表。此表中对用户模式进程有用的唯一条目是断点的
int 3
,以及(我记不清其号码)用于旧式系统调用(在Linux上是
int80h

阅读: