Método IUPnPService::InvokeAction (upnp.h)
O método InvokeAction invoca um método no dispositivo.
Sintaxe
HRESULT InvokeAction(
[in] BSTR bstrActionName,
[in] VARIANT vInActionArgs,
[in, out] VARIANT *pvOutActionArgs,
[in, out] VARIANT *pvRetVal
);
Parâmetros
[in] bstrActionName
Especifica o método a ser invocado.
[in] vInActionArgs
Especifica uma matriz de argumentos de entrada para o método . Se a ação não tiver argumentos de entrada, esse parâmetro deverá conter uma matriz vazia.
O conteúdo dessa matriz é específico do serviço.
[in, out] pvOutActionArgs
Na entrada, contém uma referência a uma matriz vazia. Na saída, recebe uma referência à matriz de argumentos de saída. Se a ação não tiver argumentos de saída, esse parâmetro conterá uma matriz vazia.
O conteúdo desse parâmetro é específico do serviço.
Libere esse parâmetro com VariantClear.
[in, out] pvRetVal
Na entrada, contém uma referência a uma matriz vazia. Na saída, recebe uma referência a uma VARIANT que contém o valor retornado dessa ação.
Se o dispositivo retornar um erro depois que a ação for invocada nele e esse parâmetro não estiver definido como NULL, esse parâmetro conterá um texto específico que descreve o erro após o retorno. Para obter mais informações sobre os erros retornados pelos dispositivos, consulte a documentação códigos de erro do dispositivo .
Libere esse parâmetro com VariantClear.
Retornar valor
Se o método for bem-sucedido, o valor retornado será S_OK. Caso contrário, o método retorna um dos códigos de erro COM definidos em WinError.h ou um dos valores retornados específicos do UPnP mostrados na tabela a seguir. Alguns desses valores indicam que um erro foi recebido de um dispositivo certificado por UPnP. Para obter mais informações, consulte Códigos de erro do dispositivo.
Código de retorno | Descrição |
---|---|
|
O dispositivo teve um erro interno; não foi possível executar a solicitação. |
|
Ocorreu um erro desconhecido. |
|
O dispositivo não respondeu dentro do período de tempo limite de 30 segundos. |
|
O dispositivo enviou uma resposta que não pode ser processada; por exemplo, a resposta foi corrompida. |
|
A ação não é compatível com o dispositivo. |
|
Um ou mais dos argumentos passados em vInActionArgs são inválidos. |
|
Ocorreu um erro no nível do protocolo de controle UPnP. |
|
Ocorreu um erro HTTP. Use a propriedade IUPnPService::LastTransportStatus para obter o código http status real.
Nota Esse código de erro também é retornado quando a resposta SOAP excede 100 quilobytes.
|
Comentários
Quando um aplicativo invoca o método InvokeAction, ele inclui uma lista de argumentos que devem corresponder aos argumentos esperados pelo serviço. O Ponto de Controle mapeia esses argumentos VARIANT para o tipo necessário. A tabela a seguir mostra os mapeamentos usados.
Tipo de dados | Tipo retornado 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 (um wchar) |
SDT_URI | VT_BSTR |
Para contornar esse problema, use r4 em vez de float como o tipo de dados UPnP para valores numéricos não inteiros.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Nenhum compatível |
Plataforma de Destino | Windows |
Cabeçalho | upnp.h |
DLL | Upnp.dll |