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

Windows媒体设备管理器方法可以返回各种错误代码。 其中一些特定于Windows媒体设备管理器,而另一些则由用于生成设备的其他 SDK 或移植工具包定义,并浮出Windows媒体设备管理器方法。 本部分介绍可以通过源组织Windows媒体技术返回的各种错误代码。

Windows媒体设备管理器错误代码

Windows媒体设备管理器 SDK 定义了以下错误代码。

返回代码 说明
WMDM_E_BUFFERTOOSMALL 调用方提供的缓冲区太小。 客户端应增大缓冲区的大小,然后重试调用。
WMDM_E_BUSY 设备正忙,无法满足新请求。
WMDM_E_CALL_OUT_OF_SEQUENCE 操作按错误顺序调用。 (例如,在没有 Open.) 的情况下调用 Read
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 事务 ID 无效 指示 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 Microsoft Store不可用 指示存储 (或包含所指示对象) 的存储在物理上不可用。 这可能是媒体弹出造成的。 不应使用此响应来指示商店正忙。
0x80042014 0x2014 不支持按格式指定的规范 指示该操作尝试仅在特定格式的对象上指定操作,并且不支持该功能。 应再次尝试该操作,而无需按格式指定。 此性质的任何响应都推断,将来使用指示的操作按格式指定的任何尝试都会导致相同的响应。 这表示 MTP 堆栈中的内部错误。
0x80042015 0x2015 无有效对象Info 指示主机在传输对象之前未向设备提供有效的对象信息。 这表示 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可移植设备移植工具包错误的媒体 DRM

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

返回代码 说明 十六进制值
DRM_FAILED (状态) 此操作失败。 (状态) <0
DRM_SUCCEEDED (状态) 操作已成功完成。 (状态) >= 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 标头中缺少 Checksum 属性。 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 dataslot。 0x8004c025
DRM_E_HDSSLOTNOTFOUND 找不到 HDS dataslot。 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媒体权限管理器 SDK 错误

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

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

 

编程参考