Compartir a través de


Método IUPnPService::InvokeAction (upnp.h)

El método InvokeAction invoca un método en el dispositivo.

Sintaxis

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

Parámetros

[in] bstrActionName

Especifica el método que se va a invocar.

[in] vInActionArgs

Especifica una matriz de argumentos de entrada para el método . Si la acción no tiene argumentos de entrada, este parámetro debe contener una matriz vacía.

El contenido de esta matriz es específico del servicio.

[in, out] pvOutActionArgs

En la entrada, contiene una referencia a una matriz vacía. En la salida, recibe una referencia a la matriz de argumentos de salida. Si la acción no tiene argumentos de salida, este parámetro contiene una matriz vacía.

El contenido de este parámetro es específico del servicio.

Libere este parámetro con VariantClear.

[in, out] pvRetVal

En la entrada, contiene una referencia a una matriz vacía. En la salida, recibe una referencia a un VARIANT que contiene el valor devuelto de esta acción.

Si el dispositivo devuelve un error después de invocar la acción en él y este parámetro no está establecido en NULL, este parámetro contendrá texto específico que describe el error al devolverlo. Para obtener más información sobre los errores devueltos por los dispositivos, consulte la documentación de códigos de error del dispositivo .

Libere este parámetro con VariantClear.

Valor devuelto

Si el método se realiza correctamente, el valor devuelto se S_OK. De lo contrario, el método devuelve uno de los códigos de error COM definidos en WinError.h o uno de los valores devueltos específicos de UPnP que se muestran en la tabla siguiente. Algunos de estos valores indican que se recibió un error de un dispositivo certificado por UPnP. Para obtener más información, consulte Códigos de error del dispositivo.

Código devuelto Descripción
UPNP_E_ACTION_REQUEST_FAILED
El dispositivo tenía un error interno; No se pudo ejecutar la solicitud.
UPNP_E_DEVICE_ERROR
Se produjo un error desconocido.
UPNP_E_DEVICE_TIMEOUT
El dispositivo no ha respondido dentro del período de tiempo de espera de 30 segundos.
UPNP_E_ERROR_PROCESSING_RESPONSE
El dispositivo ha enviado una respuesta que no se puede procesar; por ejemplo, la respuesta estaba dañada.
UPNP_E_INVALID_ACTION
El dispositivo no admite la acción.
UPNP_E_INVALID_ARGUMENTS
Uno o varios de los argumentos pasados en vInActionArgs no son válidos.
UPNP_E_PROTOCOL_ERROR
Error en el nivel de protocolo de control UPnP.
UPNP_E_TRANSPORT_ERROR
Error HTTP. Utilice la propiedad IUPnPService::LastTransportStatus para obtener el código de estado HTTP real.
Nota Este código de error también se devuelve cuando la respuesta SOAP supera los 100 kilobytes.
 

Comentarios

Cuando una aplicación invoca el método InvokeAction, incluye una lista de argumentos que deben coincidir con los argumentos esperados por el servicio. El punto de control asigna estos argumentos VARIANT al tipo necesario. En la tabla siguiente se muestran las asignaciones que se usan.

Tipo de datos Tipo devuelto por 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 (un wchar)
SDT_URI VT_BSTR
 
Nota Los parámetros que reciben valores no deben pasarse un valor NULL cuando se llama al método .
 
Nota Un valor de punto flotante enviado por un dispositivo como argumento [out] o un valor devuelto se cambiará cuando lo reciba el punto de control. Por ejemplo, considere un dispositivo con una acción Action1Out_float que devuelve un único argumento de punto flotante [out]. Cuando un punto de control invoca esta acción, el dispositivo devuelve el valor -234.567; Sin embargo, el punto de control recibe realmente el valor -234.567001342773 en lugar del valor esperado -234.567.

Para solucionar este problema, use r4 en lugar de float como tipo de datos UPnP para valores numéricos no enteros.

 

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible No se admite ninguno
Plataforma de destino Windows
Encabezado upnp.h
Archivo DLL Upnp.dll

Consulte también

IUPnPService