Share via


Constantes de erro

Os métodos dispositivos portáteis do Windows podem retornar uma variedade de códigos de erro HRESULT . Alguns são específicos para Dispositivos Portáteis do Windows, enquanto outros são definidos por outros SDKs ou kits de portabilidade usados para criar um dispositivo. Esta seção descreve os vários códigos de erro que podem ser retornados, organizados por origem.

O WPD define as seguintes constantes de erro.

Constante/valor Descrição
E_WPD_DEVICE_ALREADY_OPENED
0x802A0001
A conexão do dispositivo já foi aberta por uma chamada anterior para IPortableDevice::Open.
E_WPD_DEVICE_IS_HUNG
0x802A0006
O dispositivo não responderá mais à entrada.
E_WPD_DEVICE_NOT_OPEN
0x802A0002
A conexão do dispositivo ainda não foi aberta por uma chamada para IPortableDevice::Open.
E_WPD_OBJECT_ALREADY_ATTACHED_TO_DEVICE
0x802A0003
O objeto de interface já foi anexado à interface do dispositivo.
E_WPD_OBJECT_ALREADY_ATTACHED_TO_SERVICE
0x802A00CA
O objeto de interface já foi anexado à interface IPortableDeviceService .
E_WPD_OBJECT_NOT_ATTACHED_TO_DEVICE
0x802A0004
O objeto de interface não foi anexado ao dispositivo.
E_WPD_OBJECT_NOT_ATTACHED_TO_SERVICE
0x802A00CB
O objeto de interface não foi anexado à interface IPortableDeviceService . Normalmente, isso será retornado se o aplicativo tentar acessar métodos de uma interface anexada, como IPortableDeviceServiceCapabilities, depois que IPortableDevice::Close for chamado.
E_WPD_OBJECT_NOT_COMMITED
0x802A0005
IStream::Commit nunca foi chamado ao criar um objeto com dados em um dispositivo.
E_WPD_SERVICE_ALREADY_OPENED
0x802A00C8
A conexão de serviço já foi aberta por uma chamada anterior para IPortableDevice::Open.
E_WPD_SERVICE_BAD_PARAMETER_ORDER
0x802A00CC
Os parâmetros de método para IPortableDeviceServiceMethods::Invoke ou IPortableDeviceServiceMethods::InvokeAsync não estão definidos na ordem correta. O parâmetro deve ser definido na ordenação especificada por WPD_PARAMETER_ATTRIBUTE_ORDER.
E_WPD_SERVICE_NOT_OPEN
0x802A00C9
A conexão de serviço ainda não foi aberta por uma chamada para IPortableDeviceService::Open.
E_WPD_SMS_INVALID_RECIPIENT
0x802A0064
O destinatário especificado para uma mensagem SMS é inválido.
E_WPD_SMS_INVALID_MESSAGE_BODY
0x802A0065
O corpo de uma mensagem especificada para uma mensagem SMS é inválido.
E_WPD_SMS_SERVICE_UNAVAILABLE
0x802A0066
O serviço sms não está disponível.

Ocasionalmente, você pode encontrar um erro definido no SDK do Windows Media Rights Manager. Uma lista de erros definidos por esse SDK é fornecida na biblioteca MSDN. No entanto, os seguintes erros do SDK do Windows Media Rights Manager não foram incluídos nesta documentação.

Constante/valor Descrição
NS_E_DRM_DEBUGGING_NOT_ALLOWED
0xC00D2767
Você não pode depurar ao acessar o conteúdo protegido por DRM.
NS_E_NOT_LICENSED
0xC00D00CD
O conteúdo não está licenciado.

O WPD pode retornar códigos de erro padrão do Windows para o aplicativo. A tabela a seguir lista os códigos de erro padrão do Windows mais comumente usados e as condições de erro comuns ao usar um dispositivo WPD.

Os códigos de erro win32 são convertidos em HRESULTs usando a macro HRESULT_FROM_WIN32 .

Constante/valor Descrição
ERROR_ACCESS_DENIED
0x80070005
Pode ser usado para indicar que um objeto ou propriedade somente leitura não pode ser modificado ou excluído. Pode ser usado para indicar que o objeto está sendo acessado fora de seu escopo, por exemplo, um objeto filho que está fora da hierarquia de um serviço de dispositivo. Pode ser usado para indicar que o aplicativo não tem o acesso (por exemplo, se o controle de acesso aos dispositivos for restrito por Política de Grupo) para enviar comandos WPD para o dispositivo.
ERROR_ARITHMETIC_OVERFLOW
0x80070216
Pode ser usado para indicar que o número de elementos em uma matriz de dados excedeu seus limites (ULONGLONG).
ERROR_BUSY
0x800700AA
Pode ser usado para indicar que o dispositivo está ocupado processando outra operação. Os aplicativos devem aguardar a conclusão dessa operação antes de tentar novamente.
ERROR_CANCELLED
0x800704C7
Um comando enviado para o dispositivo foi anulado devido a um cancelamento, por exemplo, chamando um dos métodos Cancel na API do WPD.
ERROR_DATATYPE_MISMATCH
0x8007070C
Pode ser usado para indicar que um pacote de dados inválido foi recebido do dispositivo.
ERROR_DEVICE_IN_USE
0x80070964
Para um dispositivo MTP/IP, indica que a conexão não foi inicializada porque o dispositivo está em uso.
ERROR_DEVICE_NOT_CONNECTE
0x8007048F
O dispositivo foi desconectado ou desconectado.
ERROR_DIR_NOT_EMPTY
0x80070091
Pode ser usado para indicar que uma exclusão não recursiva foi chamada para um objeto com filhos. O aplicativo deve usar o sinalizador de exclusão recursiva em IPortableDeviceContent::D elete.
ERROR_EMPTY
0x800710D2
Pode ser usado para indicar que o dispositivo falhou ao enviar dados de recurso quando os dados de recurso eram esperados (por exemplo, uma miniatura ou um ícone de dispositivo). Isso geralmente indica um erro no dispositivo.
ERROR_FILE_NOT_FOUND
0x80070002
Pode ser usado para indicar que o dispositivo foi desconectado ou desconectado.
ERROR_GEN_FAILURE
0x8007001F
Pode ser usado para indicar que o dispositivo parou de responder (suspenso) ou que ocorreu uma falha geral no dispositivo. O dispositivo pode precisar ser redefinido manualmente.
ERROR_INVALID_DATA
0x8007000D
Pode ser usado para indicar que os dados enviados ou recebidos do dispositivo não podem ser analisados corretamente. Isso pode indicar um erro de transporte ou do lado do dispositivo. Se as operações do fornecedor de MTP forem enviadas para o dispositivo, esse erro poderá indicar que os parâmetros de operação especificados não são do VARTYPE válido.
ERROR_INVALID_DATATYPE
0x8007070C
Pode ser usado para indicar que o VARTYPE especificado é inválido para uma determinada propriedade.
ERROR_INVALID_FUNCTION
0x80070001
Uma solicitação de gravação foi feita a um recurso no dispositivo que foi aberto no modo de Leitura usando IPortableDeviceResources::GetStream ou uma solicitação de leitura foi feita a um recurso aberto para Gravação ou Criação.
ERROR_INVALID_OPERATION
0x800710DD
Uma exclusão não recursiva é chamada para um objeto com filhos.
ERROR_INVALID_PARAMETER
0x80070057
O parâmetro fornecido pelo aplicativo não é válido.
ERROR_INVALID_TIME
0x8007076D
Pode ser usado para indicar que uma conversão de uma propriedade datetime falhou.
ERROR_IO_DEVICE
0x8007045D
Pode ser usado para indicar que o dispositivo parou de responder (suspenso). O dispositivo pode precisar ser redefinido manualmente.
ERROR_NOT_FOUND
0x80070490
Pode ser usado para indicar que o dispositivo dá suporte a uma propriedade, mas esse valor de propriedade está vazio ou não inicializado no momento. Pode ser usado para indicar que o contexto interno de uma operação de execução longa não existe mais, pois a operação foi concluída ou cancelada. Exemplos dessas operações incluem propriedades em massa, enumeração de objeto, transferência e invocação de métodos de serviço de dispositivo. Os aplicativos devem repetir a operação desde o início. Pode ser usado para indicar que o objeto especificado não existe. O objeto filho pode estar fora da hierarquia de serviço do dispositivo.
ERROR_NOT_READY
0x80070015
Pode ser usado para indicar que uma operação não foi inicializada corretamente. Isso geralmente indica um erro interno ou que o aplicativo está usando um identificador de dispositivo obsoleto. O aplicativo deve repetir a operação desde o início ou reabrir o dispositivo.
ERROR_NOT_SUPPORTED
0x80070032
Pode ser usado para indicar que não há suporte para uma propriedade ou comando pelo dispositivo.
ERROR_OPERATION_ABORTED
0x800703E3
Um comando enviado ao dispositivo foi anulado devido a um cancelamento manual, por exemplo, chamando um dos métodos Cancel na API do WPD.
ERROR_READ_FAULT
0x8007001E
Pode ser usado para indicar que o dispositivo não está enviando a quantidade correta de dados.
ERROR_RESOURCE_NOT_AVAILABLE
0x8007138E
Pode ser usado para indicar que um recurso (como uma miniatura ou um ícone) não está presente no dispositivo.
ERROR_SEM_TIMEOUT
0x80070079
Pode ser usado para indicar que o dispositivo parou de responder (suspenso). O dispositivo pode precisar ser redefinido manualmente.
ERROR_TIMEOUT
0x800705B4
Pode ser usado para indicar que o dispositivo parou de responder (suspenso). O dispositivo pode precisar ser redefinido manualmente.
ERROR_UNSUPPORTED_TYPE
0x8007065E
Pode ser usado para indicar que o formato especificado não é compatível com o dispositivo.
ERROR_WRITE_FAULT
0x8007001D
Pode ser usado para indicar que o aplicativo não pôde enviar a quantidade de dados solicitada para o dispositivo.
WSAETIMEDOUT
0x8007274c
Para um dispositivo MTP/IP, indica que a conexão com o dispositivo atingiu o tempo limite. O dispositivo pode precisar ser reconectado manualmente.

Códigos de erro do protocolo de transferência de mídia

Os dispositivos que dão suporte ao protocolo MTP podem retornar os seguintes códigos de erro. A maioria desses códigos de erro implica um erro na pilha MTP (comunicação entre o driver de classe MTP e o dispositivo), mas são úteis para diagnosticar a situação de erro.

Descrição do HRESULT Código de resposta MTP Descrição do código de resposta MTP Detalhes
0x80042003 0x2003 Sessão Não Aberta Indica que o identificador de sessão da operação não é uma sessão aberta no momento. Isso indica um erro interno na pilha MTP.
0x80042004 0x2004 TransactionID inválida Indica que TransactionID é zero ou não se refere a uma transação válida. Isso indica um erro interno na pilha MTP.
0x80042005 0x2005 Operação sem suporte Indica que o código de operação parece ser um código válido, mas o dispositivo não dá suporte à operação. Isso indica um erro interno na pilha MTP.
0x80042006 0x2006 Parâmetro sem suporte Indica que um parâmetro diferente de zero foi especificado em conjunto com a operação e o parâmetro não é usado para essa operação. Isso indica um erro interno na pilha MTP.
0x80042007 0x2007 Transferência incompleta Indica que a transferência não foi concluída e os dados transferidos devem ser descartados. Essa resposta não corresponde a uma transação cancelada.
0x80042008 0x2008 StorageID inválido Indica que uma ID de armazenamento enviada com uma operação não se refere a um repositório válido real presente no dispositivo. Isso indica um erro interno na pilha MTP.
0x80042009 0x2009 ObjectHandle inválido Indica que um identificador de objeto não se refere a um objeto real presente no dispositivo. O aplicativo deve enumerar os armazenamentos novamente.
0x8004200A 0x200A DeviceProp sem suporte Indica que o código de propriedade do dispositivo parece ser um código válido, mas essa propriedade não é compatível com o dispositivo. Isso indica um erro interno na pilha MTP.
0x8004200B 0x200B ObjectFormatCode inválido Indica que o dispositivo não dá suporte ao código de formato de objeto específico fornecido no contexto fornecido.
0x80042012 0x2012 Exclusão parcial Indica que apenas um subconjunto dos armazenamentos indicados para exclusão foi realmente excluído, pois alguns eram protegidos por gravação ou estavam em repositórios que são somente leitura.
0x80042013 0x2013 Repositório não disponível Indica que o repositório (ou o repositório que contém o objeto indicado) não está fisicamente disponível. Isso pode ser causado pela ejeção de mídia. Essa resposta não deve ser usada para indicar que o repositório está ocupado.
0x80042014 0x2014 Especificação por formato sem suporte Indica que a operação tentou especificar a ação somente em objetos de um formato específico e que não há suporte para essa funcionalidade. A operação deve ser tentada novamente sem especificar por formato. Qualquer resposta dessa natureza infere que qualquer tentativa futura de especificar por formato com a operação indicada resultará na mesma resposta. Isso indica um erro interno na pilha MTP.
0x80042015 0x2015 Nenhum ObjectInfo válido Indica que o host não forneceu informações de objeto válidas ao dispositivo antes de transferir o objeto. Isso indica um erro interno na pilha MTP.
0x80042016 0x2016 Formato de código inválido Indica que o código de dados não tem o formato correto e, portanto, não é válido. Isso indica um erro interno na pilha MTP.
0x80042017 0x2017 Código do fornecedor desconhecido O dispositivo não sabe como lidar com o código estendido do fornecedor.
0x8004201A 0x201A ParentObject inválido Indica que o objeto não é um objeto pai válido. Isso indica um erro interno na pilha MTP.
0x8004201B 0x201B Formato DeviceProp inválido Indica que foi feita uma tentativa de definir uma propriedade do dispositivo, mas os dados não são do tamanho ou formato corretos. Isso indica um erro interno na pilha MTP.
0x8004201C 0x201C Valor DeviceProp inválido Indica que foi feita uma tentativa de definir uma propriedade de dispositivo para um valor que não é permitido pelo dispositivo. Isso indica um erro interno na pilha MTP
0x8004201E 0x201E Sessão já aberta Indica que o host tentou abrir a sessão enquanto uma sessão já estava aberta. Isso indica um erro interno na pilha MTP.
0x8004201F 0x201F Transação cancelada Pode ser usado para indicar que a operação foi interrompida devido ao cancelamento manual.
0x80042020 0x2020 Especificação de destino sem suporte Indica que o dispositivo não dá suporte à especificação de destino pelo host. Isso indica um erro interno na pilha MTP.
0x8004A801 0xA801 Invalid_ObjectPropCode Indica que o dispositivo não dá suporte ao Código de Propriedade de Objeto enviado neste contexto. Isso indica um erro interno na pilha MTP.
0x8004A802 0xA802 Invalid_ObjectProp_Format Indica que uma propriedade de objeto enviada para o dispositivo está em um tamanho ou tipo sem suporte. Isso indica um erro interno na pilha MTP.
0x8004A803 0xA803 Invalid_ObjectProp_Value Indica que uma propriedade de objeto enviada para o dispositivo é o tipo correto, mas contém um valor que não tem suporte. Isso indica um erro interno na pilha MTP.
0x8004A804 0xA804 Invalid_ObjectReference Indica que uma Referência de Objeto enviada não é válida. A referência contém um identificador de objeto não presente no dispositivo ou a referência que tenta ser definida não tem suporte no contexto. Isso pode ser devido a um erro na pilha MTP ou devido ao aplicativo usando um objeto de armazenamento obsoleto.
0x8004A806 0xA806 Invalid_Dataset Indica que o conjunto de dados enviado na fase de dados dessa operação é inválido. Isso indica um erro interno na pilha MTP.
0x8004A807 0xA807 Object_Too_Large Indica que o objeto desejado para ser enviado não pode ser armazenado no sistema de arquivos do dispositivo. Isso não será retornado quando não houver espaço suficiente no armazenamento.
0x8004A301 0xA301 Invalid_ServiceID Indica que uma ID de serviço enviada com uma operação não se refere a um serviço válido real que está presente no dispositivo. Isso indica um erro interno na pilha MTP.
0x8004A302 0xA302 Invalid_ServicePropCode Indica que o dispositivo não dá suporte ao Código de Propriedade de Serviço enviado neste contexto. Isso indica um erro interno na pilha MTP.

Requisitos

Requisito Valor
parâmetro
PortableDevice.h

Confira também

Constantes