Condividi tramite


Metodo IUPnPService::InvokeAction (upnp.h)

Il metodo InvokeAction richiama un metodo nel dispositivo.

Sintassi

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

Parametri

[in] bstrActionName

Specifica il metodo da richiamare.

[in] vInActionArgs

Specifica una matrice di argomenti di input per il metodo. Se l'azione non include argomenti di input, questo parametro deve contenere una matrice vuota.

Il contenuto di questa matrice è specifico del servizio.

[in, out] pvOutActionArgs

In input, contiene un riferimento a una matrice vuota. Nell'output riceve un riferimento alla matrice di argomenti di output. Se l'azione non include argomenti di output, questo parametro contiene una matrice vuota.

Il contenuto di questo parametro è specifico del servizio.

Liberare questo parametro con VariantClear.

[in, out] pvRetVal

In input, contiene un riferimento a una matrice vuota. Nell'output riceve un riferimento a un VALORE VARIANT contenente il valore restituito di questa azione.

Se il dispositivo restituisce un errore dopo che l'azione viene richiamata e questo parametro non è impostato su NULL, questo parametro conterrà testo specifico che descrive l'errore al momento della restituzione. Per altre informazioni sugli errori restituiti dai dispositivi, vedere la documentazione dei codici di errore del dispositivo .

Liberare questo parametro con VariantClear.

Valore restituito

Se il metodo ha esito positivo, il valore restituito è S_OK. In caso contrario, il metodo restituisce uno dei codici di errore COM definiti in WinError.h o uno dei valori restituiti specifici di UPnP illustrati nella tabella seguente. Alcuni di questi valori indicano che un errore è stato ricevuto da un dispositivo certificato UPnP. Per altre informazioni, vedere Codici di errore del dispositivo.

Codice restituito Descrizione
UPNP_E_ACTION_REQUEST_FAILED
Il dispositivo ha avuto un errore interno; impossibile eseguire la richiesta.
UPNP_E_DEVICE_ERROR
Si è verificato un errore sconosciuto.
UPNP_E_DEVICE_TIMEOUT
Il dispositivo non ha risposto entro il periodo di timeout di 30 secondi.
UPNP_E_ERROR_PROCESSING_RESPONSE
Il dispositivo ha inviato una risposta che non può essere elaborata; ad esempio, la risposta è stata danneggiata.
UPNP_E_INVALID_ACTION
L'azione non è supportata dal dispositivo.
UPNP_E_INVALID_ARGUMENTS
Uno o più degli argomenti passati in vInActionArgs non sono validi.
UPNP_E_PROTOCOL_ERROR
Si è verificato un errore a livello di protocollo di controllo UPnP.
UPNP_E_TRANSPORT_ERROR
Si è verificato un errore HTTP. Utilizzare la proprietà IUPnPService::LastTransportStatus per ottenere il codice di stato HTTP effettivo.
Nota Questo codice di errore viene restituito anche quando la risposta SOAP supera 100 kilobyte.
 

Commenti

Quando un'applicazione richiama il metodo InvokeAction, include un elenco di argomenti che devono corrispondere agli argomenti previsti dal servizio. Il punto di controllo esegue il mapping di questi argomenti VARIANT al tipo richiesto. Nella tabella seguente vengono illustrati i mapping usati.

Tipo di dati Tipo restituito da 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 I parametri che ricevono valori non devono essere passati un valore NULL quando viene chiamato il metodo.
 
Nota Un valore a virgola mobile inviato da un dispositivo come argomento [out] o un valore restituito verrà modificato quando ricevuto dal punto di controllo. Si consideri ad esempio un dispositivo con un'azione Action1Out_float che restituisce un singolo argomento a virgola mobile [out]. Quando un punto di controllo richiama questa azione, il dispositivo restituisce il valore -234.567; tuttavia, il punto di controllo riceve effettivamente il valore -234.567001342773 anziché il valore previsto -234.567.

Per risolvere questo problema, usare r4 anziché float come tipo di dati UPnP per valori numerici non interi.

 

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Nessuno supportato
Piattaforma di destinazione Windows
Intestazione upnp.h
DLL Upnp.dll

Vedi anche

IUPnPService