# IMediaKeySystem ## 概述 DRM实例功能接口,判断是否支持特定DRM方案,创建DRM实例。 **起始版本:** 4.1 **相关模块:**[HdiDrm](_hdi_drm.md) ## 汇总 ### Public 成员函数 | 名称 | 描述 | | -------- | -------- | | [GetConfigurationString](#getconfigurationstring) ([in] String name, [out] String value) | 获取特定名称属性的字符串值(字符串)。 | | [SetConfigurationString](#setconfigurationstring) ([in] String name, [in] String value) | 设置特定名称属性的值(字符串)。 | | [GetConfigurationByteArray](#getconfigurationbytearray) ([in] String name, [out] unsigned char[] value) | 获取特定名称属性的值(字节数组)。 | | [SetConfigurationByteArray](#setconfigurationbytearray) ([in] String name, [in] unsigned char[] value) | 设置特定名称属性的值(字节数组)。 | | [GetStatistics](#getstatistics) ([out] Map< String, String > statistics) | 获取度量统计数据。 | | [GetMaxContentProtectionLevel](#getmaxcontentprotectionlevel) ([out] enum [ContentProtectionLevel](_hdi_drm.md#contentprotectionlevel) level) | 获取DRM方案支持的最大内容保护级别。 | | [GenerateKeySystemRequest](#generatekeysystemrequest) ([out] String defaultUrl, [out] unsigned char[] request) | 产生证书下载请求。 | | [ProcessKeySystemResponse](#processkeysystemresponse) ([in] unsigned char[] response) | 处理下载的证书。 | | [GetOemCertificateStatus](#getoemcertificatestatus) ([out] enum [CertificateStatus](_hdi_drm.md#certificatestatus) status) | 获取证书状态。 | | [SetCallback](#setcallback) ([in] [IMediaKeySystemCallback](interface_i_media_key_system_callback.md) systemCallback) | 设置DRM实例事件通知接口。 | | [CreateMediaKeySession](#createmediakeysession) ([in] enum [ContentProtectionLevel](_hdi_drm.md#contentprotectionlevel) level, [out] [IMediaKeySession](interface_i_media_key_session.md) keySession) | 创建DRM会话。 | | [GetOfflineMediaKeyIds](#getofflinemediakeyids) ([out] unsigned char[][] mediaKeyIds) | 获取离线许可证索引(数组)。 | | [GetOfflineMediaKeyStatus](#getofflinemediakeystatus) ([in] unsigned char[] mediaKeyId, [out] enum [OfflineMediaKeyStatus](_hdi_drm.md#offlinemediakeystatus) mediaKeyStatus) | 获取离线许可证状态。 | | [ClearOfflineMediaKeys](#clearofflinemediakeys) ([in] unsigned char[] mediaKeyId) | 删除离线许可证。 | | [GetOemCertificate](#getoemcertificate) ([out] [IOemCertificate](interface_i_oem_certificate.md) oemCert) | 获取证书下载接口。 | | [Destroy](#destroy) () | 销毁DRM实例。 | ## 成员函数说明 ### ClearOfflineMediaKeys() ``` IMediaKeySystem::ClearOfflineMediaKeys ([in] unsigned char[] mediaKeyId) ``` **描述** 删除离线许可证。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | mediaKeyId | 离线许可证索引。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### CreateMediaKeySession() ``` IMediaKeySystem::CreateMediaKeySession ([in] enum ContentProtectionLevel level, [out] IMediaKeySession keySession ) ``` **描述** 创建DRM会话。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | level | 待创建会话的内容保护等级。 | | keySession | 创建的DRM会话。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### Destroy() ``` IMediaKeySystem::Destroy () ``` **描述** 销毁DRM实例。 **起始版本:** 4.1 **返回:** 0 表示执行成功。 其他值表示执行失败。 ### GenerateKeySystemRequest() ``` IMediaKeySystem::GenerateKeySystemRequest ([out] String defaultUrl, [out] unsigned char[] request ) ``` **描述** 产生证书下载请求。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | defaultUrl | 默认的证书服务器URL地址。 | | request | 证书下载请求报文,以字节数组定义。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### GetConfigurationByteArray() ``` IMediaKeySystem::GetConfigurationByteArray ([in] String name, [out] unsigned char[] value ) ``` **描述** 获取特定名称属性的值(字节数组)。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | name | 属性名。 | | value | 返回值。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### GetConfigurationString() ``` IMediaKeySystem::GetConfigurationString ([in] String name, [out] String value ) ``` **描述** 获取特定名称属性的字符串值(字符串)。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | name | 属性名。 | | value | 返回值。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### GetMaxContentProtectionLevel() ``` IMediaKeySystem::GetMaxContentProtectionLevel ([out] enum ContentProtectionLevel level) ``` **描述** 获取DRM方案支持的最大内容保护级别。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | level | 内容保护级别。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### GetOemCertificate() ``` IMediaKeySystem::GetOemCertificate ([out] IOemCertificate oemCert) ``` **描述** 获取证书下载接口。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | oemCert | 证书下载接口,参见[IOemCertificate](interface_i_oem_certificate.md)。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### GetOemCertificateStatus() ``` IMediaKeySystem::GetOemCertificateStatus ([out] enum CertificateStatus status) ``` **描述** 获取证书状态。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | status | 证书状态。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### GetOfflineMediaKeyIds() ``` IMediaKeySystem::GetOfflineMediaKeyIds ([out] unsigned char mediaKeyIds[][]) ``` **描述** 获取离线许可证索引(数组)。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | mediaKeyIds | 离线许可证索引数组。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### GetOfflineMediaKeyStatus() ``` IMediaKeySystem::GetOfflineMediaKeyStatus ([in] unsigned char[] mediaKeyId, [out] enum OfflineMediaKeyStatus mediaKeyStatus ) ``` **描述** 获取离线许可证状态。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | mediaKeyId | 离线许可证索引。 | | mediaKeyStatus | 离线许可证状态。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### GetStatistics() ``` IMediaKeySystem::GetStatistics ([out] Map< String, String > statistics) ``` **描述** 获取度量统计数据。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | statistics | DRM驱动自定义的度量统计数据,以字符串对形式表达。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### ProcessKeySystemResponse() ``` IMediaKeySystem::ProcessKeySystemResponse ([in] unsigned char[] response) ``` **描述** 处理下载的证书。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | response | 下载的证书报文。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### SetCallback() ``` IMediaKeySystem::SetCallback ([in] IMediaKeySystemCallback systemCallback) ``` **描述** 设置DRM实例事件通知接口。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | systemCallback | DRM实例事件通知接口。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### SetConfigurationByteArray() ``` IMediaKeySystem::SetConfigurationByteArray ([in] String name, [in] unsigned char[] value ) ``` **描述** 设置特定名称属性的值(字节数组)。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | name | 属性名。 | | value | 待设置字节数组。 | **返回:** 0 表示执行成功。 其他值表示执行失败。 ### SetConfigurationString() ``` IMediaKeySystem::SetConfigurationString ([in] String name, [in] String value ) ``` **描述** 设置特定名称属性的值(字符串)。 **起始版本:** 4.1 **参数:** | 名称 | 描述 | | -------- | -------- | | name | 属性名。 | | value | 待设置字符串。 | **返回:** 0 表示执行成功。 其他值表示执行失败。