4

Win32 对处理器定义之外的中断的支持程度如何?例如,x86 机器定义了至少 18 个中断,包括诸如断点陷阱 (INT 3) 之类的陷阱。英特尔将其他 19-255 个中断作为软件定义的中断保持打开状态。Windows/WinAPI 是否使用这些中的任何一个,或者它们只是开放且免费供应用程序随意使用?如果 Windows 使用它们,我在哪里可以找到相关文档?我查看了 MSDN 并找不到任何东西。

(顺便说一句,我正在做编译器、调试器和其他系统级编程,所以请不要一开始就对使用中断的可取性发表意见。)

4

1 回答 1

4

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

但是,应用程序可以通过结构化异常处理 ( SEH)/矢量异常处理 ( ) 处理一些 CPU 异常(和调试中断VEH)。如果可能的话,Windows 会捕获源自应用程序的 CPU 异常并将它们反射回应用程序(Windows 在模仿 CPU 异常模型方面并不完美)。

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

如今,许多设备中断与固定中断向量无关,并且是可配置的,您需要使用诸如 PCI 之类的各种东西来查询或更改设置。

如果要直接使用设备和中断,则需要为 Windows 编写内核模式驱动程序。有 Device Driver Kit ( DDK) 和类似的书籍Windows Internals可以帮助您入门。

尽管如此,如果您正在寻找设备 XYZ 及其中断编程的详细信息,您不会在 MSDN 或 DDK 上找到所有内容或很多内容,因为您需要特定于硬件的信息,这些信息超出了 Microsoft 的控制范围。内核提供了执行 I/O 和处理中断所需的功能,但最终取决于设备驱动程序以一种或另一种方式使用它们。

于 2013-02-19T22:28:08.250 回答