在Win32中支持多less中断?

除了处理器定义之外,Win32支持的中断程度如何? 例如,x86机器至less定义了18个中断,包括陷阱(如断点陷阱(INT 3))。 英特尔将其余的19-255个中断作为软件定义的中断。 是Windows / WinAPI使用的这些中的任何一种,还是只是开放并免费供应用程序使用? 如果Windows使用它们,我可以在哪里find相关文档? 我看着MSDN,找不到任何东西。

(顺便说一句,我正在做编译器,debugging器和其他系统级的编程,所以请不要首先介绍关于使用中断的build议。

在Win32应用程序中,通常可能只有一个中断, int 2Eh 。 它被用作系统调用入口点。 这与DOS中的int 21h类似。 其余的中断不被应用程序使用。

但是,应用程序可以通过结构化异常处理( SEH )/向量异常处理( VEH )来处理一些CPU异常(和调试中断)。 Windows捕获源于应用程序的CPU异常,并将其反映回应用程序(如果并且尽管如此)(Windows在模仿CPU异常模型方面并不完美)。

Windows在内部使用设备中断,不会让应用程序混乱。 x86 CPU在内核运行的最高特权模式下处理中断。

现在许多设备中断都不与固定的中断向量相关联,并且可以配置,您需要使用PCI等各种查询或更改设置。

如果您想直接使用设备和中断,则需要为Windows编写内核模式驱动程序。 有设备驱动程序工具包( DDK )和书籍,如Windows Internals ,可以让你开始。

尽管如此,如果您正在寻找XYZ设备的细节以及它的中断编程,那么您不会在MSDN或DDK上找到所有的东西,因为您需要特定于硬件的信息,这些信息是微软无法控制的。 内核提供了执行I / O和处理中断所必需的功能,但最终还是由设备驱动程序以某种方式来使用它们。