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


Метод IUPnPRegistrar::RegisterDevice (upnphost.h)

Метод RegisterDevice регистрирует устройство на узле устройства. Сведения об устройстве хранятся на узле устройства. Затем узел устройства возвращает идентификатор устройства, публикует и объявляет устройство в сети.

Синтаксис

HRESULT RegisterDevice(
  [in]  BSTR bstrXMLDesc,
  [in]  BSTR bstrProgIDDeviceControlClass,
  [in]  BSTR bstrInitString,
  [in]  BSTR bstrContainerId,
  [in]  BSTR bstrResourcePath,
  [in]  long nLifeTime,
  [out] BSTR *pbstrDeviceIdentifier
);

Параметры

[in] bstrXMLDesc

Указывает шаблон описания XML-устройства для регистрируемого устройства.

[in] bstrProgIDDeviceControlClass

Указывает ProgID объекта управления устройством, реализующего интерфейс IUPnPDeviceControl . Этот интерфейс должен быть внутрипроцессным COM-сервером (CLSCTX_INPROC_SERVER) и должен быть доступен для LocalService.

[in] bstrInitString

Определяет строку инициализации, относяющуюся к устройству. Позже эта строка передается в IUPnPDeviceControl::Initialize.

[in] bstrContainerId

Указывает строку, определяющую группу процессов, в которую входит устройство. Все устройства с одинаковым идентификатором контейнера содержатся в одном процессе.

[in] bstrResourcePath

Указывает расположение каталога ресурсов устройства. Этот каталог ресурсов содержит файлы значков и описания служб, указанные в шаблоне описания устройства bstrXMLDesc. Каталог ресурсов также может содержать файлы презентации. Однако это необязательно.

[in] nLifeTime

Указывает время существования объявления устройства в секундах. По истечении времени ожидания объявления обновляются. Если указать ноль, используется значение по умолчанию 1800 (30 минут). Минимально допустимое значение — 900 (15 минут); Если указать значение меньше 900, возвращается ошибка.

[out] pbstrDeviceIdentifier

Получает идентификатор устройства. Используйте этот идентификатор при отмене регистрации или повторной регистрации устройства. Сохраните этот идентификатор устройства; Его необходимо использовать при вызове UnregisterDevice.

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение будет S_OK. В противном случае метод возвращает один из кодов com-ошибок, определенных в WinError.h, или один из следующих кодов ошибок, относящихся к UPnP.

Код возврата Описание
UPNP_E_DUPLICATE_SERVICE_ID
Существует повторяющийся идентификатор службы для службы на том же родительском устройстве.
UPNP_E_INVALID_DESCRIPTION
Недопустимое описание устройства.
UPNP_E_INVALID_ICON
В элементе icon описания устройства присутствует ошибка.
UPNP_E_INVALID_SERVICE
Ошибка присутствует в элементе службы в описании устройства.
UPNP_E_REQUIRED_ELEMENT_ERROR
Отсутствует обязательный элемент.

Комментарии

Создается экземпляр устройства, и при получении запроса элемента управления или события вызывается IUPnPDeviceControl::Initialize .

Используйте идентификатор, возвращенный в pbstrDeviceIdentifier , при вызове UnregisterDevice или IUPnPReregistrar::ReregisterDevice.

Распространенные ошибки, которые могут возникнуть при вызове этой функции:

  • Необходимый COM-объект не найден.
  • Доступ к COM-объекту для LocalService отсутствует.
  • Подчиненные COM-интерфейсы.
  • Ограничения описания XML (см. раздел Создание описания устройства).
  • Переменные события не возвращали коды успешного выполнения, и устройство было завершено.
  • Недопустимое описание службы. Используйте validatesd.exe, чтобы гарантировать допустимость описаний служб.
  • Служба не реализовала IUPnPEventSource и не вернула код успешного выполнения в IUPnPEventSource::Advise , и устройство было завершено.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Ни одна версия не поддерживается
Целевая платформа Windows
Header upnphost.h
DLL Upnphost.dll

См. также раздел

IUPnPRegistrar

IUPnPRegistrar::UnregisterDevice

IUPnPReregistrar