APC 的类型

异步过程调用 (APC) 是异步执行的函数。 APC 类似于 延迟的过程调用(DPC),但与 DPC 不同,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 列表,请参阅 “管理硬件优先级”。