如果 IRP_MN_QUERY_REMOVE_DEVICE 请求失败,PnP 管理器会将 IRP_MN_CANCEL_REMOVE_DEVICE IRP 发送到设备的驱动程序。 取消-删除 IRP 成功完成后,PnP 管理器将调用设备上为 EventCategoryTargetDeviceChange 注册的任何通知回调例程。 PnP 管理器指定 NotificationStructure。GUID_TARGET_DEVICE_REMOVE_CANCELLED事件 。
处理GUID_TARGET_DEVICE_REMOVE_CANCELLED事件时,通知回调例程应:
重新注册目标设备通知。
由于驱动程序关闭了以前的注册句柄以响应查询删除通知,因此驱动程序必须打开一个新句柄。 驱动程序必须:
使用 IoUnregisterPlugPlayNotification 删除旧注册。
打开设备的新句柄。
使用 IoRegisterPlugPlayNotification 重新注册新句柄上的通知。