错误代码(Windows Media 设备管理器 11 SDK)

Windows Media 设备管理器方法可能返回各种错误代码。 其中一些错误代码特定于 Windows Media 设备管理器,而另一些则由用于生成设备的其他 SDK 或移植工具包定义,并向上冒泡到 Windows Media 设备管理器方法。 此部分介绍 Windows Media 技术可能返回的各种错误代码(按来源组织)。

Windows Media 设备管理器错误代码

以下错误代码由 Windows Media 设备管理器 SDK 定义。

返回代码 说明
WMDM_E_BUFFERTOOSMALL 调用方提供的缓冲区太小。 客户端应增大缓冲区大小,然后重试调用。
WMDM_E_BUSY 设备繁忙,无法满足新请求。
WMDM_E_CALL_OUT_OF_SEQUENCE 操作按错误顺序调用。 (例如,调用 Read 而不调用 Open。)
WMDM_E_INCORRECT_APPSEC 应用程序安全性的最低级别不正确。 如果设备的密钥/证书对的安全级别不够高,则可能会导致这种情况。
WMDM_E_CANTOPEN_PMSN_SERVICE_PIPE 无法打开 PMSN 服务管道。
WMDM_E_INCORRECT_RIGHTS 文件的权限不正确。
WMDM_E_INTERFACEDEAD 对象已与客户端断开连接。
WMDM_E_INVALIDTYPE 类型无效。
WMDM_E_LICENSE_EXPIRED 许可证已过期。
WMDM_E_LICENSE_NOTEXIST 许可证不存在。
WMDM_E_MAC_CHECK_FAILED 消息身份验证代码检查失败。
WMDM_E_MOREDATA 还有更多数据。
WMDM_E_NORIGHTS 调用者无权执行此操作。
WMDM_E_NOTCERTIFIED 调用方未经过身份验证,无法进行此调用。
WMDM_E_NOTSUPPORTED 不支持此操作。
WMDM_E_PROCESSFAILED 进程失败。
WMDM_E_REVOKED 许可证已吊销。
WMDM_E_SDMI_NOMORECOPIES 根据 SDMI 合规性,无法再复制任何副本。
WMDM_E_SDMI_TRIGGER SDMI 验证失败。
WMDM_E_TOO_MANY_SESSIONS 存在太多会话。
WMDM_E_USER_CANCELLED 用户取消了操作。

 

服务提供商应避免返回通用故障代码,例如 E_FAIL。 而是应返回尽可能具体的错误代码,以便在错误传播到应用程序时,应用程序可以向用户提供有意义的反馈。

对于存储和设备相关操作中的错误,服务提供商应使用 Win32 错误代码。 服务提供商可以使用 HRESULT_FROM_WIN32 将 Windows 错误代码转换为 HRESULT 值,并将其用作返回值。 此宏和错误代码是在作为平台 SDK 的一部分的 winerror.h 中定义的。

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 指示需要发送的对象无法存储在设备的文件系统中。 存储空间不足时,不应返回此代码。

 

适用于便携设备的 Windows Media DRM 移植工具包错误

以下错误代码是在适用于便携设备的 Windows Media DRM 移植工具包中定义的,并且可能由调用基于此移植工具包生成的设备的方法返回。 以下错误代码与 DRM 问题相关。

返回代码 说明 十六进制值
DRM_FAILED(Status) 此操作失败。 (Status)<0
DRM_SUCCEEDED(Status) 操作已成功完成。 (Status) >= 0
DRM_SUCCESS 操作已成功完成。 0x00000000L
DRM_S_FALSE 方法成功并返回布尔值 FALSE 0x00000001L
DRM_E_FAIL 发生了未指定的失败。 0x80004005L
DRM_E_INVALIDARG 参数无效或为 NULL 指针 0x80070057L
DRM_E_OUTOFMEMORY 方法未能分配必要的内存。 0x80000002L
DRM_E_FILENOTFOUND 系统找不到指定的文件。 0x80030002L
DRM_E_BUFFERTOOSMALL 缓冲区对于数据来说太小。 0x8007007AL
DRM_E_NOTIMPL 未实现。 0x80004001L
DRM_E_NOMORE 枚举结束,或者没有更多可用数据。 0x80070103L
DRM_E_ARITHMETIC_OVERFLOW 算术运算导致溢出(重要位丢失)。 0x8007534L
DRM_E_ALGORITHMNOTSET 不支持此操作所需的加密算法。 0x8004c017
DRM_E_APPCERT_REVOKED 授予 DRM 的应用程序证书已吊销。 0X8004C053
DRM_E_BACKUP_EXISTS 备份文件已存在。 0x8004c032
DRM_E_CH_ATTR_MISSING 缺少内容头属性。 0x80041107L
DRM_E_CH_BAD_KEY 密钥无效。 0x8004110EL
DRM_E_CH_CHECKSUM_MISSING 缺少内容头校验和。 0x80041106L
DRM_E_CH_INVALID_HEADER 内容头无效。 0x80041108L
DRM_E_CH_KID_MISSING 内容头中缺少 KID 属性。 0x80041104L
DRM_E_CH_LAINFO_MISSING 内容头中缺少 LAINFO 属性。 0x80041105L
DRM_E_CH_NOT_SIGNED 标头未签名。 0x80041113L
DRM_E_CH_UNABLE_TO_VERIFY 无法验证内容头的签名。 0x8004110AL
DRM_E_CH_UNKNOWN_ERROR 发生未知错误。 0x80041116L
DRM_E_CH_UNSUPPORTED_HASH_ALGORITHM 不支持的哈希算法。 0x8004110CL
DRM_E_CH_UNSUPPORTED_SIGN_ALGORITHM 不支持的签名算法。 0x8004110DL
DRM_E_CH_UNSUPPORTED_VERSION 不支持的内容头版本。 0x8004110BL
DRM_E_CH_VERSION_MISSING 缺少内容头版本。 0x80041103L
DRM_E_CIPHER_NOTINITIALIZED 在调用加密/解密例程之前,DRM 密码例程未正确初始化。 0x800480D2L
DRM_E_CLIENTTIMEINVALID 设备上的时间/时钟与许可证服务器不同步,超出容错范围。 0x8004c01c
DRM_E_CLK_INVALID_DATE 安全时钟响应无效。 0x8004c040
DRM_E_CLK_INVALID_RESPONSE 安全时钟响应无效。 0x8004c03f
DRM_E_CLK_NOT_SET 许可证可能存在,但由于未设置安全时钟而无法使用。 0x8004C05B
DRM_E_CLK_NOT_SUPPORTED 不支持的安全时钟。 0x8004c04a
DRM_E_CLK_RESETSTATEREADERROR 无法读取安全时钟重置状态。 0x8004c04d
DRM_E_CLK_RESETSTATEWRITEERROR 无法写入安全时钟重置状态。 0x8004c04e
DRM_E_CLK_UNSUPPORTED_VALUE 安全时钟响应包含不受支持的值。 0x8004c041
DRM_E_CONDITIONFAIL 许可证中的条件未能通过。 0x8004c007
DRM_E_CONDITIONNOTSUPPORTED 此版本的 DRM 不支持许可证中的条件。 0x8004c008
DRM_E_CRYPTO_FAILED 加密操作失败。 0X8004C054
DRM_E_DECRYPT_NOTINITIALIZED 在尝试解密数据之前,DRM 解密例程未正确初始化。 0x800480D3L
DRM_E_DEVCERTEXCEEDSSIZELIMIT 设备证书超出最大大小。 0x8004c043
DRM_E_DEVCERTINDIV_NOT_SUPPORTED 不支持设备证书个性化。 0x8004c04b
DRM_E_DEVCERTREADERROR 无法读取设备证书。 0x8004c045
DRM_E_DEVCERTTEMPLATEEXCEEDSSIZELIMIT 设备证书模板超出最大大小。 0x8004c044
DRM_E_DEVCERTTEMPLATEREADERROR 无法读取设备证书模板。 0x8004c049
DRM_E_DEVCERTWRITEERROR 无法存储设备证书。 0x8004c046
DRM_E_DEVICENOTINIT 此设备尚未针对 DRM 初始化服务进行初始化。 0x8004c001
DRM_E_DRMNOTINIT 应用程序未正确调用 DRM_MGR_Initialize 0x8004c002
DRM_E_DUPLICATEDHEADERATTRIBUTE 标头包含重复属性。 0x8004c02d
DRM_E_FILEREADERROR 读取文件时出错。 0x8004c01a
DRM_E_FILESEEKERROR 在文件中查找时出错。 0x8004c037
DRM_E_FILEWRITEERROR 写入文件时出错。 0x8004c01b
DRM_E_HASHMISMATCH 键控哈希检查失败。 0x8004c010
DRM_E_HDSBLOCKMISMATCH 标头中缺少校验和属性。 0x8004c031
DRM_E_HDSEXCLUSIVELOCKONLY 仅接受独占锁。 0x8004c039
DRM_E_HDSFILECORRUPTED HDS 文件已损坏。 0x8004c026
DRM_E_HDSFILEEXISTS HDS 文件已存在。 0x8004c034
DRM_E_HDSLOCKFAILED 锁定 HDS 文件的某个段失败。 0x8004c036
DRM_E_HDSNAMESPACEFULL HDS 命名空间已满。 0x8004c022
DRM_E_HDSNAMESPACEINUSE 没有正在使用的 HDS 命名空间。 0x8004c028
DRM_E_HDSNAMESPACENOTFOUND 找不到 HDS 命名空间。 0x8004c023
DRM_E_HDSNOTLOCKEDEXCLUSIVE 现有锁不是独占锁。 0x8004c038
DRM_E_HDSRESERVEDKEYDETECTED 在 UniqueKey 中检测到 HDS 保留密钥值。 0x8004c03A
DRM_E_HDSSEEKERROR 尝试在 HDS 文件中查找时出错。 0x8004c027
DRM_E_HDSSLOTEXIST 不存在 HDS 数据槽。 0x8004c025
DRM_E_HDSSLOTNOTFOUND 找不到 HDS 数据槽。 0x8004c024
DRM_E_HDSSTOREFULL HDS 数据文件已满。 0x8004c01d
DRM_E_HEADER_NOT_SET 未设置 V2 内容头 0x8004c03C
DRM_E_INCOMPATABLELICENSESIZE 许可证的大小不兼容。 DRM 不知道此许可证。 0x8004c004
DRM_E_INVALID_SECURESTORE_PASSWORD 用于打开安全存储密钥的密码无法验证安全存储哈希。 0x8004c029
DRM_E_INVALID_SIGNATURE 许可证签名无效。 0x800480CFL
DRM_E_INVALIDBINDID 绑定 ID 无效。 0x8004c015
DRM_E_INVALIDDEVICECERTIFICATE 设备证书无效。 0x8004c035
DRM_E_INVALIDDEVICECERTIFICATETEMPLATE 设备证书无效。 0x8004c042
DRM_E_INVALIDLICENSE 许可证无效。 0x8004c006
DRM_E_INVALIDLICENSEFLAGS 许可证中的标志无效。 DRM 不了知道它们,或者它们是冲突的。 0x8004c005
DRM_E_INVALIDLICENSESTORE 许可证存储版本号不正确,或者存储因其他方式无效。 0x8004c019
DRM_E_INVALIDRIGHT 许可证中的权限无效。 0x8004c003
DRM_E_INVALIDTIME 时间结构无效。 0x8004c011
DRM_E_INVALIDXMLTAG XML 标记无效。 0x8004c020
DRM_E_KEY_MISMATCH 公钥-私钥对不匹配。 0x80048013L
DRM_E_LIC_KEY_AND_CERT_MISMATCH 密钥和证书不匹配。 0x80048013L
DRM_E_LIC_KEY_DECODE_FAILURE 密钥无法解码。 0x80048007L
DRM_E_LIC_SIGNATURE_FAILURE 许可证签名无效。 0x80048008L
DRM_E_LICENSE_TOOLONG 许可证大小过长。 0x8004c032
DRM_E_LICENSEEXPIRED 由于播放计数用尽或达到结束日期,许可证已过期。 0x8004c009
DRM_E_LICENSEMISMATCH 许可证内容 ID 或 SDK ID 与应用程序请求的 ID 不匹配。 0x8004c00c
DRM_E_LICENSENOTBOUND 尚未绑定许可证。 如果没有成功的绑定调用,则不会进行解密。 0x8004c00f
DRM_E_LICENSENOTFOUND 在外部许可证存储中找不到许可证。 0x8004c013
DRM_E_LICENSENOTYETVALID 当前时间早于许可证开始时间,因此许可证尚未生效。 0x8004c00a
DRM_E_LICENSESERVERNEEDSKEY 许可证服务器需要初始化服务提供的设备绑定密钥版本。 0x8004c018
DRM_E_LICENSESTORENOTFOUND 找不到外部许可证存储。 0x8004c012
DRM_E_LICENSEVERSIONNOTSUPPORTED 设备上的 DRM 版本不支持 DRM 许可证版本。 0x8004c014
DRM_E_LOGICERR DRM 代码中存在逻辑错误。 绝不应返回此结果。 如果返回此结果,则表明存在未处理的代码路径 0x8004c3e8
DRM_E_LRB_INVALIDLICENSEDATA 许可证吊销响应使用不同于许可证服务器公钥的公钥进行签名。 0x8004c073
DRM_E_LRB_INVALIDSIGNATURE 许可证吊销响应中的签名无效。 0x8004c071
DRM_E_LRB_LGPUBKEY_MISMATCH 许可证吊销响应使用不同于许可证服务器公钥的公钥进行签名。 0x8004c072
DRM_E_LRB_NOLGPUBKEY 许可证吊销响应不包含有效的许可证服务器公钥。 0x8004c070
DRM_E_MACHINEIDMISMATCH 设备的计算机 ID 与设备证书中不同。 0x8004c03e
DRM_E_METERING_INVALID_COMMAND 处理计量响应时发送了无效的命令。 0X8004C051
DRM_E_METERING_MID_MISMATCH 计量证书和计量响应数据中的计量 ID 不同。 0X8004C05F
DRM_E_METERING_NOT_SUPPORTED 不支持的计量。 0x8004c04c
DRM_E_METERING_RESPONSE_DECRYPT_FAILED 无法解密计量响应的加密部分 0X8004C060
DRM_E_METERING_STORE_CORRUPT 计量存储已损坏。 0X8004C052
DRM_E_METERING_WRONG_TID 计量响应包含错误的事务 ID。 0X8004C050
DRM_E_NEEDDEVCERTINDIV 设备证书是一个模板。 需要将其个性化。 0x8004c03d
DRM_E_NO_CLK_SUPPORTED 此设备不支持任何时钟。 因此无法播放限时许可证。 0x8004C05C
DRM_E_NO_URL 找不到 URL 信息。 0x8004C05D
DRM_E_NOACTIONINLICENSEREQUEST 许可证请求不包含任何操作。 0x8004c02c
DRM_E_NOCHECKSUMINHEADER 标头中缺少校验和属性。 0x8004c030
DRM_E_NOKIDINHEADER 标头中缺少密钥 ID 属性。 0x8004c02e
DRM_E_NOLAINFOINHEADER 标头中缺少 LAINFO 属性。 0x8004c02f
DRM_E_NORIGHTSREQUESTED 应用程序在尝试绑定之前未请求任何权限。 0x8004c00e
DRM_E_NOXMLCDATA 找不到 XML CDATA。 0x8004c021
DRM_E_NOXMLCLOSETAG 找不到 XML 关闭标记。 0x8004c01f
DRM_E_NOXMLOPENTAG 找不到 XML 打开标记。 0x8004c01e
DRM_E_PKCRYPTO_FAILURE 非对称加密操作发生错误。 0x800480D5L
DRM_E_POLICY_METERING_DISABLED 调用了计量代码,但组或用户策略禁用了计量。 0x8004C059
DRM_E_POLICY_ONLINE_DISABLED 组策略禁用了联机通信。 0x8004C05A
DRM_E_PRIVKEYREADERROR 无法读取设备的私钥。 0x8004c047
DRM_E_PRIVKEYWRITEERROR 无法存储设备的私钥。 0x8004c048
DRM_E_RIGHTSNOTAVAILABLE 许可证中未提供应用程序请求的权限。 0x8004c00b
DRM_E_SECURESTORE_CORRUPT 安全存储已损坏。 0x8004c02a
DRM_E_SECURESTORE_FULL 当前安全存储密钥已满。 无法再添加任何数据。 0x8004c02b
DRM_E_SECURESTORE_LOCKNOTOBTAINED 在以原始模式在安全存储中读取或写入数据之前,必须使用 DRM_SST_OpenData 获取锁。 0x800480D4L
DRM_E_STACK_CORRUPT 堆栈分配器上下文已损坏。 这通常是由缓冲区溢出引起的。 0X8004C055
DRM_E_STACKTOOSMALL 提供给 DRM API 的堆栈太小。 0x800480D1L
DRM_E_SYNC_ENTRYNOTFOUND 在同步存储中找不到该条目。 0x800480D0L
DRM_E_UNKNOWN_BINDING_KEY 找不到许可证的匹配绑定密钥。 0x8004C056
DRM_E_UNKNOWN_PROPERTY 设备属性未知。 0x8004C05E
DRM_E_UNSUPPORTEDALGORITHM 不支持此操作所需的加密算法。 0x8004c016
DRM_E_V1_LICENSE_CHAIN_NOT_SUPPORTED 不支持包含 V1 内容的许可证链。 0x8004C057
DRM_E_V1_NOT_SUPPORTED 不支持 V1 许可证获取。 0x8004c03B
DRM_E_WRONG_TOKEN_TYPE 使用了的令牌类型错误。 0x8004C058
DRM_E_WRONGTOKENTYPE 令牌参数的类型不兼容。 0x8004c00d
DRM_E_XMLNOTFOUND 找不到所需的 XML 标记。 0X8004C04F
NS_E_DRM_DEBUGGING_NOT_ALLOWED 无法在附加调试器的情况下运行命令。 0xC00D2767
必须更新 DRM 安全元素。 用户可以访问 DRM 个性化来更新其计算机。 0x800480CF
必须更新 DRM 安全元素。 用户可以访问 DRM 个性化来更新其计算机。 0x80049006

 

Windows Media 权限管理器 SDK 错误

有时,可能会遇到 Windows Media 权限管理器 SDK 中定义的错误。 该 SDK 定义的错误列表在 MSDN 库中提供。 但是,未记录以下 Windows Media 权限管理器 SDK 错误。

返回代码 说明 十六进制值
NS_E_DRM_DEBUGGING_NOT_ALLOWED 访问受 DRM 保护的内容时无法进行调试。 0xC00D2767
NS_E_NOT_LICENSED 内容未获得许可。 0xC00D00CD
NS_E_DRM_LICENSE_UNUSABLE 许可证无法使用,原因不明。 0xC00D2748

 

编程参考