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


Поставщики устройств

Поставщики устройств — это зарегистрированные объекты, запускаемые компьютером при каждом запуске системы. Поставщики устройств регистрируют и отменяют регистрацию устройств на узле устройства в ответ на какое-то событие. Это устройства, которые были автоматически запущены во время запуска системы. По соображениям безопасности поставщик устройств обычно должен работать как LocalService, а не LocalSystem.

Поставщики устройств можно использовать для временных устройств. Поставщики устройств также можно использовать для моста между устройствами и опрашивыми носителями. Например, периферийное устройство, например цифровой музыкальный проигрыватель, подключается к компьютеру через последовательный порт. Для предоставления музыкального проигрывателя в качестве устройства на основе UPnP требуется объект управления устройством и набор объектов службы. Эти объекты реализуют действия музыкального проигрывателя на основе UPnP как последовательные команды. Однако музыкальный проигрыватель должен быть подключен к последовательному порту и доступен для управления, прежде чем эти объекты будут зарегистрированы.

Так как последовательный порт не предлагает явный механизм уведомления при подключении устройств, требуется опрашивание кода. Этот код можно реализовать в объекте поставщика устройства, службе или в автономном приложении. При запуске компьютера узел устройства создает экземпляр объекта поставщика устройства, а затем вызывает его метод Start . Когда поставщик устройства обнаруживает наличие устройства музыкального проигрывателя, он создает экземпляр соответствующего объекта управления устройством и регистрирует его, вызывая IUPnPRegistrar::RegisterRunningDevice. Этот метод публикует устройство и объявляет его в сети на основе UPnP.

Эта же функциональность также может быть реализована путем реализации службы, которая опрашивает последовательный порт. Однако поставщики устройств упрощают процесс, требуя реализации только основных функций — опроса, так как поставщики устройств используют узел устройства для их запуска и остановки. Использование поставщиков устройств проще, чем реализация службы.

Во время регистрации и при каждом последующем запуске системы компьютер создает экземпляр объекта поставщика устройства, а затем вызывает его метод IUPnPDeviceProvider::Start , передавая ему строку инициализации, указанную во время регистрации.

После вызова метода Start поставщик устройства выполняет необходимую обработку, и при необходимости поставщик устройства регистрирует устройства путем вызова IUPnPRegistrar::RegisterRunningDevice, как описано в разделе Регистрация размещенного устройства на узле устройства.

При завершении работы компьютера узел устройства вызывает метод IUPnPDeviceProvider::Stop , чтобы указать, что поставщик устройства завершает свои операции.