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 |
---|---|
|
A conexão do dispositivo já foi aberta por uma chamada anterior para IPortableDevice::Open. |
|
O dispositivo não responderá mais à entrada. |
|
A conexão do dispositivo ainda não foi aberta por uma chamada para IPortableDevice::Open. |
|
O objeto de interface já foi anexado à interface do dispositivo. |
|
O objeto de interface já foi anexado à interface IPortableDeviceService . |
|
O objeto de interface não foi anexado ao dispositivo. |
|
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. |
|
IStream::Commit nunca foi chamado ao criar um objeto com dados em um dispositivo. |
|
A conexão de serviço já foi aberta por uma chamada anterior para IPortableDevice::Open. |
|
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. |
|
A conexão de serviço ainda não foi aberta por uma chamada para IPortableDeviceService::Open. |
|
O destinatário especificado para uma mensagem SMS é inválido. |
|
O corpo de uma mensagem especificada para uma mensagem SMS é inválido. |
|
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 |
---|---|
|
Você não pode depurar ao acessar o conteúdo protegido por DRM. |
|
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 |
---|---|
|
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. |
|
Pode ser usado para indicar que o número de elementos em uma matriz de dados excedeu seus limites (ULONGLONG). |
|
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. |
|
Um comando enviado para o dispositivo foi anulado devido a um cancelamento, por exemplo, chamando um dos métodos Cancel na API do WPD. |
|
Pode ser usado para indicar que um pacote de dados inválido foi recebido do dispositivo. |
|
Para um dispositivo MTP/IP, indica que a conexão não foi inicializada porque o dispositivo está em uso. |
|
O dispositivo foi desconectado ou desconectado. |
|
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. |
|
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. |
|
Pode ser usado para indicar que o dispositivo foi desconectado ou desconectado. |
|
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. |
|
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. |
|
Pode ser usado para indicar que o VARTYPE especificado é inválido para uma determinada propriedade. |
|
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. |
|
Uma exclusão não recursiva é chamada para um objeto com filhos. |
|
O parâmetro fornecido pelo aplicativo não é válido. |
|
Pode ser usado para indicar que uma conversão de uma propriedade datetime falhou. |
|
Pode ser usado para indicar que o dispositivo parou de responder (suspenso). O dispositivo pode precisar ser redefinido manualmente. |
|
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. |
|
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. |
|
Pode ser usado para indicar que não há suporte para uma propriedade ou comando pelo dispositivo. |
|
Um comando enviado ao dispositivo foi anulado devido a um cancelamento manual, por exemplo, chamando um dos métodos Cancel na API do WPD. |
|
Pode ser usado para indicar que o dispositivo não está enviando a quantidade correta de dados. |
|
Pode ser usado para indicar que um recurso (como uma miniatura ou um ícone) não está presente no dispositivo. |
|
Pode ser usado para indicar que o dispositivo parou de responder (suspenso). O dispositivo pode precisar ser redefinido manualmente. |
|
Pode ser usado para indicar que o dispositivo parou de responder (suspenso). O dispositivo pode precisar ser redefinido manualmente. |
|
Pode ser usado para indicar que o formato especificado não é compatível com o dispositivo. |
|
Pode ser usado para indicar que o aplicativo não pôde enviar a quantidade de dados solicitada para o dispositivo. |
|
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 |
|