在从低功耗状态启动期间共享处理器资源

当计算机从待机或休眠状态启动 (热启动) 时,驱动程序应避免使用超过必要时间的处理器资源。 最重要的是,延迟过程调用 (DPC) 在 IRQL >= DISPATCH_LEVEL 执行的例程和代码应将其执行时间保持在最短。 驱动程序使用 DPC 例程来帮助初始化设备。 驱动程序可能需要在 DISPATCH_LEVEL 运行初始化代码,作为端口微型端口接口协定的一部分。

当 DPC 例程运行时,会阻止优先级较低的其他线程在同一处理器上运行。 此外,在当前 DPC 完成之前,其他已排队并准备运行的 DPC 例程可能会被阻止。 为了使其他线程能够迅速运行,典型的 DPC 例程应运行不超过 100 微秒。

在系统启动期间运行时间过长的 DPC 例程可能会延迟其他设备的初始化。 此延迟会使设备初始化阶段更长,并延迟操作系统的启动完成。

使用以下最佳做法设计 DPC 例程:

  • 单个 DPC 例程的执行时间不应超过 100 微秒。

  • 调用 KeStallExecutionProcessor 例程来延迟执行的 DPC 例程不得指定超过 100 微秒的延迟。

  • 如果任务需要超过 100 微秒并在DISPATCH_LEVEL执行,则 DPC 例程应在 100 微秒后结束,并计划一个或多个 DPC 计时器例程,以便稍后完成任务。

  • 使用 WDK 中记录的性能分析工具评估 DPC 例程的执行时间。