有关编写 PnP 通知回调例程的指导原则

PnP 管理器在 IRQL = PASSIVE_LEVEL 调用通知回调例程。

为了确保 PnP 子系统的顺利运行,PnP 通知回调例程必须遵循以下准则:

  1. 通知回调例程不得阻止。

  2. 通知回调例程不得调用或导致调用生成 PnP 事件的同步例程或任何阻止等待设备安装或删除的例程。

    在通知回调期间调用此类例程可能会导致系统死锁。

    例如,驱动程序不得在通知回调例程中调用 IoReportTargetDeviceChange 。 请改为调用 IoReportTargetDeviceChangeAsynchronous

  3. 通知回调例程应返回未显式失败的任何事件的成功。

    当驱动程序注册事件类别上的通知时,PnP 管理器会将该类别中的所有事件(当前和将来)通知驱动程序。 如果驱动程序返回它不处理的事件的错误状态,则驱动程序可能会错误地让新查询事件失败。

    例如,当驱动程序未通过查询通知以否决所建议的事件时,驱动程序会正确返回错误状态。

  4. 通知回调例程应为分页代码。