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


Регистрация размещенного устройства на хосте устройства

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

Устройства регистрируются двумя способами:

  • Приложение создает экземпляр объекта элемента управления устройства и передает указатель на него хосту устройства.
  • Приложение передает ProgID зарегистрированного объекта управления устройством хосту устройства. Хост устройства создает экземпляр, когда хост устройства получает первый запрос на устройство.

Независимо от того, какой метод используется, устройство-хост публикует и объявляет устройство сразу после регистрации. Разница между двумя подходами связана с загрузкой кода устройства. Когда приложение передает указатель на объект управления устройством, код управления устройством загружается и выполняется в момент регистрации. Когда приложение передает ProgID, код устройства загружается только при выполнении действия, запросе свойства или поступлении запроса на подписку на событие. Второй подход немного эффективнее. Однако оно не подходит для устройств, которые должны выполняться перед поступлением запросов на управление или подписку на события, так как при использовании этого подхода объекты управления устройства создаются только при необходимости. Этот второй метод также может создавать проблемы с производительностью при получении первого запроса типа устройства.

Если вы хотите, чтобы устройство было анонсировано хостом устройства в сети автоматически во время запуска компьютера, вызовите IUPnPRegistrar::RegisterDevice. RegisterDevice гарантирует, что код устройства загружается только при получении запроса на управление или подписку на события.

Если устройства являются временными или объединёнными, вызовите IUPnPRegistrar::RegisterRunningDevice, и устройство не будет автоматически повторно объявлено при перезапуске компьютера.

Срок действия объявления обнаружения

Каждое устройство, зарегистрированное на узле устройства, связано с временем существования, которое указывается устройством при регистрации. Время существования устройства — это период времени, в течение которого объявления об обнаружении устройства действительны. Срок действия передается в точку управления в качестве заголовка в первоначальном сообщении обнаружения. Узел хоста устройства автоматически обновляет объявление перед истечением срока действия. Значения времени существования объявления обнаружения должны составлять 15 минут или более (значение по умолчанию — 30 минут).

Идентификаторы устройств, созданные при регистрации

При создании шаблона описания устройства разработчик устройства должен предоставить путь к описанию службы и связанным значкам. Путь к ресурсу определяется приложением устройства.

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

Этот идентификатор также используется при временной отмене регистрации устройства и повторной регистрации. При временной отмене регистрации устройства хост устройства не удаляет UDN. Причины не удаления UDN включают:

  • Устройство обновляется.
  • Вы изменяете свойства устройства.
  • Служба временно недоступна.
  • Вы добавляете новую службу на устройство.
  • Вы обновляете библиотеку DLL.
  • Устройство находится в автономном режиме.

Дополнительные сведения о регистрации см. в следующих разделах: