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


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

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

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

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

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

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

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

Время существования объявления об обнаружении

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

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

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

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

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

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

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