错误常量

Windows Portable Devices 方法可以返回各种 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 接口。 通常,如果应用程序在调用 IPortableDevice::Close 后尝试访问附加接口的方法(如 IPortableDeviceServiceCapabilities),则会返回此函数。
E_WPD_OBJECT_NOT_COMMITED
0x802A0005
在设备上创建包含数据的对象时,从未调用过 IStream::Commit
E_WPD_SERVICE_ALREADY_OPENED
0x802A00C8
服务连接已通过之前对 IPortableDevice::Open 的调用打开。
E_WPD_SERVICE_BAD_PARAMETER_ORDER
0x802A00CC
IPortableDeviceServiceMethods::InvokeIPortableDeviceServiceMethods::InvokeAsync 的方法参数未按正确的顺序设置。 参数必须按 WPD_PARAMETER_ATTRIBUTE_ORDER指定的顺序进行设置。
E_WPD_SERVICE_NOT_OPEN
0x802A00C9
尚未通过调用 IPortableDeviceService::Open 打开服务连接。
E_WPD_SMS_INVALID_RECIPIENT
0x802A0064
为短信指定的收件人无效。
E_WPD_SMS_INVALID_MESSAGE_BODY
0x802A0065
为短信指定的消息正文无效。
E_WPD_SMS_SERVICE_UNAVAILABLE
0x802A0066
SMS 服务不可用。

有时,你可能会遇到 Windows Media Rights Manager SDK 中定义的错误。 MSDN 库中提供了该 SDK 定义的错误列表。 但是,本文档中不包括以下 Windows Media Rights Manager SDK 错误。

常量/值 说明
NS_E_DRM_DEBUGGING_NOT_ALLOWED
0xC00D2767
访问受 DRM 保护的内容时,无法进行调试。
NS_E_NOT_LICENSED
0xC00D00CD
内容未获得许可。

WPD 可能会向应用程序返回标准 Windows 错误代码。 下表列出了使用 WPD 设备时最常用的标准 Windows 错误代码和常见错误条件。

Win32 错误代码使用 HRESULT_FROM_WIN32 宏转换为 HRESULT

常量/值 说明
ERROR_ACCESS_DENIED
0x80070005
可用于指示无法修改或删除只读对象或属性。 可用于指示对象正在其范围之外访问,例如,属于设备服务层次结构之外的子对象。 可用于指示应用程序没有访问 (例如,如果组策略) 限制对设备的访问控制,以便向设备发送 WPD 命令。
ERROR_ARITHMETIC_OVERFLOW
0x80070216
可用于指示数据数组中的元素数已超出其限制 (ULONGLONG) 。
ERROR_BUSY
0x800700AA
可用于指示设备正忙于处理另一个操作。 应用程序应等待该操作完成,然后重试。
ERROR_CANCELLED
0x800704C7
发送到设备的命令因取消而中止,例如,在 WPD API 中调用一个 Cancel 方法。
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
由于手动取消,发送到设备的命令已中止,例如,在 WPD API 中调用 取消方法之 一。
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 无效 指示 TransactionID 为零或未引用有效事务。 这表示 MTP 堆栈中存在内部错误。
0x80042005 0x2005 不支持操作 指示操作代码显示为有效的代码,但设备不支持该操作。 这表示 MTP 堆栈中存在内部错误。
0x80042006 0x2006 不支持参数 指示与 操作一起指定了非零参数,并且该参数不用于该操作。 这表示 MTP 堆栈中存在内部错误。
0x80042007 0x2007 不完整的传输 指示传输未完成,应放弃传输的任何数据。 此响应与已取消的事务不对应。
0x80042008 0x2008 StorageID 无效 指示使用操作发送的存储 ID 不引用设备上存在的实际有效存储。 这表示 MTP 堆栈中存在内部错误。
0x80042009 0x2009 ObjectHandle 无效 指示对象句柄不引用设备上存在的实际对象。 应用程序应再次枚举存储。
0x8004200A 0x200A 不支持 DeviceProp 指示设备属性代码显示为有效代码,但设备不支持该属性。 这表示 MTP 堆栈中存在内部错误。
0x8004200B 0x200B ObjectFormatCode 无效 指示设备不支持给定上下文中提供的特定对象格式代码。
0x80042012 0x2012 部分删除 指示实际上只删除了指示要删除的存储的子集,因为有些存储受写保护或位于只读存储上。
0x80042013 0x2013 应用商店不可用 指示存储 (或包含所指示对象的存储) 在物理上不可用。 这可以由媒体弹出引起。 此响应不应用于指示存储正忙。
0x80042014 0x2014 不支持按格式排序的规范 指示操作尝试仅对特定格式的对象指定操作,并且不支持该功能。 应在不按格式指定的情况下再次尝试该操作。 任何这种性质的响应都推断出,将来尝试使用指示的操作按格式指定将导致相同的响应。 这表示 MTP 堆栈中存在内部错误。
0x80042015 0x2015 没有有效的 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 指示随操作一起发送的服务 ID 不引用设备上存在的实际有效服务。 这表示 MTP 堆栈中存在内部错误。
0x8004A302 0xA302 Invalid_ServicePropCode 指示设备在此上下文中不支持发送的服务属性代码。 这表示 MTP 堆栈中存在内部错误。

要求

要求
标头
PortableDevice.h

另请参阅

常量