Constantes de error

Los métodos de dispositivos portátiles de Windows pueden devolver una variedad de códigos de error HRESULT . Algunos son específicos de los dispositivos portátiles de Windows, mientras que otros se definen mediante otros SDK o kits de portabilidad que se usan para compilar un dispositivo. En esta sección se describen los distintos códigos de error que se pueden devolver, organizados por origen.

WPD define las siguientes constantes de error.

Constante o valor Descripción
E_WPD_DEVICE_ALREADY_OPENED
0x802A0001
La conexión del dispositivo ya se ha abierto mediante una llamada anterior a IPortableDevice::Open.
E_WPD_DEVICE_IS_HUNG
0x802A0006
El dispositivo ya no responderá a la entrada.
E_WPD_DEVICE_NOT_OPEN
0x802A0002
La conexión del dispositivo aún no se ha abierto mediante una llamada a IPortableDevice::Open.
E_WPD_OBJECT_ALREADY_ATTACHED_TO_DEVICE
0x802A0003
El objeto de interfaz ya se ha conectado a la interfaz del dispositivo.
E_WPD_OBJECT_ALREADY_ATTACHED_TO_SERVICE
0x802A00CA
El objeto de interfaz ya se ha asociado a la interfaz IPortableDeviceService .
E_WPD_OBJECT_NOT_ATTACHED_TO_DEVICE
0x802A0004
El objeto de interfaz no se ha conectado al dispositivo.
E_WPD_OBJECT_NOT_ATTACHED_TO_SERVICE
0x802A00CB
El objeto de interfaz no se ha adjuntado a la interfaz IPortableDeviceService . Normalmente, esto se devuelve si la aplicación intenta acceder a métodos de una interfaz adjunta, como IPortableDeviceServiceCapabilities, después de llamar a IPortableDevice::Close .
E_WPD_OBJECT_NOT_COMMITED
0x802A0005
Nunca se llamó a IStream::Commit al crear un objeto con datos en un dispositivo.
E_WPD_SERVICE_ALREADY_OPENED
0x802A00C8
La conexión de servicio ya se ha abierto mediante una llamada anterior a IPortableDevice::Open.
E_WPD_SERVICE_BAD_PARAMETER_ORDER
0x802A00CC
Los parámetros del método para IPortableDeviceServiceMethods::Invoke o IPortableDeviceServiceMethods::InvokeAsync no se establecen en el orden correcto. El parámetro debe establecerse en el orden especificado por WPD_PARAMETER_ATTRIBUTE_ORDER.
E_WPD_SERVICE_NOT_OPEN
0x802A00C9
La conexión de servicio aún no se ha abierto mediante una llamada a IPortableDeviceService::Open.
E_WPD_SMS_INVALID_RECIPIENT
0x802A0064
El destinatario especificado para un mensaje SMS no es válido.
E_WPD_SMS_INVALID_MESSAGE_BODY
0x802A0065
El cuerpo de un mensaje especificado para un mensaje SMS no es válido.
E_WPD_SMS_SERVICE_UNAVAILABLE
0x802A0066
El servicio SMS no está disponible.

En ocasiones, es posible que encuentre un error definido en el SDK de Windows Media Rights Manager. En MSDN Library se ofrece una lista de errores definidos por ese SDK. Sin embargo, en esta documentación no se incluyeron los siguientes errores del SDK de Windows Media Rights Manager.

Constante o valor Descripción
NS_E_DRM_DEBUGGING_NOT_ALLOWED
0xC00D2767
No se puede depurar al acceder al contenido protegido con DRM.
NS_E_NOT_LICENSED
0xC00D00CD
El contenido no tiene licencia.

WPD puede devolver códigos de error estándar de Windows a la aplicación. En la tabla siguiente se enumeran los códigos de error estándar de Windows más usados y las condiciones de error comunes al usar un dispositivo WPD.

Los códigos de error de Win32 se convierten en HRESULTmediante la macro HRESULT_FROM_WIN32 .

Constante o valor Descripción
ERROR_ACCESS_DENIED
0x80070005
Se puede usar para indicar que un objeto o propiedad de solo lectura no se puede modificar ni eliminar. Se puede usar para indicar que se accede al objeto fuera de su ámbito, por ejemplo, un objeto secundario que se encuentra fuera de la jerarquía de un servicio de dispositivo. Puede usarse para indicar que la aplicación no tiene acceso (por ejemplo, si el control de acceso a los dispositivos está restringido por directiva de grupo) para enviar comandos WPD al dispositivo.
ERROR_ARITHMETIC_OVERFLOW
0x80070216
Se puede usar para indicar que el número de elementos de una matriz de datos ha superado sus límites (ULONGLONG).
ERROR_BUSY
0x800700AA
Puede usarse para indicar que el dispositivo está ocupado procesando otra operación. Las aplicaciones deben esperar a que se complete esa operación antes de volver a intentarlo.
ERROR_CANCELLED
0x800704C7
Se ha anulado un comando enviado al dispositivo debido a una cancelación, por ejemplo, llamando a uno de los métodos Cancel en la API de WPD.
ERROR_DATATYPE_MISMATCH
0x8007070C
Se puede usar para indicar que se recibió un paquete de datos no válido del dispositivo.
ERROR_DEVICE_IN_USE
0x80070964
En el caso de un dispositivo MTP/IP, indica que no se pudo inicializar la conexión porque el dispositivo está en uso.
ERROR_DEVICE_NOT_CONNECTE
0x8007048F
El dispositivo se ha desconectado o desconectado.
ERROR_DIR_NOT_EMPTY
0x80070091
Se puede usar para indicar que se llamó a una eliminación no recursiva para un objeto con elementos secundarios. La aplicación debe usar la marca de eliminación recursiva en IPortableDeviceContent::D elete.
ERROR_EMPTY
0x800710D2
Se puede usar para indicar que el dispositivo no pudo enviar datos de recursos cuando se esperaban datos de recursos (por ejemplo, un icono de miniatura o dispositivo). Esto suele indicar un error en el dispositivo.
ERROR_FILE_NOT_FOUND
0x80070002
Se puede usar para indicar que el dispositivo se ha desconectado o desconectado.
ERROR_GEN_FAILURE
0x8007001F
Se puede usar para indicar que el dispositivo ha dejado de responder (bloqueado) o se ha producido un error general en el dispositivo. Es posible que el dispositivo deba restablecerse manualmente.
ERROR_INVALID_DATA
0x8007000D
Se puede usar para indicar que los datos enviados o recibidos desde el dispositivo no se pueden analizar correctamente. Esto puede indicar un error de transporte o del lado del dispositivo. Si las operaciones del proveedor de MTP se envían al dispositivo, este error puede indicar que los parámetros de operación especificados no son del VARTYPE válido.
ERROR_INVALID_DATATYPE
0x8007070C
Se puede usar para indicar que el VARTYPE especificado no es válido para una propiedad determinada.
ERROR_INVALID_FUNCTION
0x80070001
Se realizó una solicitud de escritura en un recurso en el dispositivo que se abrió en modo de lectura mediante IPortableDeviceResources::GetStream o se realizó una solicitud de lectura en un recurso abierto para Escribir o Crear.
ERROR_INVALID_OPERATION
0x800710DD
Se llama a una eliminación no recursiva para un objeto con elementos secundarios.
ERROR_INVALID_PARAMETER
0x80070057
El parámetro proporcionado por la aplicación no es válido.
ERROR_INVALID_TIME
0x8007076D
Se puede usar para indicar que se ha producido un error en una conversión de una propiedad datetime.
ERROR_IO_DEVICE
0x8007045D
Se puede usar para indicar que el dispositivo ha dejado de responder (bloqueado). Es posible que el dispositivo deba restablecerse manualmente.
ERROR_NOT_FOUND
0x80070490
Se puede usar para indicar que el dispositivo admite una propiedad, pero ese valor de propiedad está vacío o no inicializado actualmente. Se puede usar para indicar que el contexto interno de una operación de larga duración ya no existe, ya que la operación se ha completado o se ha cancelado. Algunos ejemplos de estas operaciones incluyen propiedades masivas, enumeración de objetos, transferencia e invocación de métodos de servicio de dispositivo. Las aplicaciones deben reintentar la operación desde el principio. Se puede usar para indicar que el objeto especificado no existe. El objeto secundario puede estar fuera de la jerarquía del servicio de dispositivo.
ERROR_NOT_READY
0x80070015
Se puede usar para indicar que una operación no se inicializa correctamente. Esto suele indicar un error interno o que la aplicación usa un identificador de dispositivo obsoleto. La aplicación debe reintentar la operación desde el principio o volver a abrir el dispositivo.
ERROR_NOT_SUPPORTED
0x80070032
Se puede usar para indicar que el dispositivo no admite una propiedad o un comando.
ERROR_OPERATION_ABORTED
0x800703E3
Se ha anulado un comando enviado al dispositivo debido a una cancelación manual, por ejemplo, llamando a uno de los métodos Cancel de la API de WPD.
ERROR_READ_FAULT
0x8007001E
Se puede usar para indicar que el dispositivo no envía la cantidad correcta de datos.
ERROR_RESOURCE_NOT_AVAILABLE
0x8007138E
Se puede usar para indicar que un recurso (como una miniatura o un icono) no está presente en el dispositivo.
ERROR_SEM_TIMEOUT
0x80070079
Se puede usar para indicar que el dispositivo ha dejado de responder (bloqueado). Es posible que el dispositivo deba restablecerse manualmente.
ERROR_TIMEOUT
0x800705B4
Se puede usar para indicar que el dispositivo ha dejado de responder (bloqueado). Es posible que el dispositivo deba restablecerse manualmente.
ERROR_UNSUPPORTED_TYPE
0x8007065E
Se puede usar para indicar que el dispositivo no admite el formato especificado.
ERROR_WRITE_FAULT
0x8007001D
Se puede usar para indicar que la aplicación no pudo enviar la cantidad solicitada de datos al dispositivo.
WSAETIMEDOUT
0x8007274c
En el caso de un dispositivo MTP/IP, indica que la conexión al dispositivo ha agotado el tiempo de espera. Es posible que el dispositivo deba volver a conectarse manualmente.

Códigos de error del protocolo de transferencia de medios

Los dispositivos que admiten el Protocolo de transferencia de medios (MTP) pueden devolver los siguientes códigos de error. La mayoría de estos códigos de error implican un error en la pila MTP (comunicación entre el controlador de clase MTP y el dispositivo), pero son útiles para diagnosticar la situación de error.

Descripción de HRESULT Código de respuesta MTP Descripción del código de respuesta mtP Detalles
0x80042003 0x2003 Sesión no abierta Indica que el identificador de sesión de la operación no es una sesión abierta actualmente. Esto indica un error interno en la pila MTP.
0x80042004 0x2004 TransactionID no válido Indica que TransactionID es cero o no hace referencia a una transacción válida. Esto indica un error interno en la pila MTP.
0x80042005 0x2005 Operación no admitida Indica que el código de operación parece ser un código válido, pero el dispositivo no admite la operación. Esto indica un error interno en la pila MTP.
0x80042006 0x2006 Parámetro no admitido Indica que se especificó un parámetro distinto de cero junto con la operación y el parámetro no se usa para esa operación. Esto indica un error interno en la pila MTP.
0x80042007 0x2007 Transferencia incompleta Indica que la transferencia no se completó y que se deben descartar los datos transferidos. Esta respuesta no corresponde a una transacción cancelada.
0x80042008 0x2008 StorageID no válido Indica que un identificador de almacenamiento enviado con una operación no hace referencia a un almacén válido real que está presente en el dispositivo. Esto indica un error interno en la pila MTP.
0x80042009 0x2009 ObjectHandle no válido Indica que un identificador de objeto no hace referencia a un objeto real que está presente en el dispositivo. La aplicación debe volver a enumerar los almacenamientos.
0x8004200A 0x200A DeviceProp no compatible Indica que el código de propiedad del dispositivo parece ser un código válido, pero esa propiedad no es compatible con el dispositivo. Esto indica un error interno en la pila MTP.
0x8004200B 0x200B ObjectFormatCode no válido Indica que el dispositivo no admite el código de formato de objeto determinado proporcionado en el contexto especificado.
0x80042012 0x2012 Eliminación parcial Indica que solo se eliminó un subconjunto de los almacenamientos indicados para su eliminación, ya que algunos estaban protegidos por escritura o estaban en almacenes que son de solo lectura.
0x80042013 0x2013 Tienda no disponible Indica que el almacén (o el almacén que contiene el objeto indicado) no está disponible físicamente. Esto puede deberse a la ejección multimedia. Esta respuesta no se usará para indicar que el almacén está ocupado.
0x80042014 0x2014 Especificación por formato no compatible Indica que la operación intentó especificar la acción solo en objetos de un formato determinado y esa funcionalidad no se admite. La operación debe intentarse de nuevo sin especificar por formato. Cualquier respuesta de esta naturaleza deduce que cualquier intento futuro de especificar por formato con la operación indicada dará como resultado la misma respuesta. Esto indica un error interno en la pila MTP.
0x80042015 0x2015 No hay objectInfo válido Indica que el host no proporcionó información de objeto válida al dispositivo antes de transferir el objeto. Esto indica un error interno en la pila MTP.
0x80042016 0x2016 Formato de código no válido Indica que el código de datos no tiene el formato correcto y, por tanto, no es válido. Esto indica un error interno en la pila MTP.
0x80042017 0x2017 Código de proveedor desconocido El dispositivo no sabe cómo controlar el código extendido del proveedor.
0x8004201A 0x201A ParentObject no válido Indica que el objeto no es un objeto primario válido. Esto indica un error interno en la pila MTP.
0x8004201B 0x201B Formato DeviceProp no válido Indica que se intentó establecer una propiedad de dispositivo, pero los datos no tienen el tamaño o el formato correctos. Esto indica un error interno en la pila MTP.
0x8004201C 0x201C Valor DeviceProp no válido Indica que se intentó establecer una propiedad de dispositivo en un valor que el dispositivo no permite. Esto indica un error interno en la pila de MTP.
0x8004201E 0x201E Sesión ya abierta Indica que el host intentó abrir la sesión mientras una sesión ya está abierta. Esto indica un error interno en la pila MTP.
0x8004201F 0x201F Transacción cancelada Se puede usar para indicar que la operación se interrumpió debido a la cancelación manual.
0x80042020 0x2020 Especificación de destino no compatible Indica que el dispositivo no admite la especificación de destino por parte del host. Esto indica un error interno en la pila MTP.
0x8004A801 0xA801 Invalid_ObjectPropCode Indica que el dispositivo no admite el código de propiedad de objeto enviado en este contexto. Esto indica un error interno en la pila MTP.
0x8004A802 0xA802 Invalid_ObjectProp_Format Indica que una propiedad de objeto enviada al dispositivo está en un tamaño o tipo no admitidos. Esto indica un error interno en la pila MTP.
0x8004A803 0xA803 Invalid_ObjectProp_Value Indica que una propiedad de objeto enviada al dispositivo es el tipo correcto, pero contiene un valor que no se admite. Esto indica un error interno en la pila MTP.
0x8004A804 0xA804 Invalid_ObjectReference Indica que una referencia de objeto enviada no es válida. La referencia contiene un identificador de objeto que no está presente en el dispositivo o el intento de referencia que se va a establecer no se admite en el contexto. Esto puede deberse a un error en la pila MTP o debido a que la aplicación usa un objeto de almacenamiento obsoleto.
0x8004A806 0xA806 Invalid_Dataset Indica que el conjunto de datos enviado en la fase de datos de esta operación no es válido. Esto indica un error interno en la pila MTP.
0x8004A807 0xA807 Object_Too_Large Indica que el objeto que se desea enviar no se puede almacenar en el sistema de archivos del dispositivo. Esto no se devolverá cuando no haya espacio suficiente en el almacenamiento.
0x8004A301 0xA301 Invalid_ServiceID Indica que un identificador de servicio enviado con una operación no hace referencia a un servicio válido real que está presente en el dispositivo. Esto indica un error interno en la pila MTP.
0x8004A302 0xA302 Invalid_ServicePropCode Indica que el dispositivo no admite el código de propiedad de servicio enviado en este contexto. Esto indica un error interno en la pila MTP.

Requisitos

Requisito Value
Encabezado
PortableDevice.h

Consulte también

Constantes