APC 的类型

异步过程调用 (APC) 是异步执行的函数。 APC 类似于 (DPC) 的延迟过程调用 ,但与 DPC 不同,APC 在特定线程的上下文中执行。 除文件系统和文件系统筛选器驱动程序以外的驱动程序 () 不直接使用 APC,但操作系统的其他部分使用 APC,因此你需要了解 APC 的工作原理。

Windows 操作系统使用四种 APC:

  • 特殊的用户模式 APC 严格在用户模式下运行,并且始终执行,即使目标线程不处于可警报等待状态。 有关特殊用户模式 APC 的其他信息,请参阅 QueueUserAPC2

  • 常规用户模式 APC 严格在用户模式下运行,并且仅在目标线程处于可警报等待状态时运行。 操作系统使用常规用户 APC 来实现 重叠 I/OQueueUserApc Win32 例程等机制。

  • 正常内核 APC 在 IRQL = PASSIVE_LEVEL 的内核模式下运行。 普通内核 APC 会抢占所有用户模式代码,包括用户 APC。 文件系统和文件系统筛选器驱动程序通常使用正常的内核 APC。

  • 特殊内核 APC 在 IRQL = APC_LEVEL 的内核模式下运行。 特殊内核 APC 会抢占 IRQL = PASSIVE_LEVEL 执行的用户模式代码和内核模式代码,包括用户 APC 和普通内核 APC。 操作系统使用特殊的内核 APC 来处理 I/O 请求完成等操作。

有关从低到高优先级的 IRQL 列表,请参阅 管理硬件优先级