Condividi tramite


Codici di errore del dispositivo

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 HRESULT , non è possibile leggere il codice di errore del dispositivo direttamente dal valore HRESULT .

Conversione di un codice di errore del dispositivo in hresult

Sono disponibili 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 inferiori a 600. I codici non standard sono specifici del fornitore e hanno valori compresi tra 600 e 899.

Indica se il codice di errore del dispositivo è standard determina la modalità di generazione del valore HRESULT :

  • Viene eseguito il mapping di un codice di errore del dispositivo standard 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 HRESULT specifico.

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 i 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 i codici di errore del dispositivo non standard

Utilizzare la formula seguente se UPNP_E_ACTION_SPECIFIC_BASE≤ HRESULTUPNP_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 per i codici di errore del dispositivo standard

Usare il mapping seguente se HRESULT<UPNP_E_ACTION_SPECIFIC_BASE.

Valore HRESULT Codice errore dispositivo Valore effettivo
UPNP_E_INVALID_ACTION FAULT_INVALID_ACTION 401
UPNP_E_INVALID_ARGUMENTS FAULT_INVALID_ARG 402
UPNP_E_OUT_OF_SYNC FAULT_INVALID_SEQUENCE_NUMBER 403
UPNP_E_INVALID_VARIABLE FAULT_INVALID_VARIABLE 404
UPNP_E_ACTION_REQUEST_FAILED FAULT_DEVICE_INTERNAL_ERROR 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.