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 |
---|---|
|
El dispositivo tenía un error interno; No se pudo ejecutar la solicitud. |
|
Se produjo un error desconocido. |
|
El dispositivo no ha respondido dentro del período de tiempo de espera de 30 segundos. |
|
El dispositivo ha enviado una respuesta que no se puede procesar; por ejemplo, la respuesta estaba dañada. |
|
El dispositivo no admite la acción. |
|
Uno o varios de los argumentos pasados en vInActionArgs no son válidos. |
|
Error en el nivel de protocolo de control UPnP. |
|
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 |
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 |