gpt4 book ai didi

c - Win32 在多大程度上支持中断?

转载 作者:可可西里 更新时间:2023-11-01 09:20:56 25 4
gpt4 key购买 nike

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

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

最佳答案

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

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

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

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

如果您想直接使用设备和中断,您需要为 Windows 编写内核模式驱动程序。有设备驱动程序工具包 (DDK) 和诸如 Windows Internals 之类的书籍可以帮助您入门。

不过,如果您正在寻找设备 XYZ 及其中断编程的细节,您不会在 MSDN 或 DDK 中找到所有内容或太多内容,因为您需要硬件特定的信息,这些信息不在微软的控制。内核提供执行 I/O 和处理中断所需的功能,但最终取决于设备驱动程序以何种方式使用它们。

关于c - Win32 在多大程度上支持中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14968337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com