Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Если драйвер или компонент пользовательского режима включает или выключает экземпляр интерфейса устройства, диспетчер PnP вызывает все процедуры обратного вызова уведомлений, зарегистрированные для событий EventCategoryDeviceInterfaceChange класса интерфейса устройства. Чтобы указать причину уведомления, диспетчер PnP устанавливает элемент события в параметре NotificationStructure подпрограммы обратного вызова на GUID_DEVICE_INTERFACE_ARRIVAL или GUID_DEVICE_INTERFACE_REMOVAL.
При обработке события GUID_DEVICE_INTERFACE_ARRIVAL подпрограмма обратного вызова уведомлений должна:
Выполнение задач, определенных драйвером для обработки нового интерфейса.
Как правило, подпрограмма обратного вызова уведомлений непосредственно открывает устройство в контексте обратного вызова. Однако если открытие устройства может привести к возникновению последующих событий PnP (например, перечисление дочерних устройств), подпрограмма обратного вызова должна ставить в очередь рабочую подпрограмму, чтобы открыть устройство; в противном случае может произойти взаимоблокировка.
Подпрограмма обратного вызова может включить собственный интерфейс в ответ на доступность нового интерфейса.
При обработке события GUID_DEVICE_INTERFACE_REMOVAL подпрограмма обратного вызова уведомлений должна:
- Отмените все операции, выполняемые при включении интерфейса. Закройте все дескрипторы файлов, которые были открыты в ответ на событие подключения интерфейса.
Помимо EventCategoryDeviceInterfaceChange, драйвер также должен зарегистрироваться для EventCategoryTargetDeviceChangeи закрыть дескриптор файла, полученного из обратного вызова события GUID_TARGET_DEVICE_QUERY_REMOVE. Оставление дескриптора файла открытым будет препятствовать процессу удаления и отменит упорядоченное удаление.