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 |
---|---|
|
La conexión del dispositivo ya se ha abierto mediante una llamada anterior a IPortableDevice::Open. |
|
El dispositivo ya no responderá a la entrada. |
|
La conexión del dispositivo aún no se ha abierto mediante una llamada a IPortableDevice::Open. |
|
El objeto de interfaz ya se ha conectado a la interfaz del dispositivo. |
|
El objeto de interfaz ya se ha asociado a la interfaz IPortableDeviceService . |
|
El objeto de interfaz no se ha conectado al dispositivo. |
|
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 . |
|
Nunca se llamó a IStream::Commit al crear un objeto con datos en un dispositivo. |
|
La conexión de servicio ya se ha abierto mediante una llamada anterior a IPortableDevice::Open. |
|
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. |
|
La conexión de servicio aún no se ha abierto mediante una llamada a IPortableDeviceService::Open. |
|
El destinatario especificado para un mensaje SMS no es válido. |
|
El cuerpo de un mensaje especificado para un mensaje SMS no es válido. |
|
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 |
---|---|
|
No se puede depurar al acceder al contenido protegido con DRM. |
|
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 |
---|---|
|
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. |
|
Se puede usar para indicar que el número de elementos de una matriz de datos ha superado sus límites (ULONGLONG). |
|
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. |
|
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. |
|
Se puede usar para indicar que se recibió un paquete de datos no válido del dispositivo. |
|
En el caso de un dispositivo MTP/IP, indica que no se pudo inicializar la conexión porque el dispositivo está en uso. |
|
El dispositivo se ha desconectado o desconectado. |
|
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. |
|
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. |
|
Se puede usar para indicar que el dispositivo se ha desconectado o desconectado. |
|
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. |
|
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. |
|
Se puede usar para indicar que el VARTYPE especificado no es válido para una propiedad determinada. |
|
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. |
|
Se llama a una eliminación no recursiva para un objeto con elementos secundarios. |
|
El parámetro proporcionado por la aplicación no es válido. |
|
Se puede usar para indicar que se ha producido un error en una conversión de una propiedad datetime. |
|
Se puede usar para indicar que el dispositivo ha dejado de responder (bloqueado). Es posible que el dispositivo deba restablecerse manualmente. |
|
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. |
|
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. |
|
Se puede usar para indicar que el dispositivo no admite una propiedad o un comando. |
|
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. |
|
Se puede usar para indicar que el dispositivo no envía la cantidad correcta de datos. |
|
Se puede usar para indicar que un recurso (como una miniatura o un icono) no está presente en el dispositivo. |
|
Se puede usar para indicar que el dispositivo ha dejado de responder (bloqueado). Es posible que el dispositivo deba restablecerse manualmente. |
|
Se puede usar para indicar que el dispositivo ha dejado de responder (bloqueado). Es posible que el dispositivo deba restablecerse manualmente. |
|
Se puede usar para indicar que el dispositivo no admite el formato especificado. |
|
Se puede usar para indicar que la aplicación no pudo enviar la cantidad solicitada de datos al dispositivo. |
|
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 |
|