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 认证的设备收到错误。 有关详细信息,请参阅 设备错误代码。
返回代码 | 说明 |
---|---|
|
设备出现内部错误;无法执行请求。 |
|
出现未知错误。 |
|
设备在 30 秒超时期限内未响应。 |
|
设备发送了无法处理的响应;例如,响应已损坏。 |
|
设备不支持该操作。 |
|
在 vInActionArgs 中传递的一个或多个参数无效。 |
|
UPnP 控制协议级别发生错误。 |
|
发生 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 |