PnpSurpriseRemove 规则 (wdm)

PnpSurpriseRemove 规则指定驱动程序在处理IRP_MN_SURPRISE_REMOVAL请求时不调用 IoDeleteDevice 或 IoDetachDevice。

PnP 管理器发送 IRP_MN_SURPRISE_REMOVAL 请求,通知驱动程序设备不再可用于 I/O 操作,并且设备可能已意外从计算机中删除。

  • 所有 PnP 驱动程序都必须处理 IRP_MN_SURPRISE_REMOVAL 请求。
  • 驱动程序不得在设备对象上调用 IoDeleteDeviceIoDetachDevice ,直到IRP_MN_SURPRISE_REMOVAL IRP 成功并且关闭设备的所有打开句柄。
  • 然后,PnP 管理器将 IRP_MN_REMOVE_DEVICE 请求发送到设备堆栈。 为了响应删除 IRP,驱动程序将其设备对象从堆栈中分离并删除它们。

有关驱动程序应如何响应 IRP_MN_SURPRISE_REMOVAL 请求的详细信息,请参阅 处理IRP_MN_SURPRISE_REMOVAL请求

驱动程序模型:WDM

如何测试

编译时

运行 静态驱动程序验证程序 并指定 PnpSurpriseRemove 规则。

使用以下步骤运行代码分析:
  1. 准备代码 (使用角色类型声明) 。
  2. 运行静态驱动程序验证程序。
  3. 查看和分析结果。

有关详细信息,请参阅 使用静态驱动程序验证程序查找驱动程序中的缺陷

适用于

IoDeleteDeviceIoDetachDevice

另请参阅

处理IRP_MN_SURPRISE_REMOVAL请求使用验证和代码分析工具分析驱动程序IRP_MN_SURPRISE_REMOVAL IRP_MN_REMOVE_DEVICE