有关编写 PnP 通知回调例程的指导原则
PnP 管理器在 IRQL = PASSIVE_LEVEL 调用通知回调例程。
为了确保 PnP 子系统的顺利运行,PnP 通知回调例程必须遵循以下准则:
通知回调例程不得阻止。
通知回调例程不得调用或导致调用生成 PnP 事件的同步例程或任何阻止等待设备安装或删除的例程。
在通知回调期间调用此类例程可能会导致系统死锁。
例如,驱动程序不得在通知回调例程中调用 IoReportTargetDeviceChange 。 请改为调用 IoReportTargetDeviceChangeAsynchronous 。
通知回调例程应返回未显式失败的任何事件的成功。
当驱动程序注册事件类别上的通知时,PnP 管理器会将该类别中的所有事件(当前和将来)通知驱动程序。 如果驱动程序返回它不处理的事件的错误状态,则驱动程序可能会错误地让新查询事件失败。
例如,当驱动程序未通过查询通知以否决所建议的事件时,驱动程序会正确返回错误状态。
通知回调例程应为分页代码。