IUPnPRegistrar::RegisterRunningDevice 方法 (upnphost.h)

RegisterRunningDevice 方法向设备主机注册正在运行的设备。 设备信息由设备主机存储。 然后,设备主机返回设备标识符,并在网络上发布和报出设备。 此设备的发布不会在系统启动之间持久存在。

语法

HRESULT RegisterRunningDevice(
  [in]  BSTR     bstrXMLDesc,
  [in]  IUnknown *punkDeviceControl,
  [in]  BSTR     bstrInitString,
  [in]  BSTR     bstrResourcePath,
  [in]  long     nLifeTime,
  [out] BSTR     *pbstrDeviceIdentifier
);

参数

[in] bstrXMLDesc

指定要注册的设备的 XML 设备说明模板。

[in] punkDeviceControl

指定指向设备设备控制对象的 IUnknown 指针。

[in] bstrInitString

标识特定于设备的初始化字符串。 此字符串稍后将传递到 IUPnPDeviceControl::Initialize

[in] bstrResourcePath

指定设备资源目录的位置。 此资源目录包含设备说明模板 bstrXMLDesc 中指定的图标文件和服务说明。

[in] nLifeTime

指定设备公告的生存期(以秒为单位)。 超时过期后,将刷新通知。 如果指定零,则使用默认值 1800 (30 分钟) 。 允许的最小值为 900 (15 分钟) ;如果指定了小于 900 的任何值,则返回错误。

[out] pbstrDeviceIdentifier

接收设备标识符。 注销或重新注册设备时使用此标识符。 保存此设备 ID;调用 UnregisterDevice 时必须使用它。

返回值

如果方法成功,则返回值S_OK。 否则,方法将返回 WinError.h 中定义的 COM 错误代码之一,或以下 UPnP 特定的错误代码之一。

注意 如果 bstrResourcePath 太长,此方法将返回值0x80070002。
 
返回代码 说明
UPNP_E_DUPLICATE_NOT_ALLOWED
存在重复元素。
UPNP_E_DUPLICATE_SERVICE_ID
同一父设备中存在服务重复的服务 ID。
UPNP_E_INVALID_DESCRIPTION
设备说明无效。
UPNP_E_INVALID_ICON
设备说明的 icon 元素中存在错误。
UPNP_E_INVALID_SERVICE
设备说明中的服务元素中存在错误。
UPNP_E_REQUIRED_ELEMENT_ERROR
缺少必需的元素。

注解

调用此方法的客户端必须能够模拟 LocalService 才能完成此方法的处理。

收到第一个控件或事件请求时,将调用 IUPnPDeviceControl::Initialize 方法。

调用 UnregisterDeviceIUPnPReregistrar::ReregisterRunningDevice 时,请使用 pbstrDeviceIdentifier 中返回的标识符。

此设备的注册不会在系统启动之间持久保存。

调用此函数时可能发生的常见错误包括:

  • 找不到所需的 COM 对象。
  • 无法访问 LocalService 的 COM 对象。
  • 从属 COM 接口。
  • XML 说明限制 (请参阅 创建设备说明) 。
  • 事件变量未返回成功代码,并且设备已关闭。
  • 服务说明无效。 使用 validatesd.exe 确保服务说明有效。
  • 该服务未实现 IUPnPEventSource,也没有向 IUPnPEventSource::Advise 返回成功代码,并且设备已关闭。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 无受支持的版本
目标平台 Windows
标头 upnphost.h
DLL Upnphost.dll

另请参阅

IUPnPRegistrar

IUPnPRegistrar::UnregisterDevice

IUPnPReregistrar