Freigeben über


Gerätefehlercodes

Die Methoden InvokeAction und QueryStateVariable geben HRESULT-Werte zurück, die auf einen Gerätefehler hinweisen können (d. h. ein Fehler, der von einem UPnP-zertifizierten Gerät empfangen wird). Wenn ein Fehler von einem Gerät empfangen wird, gibt die Methode (InvokeAction oder QueryStateVariable) einen HRESULT-Wert zurück, der auf dem Gerätefehlercode basiert, wie in diesem Thema erläutert. Da eine Konvertierung auf den Gerätefehlercode angewendet wird, um einen HRESULT-Wert zu erzeugen, können Sie den Gerätefehlercode nicht direkt aus dem HRESULT-Wert lesen.

Konvertierung eines Gerätefehlercodes in ein HRESULT

Es gibt sowohl Standard- als auch nicht standardmäßige Gerätefehlercodes. Die Standardcodes haben für alle UPnP-zertifizierten Geräte die gleiche Bedeutung und weisen Werte auf, die kleiner als 600 sind. Die nicht standardmäßigen Codes sind herstellerspezifisch und weisen Werte zwischen 600 und 899 auf.

Ob der Gerätefehlercode standard ist, bestimmt, wie der HRESULT-Wert generiert wird:

  • Ein Standardmäßiger Gerätefehlercode wird einem HRESULT-Wert zugeordnet.
  • Ein nicht standardmäßiger Gerätefehlercode wird durch Anwenden einer Formel in den HRESULT-Wert eingebettet.

Beide Verfahren können umgekehrt werden, um den Gerätefehlercode aus einem bestimmten HRESULT-Wert zu bestimmen.

Ableiten eines Gerätefehlercodes von einem HRESULT-Wert

Wenn der HRESULT-Wert größer oder gleich UPNP_E_ACTION_SPECIFIC_BASE (0x80040300) und kleiner oder gleich UPNP_E_ACTION_SPECIFIC_MAX (0x8004042B) ist, ist der Gerätefehlercode nicht standardgemäß. Verwenden Sie die Formel im folgenden Abschnitt, um den Fehlercode zu bestimmen. Andernfalls ist der Gerätefehlercode Standard. Verwenden Sie die Tabelle im Abschnitt Zuordnung für Standardgerätefehlercodes, die die Zuordnung zwischen dem HRESULT-Wert und dem Gerätefehlercode bereitstellt.

Legen Sie für eine Textbeschreibung des Fehlers nach einem Aufruf von IUPnPService::InvokeAction den Parameter pvarRetVal auf ein leeres Array fest. Bei der Rückgabe enthält dieser Parameter eine Textbeschreibung des Fehlers, falls ein Fehler aufgetreten ist.

Formel für nicht standardmäßige Gerätefehlercodes

Verwenden Sie die folgende Formel, wenn UPNP_E_ACTION_SPECIFIC_BASEHRESULT ≤ ≤UPNP_E_ACTION_SPECIFIC_MAX.

Gerätefehlercode = (HRESULT - UPNP_E_ACTION_SPECIFIC_BASE) + FAULT_ACTION_SPECIFIC_BASE

Die Gleichung, die die tatsächlichen numerischen Werte ersetzt, lautet: Gerätefehlercode = (HRESULT - 0x80040300) + 0x0258

Zuordnung für Standardgerätefehlercodes

Verwenden Sie die folgende Zuordnung, wenn HRESULT<UPNP_E_ACTION_SPECIFIC_BASE.

HRESULT-Wert Gerätefehlercode Tatsächlicher Wert
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

 

Weitere Informationen

Gerätefehlercodes werden in "UPnP Device Architecture Version 1.0" angegeben. Die in diesem Thema erwähnten Konstanten sind in den Dateien Upnp.h und Upnp.idl definiert.