IUPnPService::QueryStateVariable 方法 (upnp.h)

QueryStateVariable 方法返回指定服务的状态变量的值。

语法

HRESULT QueryStateVariable(
  [in]  BSTR    bstrVariableName,
  [out] VARIANT *pValue
);

参数

[in] bstrVariableName

指定要为其返回值的状态变量。

[out] pValue

接收对 bstrVariableName 指定的变量值的引用。 返回的数据类型取决于为其调用查询的状态变量。

若要释放此参数,请使用 VariantClear

返回值

如果该方法成功,则 返回值S_OK。 否则,该方法返回 WinError.h 中定义的 COM 错误代码之一或下表中列出的特定于 UPnP 的返回值之一。 其中一些值指示从 UPnP 认证的设备收到错误。 有关详细信息,请参阅 设备错误代码

返回代码 说明
UPNP_E_DEVICE_ERROR
变量不发生事件,并且远程查询返回了错误代码。 这不是传输错误;设备收到了请求,但返回了错误。
UPNP_E_DEVICE_TIMEOUT
设备在 30 秒超时期限内未响应。
UPNP_E_INVALID_VARIABLE
变量不存在。
UPNP_E_PROTOCOL_ERROR
由于 UPnP 协议级别存在问题,查询未完成。
UPNP_E_TRANSPORT_ERROR
变量未发生事件,并且由于 HTTP 问题,对值的远程查询失败。 若要检索 HTTP 错误代码,请使用 IUPnPService::LastTransportStatus
UPNP_E_VARIABLE_VALUE_UNKNOWN
变量已发生事件,但 UPnP 软件无法返回值,因为它仍在等待事件通知。

注解

UPnP 论坛不建议使用此方法。 如果可能,请使用特定于服务的操作(如果已提供)。

此方法从服务对象的本地缓存中检索事件变量的值。 缓存包含最后一个事件通知中指示的每个变量的值。 此方法通过向设备发送远程查询来检索非事件变量的值。

如果应用程序为事件状态变量调用此方法,则从服务首次初始化自身到处理其第一个事件之间, 将返回UPNP_E_VARIABLE_VALUE_UNKNOWN

如果应用程序为不使用事件的服务调用此方法,并且 HTTP 请求失败,则返回 UPNP_E_TRANSPORT_ERROR 。 若要查看状态,请使用 IUPnPService::LastTransportStatus

注意 time.tz 变量可能包含有关控制点的错误时区信息。 例如,可以在同一时区 -7.00 中运行设备和控制点。 当控制点查询当前时间的 time.tz 变量时,设备将返回时区值设置为 -8.00 而不是 -7.00 的日期结构。

若要解决此问题,请改用 dataTime.tz 变量类型,time.tz 控制点上。

 

要求

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

另请参阅

IUPnPService

IUPnPService::LastTransportStatus