注册目标设备更改通知

驱动程序通过调用 IoRegisterPlugPlayNotification 注册 PnP 目标设备更改事件的通知。

以下信息适用于为目标设备更改通知调用此例程:

  • 指定 EventCategoryTargetDeviceChange 的 EventCategory

  • EventCategoryData 必须指向请求通知的设备的文件对象。

    如果驱动程序的回调例程需要访问文件对象,则驱动程序应在调用 IoRegisterPlugPlayNotification 之前对文件对象执行引用。

    如果驱动程序的回调例程不需要访问文件对象,则驱动程序不需要引用 对象。

    关闭文件对象后,驱动程序将继续接收设备的通知,直到驱动程序删除其通知注册。 例如,此设计允许驱动程序接收GUID_TARGET_DEVICE_REMOVE_CANCELLED事件的通知。

  • 指定 PnP 管理器将传递给回调例程的驱动程序定义的 上下文

    驱动程序可以使用 Context 参数来维护有关文件对象的当前状态的信息,例如, (是否已关闭/删除) 文件对象。

    驱动程序还可以使用 Context 来存储最初用于打开设备的路径。 驱动程序可以使用此路径在取消删除操作后重新打开设备。 有关详细信息, (请参阅 处理GUID_TARGET_DEVICE_REMOVE_CANCELLED事件 。)

驱动程序使用 IoRegisterPlugPlayNotification 返回的 NotificationEntry 调用 IoUnregisterPlugPlayNotification 来删除通知注册。 如果驱动程序在注册通知时对文件对象进行了引用,并且该引用仍然未完成,则驱动程序必须在删除注册后释放该引用。