处理 GUID_TARGET_DEVICE_REMOVE_COMPLETE 事件

在 PnP 管理器将 IRP_MN_REMOVE_DEVICE IRP 发送到设备的驱动程序之前,PnP 管理器会调用在设备上为 EventCategoryTargetDeviceChange 注册的任何内核模式通知回调例程。 PnP 管理器指定 NotificationStructure。GUID_TARGET_DEVICE_REMOVE_COMPLETE事件

处理GUID_TARGET_DEVICE_REMOVE_COMPLETE事件时,通知回调例程应:

  • 删除设备上的通知注册。

    设备已删除,因此驱动程序调用 IoUnregisterPlugPlayNotification 以删除通知注册。

    设备可能仍实际存在于计算机上,但已删除所有设备对象,并且设备不可用。

  • 如果驱动程序未收到以前的查询删除通知,请执行意外删除处理。

    如果设备意外删除,PnP 管理器将向注册的驱动程序发送删除完成通知,而无需事先发出查询删除通知。 在这种情况下,驱动程序必须执行任何必要的清理,例如关闭设备的任何句柄并删除对文件对象的任何未完成的引用。