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 |
---|---|
|
La connessione del dispositivo è già stata aperta da una chiamata precedente a IPortableDevice::Open. |
|
Il dispositivo non risponde più all'input. |
|
La connessione del dispositivo non è ancora stata aperta da una chiamata a IPortableDevice::Open. |
|
L'oggetto interfaccia è già stato collegato all'interfaccia del dispositivo. |
|
L'oggetto interfaccia è già stato collegato all'interfaccia IPortableDeviceService . |
|
L'oggetto interfaccia non è stato collegato al dispositivo. |
|
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 . |
|
IStream::Commit non è mai stato chiamato quando si crea un oggetto con dati in un dispositivo. |
|
La connessione al servizio è già stata aperta da una chiamata precedente a IPortableDevice::Open. |
|
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. |
|
La connessione al servizio non è ancora stata aperta da una chiamata a IPortableDeviceService::Open. |
|
Il destinatario specificato per un messaggio SMS non è valido. |
|
Il corpo di un messaggio specificato per un messaggio SMS non è valido. |
|
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 |
---|---|
|
Non è possibile eseguire il debug durante l'accesso al contenuto protetto da DRM. |
|
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 |
---|---|
|
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. |
|
Può essere usato per indicare che il numero di elementi in una matrice di dati ha superato i limiti (ULONGLONG). |
|
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. |
|
Un comando inviato al dispositivo è stato interrotto a causa di un annullamento, ad esempio chiamando uno dei metodi Cancel nell'API WPD. |
|
Può essere usato per indicare che un pacchetto di dati non valido è stato ricevuto dal dispositivo. |
|
Per un dispositivo MTP/IP, indica che la connessione non è riuscita a inizializzare perché il dispositivo è in uso. |
|
Il dispositivo è stato disconnesso o scollegato. |
|
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. |
|
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. |
|
Può essere usato per indicare che il dispositivo è stato disconnesso o scollegato. |
|
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. |
|
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. |
|
Può essere utilizzato per indicare che l'oggetto VARTYPE specificato non è valido per una determinata proprietà. |
|
È 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. |
|
Viene chiamata un'eliminazione non ricorsiva per un oggetto con elementi figlio. |
|
Il parametro fornito dall'applicazione non è valido. |
|
Può essere utilizzato per indicare che una conversione di una proprietà datetime non è riuscita. |
|
Può essere usato per indicare che il dispositivo ha smesso di rispondere (bloccato). Potrebbe essere necessario reimpostare manualmente il dispositivo. |
|
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. |
|
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. |
|
Può essere usato per indicare che una proprietà o un comando non è supportato dal dispositivo. |
|
Un comando inviato al dispositivo è stato interrotto a causa di un annullamento manuale, ad esempio chiamando uno dei metodi Cancel nell'API WPD. |
|
Può essere usato per indicare che il dispositivo non invia la quantità corretta di dati. |
|
Può essere usato per indicare che una risorsa (ad esempio un'anteprima o un'icona) non è presente nel dispositivo. |
|
Può essere usato per indicare che il dispositivo ha smesso di rispondere (bloccato). Potrebbe essere necessario reimpostare manualmente il dispositivo. |
|
Può essere usato per indicare che il dispositivo ha smesso di rispondere (bloccato). Potrebbe essere necessario reimpostare manualmente il dispositivo. |
|
Può essere usato per indicare che il formato specificato non è supportato dal dispositivo. |
|
Può essere usato per indicare che l'applicazione non è riuscita a inviare la quantità richiesta di dati al dispositivo. |
|
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 |
|