由于 ISR 必须尽快执行,因此驱动程序通常必须推迟服务中断的完成,直到 ISR 返回后。 因此,系统为 延迟过程调用(DPC)提供支持,这些调用可以从 ISR 排入队列,并在较晚的时间和低于 ISR 的 IRQL 执行。
每个 DPC 都与系统定义的 DPC 对象相关联。 系统为每个设备对象提供一个 DPC 对象。 当驱动程序注册称为 DpcForIsr 例程的 DPC 例程时,系统将初始化此 DPC 对象。 如果需要多个 DPC,驱动程序可以创建其他 DPC 对象。 这些额外的 DPC 称为 CustomDpc 例程。
驱动程序不应直接引用 DPC 对象内容。 未记录对象的结构。 驱动程序无权访问分配给每个设备对象的系统提供的 DPC 对象。 驱动程序为额外的 DPC 分配存储,但这些 DPC 对象的内容只能由系统例程引用。
DPC 对象和 DPC 也可用于计时器。 有关详细信息,请参阅 计时器对象和 DPC。