错误常量
Windows Portable Devices 方法可以返回各种 HRESULT 错误代码。 有些特定于 Windows 便携设备,而另一些则由用于生成设备的其他 SDK 或移植工具包定义。 本部分介绍可返回的各种错误代码,按源进行组织。
WPD 定义以下错误常量。
常量/值 | 说明 |
---|---|
|
设备连接已通过之前对 IPortableDevice::Open 的调用打开。 |
|
设备将不再响应输入。 |
|
尚未通过调用 IPortableDevice::Open 打开设备连接。 |
|
接口对象已附加到设备接口。 |
|
接口对象已附加到 IPortableDeviceService 接口。 |
|
接口对象尚未附加到设备。 |
|
接口对象尚未附加到 IPortableDeviceService 接口。 通常,如果应用程序在调用 IPortableDevice::Close 后尝试访问附加接口的方法(如 IPortableDeviceServiceCapabilities),则会返回此函数。 |
|
在设备上创建包含数据的对象时,从未调用过 IStream::Commit。 |
|
服务连接已通过之前对 IPortableDevice::Open 的调用打开。 |
|
IPortableDeviceServiceMethods::Invoke 或 IPortableDeviceServiceMethods::InvokeAsync 的方法参数未按正确的顺序设置。 参数必须按 WPD_PARAMETER_ATTRIBUTE_ORDER指定的顺序进行设置。 |
|
尚未通过调用 IPortableDeviceService::Open 打开服务连接。 |
|
为短信指定的收件人无效。 |
|
为短信指定的消息正文无效。 |
|
SMS 服务不可用。 |
有时,你可能会遇到 Windows Media Rights Manager SDK 中定义的错误。 MSDN 库中提供了该 SDK 定义的错误列表。 但是,本文档中不包括以下 Windows Media Rights Manager SDK 错误。
常量/值 | 说明 |
---|---|
|
访问受 DRM 保护的内容时,无法进行调试。 |
|
内容未获得许可。 |
WPD 可能会向应用程序返回标准 Windows 错误代码。 下表列出了使用 WPD 设备时最常用的标准 Windows 错误代码和常见错误条件。
Win32 错误代码使用 HRESULT_FROM_WIN32 宏转换为 HRESULT。
常量/值 | 说明 |
---|---|
|
可用于指示无法修改或删除只读对象或属性。 可用于指示对象正在其范围之外访问,例如,属于设备服务层次结构之外的子对象。 可用于指示应用程序没有访问 (例如,如果组策略) 限制对设备的访问控制,以便向设备发送 WPD 命令。 |
|
可用于指示数据数组中的元素数已超出其限制 (ULONGLONG) 。 |
|
可用于指示设备正忙于处理另一个操作。 应用程序应等待该操作完成,然后重试。 |
|
发送到设备的命令因取消而中止,例如,在 WPD API 中调用一个 Cancel 方法。 |
|
可用于指示从设备接收了无效数据包。 |
|
对于 MTP/IP 设备, 指示连接由于设备正在使用而无法初始化。 |
|
设备已断开连接或拔下电源。 |
|
可用于指示为具有子级的对象调用了非递归删除。 应用程序应使用 IPortableDeviceContent::D elete 中的递归删除标志。 |
|
可用于指示当预期资源数据 (时,设备无法发送任何资源数据,例如缩略图或设备图标) 。 这通常表示设备上存在错误。 |
|
可用于指示设备已断开连接或拔下。 |
|
可用于指示设备已停止响应 (挂起) 或设备上发生了常规故障。 可能需要手动重置设备。 |
|
可用于指示无法正确分析发送到设备或从设备接收的数据。 这可能表示设备端或传输错误。 如果将 MTP 供应商操作发送到设备,则此错误可能指示指定的操作参数不是有效的 VARTYPE。 |
|
可用于指示指定的 VARTYPE 对于给定属性无效。 |
|
已向设备上使用 IPortableDeviceResources::GetStream 以读取模式打开的资源发出写入请求,或者向为写入或创建打开的资源发出读取请求。 |
|
为具有子级的 对象调用非递归删除。 |
|
应用程序提供的参数无效。 |
|
可用于指示 datetime 属性的转换失败。 |
|
可用于指示设备已停止响应 (挂起) 。 可能需要手动重置设备。 |
|
可用于指示设备支持属性,但该属性值当前为空或未初始化。 可用于指示长时间运行的操作的内部上下文不再存在,因为该操作已完成或已取消。 此类操作的示例包括批量属性、对象枚举、传输和调用设备服务方法。 应用程序应从头开始重试操作。 可用于指示指定的 对象不存在。 子对象可能位于设备服务层次结构之外。 |
|
可用于指示操作未正确初始化。 这通常表示存在内部错误,或者应用程序正在使用过时的设备句柄。 应用程序应从头开始重试操作,或重新打开设备。 |
|
可用于指示设备不支持属性或命令。 |
|
由于手动取消,发送到设备的命令已中止,例如,在 WPD API 中调用 取消方法之 一。 |
|
可用于指示设备未发送正确的数据量。 |
|
可用于指示设备上不存在资源 (,例如缩略图或图标) 。 |
|
可用于指示设备已停止响应 (挂起) 。 可能需要手动重置设备。 |
|
可用于指示设备已停止响应 (挂起) 。 可能需要手动重置设备。 |
|
可用于指示设备不支持指定的格式。 |
|
可用于指示应用程序无法向设备发送请求的数据量。 |
|
对于 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 堆栈中存在内部错误。 |
要求
要求 | 值 |
---|---|
标头 |
|