Константы ошибок
Windows методы переносимых устройств могут возвращать различные коды ошибок HRESULT. Некоторые из них относятся к Windows переносимым устройствам, а другие определяются другими пакетами SDK или комплектами портов, используемыми для создания устройства. В этом разделе описываются различные коды ошибок, которые могут быть возвращены по источнику.
WPD определяет следующие константы ошибок.
Константа или значение | Описание |
---|---|
|
Подключение к устройству уже открыто перед вызовом IPortableDevice::Open. |
|
Устройство больше не будет отвечать на входные данные. |
|
Подключение к устройству еще не открыто вызовом IPortableDevice::Open. |
|
Объект интерфейса уже подключен к интерфейсу устройства. |
|
Объект интерфейса уже подключен к интерфейсу IPortableDeviceService . |
|
Объект интерфейса не подключен к устройству. |
|
Объект интерфейса не был присоединен к интерфейсу IPortableDeviceService . Как правило, это возвращается, если приложение пытается получить доступ к методам подключенного интерфейса, например IPortableDeviceServiceCapabilities, после вызова IPortableDevice::Close . |
|
IStream::Commit никогда не вызывался при создании объекта с данными на устройстве. |
|
Подключение к службе уже открыто перед вызовом IPortableDevice::Open. |
|
Параметры метода для IPortableDeviceServiceMethods::Invoke или IPortableDeviceServiceMethods::InvokeAsync не заданы в правильном порядке. Параметр должен быть задан в порядке, указанном в WPD_PARAMETER_ATTRIBUTE_ORDER. |
|
Подключение к службе еще не открыто вызовом IPortableDeviceService::Open. |
|
Получатель, указанный для сообщения SMS, недопустим. |
|
Текст сообщения, указанного для сообщения SMS, является недопустимым. |
|
Служба SMS недоступна. |
Иногда может возникнуть ошибка, определенная в пакете SDK Windows Media Rights Manager. Список ошибок, определенных этим пакетом SDK, предоставляется в библиотеке MSDN. Однако следующие Windows ошибки пакета SDK Media Rights Manager не были включены в эту документацию.
Константа или значение | Описание |
---|---|
|
Невозможно выполнить отладку при доступе к содержимому, защищенному DRM. |
|
Содержимое не лицензируется. |
WPD может возвращать в приложение стандартные коды ошибок Windows. В следующей таблице перечислены наиболее часто используемые стандартные коды ошибок Windows и распространенные условия ошибки при использовании устройства WPD.
Коды ошибок Win32 преобразуются в HRESULT с помощью макроса HRESULT_FROM_WIN32 .
Константа или значение | Описание |
---|---|
|
Может использоваться для указания, что объект или свойство, доступные только для чтения, нельзя изменить или удалить. Может использоваться для указания на то, что доступ к объекту осуществляется за пределами области, например дочерний объект, который выходит за пределы иерархии службы устройств. Может использоваться для указания, что у приложения нет доступа (например, если управление доступом к устройствам ограничено групповая политика) для отправки команд WPD на устройство. |
|
Может использоваться для указания того, что количество элементов в массиве данных превысило свои пределы (ULONGLONG). |
|
Может использоваться, чтобы указать, что устройство занято обработкой другой операции. Приложения должны ожидать завершения этой операции, прежде чем повторить попытку. |
|
Команда, отправленная на устройство, была прервана из-за отмены, например путем вызова одного из методов Cancel в API WPD. |
|
Может использоваться для указания того, что от устройства был получен недопустимый пакет данных. |
|
Для устройства MTP/IP указывает, что подключение не удалось инициализировать, так как устройство используется. |
|
Устройство отключено или отключено. |
|
Может использоваться для указания того, что не рекурсивное удаление было вызвано для объекта с дочерними элементами. Приложение должно использовать флаг рекурсивного удаления в IPortableDeviceContent::D elete. |
|
Может использоваться, чтобы указать, что устройству не удалось отправить какие-либо данные ресурса при ожидании данных ресурса (например, эскиз или значок устройства). Обычно это означает ошибку на устройстве. |
|
Может использоваться для указания того, что устройство отключено или отключено. |
|
Может использоваться для указания того, что устройство перестало отвечать (зависло) или что на устройстве произошел общий сбой. Возможно, устройство потребуется сбросить вручную. |
|
Может использоваться, чтобы указать, что данные, отправляемые или полученные с устройства, не могут быть правильно проанализированы. Это может указывать на ошибку на стороне устройства или транспорта. Если операции поставщика MTP отправляются на устройство, эта ошибка может указывать на то, что указанные параметры операции не относятся к допустимому типу VARTYPE. |
|
Может использоваться, чтобы указать, что указанный тип VARTYPE недопустим для заданного свойства. |
|
Запрос на запись был выполнен к ресурсу на устройстве, открытом в режиме чтения с помощью IPortableDeviceResources::GetStream, или запрос на чтение, открытый для записи или создания. |
|
Для объекта с дочерними элементами вызывается не рекурсивное удаление. |
|
Недопустимый параметр, предоставленный приложением. |
|
Может использоваться для указания того, что преобразование свойства datetime завершилось сбоем. |
|
Может использоваться для указания того, что устройство перестало отвечать (зависло). Возможно, устройство потребуется сбросить вручную. |
|
Может использоваться для указания того, что устройство поддерживает свойство, но это значение свойства в настоящее время является пустым или неинициализированным. Может использоваться для указания того, что внутренний контекст для длительной операции больше не существует, так как операция завершена или отменена. Примерами таких операций являются массовые свойства, перечисление объектов, передача и вызов методов службы устройств. Приложения должны повторить операцию с самого начала. Может использоваться для указания того, что указанный объект не существует. Дочерний объект может находиться за пределами иерархии службы устройств. |
|
Может использоваться для указания неправильной инициализации операции. Обычно это указывает на внутреннюю ошибку или что приложение использует устаревший дескриптор устройства. Приложение должно повторить операцию с самого начала или повторно открыть устройство. |
|
Может использоваться для указания того, что свойство или команда не поддерживаются устройством. |
|
Команда, отправленная на устройство, была прервана из-за ручной отмены, например путем вызова одного из методов Cancel в API WPD. |
|
Может использоваться, чтобы указать, что устройство не отправляет правильный объем данных. |
|
Может использоваться для указания того, что ресурс (например, эскиз или значок) отсутствует на устройстве. |
|
Может использоваться для указания того, что устройство перестало отвечать (зависло). Возможно, устройство потребуется сбросить вручную. |
|
Может использоваться для указания того, что устройство перестало отвечать (зависло). Возможно, устройство потребуется сбросить вручную. |
|
Может использоваться для указания того, что указанный формат не поддерживается устройством. |
|
Может использоваться для указания того, что приложению не удалось отправить запрошенный объем данных на устройство. |
|
Для устройства 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. |
Требования
Требование | Значение |
---|---|
Заголовок |
|