Condividi tramite


Costanti di errore

I metodi dispositivi portatili Windows possono restituire un'ampia gamma di codici di errore HRESULT . Alcuni sono specifici dei dispositivi portatili Windows, mentre altri sono definiti da altri SDK o kit di conversione usati per compilare un dispositivo. Questa sezione descrive i vari codici di errore che possono essere restituiti, organizzati in base all'origine.

WPD definisce le costanti di errore seguenti.

Costante/valore Descrizione
E_WPD_DEVICE_ALREADY_OPENED
0x802A0001
La connessione del dispositivo è già stata aperta da una chiamata precedente a IPortableDevice::Open.
E_WPD_DEVICE_IS_HUNG
0x802A0006
Il dispositivo non risponde più all'input.
E_WPD_DEVICE_NOT_OPEN
0x802A0002
La connessione del dispositivo non è ancora stata aperta da una chiamata a IPortableDevice::Open.
E_WPD_OBJECT_ALREADY_ATTACHED_TO_DEVICE
0x802A0003
L'oggetto interfaccia è già stato collegato all'interfaccia del dispositivo.
E_WPD_OBJECT_ALREADY_ATTACHED_TO_SERVICE
0x802A00CA
L'oggetto interfaccia è già stato collegato all'interfaccia IPortableDeviceService .
E_WPD_OBJECT_NOT_ATTACHED_TO_DEVICE
0x802A0004
L'oggetto interfaccia non è stato collegato al dispositivo.
E_WPD_OBJECT_NOT_ATTACHED_TO_SERVICE
0x802A00CB
L'oggetto interfaccia non è stato collegato all'interfaccia IPortableDeviceService . In genere, viene restituito se l'applicazione tenta di accedere ai metodi di un'interfaccia associata, ad esempio IPortableDeviceServiceCapabilities, dopo la chiamata di IPortableDevice::Close .
E_WPD_OBJECT_NOT_COMMITED
0x802A0005
IStream::Commit non è mai stato chiamato quando si crea un oggetto con dati in un dispositivo.
E_WPD_SERVICE_ALREADY_OPENED
0x802A00C8
La connessione al servizio è già stata aperta da una chiamata precedente a IPortableDevice::Open.
E_WPD_SERVICE_BAD_PARAMETER_ORDER
0x802A00CC
I parametri del metodo per IPortableDeviceServiceMethods::Invoke o IPortableDeviceServiceMethods::InvokeAsync non vengono impostati nell'ordine corretto. Il parametro deve essere impostato nell'ordinamento specificato da WPD_PARAMETER_ATTRIBUTE_ORDER.
E_WPD_SERVICE_NOT_OPEN
0x802A00C9
La connessione al servizio non è ancora stata aperta da una chiamata a IPortableDeviceService::Open.
E_WPD_SMS_INVALID_RECIPIENT
0x802A0064
Il destinatario specificato per un messaggio SMS non è valido.
E_WPD_SMS_INVALID_MESSAGE_BODY
0x802A0065
Il corpo di un messaggio specificato per un messaggio SMS non è valido.
E_WPD_SMS_SERVICE_UNAVAILABLE
0x802A0066
Il servizio SMS non è disponibile.

In alcuni casi, potrebbe verificarsi un errore definito in Windows Media Rights Manager SDK. Elenco di errori definiti da tale SDK nella libreria MSDN. Tuttavia, gli errori seguenti di Windows Media Rights Manager SDK non sono stati inclusi in questa documentazione.

Costante/valore Descrizione
NS_E_DRM_DEBUGGING_NOT_ALLOWED
0xC00D2767
Non è possibile eseguire il debug durante l'accesso al contenuto protetto da DRM.
NS_E_NOT_LICENSED
0xC00D00CD
Il contenuto non è concesso in licenza.

WPD può restituire codici di errore di Windows standard all'applicazione. Nella tabella seguente sono elencati i codici di errore standard di Windows più comunemente usati e le condizioni di errore comuni quando si usa un dispositivo WPD.

I codici di errore Win32 vengono convertiti in HRESULTusando la macro HRESULT_FROM_WIN32 .

Costante/valore Descrizione
ERROR_ACCESS_DENIED
0x80070005
Può essere usato per indicare che non è possibile modificare o eliminare un oggetto o una proprietà di sola lettura. Può essere usato per indicare che l'oggetto viene accessibile all'esterno del relativo ambito, ad esempio un oggetto figlio che rientra all'esterno della gerarchia di un servizio dispositivo. Può essere usato per indicare che l'applicazione non dispone dell'accesso (ad esempio, se il controllo di accesso ai dispositivi è limitato da Criteri di gruppo) per inviare comandi WPD al dispositivo.
ERROR_ARITHMETIC_OVERFLOW
0x80070216
Può essere usato per indicare che il numero di elementi in una matrice di dati ha superato i limiti (ULONGLONG).
ERROR_BUSY
0x800700AA
Può essere usato per indicare che il dispositivo sta elaborando un'altra operazione. Le applicazioni devono attendere il completamento dell'operazione prima di ripetere i tentativi.
ERROR_CANCELLED
0x800704C7
Un comando inviato al dispositivo è stato interrotto a causa di un annullamento, ad esempio chiamando uno dei metodi Cancel nell'API WPD.
ERROR_DATATYPE_MISMATCH
0x8007070C
Può essere usato per indicare che un pacchetto di dati non valido è stato ricevuto dal dispositivo.
ERROR_DEVICE_IN_USE
0x80070964
Per un dispositivo MTP/IP, indica che la connessione non è riuscita a inizializzare perché il dispositivo è in uso.
ERROR_DEVICE_NOT_CONNECTE
0x8007048F
Il dispositivo è stato disconnesso o scollegato.
ERROR_DIR_NOT_EMPTY
0x80070091
Può essere usato per indicare che è stata chiamata un'eliminazione non ricorsiva per un oggetto con elementi figlio. L'applicazione deve usare il flag di eliminazione ricorsiva in IPortableDeviceContent::D elete.
ERROR_EMPTY
0x800710D2
Può essere usato per indicare che il dispositivo non è riuscito a inviare dati delle risorse quando i dati delle risorse erano previsti (ad esempio un'icona di anteprima o dispositivo). Questo indica in genere un errore nel dispositivo.
ERROR_FILE_NOT_FOUND
0x80070002
Può essere usato per indicare che il dispositivo è stato disconnesso o scollegato.
ERROR_GEN_FAILURE
0x8007001F
Può essere usato per indicare che il dispositivo ha smesso di rispondere (bloccato) o che si è verificato un errore generale nel dispositivo. Potrebbe essere necessario reimpostare manualmente il dispositivo.
ERROR_INVALID_DATA
0x8007000D
Può essere usato per indicare che i dati inviati o ricevuti dal dispositivo non possono essere analizzati correttamente. Ciò può indicare un errore sul lato dispositivo o un errore di trasporto. Se le operazioni del fornitore MTP vengono inviate al dispositivo, questo errore può indicare che i parametri dell'operazione specificati non sono validi per VARTYPE.
ERROR_INVALID_DATATYPE
0x8007070C
Può essere utilizzato per indicare che l'oggetto VARTYPE specificato non è valido per una determinata proprietà.
ERROR_INVALID_FUNCTION
0x80070001
È stata effettuata una richiesta di scrittura a una risorsa nel dispositivo aperto in modalità di lettura usando IPortableDeviceResources::GetStream oppure è stata effettuata una richiesta di lettura a una risorsa aperta per Scrittura o Creazione.
ERROR_INVALID_OPERATION
0x800710DD
Viene chiamata un'eliminazione non ricorsiva per un oggetto con elementi figlio.
ERROR_INVALID_PARAMETER
0x80070057
Il parametro fornito dall'applicazione non è valido.
ERROR_INVALID_TIME
0x8007076D
Può essere utilizzato per indicare che una conversione di una proprietà datetime non è riuscita.
ERROR_IO_DEVICE
0x8007045D
Può essere usato per indicare che il dispositivo ha smesso di rispondere (bloccato). Potrebbe essere necessario reimpostare manualmente il dispositivo.
ERROR_NOT_FOUND
0x80070490
Può essere usato per indicare che il dispositivo supporta una proprietà, ma il valore della proprietà è attualmente vuoto o non inizializzato. Può essere utilizzato per indicare che il contesto interno per un'operazione a esecuzione prolungata non esiste più, perché l'operazione è stata completata o è stata annullata. Esempi di tali operazioni includono proprietà bulk, enumerazione di oggetti, trasferimento e richiamo dei metodi del servizio dispositivi. Le applicazioni devono ripetere l'operazione dall'inizio. Può essere utilizzato per indicare che l'oggetto specificato non esiste. L'oggetto figlio può essere esterno alla gerarchia del servizio del dispositivo.
ERROR_NOT_READY
0x80070015
Può essere utilizzato per indicare che un'operazione non viene inizializzata correttamente. Ciò indica in genere un errore interno o che l'applicazione usa un handle di dispositivo non aggiornato. L'applicazione deve ripetere l'operazione dall'inizio o riaprire il dispositivo.
ERROR_NOT_SUPPORTED
0x80070032
Può essere usato per indicare che una proprietà o un comando non è supportato dal dispositivo.
ERROR_OPERATION_ABORTED
0x800703E3
Un comando inviato al dispositivo è stato interrotto a causa di un annullamento manuale, ad esempio chiamando uno dei metodi Cancel nell'API WPD.
ERROR_READ_FAULT
0x8007001E
Può essere usato per indicare che il dispositivo non invia la quantità corretta di dati.
ERROR_RESOURCE_NOT_AVAILABLE
0x8007138E
Può essere usato per indicare che una risorsa (ad esempio un'anteprima o un'icona) non è presente nel dispositivo.
ERROR_SEM_TIMEOUT
0x80070079
Può essere usato per indicare che il dispositivo ha smesso di rispondere (bloccato). Potrebbe essere necessario reimpostare manualmente il dispositivo.
ERROR_TIMEOUT
0x800705B4
Può essere usato per indicare che il dispositivo ha smesso di rispondere (bloccato). Potrebbe essere necessario reimpostare manualmente il dispositivo.
ERROR_UNSUPPORTED_TYPE
0x8007065E
Può essere usato per indicare che il formato specificato non è supportato dal dispositivo.
ERROR_WRITE_FAULT
0x8007001D
Può essere usato per indicare che l'applicazione non è riuscita a inviare la quantità richiesta di dati al dispositivo.
WSAETIMEDOUT
0x8007274c
Per un dispositivo MTP/IP, indica che la connessione al dispositivo è scaduta. Potrebbe essere necessario riconnettere manualmente il dispositivo.

Codici di errore del protocollo di trasferimento multimediale

I dispositivi che supportano Media Transfer Protocol (MTP) possono restituire i codici di errore seguenti. La maggior parte di questi codici di errore implica un errore nello stack MTP (comunicazione tra il driver di classe MTP e il dispositivo), ma è utile per diagnosticare la situazione di errore.

Descrizione HRESULT Codice di risposta MTP Descrizione del codice di risposta MTP Dettagli
0x80042003 0x2003 Sessione non aperta Indica che l'handle di sessione dell'operazione non è una sessione attualmente aperta. Questo indica un errore interno nello stack MTP.
0x80042004 0x2004 TransactionID non valido Indica che TransactionID è zero o non fa riferimento a una transazione valida. Questo indica un errore interno nello stack MTP.
0x80042005 0x2005 Operazione non supportata Indica che il codice dell'operazione sembra essere un codice valido, ma il dispositivo non supporta l'operazione. Questo indica un errore interno nello stack MTP.
0x80042006 0x2006 Parametro non supportato Indica che è stato specificato un parametro diverso da zero in combinazione con l'operazione e il parametro non viene usato per tale operazione. Questo indica un errore interno nello stack MTP.
0x80042007 0x2007 Trasferimento incompleto Indica che il trasferimento non è stato completato e i dati trasferiti devono essere rimossi. Questa risposta non corrisponde a una transazione annullata.
0x80042008 0x2008 StorageID non valido Indica che un ID di archiviazione inviato con un'operazione non fa riferimento a un archivio valido effettivo presente nel dispositivo. Questo indica un errore interno nello stack MTP.
0x80042009 0x2009 ObjectHandle non valido Indica che un handle di oggetto non fa riferimento a un oggetto effettivo presente nel dispositivo. L'applicazione deve enumerare nuovamente le risorse di archiviazione.
0x8004200A 0x200A DeviceProp non supportato Indica che il codice della proprietà del dispositivo sembra essere un codice valido, ma tale proprietà non è supportata dal dispositivo. Questo indica un errore interno nello stack MTP.
0x8004200B 0x200B ObjectFormatCode non valido Indica che il dispositivo non supporta il codice di formato oggetto specifico fornito nel contesto specificato.
0x80042012 0x2012 Eliminazione parziale Indica che solo un subset delle risorse di archiviazione indicate per l'eliminazione è stato effettivamente eliminato, perché alcuni sono stati protetti da scrittura o in archivi di sola lettura.
0x80042013 0x2013 Store non disponibile Indica che l'archivio (o l'archivio che contiene l'oggetto indicato) non è fisicamente disponibile. Ciò può essere causato dall'espulsione dei supporti. Questa risposta non verrà usata per indicare che l'archivio è occupato.
0x80042014 0x2014 Specifica per formato non supportato Indica che l'operazione ha tentato di specificare l'azione solo sugli oggetti di un formato specifico e che tale funzionalità non è supportata. L'operazione deve essere tentata di nuovo senza specificare in base al formato. Qualsiasi risposta di questa natura deduce che qualsiasi tentativo futuro di specificare in base al formato con l'operazione indicata genererà la stessa risposta. Questo indica un errore interno nello stack MTP.
0x80042015 0x2015 Nessun objectinfo valido Indica che l'host non ha fornito informazioni valide sull'oggetto al dispositivo prima del trasferimento dell'oggetto. Questo indica un errore interno nello stack MTP.
0x80042016 0x2016 Formato del codice non valido Indica che il codice dati non ha il formato corretto e pertanto non è valido. Questo indica un errore interno nello stack MTP.
0x80042017 0x2017 Codice fornitore sconosciuto Il dispositivo non sa come gestire il codice esteso del fornitore.
0x8004201A 0x201A ParentObject non valido Indica che l'oggetto non è un oggetto padre valido. Questo indica un errore interno nello stack MTP.
0x8004201B 0x201B Formato DeviceProp non valido Indica che è stato effettuato un tentativo di impostare una proprietà del dispositivo, ma i dati non sono di dimensioni o formato corretti. Questo indica un errore interno nello stack MTP.
0x8004201C 0x201C Valore DeviceProp non valido Indica che è stato effettuato un tentativo di impostare una proprietà del dispositivo su un valore non consentito dal dispositivo. Questo indica un errore interno nello stack MTP
0x8004201E 0x201E Sessione già aperta Indica che l'host ha tentato di aprire la sessione mentre una sessione è già aperta. Questo indica un errore interno nello stack MTP.
0x8004201F 0x201F Transazione annullata Può essere utilizzato per indicare che l'operazione è stata interrotta a causa dell'annullamento manuale.
0x80042020 0x2020 Specifica della destinazione non supportata Indica che il dispositivo non supporta la specifica della destinazione da parte dell'host. Questo indica un errore interno nello stack MTP.
0x8004A801 0xA801 Invalid_ObjectPropCode Indica che il dispositivo non supporta il codice proprietà oggetto inviato in questo contesto. Questo indica un errore interno nello stack MTP.
0x8004A802 0xA802 Invalid_ObjectProp_Format Indica che una proprietà dell'oggetto inviata al dispositivo si trova in una dimensione o un tipo non supportato. Questo indica un errore interno nello stack MTP.
0x8004A803 0xA803 Invalid_ObjectProp_Value Indica che una proprietà dell'oggetto inviata al dispositivo è il tipo corretto, ma contiene un valore non supportato. Questo indica un errore interno nello stack MTP.
0x8004A804 0xA804 Invalid_ObjectReference Indica che un riferimento all'oggetto inviato non è valido. Il riferimento contiene un handle di oggetti non presente nel dispositivo o il tentativo di riferimento da impostare non è supportato nel contesto. Ciò può essere dovuto a un errore nello stack MTP o a causa dell'applicazione usando un oggetto di archiviazione non aggiornato.
0x8004A806 0xA806 Invalid_Dataset Indica che il set di dati inviato nella fase dati di questa operazione non è valido. Questo indica un errore interno nello stack MTP.
0x8004A807 0xA807 Object_Too_Large Indica che l'oggetto da inviare non può essere archiviato nel file system del dispositivo. Questa operazione non verrà restituita quando lo spazio non è sufficiente nella risorsa di archiviazione.
0x8004A301 0xA301 Invalid_ServiceID Indica che un ID servizio inviato con un'operazione non fa riferimento a un servizio valido effettivo presente nel dispositivo. Questo indica un errore interno nello stack MTP.
0x8004A302 0xA302 Invalid_ServicePropCode Indica che il dispositivo non supporta il codice della proprietà del servizio inviato in questo contesto. Questo indica un errore interno nello stack MTP.

Requisiti

Requisito Valore
Intestazione
PortableDevice.h

Vedi anche

Costanti