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 |
---|---|
|
Il dispositivo ha avuto un errore interno; impossibile eseguire la richiesta. |
|
Si è verificato un errore sconosciuto. |
|
Il dispositivo non ha risposto entro il periodo di timeout di 30 secondi. |
|
Il dispositivo ha inviato una risposta che non può essere elaborata; ad esempio, la risposta è stata danneggiata. |
|
L'azione non è supportata dal dispositivo. |
|
Uno o più degli argomenti passati in vInActionArgs non sono validi. |
|
Si è verificato un errore a livello di protocollo di controllo UPnP. |
|
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 |
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 |