IUPnPService::InvokeAction 方法 (upnp.h)

InvokeAction 方法调用设备上的方法。

语法

HRESULT InvokeAction(
  [in]      BSTR    bstrActionName,
  [in]      VARIANT vInActionArgs,
  [in, out] VARIANT *pvOutActionArgs,
  [in, out] VARIANT *pvRetVal
);

参数

[in] bstrActionName

指定要调用的方法。

[in] vInActionArgs

指定方法的输入参数数组。 如果操作没有输入参数,则此参数必须包含空数组。

此数组的内容特定于服务。

[in, out] pvOutActionArgs

输入时,包含对空数组的引用。 在输出时, 接收对输出参数数组的引用。 如果操作没有输出参数,则此参数包含一个空数组。

此参数的内容特定于服务。

使用 VariantClear 释放此参数。

[in, out] pvRetVal

输入时,包含对空数组的引用。 在输出时,接收对 VARIANT 的引用,其中包含此操作的返回值。

如果设备在对其调用操作后返回错误,并且此参数未设置为 NULL,则此参数将包含描述返回时错误的特定文本。 有关设备返回的错误的详细信息,请参阅 设备错误代码 文档。

使用 VariantClear 释放此参数。

返回值

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

返回代码 说明
UPNP_E_ACTION_REQUEST_FAILED
设备出现内部错误;无法执行请求。
UPNP_E_DEVICE_ERROR
出现未知错误。
UPNP_E_DEVICE_TIMEOUT
设备在 30 秒超时期限内未响应。
UPNP_E_ERROR_PROCESSING_RESPONSE
设备发送了无法处理的响应;例如,响应已损坏。
UPNP_E_INVALID_ACTION
设备不支持该操作。
UPNP_E_INVALID_ARGUMENTS
在 vInActionArgs 中传递的一个或多个参数无效。
UPNP_E_PROTOCOL_ERROR
UPnP 控制协议级别发生错误。
UPNP_E_TRANSPORT_ERROR
发生 HTTP 错误。 使用 IUPnPService::LastTransportStatus 属性获取实际的 HTTP 状态代码。
注意 当 SOAP 响应超过 100 KB 时,也会返回此错误代码。
 

注解

当应用程序调用 InvokeAction 方法时,它包含应与服务所需的参数匹配的参数列表。 控制点将这些 VARIANT 参数映射到所需的类型。 下表显示了使用的映射。

数据类型 MSXML 返回的类型
SDT_STRING = 0 VT_BSTR
SDT_NUMBER VT_BSTR
SDT_INT VT_I4
SDT_FIXED_14_4 VT_CY
SDT_BOOLEAN VT_BOOL
SDT_DATETIME_ISO8601 VT_DATE
SDT_DATETIME_ISO8601TZ VT_DATE
SDT_DATE_ISO8601 VT_DATE
SDT_TIME_ISO8601 VT_DATE
SDT_TIME_ISO8601TZ VT_DATE
SDT_I1 VT_I1
SDT_I2 VT_I2
SDT_I4 VT_I4
SDT_UI1 VT_UI1
SDT_UI2 VT_UI2
SDT_UI4 VT_UI4
SDT_R4 VT_FLOAT
SDT_R8 VT_DOUBLE
SDT_FLOAT VT_DOUBLE
SDT_UUID VT_BSTR
SDT_BIN_BASE64 VT_ARRAY
SDT_BIN_HEX VT_ARRAY
SDT_CHAR VT_UI2 (wchar)
SDT_URI VT_BSTR
 
注意 调用 方法时,不得向接收值的参数传递 NULL 值。
 
注意 当控制点接收时,设备作为 [out] 参数发送的浮点值或返回值将更改。 例如,假设某个设备具有返回单个 [out] 浮点参数的操作Action1Out_float。 当控制点调用此操作时,设备返回值 -234.567;但是,控制点实际上接收值 -234.567001342773,而不是预期值 -234.567。

若要解决此问题,请使用 r4 而不是 float 作为非整数数值的 UPnP 数据类型。

 

要求

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

另请参阅

IUPnPService