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 特定的错误代码之一。
| 返回代码 | 说明 |
|---|---|
|
存在重复元素。 |
|
同一父设备中存在服务重复的服务 ID。 |
|
设备说明无效。 |
|
设备说明的 icon 元素中存在错误。 |
|
设备说明中的服务元素中存在错误。 |
|
缺少必需的元素。 |
注解
调用此方法的客户端必须能够模拟 LocalService 才能完成此方法的处理。
收到第一个控件或事件请求时,将调用 IUPnPDeviceControl::Initialize 方法。
调用 UnregisterDevice 或 IUPnPReregistrar::ReregisterRunningDevice 时,请使用 pbstrDeviceIdentifier 中返回的标识符。
此设备的注册不会在系统启动之间持久保存。
调用此函数时可能发生的常见错误包括:
- 找不到所需的 COM 对象。
- 无法访问 LocalService 的 COM 对象。
- 从属 COM 接口。
- XML 说明限制 (请参阅 创建设备说明) 。
- 事件变量未返回成功代码,并且设备已关闭。
- 服务说明无效。 使用 validatesd.exe 确保服务说明有效。
- 该服务未实现 IUPnPEventSource,也没有向 IUPnPEventSource::Advise 返回成功代码,并且设备已关闭。
要求
| 要求 | 值 |
|---|---|
| 最低受支持的客户端 | Windows XP [仅限桌面应用] |
| 最低受支持的服务器 | 无受支持的版本 |
| 目标平台 | Windows |
| 标头 | upnphost.h |
| DLL | Upnphost.dll |