Fehlerkonstanten

Windows Portable Devices-Methoden können eine Vielzahl von HRESULT-Fehlercodes zurückgeben. Einige sind spezifisch für tragbare Windows-Geräte, während andere durch andere SDKs oder Portierungskits definiert sind, die zum Erstellen eines Geräts verwendet werden. In diesem Abschnitt werden die verschiedenen Fehlercodes beschrieben, die zurückgegeben werden können, geordnet nach Ursprung.

WPD definiert die folgenden Fehlerkonstanten.

Konstante/Wert Beschreibung
E_WPD_DEVICE_ALREADY_OPENED
0x802A0001
Die Geräteverbindung wurde bereits durch einen vorherigen Aufruf von IPortableDevice::Open geöffnet.
E_WPD_DEVICE_IS_HUNG
0x802A0006
Das Gerät reagiert nicht mehr auf Eingaben.
E_WPD_DEVICE_NOT_OPEN
0x802A0002
Die Geräteverbindung wurde noch nicht durch einen Aufruf von IPortableDevice::Open geöffnet.
E_WPD_OBJECT_ALREADY_ATTACHED_TO_DEVICE
0x802A0003
Das Schnittstellenobjekt wurde bereits an die Geräteschnittstelle angefügt.
E_WPD_OBJECT_ALREADY_ATTACHED_TO_SERVICE
0x802A00CA
Das Schnittstellenobjekt wurde bereits an die IPortableDeviceService-Schnittstelle angefügt.
E_WPD_OBJECT_NOT_ATTACHED_TO_DEVICE
0x802A0004
Das Schnittstellenobjekt wurde nicht an das Gerät angefügt.
E_WPD_OBJECT_NOT_ATTACHED_TO_SERVICE
0x802A00CB
Das Schnittstellenobjekt wurde nicht an die IPortableDeviceService-Schnittstelle angefügt. In der Regel wird dies zurückgegeben, wenn die Anwendung versucht, auf Methoden einer angefügten Schnittstelle zuzugreifen, z. B. IPortableDeviceServiceCapabilities, nachdem IPortableDevice::Close aufgerufen wurde.
E_WPD_OBJECT_NOT_COMMITED
0x802A0005
IStream::Commit wurde nie aufgerufen, wenn ein Objekt mit Daten auf einem Gerät erstellt wurde.
E_WPD_SERVICE_ALREADY_OPENED
0x802A00C8
Die Dienstverbindung wurde bereits durch einen vorherigen Aufruf von IPortableDevice::Open geöffnet.
E_WPD_SERVICE_BAD_PARAMETER_ORDER
0x802A00CC
Die Methodenparameter für IPortableDeviceServiceMethods::Invoke oder IPortableDeviceServiceMethods::InvokeAsync werden nicht in der richtigen Reihenfolge festgelegt. Der Parameter muss in der durch WPD_PARAMETER_ATTRIBUTE_ORDER angegebenen Reihenfolge festgelegt werden.
E_WPD_SERVICE_NOT_OPEN
0x802A00C9
Die Dienstverbindung wurde noch nicht durch einen Aufruf von IPortableDeviceService::Open geöffnet.
E_WPD_SMS_INVALID_RECIPIENT
0x802A0064
Der für eine SMS angegebene Empfänger ist ungültig.
E_WPD_SMS_INVALID_MESSAGE_BODY
0x802A0065
Der Text einer Nachricht, die für eine SMS-Nachricht angegeben ist, ist ungültig.
E_WPD_SMS_SERVICE_UNAVAILABLE
0x802A0066
Der SMS-Dienst ist nicht verfügbar.

Gelegentlich tritt möglicherweise ein fehler auf, der im Windows Media Rights Manager SDK definiert ist. Eine Liste der von diesem SDK definierten Fehler wird in der MSDN Library angegeben. Die folgenden Windows Media Rights Manager SDK-Fehler wurden jedoch nicht in dieser Dokumentation enthalten.

Konstante/Wert Beschreibung
NS_E_DRM_DEBUGGING_NOT_ALLOWED
0xC00D2767
Sie können beim Zugriff auf DRM-geschützte Inhalte nicht debuggen.
NS_E_NOT_LICENSED
0xC00D00CD
Der Inhalt ist nicht lizenziert.

WPD gibt möglicherweise Standardmäßige Windows-Fehlercodes an die Anwendung zurück. In der folgenden Tabelle sind die am häufigsten verwendeten Windows-Standardfehlercodes und die allgemeinen Fehlerbedingungen bei Verwendung eines WPD-Geräts aufgeführt.

Win32-Fehlercodes werden mithilfe des HRESULT_FROM_WIN32-Makros in HRESULTs konvertiert.

Konstante/Wert Beschreibung
ERROR_ACCESS_DENIED
0x80070005
Kann verwendet werden, um anzugeben, dass ein schreibgeschütztes Objekt oder eine eigenschaft nicht geändert oder gelöscht werden kann. Kann verwendet werden, um anzugeben, dass auf das Objekt außerhalb seines Bereichs zugegriffen wird, z. B. ein untergeordnetes Objekt, das außerhalb der Hierarchie eines Gerätediensts liegt. Kann verwendet werden, um anzugeben, dass die Anwendung nicht über den Zugriff verfügt (z. B. wenn die Zugriffssteuerung auf Geräte durch Gruppenrichtlinie eingeschränkt ist), um WPD-Befehle an das Gerät zu senden.
ERROR_ARITHMETIC_OVERFLOW
0x80070216
Kann verwendet werden, um anzugeben, dass die Anzahl der Elemente in einem Datenarray seine Grenzwerte überschritten hat (ULONGLONGLONG).
ERROR_BUSY
0x800700AA
Kann verwendet werden, um anzugeben, dass das Gerät mit der Verarbeitung eines anderen Vorgangs beschäftigt ist. Anwendungen sollten warten, bis dieser Vorgang abgeschlossen ist, bevor es erneut versucht wird.
ERROR_CANCELLED
0x800704C7
Ein an das Gerät gesendeter Befehl wurde aufgrund eines Abbruchs abgebrochen, z. B. durch Aufrufen einer der Cancel-Methoden in der WPD-API.
ERROR_DATATYPE_MISMATCH
0x8007070C
Kann verwendet werden, um anzugeben, dass ein ungültiges Datenpaket vom Gerät empfangen wurde.
ERROR_DEVICE_IN_USE
0x80070964
Gibt für ein MTP/IP-Gerät an, dass die Verbindung nicht initialisiert werden konnte, weil das Gerät verwendet wird.
ERROR_DEVICE_NOT_CONNECTE
0x8007048F
Das Gerät wurde getrennt oder nicht angeschlossen.
ERROR_DIR_NOT_EMPTY
0x80070091
Kann verwendet werden, um anzugeben, dass ein nicht rekursives Löschen für ein Objekt mit untergeordneten Elementen aufgerufen wurde. Die Anwendung sollte das rekursive Löschflag in IPortableDeviceContent::D elete verwenden.
ERROR_EMPTY
0x800710D2
Kann verwendet werden, um anzugeben, dass das Gerät keine Ressourcendaten senden konnte, wenn Ressourcendaten erwartet wurden (z. B. eine Miniaturansicht oder ein Gerätesymbol). Dies weist in der Regel auf einen Fehler auf dem Gerät hin.
ERROR_FILE_NOT_FOUND
0x80070002
Kann verwendet werden, um anzugeben, dass das Gerät getrennt oder nicht angeschlossen wurde.
ERROR_GEN_FAILURE
0x8007001F
Kann verwendet werden, um anzugeben, dass das Gerät nicht mehr reagiert (hängend) oder dass ein allgemeiner Fehler auf dem Gerät aufgetreten ist. Das Gerät muss möglicherweise manuell zurückgesetzt werden.
ERROR_INVALID_DATA
0x8007000D
Kann verwendet werden, um anzugeben, dass daten, die an das Gerät gesendet oder empfangen werden, nicht ordnungsgemäß analysiert werden können. Dies kann auf einen geräteseitigen oder einen Transportfehler hinweisen. Wenn MTP-Anbietervorgänge an das Gerät gesendet werden, kann dieser Fehler darauf hindeuten, dass die angegebenen Vorgangsparameter nicht den gültigen VARTYPE-Wert aufweisen.
ERROR_INVALID_DATATYPE
0x8007070C
Kann verwendet werden, um anzugeben, dass der angegebene VARTYPE für eine bestimmte Eigenschaft ungültig ist.
ERROR_INVALID_FUNCTION
0x80070001
Eine Schreibanforderung wurde an eine Ressource auf dem Gerät gestellt, das im Lesemodus mit IPortableDeviceResources::GetStream geöffnet wurde, oder eine Leseanforderung wurde an eine Ressource gestellt, die für Schreiben oder Erstellen geöffnet wurde.
ERROR_INVALID_OPERATION
0x800710DD
Ein nicht rekursives Löschen wird für ein Objekt mit untergeordneten Elementen aufgerufen.
ERROR_INVALID_PARAMETER
0x80070057
Der von der Anwendung bereitgestellte Parameter ist ungültig.
ERROR_INVALID_TIME
0x8007076D
Kann verwendet werden, um anzugeben, dass bei der Konvertierung einer datetime-Eigenschaft ein Fehler aufgetreten ist.
ERROR_IO_DEVICE
0x8007045D
Kann verwendet werden, um anzugeben, dass das Gerät nicht mehr reagiert (hängend). Das Gerät muss möglicherweise manuell zurückgesetzt werden.
ERROR_NOT_FOUND
0x80070490
Kann verwendet werden, um anzugeben, dass das Gerät eine Eigenschaft unterstützt, aber dieser Eigenschaftswert ist derzeit leer oder nicht initialisiert. Kann verwendet werden, um anzugeben, dass der interne Kontext für einen Vorgang mit langer Ausführungsdauer nicht mehr vorhanden ist, da der Vorgang abgeschlossen oder abgebrochen wurde. Beispiele für solche Vorgänge sind Masseneigenschaften, Objektenumeration, Übertragung und Aufrufen von Gerätedienstmethoden. Anwendungen sollten den Vorgang von Anfang an wiederholen. Kann verwendet werden, um anzugeben, dass das angegebene Objekt nicht vorhanden ist. Das untergeordnete Objekt befindet sich möglicherweise außerhalb der Gerätediensthierarchie.
ERROR_NOT_READY
0x80070015
Kann verwendet werden, um anzugeben, dass ein Vorgang nicht ordnungsgemäß initialisiert wird. Dies weist in der Regel auf einen internen Fehler hin oder darauf, dass die Anwendung ein veraltetes Gerätehandle verwendet. Die Anwendung sollte den Vorgang von Anfang an wiederholen oder das Gerät erneut öffnen.
ERROR_NOT_SUPPORTED
0x80070032
Kann verwendet werden, um anzugeben, dass eine Eigenschaft oder ein Befehl vom Gerät nicht unterstützt wird.
ERROR_OPERATION_ABORTED
0x800703E3
Ein an das Gerät gesendeter Befehl wurde aufgrund eines manuellen Abbruchs abgebrochen, z. B. durch Aufrufen einer der Cancel-Methoden in der WPD-API.
ERROR_READ_FAULT
0x8007001E
Kann verwendet werden, um anzugeben, dass das Gerät nicht die richtige Datenmenge sendet.
ERROR_RESOURCE_NOT_AVAILABLE
0x8007138E
Kann verwendet werden, um anzugeben, dass eine Ressource (z. B. eine Miniaturansicht oder ein Symbol) auf dem Gerät nicht vorhanden ist.
ERROR_SEM_TIMEOUT
0x80070079
Kann verwendet werden, um anzugeben, dass das Gerät nicht mehr reagiert (hängend). Das Gerät muss möglicherweise manuell zurückgesetzt werden.
ERROR_TIMEOUT
0x800705B4
Kann verwendet werden, um anzugeben, dass das Gerät nicht mehr reagiert (hängend). Das Gerät muss möglicherweise manuell zurückgesetzt werden.
ERROR_UNSUPPORTED_TYPE
0x8007065E
Kann verwendet werden, um anzugeben, dass das angegebene Format vom Gerät nicht unterstützt wird.
ERROR_WRITE_FAULT
0x8007001D
Kann verwendet werden, um anzugeben, dass die Anwendung die angeforderte Datenmenge nicht an das Gerät senden konnte.
WSAETIMEDOUT
0x8007274c
Gibt für ein MTP/IP-Gerät an, dass bei der Verbindung mit dem Gerät ein Timeout aufgetreten ist. Das Gerät muss möglicherweise manuell wiederhergestellt werden.

Fehlercodes des Medienübertragungsprotokolls

Geräte, die das Media Transfer Protocol (MTP) unterstützen, können die folgenden Fehlercodes zurückgeben. Die meisten dieser Fehlercodes impliziert einen Fehler im MTP-Stapel (Kommunikation zwischen dem MTP-Klassentreiber und dem Gerät), sind jedoch bei der Diagnose der Fehlersituation hilfreich.

HRESULT-Beschreibung MTP-Antwortcode Beschreibung des MTP-Antwortcodes Details
0x80042003 0x2003 Sitzung nicht geöffnet Gibt an, dass das Sitzungshandle des Vorgangs keine derzeit geöffnete Sitzung ist. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x80042004 0x2004 Ungültige TransactionID Gibt an, dass die TransactionID null ist oder nicht auf eine gültige Transaktion verweist. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x80042005 0x2005 Vorgang nicht unterstützt Gibt an, dass der Vorgangscode ein gültiger Code zu sein scheint, aber das Gerät unterstützt den Vorgang nicht. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x80042006 0x2006 Parameter nicht unterstützt Gibt an, dass in Verbindung mit dem Vorgang ein Parameter ungleich 0 angegeben wurde und der Parameter nicht für diesen Vorgang verwendet wird. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x80042007 0x2007 Unvollständige Übertragung Gibt an, dass die Übertragung nicht abgeschlossen wurde und alle übertragenen Daten verworfen werden sollen. Diese Antwort entspricht nicht einer abgebrochenen Transaktion.
0x80042008 0x2008 Ungültige StorageID Gibt an, dass eine mit einem Vorgang gesendete Speicher-ID nicht auf einen tatsächlich gültigen Speicher verweist, der auf dem Gerät vorhanden ist. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x80042009 0x2009 Ungültiges ObjectHandle Gibt an, dass ein Objekthandle nicht auf ein tatsächliches Objekt verweist, das auf dem Gerät vorhanden ist. Die Anwendung sollte die Speicher erneut aufzählen.
0x8004200A 0x200A DeviceProp wird nicht unterstützt. Gibt an, dass der Geräteeigenschaftscode ein gültiger Code zu sein scheint, aber diese Eigenschaft vom Gerät nicht unterstützt wird. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x8004200B 0x200B Ungültiger ObjectFormatCode Gibt an, dass das Gerät den im angegebenen Kontext angegebenen Objektformatcode nicht unterstützt.
0x80042012 0x2012 Teilweises Löschen Gibt an, dass nur eine Teilmenge der zum Löschen angegebenen Speicher tatsächlich gelöscht wurde, da einige schreibgeschützt waren oder sich in schreibgeschützten Speicher befanden.
0x80042013 0x2013 Store nicht verfügbar Gibt an, dass der Speicher (oder der Speicher, der das angegebene Objekt enthält) nicht physisch verfügbar ist. Dies kann durch Medienauswurf verursacht werden. Diese Antwort darf nicht verwendet werden, um anzugeben, dass der Speicher ausgelastet ist.
0x80042014 0x2014 Spezifikation nach Format nicht unterstützt Gibt an, dass der Vorgang versucht hat, die Aktion nur für Objekte eines bestimmten Formats anzugeben, und dass diese Funktion nicht unterstützt wird. Der Vorgang sollte erneut ohne Angabe des Formats versucht werden. Jede Antwort dieser Art leitet ab, dass jeder zukünftige Versuch, nach Format mit dem angegebenen Vorgang anzugeben, zu derselben Antwort führt. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x80042015 0x2015 Keine gültige ObjectInfo Gibt an, dass der Host vor der Übertragung des Objekts keine gültigen Objektinformationen an das Gerät bereitgestellt hat. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x80042016 0x2016 Ungültiges Codeformat Gibt an, dass der Datencode nicht das richtige Format aufweist und daher ungültig ist. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x80042017 0x2017 Unbekannter Anbietercode Das Gerät weiß nicht, wie der erweiterte Code des Anbieters behandelt werden soll.
0x8004201A 0x201A Ungültiges ParentObject Gibt an, dass das Objekt kein gültiges übergeordnetes Objekt ist. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x8004201B 0x201B Ungültiges DeviceProp-Format Gibt an, dass versucht wurde, eine Geräteeigenschaft festzulegen, die Daten jedoch nicht die richtige Größe oder das richtige Format aufweisen. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x8004201C 0x201C Ungültiger DeviceProp-Wert Gibt an, dass versucht wurde, eine Geräteeigenschaft auf einen Wert festzulegen, der vom Gerät nicht zulässig ist. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x8004201E 0x201E Sitzung bereits geöffnet Gibt an, dass der Host versucht hat, die Sitzung zu öffnen, während eine Sitzung bereits geöffnet ist. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x8004201F 0x201F Transaktion abgebrochen Kann verwendet werden, um anzugeben, dass der Vorgang aufgrund eines manuellen Abbruchs unterbrochen wurde.
0x80042020 0x2020 Spezifikation des Ziels nicht unterstützt Gibt an, dass das Gerät die Angabe des Ziels durch den Host nicht unterstützt. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x8004A801 0xA801 Invalid_ObjectPropCode Gibt an, dass das Gerät den gesendeten Objekteigenschaftscode in diesem Kontext nicht unterstützt. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x8004A802 0xA802 Invalid_ObjectProp_Format Gibt an, dass eine an das Gerät gesendete Objekteigenschaft eine nicht unterstützte Größe oder einen nicht unterstützten Typ aufweist. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x8004A803 0xA803 Invalid_ObjectProp_Value Gibt an, dass eine an das Gerät gesendete Objekteigenschaft der richtige Typ ist, aber einen Wert enthält, der nicht unterstützt wird. Dies weist auf einen internen Fehler im MTP-Stapel hin.
0x8004A804 0xA804 Invalid_ObjectReference Gibt an, dass ein gesendeter Objektverweis ungültig ist. Entweder enthält der Verweis ein Objekthandle, das nicht auf dem Gerät vorhanden ist, oder der Verweis, der versucht, festgelegt zu werden, wird im Kontext nicht unterstützt. Dies kann auf einen Fehler im MTP-Stapel oder auf eine Anwendung zurückzuführen sein, die ein veraltetes Speicherobjekt verwendet.
0x8004A806 0xA806 Invalid_Dataset Gibt an, dass das in der Datenphase dieses Vorgangs gesendete Dataset ungültig ist. Dies deutet auf einen internen Fehler im MTP-Stapel hin.
0x8004A807 0xA807 Object_Too_Large Gibt an, dass das zu sendende Objekt nicht im Dateisystem des Geräts gespeichert werden kann. Diese wird nicht zurückgegeben, wenn nicht genügend Speicherplatz im Speicher vorhanden ist.
0x8004A301 0xA301 Invalid_ServiceID Gibt an, dass eine dienst-ID, die mit einem Vorgang gesendet wird, nicht auf einen tatsächlich gültigen Dienst verweist, der auf dem Gerät vorhanden ist. Dies deutet auf einen internen Fehler im MTP-Stapel hin.
0x8004A302 0xA302 Invalid_ServicePropCode Gibt an, dass das Gerät den gesendeten Diensteigenschaftscode in diesem Kontext nicht unterstützt. Dies deutet auf einen internen Fehler im MTP-Stapel hin.

Anforderungen

Anforderung Wert
Header
PortableDevice.h

Siehe auch

Konstanten