Поделиться через


Регистрация в уведомлении об изменении целевого устройства

Драйвер регистрируется для уведомления о событиях изменения целевого устройства PnP, вызывая IoRegisterPlugPlayNotification.

Следующие сведения относятся к вызову этой подпрограммы для уведомления об изменении целевого устройства:

  • Укажите EventCategoryдля Параметра EventCategoryTargetDeviceChange.

  • EventCategoryData должен указывать на объект файла для устройства, на котором запрашивается уведомление.

    Если подпрограмме обратного вызова драйвера требуется доступ к объекту файла, драйвер должен извлечь ссылку на объект файла перед вызовом IoRegisterPlugPlayNotification.

    Если подпрограмме обратного вызова драйвера не требуется доступ к объекту файла, драйверу не нужно ссылаться на объект .

    После закрытия объекта файла драйвер продолжает получать уведомления для устройства, пока драйвер не удалит регистрацию уведомлений. Такая конструкция позволяет драйверу получать уведомления, например, о событиях GUID_TARGET_DEVICE_REMOVE_CANCELLED.

  • Укажите определяемый драйвером контекст , который диспетчер PnP будет передавать в подпрограмму обратного вызова.

    Драйвер может использовать параметр Context для хранения сведений о текущем состоянии объекта файла (например, был ли он закрыт или удален).

    Драйвер также может использовать контекст для хранения пути, который использовался для первоначального открытия устройства. Драйвер может использовать этот путь для повторного открытия устройства после отмены операции удаления. (Дополнительные сведения см. в разделе Обработка события GUID_TARGET_DEVICE_REMOVE_CANCELLED .)

Драйвер удаляет регистрацию уведомления, вызывая IoUnregisterPlugPlayNotification с NotificationEntry , возвращенным IoRegisterPlugPlayNotification. Если драйвер извлек ссылку на объект файла при его регистрации для уведомления и эта ссылка по-прежнему остается незарегистрированным, драйвер должен освободить ссылку после удаления регистрации.