Поделиться через


Константы ошибок

Windows методы переносимых устройств могут возвращать различные коды ошибок HRESULT. Некоторые из них относятся к Windows переносимым устройствам, а другие определяются другими пакетами SDK или комплектами портов, используемыми для создания устройства. В этом разделе описываются различные коды ошибок, которые могут быть возвращены по источнику.

WPD определяет следующие константы ошибок.

Константа или значение Описание
E_WPD_DEVICE_ALREADY_OPENED
0x802A0001
Подключение к устройству уже открыто перед вызовом IPortableDevice::Open.
E_WPD_DEVICE_IS_HUNG
0x802A0006
Устройство больше не будет отвечать на входные данные.
E_WPD_DEVICE_NOT_OPEN
0x802A0002
Подключение к устройству еще не открыто вызовом IPortableDevice::Open.
E_WPD_OBJECT_ALREADY_ATTACHED_TO_DEVICE
0x802A0003
Объект интерфейса уже подключен к интерфейсу устройства.
E_WPD_OBJECT_ALREADY_ATTACHED_TO_SERVICE
0x802A00CA
Объект интерфейса уже подключен к интерфейсу IPortableDeviceService .
E_WPD_OBJECT_NOT_ATTACHED_TO_DEVICE
0x802A0004
Объект интерфейса не подключен к устройству.
E_WPD_OBJECT_NOT_ATTACHED_TO_SERVICE
0x802A00CB
Объект интерфейса не был присоединен к интерфейсу IPortableDeviceService . Как правило, это возвращается, если приложение пытается получить доступ к методам подключенного интерфейса, например IPortableDeviceServiceCapabilities, после вызова IPortableDevice::Close .
E_WPD_OBJECT_NOT_COMMITED
0x802A0005
IStream::Commit никогда не вызывался при создании объекта с данными на устройстве.
E_WPD_SERVICE_ALREADY_OPENED
0x802A00C8
Подключение к службе уже открыто перед вызовом IPortableDevice::Open.
E_WPD_SERVICE_BAD_PARAMETER_ORDER
0x802A00CC
Параметры метода для IPortableDeviceServiceMethods::Invoke или IPortableDeviceServiceMethods::InvokeAsync не заданы в правильном порядке. Параметр должен быть задан в порядке, указанном в WPD_PARAMETER_ATTRIBUTE_ORDER.
E_WPD_SERVICE_NOT_OPEN
0x802A00C9
Подключение к службе еще не открыто вызовом IPortableDeviceService::Open.
E_WPD_SMS_INVALID_RECIPIENT
0x802A0064
Получатель, указанный для сообщения SMS, недопустим.
E_WPD_SMS_INVALID_MESSAGE_BODY
0x802A0065
Текст сообщения, указанного для сообщения SMS, является недопустимым.
E_WPD_SMS_SERVICE_UNAVAILABLE
0x802A0066
Служба SMS недоступна.

Иногда может возникнуть ошибка, определенная в пакете SDK Windows Media Rights Manager. Список ошибок, определенных этим пакетом SDK, предоставляется в библиотеке MSDN. Однако следующие Windows ошибки пакета SDK Media Rights Manager не были включены в эту документацию.

Константа или значение Описание
NS_E_DRM_DEBUGGING_NOT_ALLOWED
0xC00D2767
Невозможно выполнить отладку при доступе к содержимому, защищенному DRM.
NS_E_NOT_LICENSED
0xC00D00CD
Содержимое не лицензируется.

WPD может возвращать в приложение стандартные коды ошибок Windows. В следующей таблице перечислены наиболее часто используемые стандартные коды ошибок Windows и распространенные условия ошибки при использовании устройства WPD.

Коды ошибок Win32 преобразуются в HRESULT с помощью макроса HRESULT_FROM_WIN32 .

Константа или значение Описание
ERROR_ACCESS_DENIED
0x80070005
Может использоваться для указания, что объект или свойство, доступные только для чтения, нельзя изменить или удалить. Может использоваться для указания на то, что доступ к объекту осуществляется за пределами области, например дочерний объект, который выходит за пределы иерархии службы устройств. Может использоваться для указания, что у приложения нет доступа (например, если управление доступом к устройствам ограничено групповая политика) для отправки команд WPD на устройство.
ERROR_ARITHMETIC_OVERFLOW
0x80070216
Может использоваться для указания того, что количество элементов в массиве данных превысило свои пределы (ULONGLONG).
ERROR_BUSY
0x800700AA
Может использоваться, чтобы указать, что устройство занято обработкой другой операции. Приложения должны ожидать завершения этой операции, прежде чем повторить попытку.
ERROR_CANCELLED
0x800704C7
Команда, отправленная на устройство, была прервана из-за отмены, например путем вызова одного из методов Cancel в API WPD.
ERROR_DATATYPE_MISMATCH
0x8007070C
Может использоваться для указания того, что от устройства был получен недопустимый пакет данных.
ERROR_DEVICE_IN_USE
0x80070964
Для устройства MTP/IP указывает, что подключение не удалось инициализировать, так как устройство используется.
ERROR_DEVICE_NOT_CONNECTE
0x8007048F
Устройство отключено или отключено.
ERROR_DIR_NOT_EMPTY
0x80070091
Может использоваться для указания того, что не рекурсивное удаление было вызвано для объекта с дочерними элементами. Приложение должно использовать флаг рекурсивного удаления в IPortableDeviceContent::D elete.
ERROR_EMPTY
0x800710D2
Может использоваться, чтобы указать, что устройству не удалось отправить какие-либо данные ресурса при ожидании данных ресурса (например, эскиз или значок устройства). Обычно это означает ошибку на устройстве.
ERROR_FILE_NOT_FOUND
0x80070002
Может использоваться для указания того, что устройство отключено или отключено.
ERROR_GEN_FAILURE
0x8007001F
Может использоваться для указания того, что устройство перестало отвечать (зависло) или что на устройстве произошел общий сбой. Возможно, устройство потребуется сбросить вручную.
ERROR_INVALID_DATA
0x8007000D
Может использоваться, чтобы указать, что данные, отправляемые или полученные с устройства, не могут быть правильно проанализированы. Это может указывать на ошибку на стороне устройства или транспорта. Если операции поставщика MTP отправляются на устройство, эта ошибка может указывать на то, что указанные параметры операции не относятся к допустимому типу VARTYPE.
ERROR_INVALID_DATATYPE
0x8007070C
Может использоваться, чтобы указать, что указанный тип VARTYPE недопустим для заданного свойства.
ERROR_INVALID_FUNCTION
0x80070001
Запрос на запись был выполнен к ресурсу на устройстве, открытом в режиме чтения с помощью IPortableDeviceResources::GetStream, или запрос на чтение, открытый для записи или создания.
ERROR_INVALID_OPERATION
0x800710DD
Для объекта с дочерними элементами вызывается не рекурсивное удаление.
ERROR_INVALID_PARAMETER
0x80070057
Недопустимый параметр, предоставленный приложением.
ERROR_INVALID_TIME
0x8007076D
Может использоваться для указания того, что преобразование свойства datetime завершилось сбоем.
ERROR_IO_DEVICE
0x8007045D
Может использоваться для указания того, что устройство перестало отвечать (зависло). Возможно, устройство потребуется сбросить вручную.
ERROR_NOT_FOUND
0x80070490
Может использоваться для указания того, что устройство поддерживает свойство, но это значение свойства в настоящее время является пустым или неинициализированным. Может использоваться для указания того, что внутренний контекст для длительной операции больше не существует, так как операция завершена или отменена. Примерами таких операций являются массовые свойства, перечисление объектов, передача и вызов методов службы устройств. Приложения должны повторить операцию с самого начала. Может использоваться для указания того, что указанный объект не существует. Дочерний объект может находиться за пределами иерархии службы устройств.
ERROR_NOT_READY
0x80070015
Может использоваться для указания неправильной инициализации операции. Обычно это указывает на внутреннюю ошибку или что приложение использует устаревший дескриптор устройства. Приложение должно повторить операцию с самого начала или повторно открыть устройство.
ERROR_NOT_SUPPORTED
0x80070032
Может использоваться для указания того, что свойство или команда не поддерживаются устройством.
ERROR_OPERATION_ABORTED
0x800703E3
Команда, отправленная на устройство, была прервана из-за ручной отмены, например путем вызова одного из методов Cancel в API WPD.
ERROR_READ_FAULT
0x8007001E
Может использоваться, чтобы указать, что устройство не отправляет правильный объем данных.
ERROR_RESOURCE_NOT_AVAILABLE
0x8007138E
Может использоваться для указания того, что ресурс (например, эскиз или значок) отсутствует на устройстве.
ERROR_SEM_TIMEOUT
0x80070079
Может использоваться для указания того, что устройство перестало отвечать (зависло). Возможно, устройство потребуется сбросить вручную.
ERROR_TIMEOUT
0x800705B4
Может использоваться для указания того, что устройство перестало отвечать (зависло). Возможно, устройство потребуется сбросить вручную.
ERROR_UNSUPPORTED_TYPE
0x8007065E
Может использоваться для указания того, что указанный формат не поддерживается устройством.
ERROR_WRITE_FAULT
0x8007001D
Может использоваться для указания того, что приложению не удалось отправить запрошенный объем данных на устройство.
WSAETIMEDOUT
0x8007274c
Для устройства MTP/IP указывает, что истекло время ожидания подключения к устройству. Возможно, устройство потребуется повторно подключиться вручную.

Коды ошибок протокола передачи мультимедиа

Устройства, поддерживающие протокол MTP, могут возвращать следующие коды ошибок. Большинство из этих кодов ошибок подразумевают ошибку в стеке MTP (обмен данными между драйвером класса MTP и устройством), но полезны при диагностике ситуации с ошибкой.

Описание HRESULT Код ответа MTP Описание кода ответа MTP Сведения
0x80042003 0x2003 Сеанс не открыт Указывает, что дескриптор сеанса операции не является открытым в данный момент сеансом. Это означает внутреннюю ошибку в стеке MTP.
0x80042004 0x2004 Недопустимый идентификатор транзакции Указывает, что transactionID равен нулю или не ссылается на допустимую транзакцию. Это означает внутреннюю ошибку в стеке MTP.
0x80042005 0x2005 Операция не поддерживается Указывает, что код операции, как представляется, является допустимым кодом, но устройство не поддерживает операцию. Это означает внутреннюю ошибку в стеке MTP.
0x80042006 0x2006 Параметр не поддерживается Указывает, что параметр, отличный от нуля, был указан в сочетании с операцией, а параметр не используется для этой операции. Это означает внутреннюю ошибку в стеке MTP.
0x80042007 0x2007 Неполный перенос Указывает, что передача не завершена, и все передаваемые данные должны быть удалены. Этот ответ не соответствует отмененной транзакции.
0x80042008 0x2008 Недопустимый идентификатор хранилища Указывает, что идентификатор хранилища, отправленный с операцией, не ссылается на фактическое допустимое хранилище, которое присутствует на устройстве. Это означает внутреннюю ошибку в стеке MTP.
0x80042009 0x2009 Invalid ObjectHandle Указывает, что дескриптор объекта не ссылается на фактический объект, который присутствует на устройстве. Приложение должно снова перечислить хранилища.
0x8004200A 0x200A DeviceProp не поддерживается Указывает, что код свойства устройства представляется допустимым кодом, но это свойство не поддерживается устройством. Это означает внутреннюю ошибку в стеке MTP.
0x8004200B 0x200B Invalid ObjectFormatCode Указывает, что устройство не поддерживает определенный код формата объекта, предоставленный в данном контексте.
0x80042012 0x2012 Частичное удаление Указывает, что только подмножество хранилищ, указанных для удаления, было удалено, так как некоторые из них были защищены записью или находились в хранилищах, доступных только для чтения.
0x80042013 0x2013 Магазин недоступен Указывает, что хранилище (или хранилище, содержащее указанный объект) физически недоступно. Это может быть вызвано извлечением мультимедиа. Этот ответ не следует использовать, чтобы указать, что магазин занят.
0x80042014 0x2014 Спецификация по формату не поддерживается Указывает, что операция попыталась указать действие только для объектов определенного формата, и эта возможность не поддерживается. Операция должна быть предпринята повторно, не указывая по формату. Любой ответ этой природы приводит к тому, что любая будущая попытка указать по формату с указанной операцией приведет к тому же ответу. Это означает внутреннюю ошибку в стеке MTP.
0x80042015 0x2015 No Valid ObjectInfo Указывает, что узел не предоставил действительные сведения об объекте устройству перед передачей объекта. Это означает внутреннюю ошибку в стеке MTP.
0x80042016 0x2016 Недопустимый формат кода Указывает, что код данных не имеет правильного формата и поэтому недопустим. Это означает внутреннюю ошибку в стеке MTP.
0x80042017 0x2017 Неизвестный код поставщика Устройство не знает, как обрабатывать расширенный код поставщика.
0x8004201A 0x201A Недопустимый parentObject Указывает, что объект не является допустимым родительским объектом. Это означает внутреннюю ошибку в стеке MTP.
0x8004201B 0x201B Недопустимый формат DeviceProp Указывает, что предпринята попытка задать свойство устройства, но данные не являются правильным размером или форматом. Это означает внутреннюю ошибку в стеке MTP.
0x8004201C 0x201C Недопустимое значение DeviceProp Указывает, что предпринята попытка задать для свойства устройства значение, которое не разрешено устройством. Это означает внутреннюю ошибку в стеке MTP.
0x8004201E 0x201E Сеанс уже открыт Указывает, что узел пытался открыть сеанс, пока сеанс уже открыт. Это означает внутреннюю ошибку в стеке MTP.
0x8004201F 0x201F Отменена транзакция Может использоваться для указания того, что операция была прервана из-за отмены вручную.
0x80042020 0x2020 Спецификация назначения не поддерживается Указывает, что устройство не поддерживает спецификацию назначения узлом. Это означает внутреннюю ошибку в стеке MTP.
0x8004A801 0xA801 Invalid_ObjectPropCode Указывает, что устройство не поддерживает отправленный код свойства объекта в этом контексте. Это означает внутреннюю ошибку в стеке MTP.
0x8004A802 0xA802 Invalid_ObjectProp_Format Указывает, что свойство объекта, отправленное на устройство, находится в неподдерживаемом размере или типе. Это означает внутреннюю ошибку в стеке MTP.
0x8004A803 0xA803 Invalid_ObjectProp_Value Указывает, что свойство объекта, отправленное на устройство, является правильным типом, но содержит значение, которое не поддерживается. Это означает внутреннюю ошибку в стеке MTP.
0x8004A804 0xA804 Invalid_ObjectReference Указывает, что ссылка на отправленный объект недопустимая. Ссылка содержит дескриптор объекта, не присутствующий на устройстве, или ссылка, пытающаяся установить, не поддерживается в контексте. Это может быть вызвано ошибкой в стеке MTP или из-за приложения с использованием устаревшего объекта хранилища.
0x8004A806 0xA806 Invalid_Dataset Указывает, что набор данных, отправленный на этапе данных этой операции, недопустим. Это означает внутреннюю ошибку в стеке MTP.
0x8004A807 0xA807 Object_Too_Large Указывает, что объект, который требуется отправить, не может храниться в файловой системе устройства. Это не должно быть возвращено, если в хранилище недостаточно места.
0x8004A301 0xA301 Invalid_ServiceID Указывает, что идентификатор службы, отправленный с операцией, не ссылается на фактическую действительную службу, которая присутствует на устройстве. Это означает внутреннюю ошибку в стеке MTP.
0x8004A302 0xA302 Invalid_ServicePropCode Указывает, что устройство не поддерживает отправленный код свойства службы в этом контексте. Это означает внутреннюю ошибку в стеке MTP.

Требования

Требование Значение
Заголовок
PortableDevice.h

См. также раздел

Константы