Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I metodi InvokeAction e QueryStateVariable restituiscono valori HRESULT che potrebbero indicare un errore del dispositivo, ovvero un errore ricevuto da un dispositivo certificato UPnP. Se viene ricevuto un errore da un dispositivo, il metodo (InvokeAction o QueryStateVariable) restituisce un valore HRESULT basato sul codice di errore del dispositivo, come illustrato in questo argomento. Poiché una conversione viene applicata al codice di errore del dispositivo per produrre un valore di HRESULT, non è possibile leggere il codice di errore del dispositivo direttamente dal valore HRESULT.
Conversione di un codice di errore del dispositivo in hresult
Esistono sia codici di errore standard che non standard del dispositivo. I codici standard hanno lo stesso significato in tutti i dispositivi certificati UPnP e hanno valori minori di 600. I codici non standard sono specifici del fornitore e hanno valori compresi tra 600 e 899.
Se il codice di errore del dispositivo è standard o meno determina come viene generato il valore HRESULT:
- Un codice di errore del dispositivo standard viene mappato a un valore HRESULT .
- Un codice di errore del dispositivo non standard viene incorporato nel valore HRESULT applicando una formula.
Entrambe queste procedure possono essere invertite per determinare il codice di errore del dispositivo da un valore specifico di HRESULT.
Derivazione di un codice di errore del dispositivo da un valore HRESULT
Se il valore HRESULT è maggiore o uguale a UPNP_E_ACTION_SPECIFIC_BASE (0x80040300) e minore o uguale a UPNP_E_ACTION_SPECIFIC_MAX (0x8004042B), il codice di errore del dispositivo non è standard, usare la formula nella sezione seguente per determinare il codice di errore. In caso contrario, il codice di errore del dispositivo è standard: usare la tabella nella sezione Mapping per codici di errore del dispositivo standard, che fornisce il mapping dal valore HRESULT al codice di errore del dispositivo.
Per una descrizione testuale dell'errore dopo una chiamata a IUPnPService::InvokeAction, impostare il parametro pvarRetVal su una matrice vuota. Al termine, questo parametro conterrà una descrizione testuale dell'errore, se presente.
Formula per codici di errore di dispositivi non standard
Usare la formula seguente se UPNP_E_ACTION_SPECIFIC_BASE ≤ HRESULT ≤UPNP_E_ACTION_SPECIFIC_MAX.
Codice errore dispositivo = (HRESULT - UPNP_E_ACTION_SPECIFIC_BASE) + FAULT_ACTION_SPECIFIC_BASE
Sostituendo i valori numerici effettivi, l'equazione è: Codice errore dispositivo = (HRESULT - 0x80040300) + 0x0258
Mapping dei codici di errore standard del dispositivo
Usare il mapping seguente se HRESULT<UPNP_E_ACTION_SPECIFIC_BASE.
| Valore HRESULT | Codice errore dispositivo | Valore effettivo |
|---|---|---|
| UPNP_E_INVALID_ACTION | ERRORE_AZIONE_NON_VALIDA | 401 |
| UPNP_E_INVALID_ARGUMENTS - Argomenti non validi | ERRORE_ARG_VALID_ARGUMENTO_INVALIDO | 402 |
| UPNP_E_OUT_OF_SYNC | FAULT_INVALID_SEQUENCE_NUMBER / ERRORE_NUMERO_DI_SEQUENZA_NON_VALIDO | 403 |
| UPNP_E_INVALID_VARIABLE | ERRORE_VARIABILE_NON_VALIDA | 404 |
| Richiesta d'azione non riuscita (UPNP_E_ACTION_REQUEST_FAILED) | ERRORE_INTERNO_DEL_DISPOSITIVO | 501 |
Altre informazioni
I codici di errore del dispositivo vengono specificati in "UPnP Device Architecture versione 1.0". Le costanti indicate in questo argomento sono definite nei file Upnp.h e Upnp.idl.