Win32支持的中断程度如何?

时间:2013-02-19 22:02:06

标签: c windows winapi assembly operating-system

Win32支持的中断在多大程度上超出了处理器定义?例如,x86机器定义至少18个中断,包括陷阱,例如断点陷阱(INT 3)。其他19-255中断由英特尔保留为软件定义中断。这些是Windows / WinAPI使用的,还是只是打开并免费供应用程序使用?如果Windows使用它们,我在哪里可以找到相关文档?我查看了MSDN,找不到任何内容。

(顺便说一下,我正在进行编译器,调试器和其他系统级编程,所以请不要在第一时间告诉我你对使用中断的可行性的看法。)

1 个答案:

答案 0 :(得分:4)

在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和处理中断所需的功能,但最终由设备驱动程序以这种或那种方式使用它们。

相关问题