启动设备的设计指导原则

  • IRP_MN_START_DEVICE IRP 完成之前,PnP 管理器无法为设备创建请求,指示设备的所有驱动程序都已执行其启动操作。

  • 由于 DispatchPnP 例程在 IRQL PASSIVE_LEVEL 的系统线程上下文中运行,因此,只要驱动程序不控制保存系统页文件的设备,使用 ExAllocatePoolWithTag 分配的任何内存在初始化期间专用于分页池即可。 在 DispatchPnP 例程返回控件之前,必须使用 ExFreePool 释放此类内存分配。

  • WDM 设备驱动程序的 ISR 应该能够确定是否在设备启动期间使用虚假中断调用它。 从处理IRP_MN_START_DEVICE的代码路径中调用 IoConnectInterrupt 返回时,如果设备上启用了中断,可以立即调用 ISR。