1# native_mediakeysystem.h 2 3## 概述 4 5定义Drm MediaKeySystem API。提供以下功能:<br>查询是否支持特定的drm、创建媒体密钥会话、获取和设置配置、获取统计信息、获取内容保护级别、生成提供请求、处理提供响应、事件监听、获取内容防护级别、管理离线媒体密钥等。 6 7**引用文件:** <multimedia/drm_framework/native_mediakeysystem.h> 8 9**库:** libnative_drm.z.so 10 11**系统能力:** SystemCapability.Multimedia.Drm.Core 12 13**起始版本:** 11 14 15**相关模块:** [Drm](capi-drm.md) 16 17## 汇总 18 19### 函数 20 21| 名称 | typedef关键字 | 描述 | 22| -- | -- | -- | 23| [typedef Drm_ErrCode (\*MediaKeySystem_Callback)(DRM_EventType eventType, uint8_t *info, int32_t infoLen, char *extra)](#mediakeysystem_callback) | MediaKeySystem_Callback | MediaKeySystem事件触发时将调用的回调,不返回MediaKeySystem实例,适用于单个MediaKeySystem场景。 | 24| [typedef Drm_ErrCode (\*OH_MediaKeySystem_Callback)(MediaKeySystem *mediaKeySystem, DRM_EventType eventType, uint8_t *info, int32_t infoLen, char *extra)](#oh_mediakeysystem_callback) | OH_MediaKeySystem_Callback | MediaKeySystem事件触发时将调用的回调,返回MediaKeySystem实例,适用于多个MediaKeySystem场景。 | 25| [Drm_ErrCode OH_MediaKeySystem_SetCallback(MediaKeySystem *mediaKeySystem, OH_MediaKeySystem_Callback callback)](#oh_mediakeysystem_setcallback) | - | 设置MediaKeySystem事件回调。 | 26| [Drm_ErrCode OH_MediaKeySystem_GetMediaKeySystems(DRM_MediaKeySystemDescription *infos, uint32_t *count)](#oh_mediakeysystem_getmediakeysystems) | - | 获取设备支持的DRM解决方案的名称和唯一标识的列表。 | 27| [bool OH_MediaKeySystem_IsSupported(const char *name)](#oh_mediakeysystem_issupported) | - | 查询设备是否支持对应的DRM解决方案。 | 28| [bool OH_MediaKeySystem_IsSupported2(const char *name, const char *mimeType)](#oh_mediakeysystem_issupported2) | - | 查询设备是否支持对应的DRM解决方案名称及媒体类型。 | 29| [bool OH_MediaKeySystem_IsSupported3(const char *name, const char *mimeType, DRM_ContentProtectionLevel contentProtectionLevel)](#oh_mediakeysystem_issupported3) | - | 查询设备是否支持对应的DRM解决方案、媒体类型、内容保护级别。 | 30| [Drm_ErrCode OH_MediaKeySystem_Create(const char *name, MediaKeySystem **mediaKeySystem)](#oh_mediakeysystem_create) | - | 创建MediaKeySystem实例。 | 31| [Drm_ErrCode OH_MediaKeySystem_SetConfigurationString(MediaKeySystem *mediaKeySystem, const char *configName, const char *value)](#oh_mediakeysystem_setconfigurationstring) | - | 设置字符串类型的配置属性。 | 32| [Drm_ErrCode OH_MediaKeySystem_GetConfigurationString(MediaKeySystem *mediaKeySystem, const char *configName, char *value, int32_t valueLen)](#oh_mediakeysystem_getconfigurationstring) | - | 获取字符串类型配置属性值。 | 33| [Drm_ErrCode OH_MediaKeySystem_SetConfigurationByteArray(MediaKeySystem *mediaKeySystem, const char *configName, uint8_t *value, int32_t valueLen)](#oh_mediakeysystem_setconfigurationbytearray) | - | 设置字符数组类型的配置属性值。 | 34| [Drm_ErrCode OH_MediaKeySystem_GetConfigurationByteArray(MediaKeySystem *mediaKeySystem, const char *configName, uint8_t *value, int32_t *valueLen)](#oh_mediakeysystem_getconfigurationbytearray) | - | 获取字符数组类型配置属性值。 | 35| [Drm_ErrCode OH_MediaKeySystem_GetStatistics(MediaKeySystem *mediaKeySystem, DRM_Statistics *statistics)](#oh_mediakeysystem_getstatistics) | - | 获取度量记录。 | 36| [Drm_ErrCode OH_MediaKeySystem_GetMaxContentProtectionLevel(MediaKeySystem *mediaKeySystem, DRM_ContentProtectionLevel *contentProtectionLevel)](#oh_mediakeysystem_getmaxcontentprotectionlevel) | - | 获取设备支持的最大内容保护级别。 | 37| [Drm_ErrCode OH_MediaKeySystem_SetMediaKeySystemCallback(MediaKeySystem *mediaKeySystem, MediaKeySystem_Callback callback)](#oh_mediakeysystem_setmediakeysystemcallback) | - | 设置MediaKeySystem事件回调。 | 38| [Drm_ErrCode OH_MediaKeySystem_CreateMediaKeySession(MediaKeySystem *mediaKeySystem, DRM_ContentProtectionLevel *level, MediaKeySession **mediaKeySession)](#oh_mediakeysystem_createmediakeysession) | - | 创建MediaKeySession会话实例。 | 39| [Drm_ErrCode OH_MediaKeySystem_GenerateKeySystemRequest(MediaKeySystem *mediaKeySystem, uint8_t *request, int32_t *requestLen, char *defaultUrl, int32_t defaultUrlLen)](#oh_mediakeysystem_generatekeysystemrequest) | - | 生成设备DRM证书请求。 | 40| [Drm_ErrCode OH_MediaKeySystem_ProcessKeySystemResponse(MediaKeySystem *mediaKeySystem, uint8_t *response, int32_t responseLen)](#oh_mediakeysystem_processkeysystemresponse) | - | 处理设备DRM证书请求响应。 | 41| [Drm_ErrCode OH_MediaKeySystem_GetOfflineMediaKeyIds(MediaKeySystem *mediaKeySystem, DRM_OfflineMediakeyIdArray *offlineMediaKeyIds)](#oh_mediakeysystem_getofflinemediakeyids) | - | 获取离线媒体密钥标识列表,媒体密钥标识用于对离线媒体密钥的管理。 | 42| [Drm_ErrCode OH_MediaKeySystem_GetOfflineMediaKeyStatus(MediaKeySystem *mediaKeySystem, uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen, DRM_OfflineMediaKeyStatus *status)](#oh_mediakeysystem_getofflinemediakeystatus) | - | 获取离线媒体密钥状态。 | 43| [Drm_ErrCode OH_MediaKeySystem_ClearOfflineMediaKeys(MediaKeySystem *mediaKeySystem, uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen)](#oh_mediakeysystem_clearofflinemediakeys) | - | 按id清除离线媒体密钥。 | 44| [Drm_ErrCode OH_MediaKeySystem_GetCertificateStatus(MediaKeySystem *mediaKeySystem, DRM_CertificateStatus *certStatus)](#oh_mediakeysystem_getcertificatestatus) | - | 获取设备DRM证书状态。 | 45| [Drm_ErrCode OH_MediaKeySystem_Destroy(MediaKeySystem *mediaKeySystem)](#oh_mediakeysystem_destroy) | - | 销毁MediaKeySystem实例。 | 46 47## 函数说明 48 49### MediaKeySystem_Callback() 50 51``` 52typedef Drm_ErrCode (*MediaKeySystem_Callback)(DRM_EventType eventType, uint8_t *info,int32_t infoLen, char *extra) 53``` 54 55**描述** 56 57MediaKeySystem事件触发时将调用的回调,不返回MediaKeySystem实例,适用于单个MediaKeySystem场景。 58 59**起始版本:** 11 60 61 62**参数:** 63 64| 参数项 | 描述 | 65| -- | -- | 66| [DRM_EventType](capi-native-drm-common-h.md#drm_eventtype) eventType | 事件类型。 | 67| uint8_t *info | 事件信息。 | 68| int32_t infoLen | 事件信息长度。 | 69| char *extra | 增量信息。 | 70 71**返回:** 72 73| 类型 | 说明 | 74| -- | -- | 75| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数无效。 | 76 77### OH_MediaKeySystem_Callback() 78 79``` 80typedef Drm_ErrCode (*OH_MediaKeySystem_Callback)(MediaKeySystem *mediaKeySystem, DRM_EventType eventType,uint8_t *info, int32_t infoLen, char *extra) 81``` 82 83**描述** 84 85MediaKeySystem事件触发时将调用的回调,返回MediaKeySystem实例,适用于多个MediaKeySystem场景。 86 87**起始版本:** 12 88 89 90**参数:** 91 92| 参数项 | 描述 | 93| -- | -- | 94| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 95| [DRM_EventType](capi-native-drm-common-h.md#drm_eventtype) eventType | 事件类型。 | 96| uint8_t *info | 事件信息。 | 97| int32_t infoLen | 事件信息长度。 | 98| char *extra | 增量信息。 | 99 100**返回:** 101 102| 类型 | 说明 | 103| -- | -- | 104| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数无效。 | 105 106### OH_MediaKeySystem_SetCallback() 107 108``` 109Drm_ErrCode OH_MediaKeySystem_SetCallback(MediaKeySystem *mediaKeySystem, OH_MediaKeySystem_Callback callback) 110``` 111 112**描述** 113 114设置MediaKeySystem事件回调。 115 116**起始版本:** 12 117 118 119**参数:** 120 121| 参数项 | 描述 | 122| -- | -- | 123| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 124| [OH_MediaKeySystem_Callback](#oh_mediakeysystem_callback) callback | 回调函数。 | 125 126**返回:** 127 128| 类型 | 说明 | 129| -- | -- | 130| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效。 | 131 132### OH_MediaKeySystem_GetMediaKeySystems() 133 134``` 135Drm_ErrCode OH_MediaKeySystem_GetMediaKeySystems(DRM_MediaKeySystemDescription *infos, uint32_t *count) 136``` 137 138**描述** 139 140获取设备支持的DRM解决方案的名称和唯一标识的列表。 141 142**起始版本:** 12 143 144 145**参数:** 146 147| 参数项 | 描述 | 148| -- | -- | 149| [DRM_MediaKeySystemDescription](capi-drm-drm-mediakeysystemdescription.md) *infos | DRM解决方案名称和唯一标识的列表。 | 150| uint32_t *count | DRM解决方案名称和唯一标识的列表长度。 | 151 152**返回:** 153 154| 类型 | 说明 | 155| -- | -- | 156| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:可能原因:<br> 1.输入参数infos为空指针或输入参数count为空指针。<br> 2.输入参数infos长度不足。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 | 157 158### OH_MediaKeySystem_IsSupported() 159 160``` 161bool OH_MediaKeySystem_IsSupported(const char *name) 162``` 163 164**描述** 165 166查询设备是否支持对应的DRM解决方案。 167 168**起始版本:** 11 169 170 171**参数:** 172 173| 参数项 | 描述 | 174| -- | -- | 175| const char *name | DRM解决方案名称。 | 176 177**返回:** 178 179| 类型 | 说明 | 180| -- | -- | 181| bool | 是否支持。 | 182 183### OH_MediaKeySystem_IsSupported2() 184 185``` 186bool OH_MediaKeySystem_IsSupported2(const char *name, const char *mimeType) 187``` 188 189**描述** 190 191查询设备是否支持对应的DRM解决方案名称及媒体类型。 192 193**起始版本:** 11 194 195 196**参数:** 197 198| 参数项 | 描述 | 199| -- | -- | 200| const char *name | DRM解决方案名称。 | 201| const char *mimeType | 媒体类型,支持的媒体类型取决于DRM解决方案,如:video/avc、video/hev。 | 202 203**返回:** 204 205| 类型 | 说明 | 206| -- | -- | 207| bool | 是否支持。 | 208 209### OH_MediaKeySystem_IsSupported3() 210 211``` 212bool OH_MediaKeySystem_IsSupported3(const char *name, const char *mimeType,DRM_ContentProtectionLevel contentProtectionLevel) 213``` 214 215**描述** 216 217查询设备是否支持对应的DRM解决方案、媒体类型、内容保护级别。 218 219**起始版本:** 11 220 221 222**参数:** 223 224| 参数项 | 描述 | 225| -- | -- | 226| const char *name | DRM解决方案名称。 | 227| const char *mimeType | 媒体类型,支持的媒体类型取决于DRM解决方案,如:video/avc、video/hev。 | 228| [DRM_ContentProtectionLevel](capi-native-drm-common-h.md#drm_contentprotectionlevel) contentProtectionLevel | 内容保护级别。 | 229 230**返回:** 231 232| 类型 | 说明 | 233| -- | -- | 234| bool | 是否支持。 | 235 236### OH_MediaKeySystem_Create() 237 238``` 239Drm_ErrCode OH_MediaKeySystem_Create(const char *name, MediaKeySystem **mediaKeySystem) 240``` 241 242**描述** 243 244创建MediaKeySystem实例。 245 246**起始版本:** 11 247 248 249**参数:** 250 251| 参数项 | 描述 | 252| -- | -- | 253| const char *name | DRM解决方案名称。 | 254| [MediaKeySystem](capi-drm-mediakeysystem.md) **mediaKeySystem | MediaKeySystem实例。 | 255 256**返回:** 257 258| 类型 | 说明 | 259| -- | -- | 260| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:可能原因:<br> 1.输入参数name为空指针或长度为0。<br> 2.输入参数mediaKeySystem为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。<br>DRM_ERR_SERVICE_DIED:服务死亡。<br>DRM_ERR_MAX_SYSTEM_NUM_REACHED:已创建的MediaKeySystem数量达到最大限制(64个)。 | 261 262### OH_MediaKeySystem_SetConfigurationString() 263 264``` 265Drm_ErrCode OH_MediaKeySystem_SetConfigurationString(MediaKeySystem *mediaKeySystem,const char *configName, const char *value) 266``` 267 268**描述** 269 270设置字符串类型的配置属性。 271 272**起始版本:** 11 273 274 275**参数:** 276 277| 参数项 | 描述 | 278| -- | -- | 279| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 280| const char *configName | 字符串类型配置属性名,不能为空,具体支持的属性名由设备上DRM解决方案决定。 | 281| const char *value | 字符串类型配置属性值,不能为空,具体支持的属性值由设备上DRM解决方案决定。 | 282 283**返回:** 284 285| 类型 | 说明 | 286| -- | -- | 287| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,输入参数configName为空指针,或输入参数value为空指针。 | 288 289### OH_MediaKeySystem_GetConfigurationString() 290 291``` 292Drm_ErrCode OH_MediaKeySystem_GetConfigurationString(MediaKeySystem *mediaKeySystem,const char *configName, char *value, int32_t valueLen) 293``` 294 295**描述** 296 297获取字符串类型配置属性值。 298 299**起始版本:** 11 300 301 302**参数:** 303 304| 参数项 | 描述 | 305| -- | -- | 306| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 307| const char *configName | 字符串类型配置名。 | 308| char *value | 字符串类型配置值。 | 309| int32_t valueLen | 字符串类型配置值长度。 | 310 311**返回:** 312 313| 类型 | 说明 | 314| -- | -- | 315| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_NO_MEMORY:内存不足,内存分配失败。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,输入参数configName为空指针,或输入参数value为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 | 316 317### OH_MediaKeySystem_SetConfigurationByteArray() 318 319``` 320Drm_ErrCode OH_MediaKeySystem_SetConfigurationByteArray(MediaKeySystem *mediaKeySystem,const char *configName, uint8_t *value, int32_t valueLen) 321``` 322 323**描述** 324 325设置字符数组类型的配置属性值。 326 327**起始版本:** 11 328 329 330**参数:** 331 332| 参数项 | 描述 | 333| -- | -- | 334| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 335| const char *configName | 字符数组类型配置属性名,不能为空,具体支持的属性名由设备上DRM解决方案决定。 | 336| uint8_t *value | 字符数组类型配置属性值,不能为空,具体支持的属性值由设备上DRM解决方案决定。 | 337| int32_t valueLen | 字符数组类型配置属性值长度。 | 338 339**返回:** 340 341| 类型 | 说明 | 342| -- | -- | 343| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_NO_MEMORY:内存不足,内存分配失败。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,输入参数configName为空指针,或输入参数value为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 | 344 345### OH_MediaKeySystem_GetConfigurationByteArray() 346 347``` 348Drm_ErrCode OH_MediaKeySystem_GetConfigurationByteArray(MediaKeySystem *mediaKeySystem,const char *configName, uint8_t *value, int32_t *valueLen) 349``` 350 351**描述** 352 353获取字符数组类型配置属性值。 354 355**起始版本:** 11 356 357 358**参数:** 359 360| 参数项 | 描述 | 361| -- | -- | 362| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 363| const char *configName | 字符数组类型配置属性名称,不能为空,具体支持的属性名由设备上DRM解决方案决定。 | 364| uint8_t *value | 字符数组类型配置属性。 | 365| int32_t *valueLen | 字符数组类型配置属性长度。 | 366 367**返回:** 368 369| 类型 | 说明 | 370| -- | -- | 371| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_NO_MEMORY:内存不足,内存分配失败。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,输入参数configName为空指针,输入参数value为空指针,或valueLen为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 | 372 373### OH_MediaKeySystem_GetStatistics() 374 375``` 376Drm_ErrCode OH_MediaKeySystem_GetStatistics(MediaKeySystem *mediaKeySystem, DRM_Statistics *statistics) 377``` 378 379**描述** 380 381获取度量记录。 382 383**起始版本:** 11 384 385 386**参数:** 387 388| 参数项 | 描述 | 389| -- | -- | 390| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 391| [DRM_Statistics](capi-drm-drm-statistics.md) *statistics | 度量记录。 | 392 393**返回:** 394 395| 类型 | 说明 | 396| -- | -- | 397| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_NO_MEMORY:内存不足,内存分配失败。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数statistics为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 | 398 399### OH_MediaKeySystem_GetMaxContentProtectionLevel() 400 401``` 402Drm_ErrCode OH_MediaKeySystem_GetMaxContentProtectionLevel(MediaKeySystem *mediaKeySystem,DRM_ContentProtectionLevel *contentProtectionLevel) 403``` 404 405**描述** 406 407获取设备支持的最大内容保护级别。 408 409**起始版本:** 11 410 411 412**参数:** 413 414| 参数项 | 描述 | 415| -- | -- | 416| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 417| [DRM_ContentProtectionLevel](capi-native-drm-common-h.md#drm_contentprotectionlevel) *contentProtectionLevel | 内容保护级别。 | 418 419**返回:** 420 421| 类型 | 说明 | 422| -- | -- | 423| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数contentProtectionLevel为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 | 424 425### OH_MediaKeySystem_SetMediaKeySystemCallback() 426 427``` 428Drm_ErrCode OH_MediaKeySystem_SetMediaKeySystemCallback(MediaKeySystem *mediaKeySystem,MediaKeySystem_Callback callback) 429``` 430 431**描述** 432 433设置MediaKeySystem事件回调。 434 435**起始版本:** 11 436 437 438**参数:** 439 440| 参数项 | 描述 | 441| -- | -- | 442| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 443| [MediaKeySystem_Callback](#mediakeysystem_callback) callback | 回调函数。 | 444 445**返回:** 446 447| 类型 | 说明 | 448| -- | -- | 449| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效。 | 450 451### OH_MediaKeySystem_CreateMediaKeySession() 452 453``` 454Drm_ErrCode OH_MediaKeySystem_CreateMediaKeySession(MediaKeySystem *mediaKeySystem,DRM_ContentProtectionLevel *level, MediaKeySession **mediaKeySession) 455``` 456 457**描述** 458 459创建MediaKeySession会话实例。 460 461**起始版本:** 11 462 463 464**参数:** 465 466| 参数项 | 描述 | 467| -- | -- | 468| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 469| [DRM_ContentProtectionLevel](capi-native-drm-common-h.md#drm_contentprotectionlevel) *level | 内容保护级别。 | 470| [MediaKeySession](capi-drm-mediakeysession.md) **mediaKeySession | MediaKeySession实例。 | 471 472**返回:** 473 474| 类型 | 说明 | 475| -- | -- | 476| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_NO_MEMORY:内存不足,内存分配失败。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数level超出合理范围,或mediaKeySession为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。<br>DRM_ERR_SERVICE_DIED:服务死亡。<br>DRM_ERR_MAX_SESSION_NUM_REACHED:当前MediaKeySystem已创建的MediaKeySession数量达到最大限制(64个)。 | 477 478### OH_MediaKeySystem_GenerateKeySystemRequest() 479 480``` 481Drm_ErrCode OH_MediaKeySystem_GenerateKeySystemRequest(MediaKeySystem *mediaKeySystem, uint8_t *request,int32_t *requestLen, char *defaultUrl, int32_t defaultUrlLen) 482``` 483 484**描述** 485 486生成设备DRM证书请求。 487 488**起始版本:** 11 489 490 491**参数:** 492 493| 参数项 | 描述 | 494| -- | -- | 495| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 496| uint8_t *request | 设备DRM证书请求。 | 497| int32_t *requestLen | 设备DRM证书请求的长度。 | 498| char *defaultUrl | 设备DRM证书服务的URL。 | 499| int32_t defaultUrlLen | 设备DRM证书服务的URL长度。 | 500 501**返回:** 502 503| 类型 | 说明 | 504| -- | -- | 505| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_NO_MEMORY:内存不足,内存分配失败。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或其它指针类型输入参数为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 | 506 507### OH_MediaKeySystem_ProcessKeySystemResponse() 508 509``` 510Drm_ErrCode OH_MediaKeySystem_ProcessKeySystemResponse(MediaKeySystem *mediaKeySystem,uint8_t *response, int32_t responseLen) 511``` 512 513**描述** 514 515处理设备DRM证书请求响应。 516 517**起始版本:** 11 518 519 520**参数:** 521 522| 参数项 | 描述 | 523| -- | -- | 524| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 525| uint8_t *response | 设备DRM证书请求响应。 | 526| int32_t responseLen | 设备DRM证书请求响应长度。 | 527 528**返回:** 529 530| 类型 | 说明 | 531| -- | -- | 532| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数response为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 | 533 534### OH_MediaKeySystem_GetOfflineMediaKeyIds() 535 536``` 537Drm_ErrCode OH_MediaKeySystem_GetOfflineMediaKeyIds(MediaKeySystem *mediaKeySystem,DRM_OfflineMediakeyIdArray *offlineMediaKeyIds) 538``` 539 540**描述** 541 542获取离线媒体密钥标识列表,媒体密钥标识用于对离线媒体密钥的管理。 543 544**起始版本:** 11 545 546 547**参数:** 548 549| 参数项 | 描述 | 550| -- | -- | 551| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 552| [DRM_OfflineMediakeyIdArray](capi-drm-drm-offlinemediakeyidarray.md) *offlineMediaKeyIds | 离线媒体密钥的媒体密钥标识列表。 | 553 554**返回:** 555 556| 类型 | 说明 | 557| -- | -- | 558| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_NO_MEMORY:内存不足,内存分配失败。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数offlineMediaKeyIds为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 | 559 560### OH_MediaKeySystem_GetOfflineMediaKeyStatus() 561 562``` 563Drm_ErrCode OH_MediaKeySystem_GetOfflineMediaKeyStatus(MediaKeySystem *mediaKeySystem,uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen, DRM_OfflineMediaKeyStatus *status) 564``` 565 566**描述** 567 568获取离线媒体密钥状态。 569 570**起始版本:** 11 571 572 573**参数:** 574 575| 参数项 | 描述 | 576| -- | -- | 577| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 578| uint8_t *offlineMediaKeyId | 离线媒体密钥标识。 | 579| int32_t offlineMediaKeyIdLen | 离线媒体密钥标识长度。 | 580| [DRM_OfflineMediaKeyStatus](capi-native-drm-common-h.md#drm_offlinemediakeystatus) *status | 媒体密钥状态。 | 581 582**返回:** 583 584| 类型 | 说明 | 585| -- | -- | 586| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或其它指针类型输入参数为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 | 587 588### OH_MediaKeySystem_ClearOfflineMediaKeys() 589 590``` 591Drm_ErrCode OH_MediaKeySystem_ClearOfflineMediaKeys(MediaKeySystem *mediaKeySystem,uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen) 592``` 593 594**描述** 595 596按id清除离线媒体密钥。 597 598**起始版本:** 11 599 600 601**参数:** 602 603| 参数项 | 描述 | 604| -- | -- | 605| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 606| uint8_t *offlineMediaKeyId | 离线媒体密钥标识。 | 607| int32_t offlineMediaKeyIdLen | 离线媒体密钥标识长度。 | 608 609**返回:** 610 611| 类型 | 说明 | 612| -- | -- | 613| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数offlineMediaKeyId为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 | 614 615### OH_MediaKeySystem_GetCertificateStatus() 616 617``` 618Drm_ErrCode OH_MediaKeySystem_GetCertificateStatus(MediaKeySystem *mediaKeySystem,DRM_CertificateStatus *certStatus) 619``` 620 621**描述** 622 623获取设备DRM证书状态。 624 625**起始版本:** 11 626 627 628**参数:** 629 630| 参数项 | 描述 | 631| -- | -- | 632| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 633| [DRM_CertificateStatus](capi-native-drm-common-h.md#drm_certificatestatus) *certStatus | 设备DRM证书状态值。 | 634 635**返回:** 636 637| 类型 | 说明 | 638| -- | -- | 639| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数certStatus为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 | 640 641### OH_MediaKeySystem_Destroy() 642 643``` 644Drm_ErrCode OH_MediaKeySystem_Destroy(MediaKeySystem *mediaKeySystem) 645``` 646 647**描述** 648 649销毁MediaKeySystem实例。 650 651**起始版本:** 11 652 653 654**参数:** 655 656| 参数项 | 描述 | 657| -- | -- | 658| [MediaKeySystem](capi-drm-mediakeysystem.md) *mediaKeySystem | MediaKeySystem实例。 | 659 660**返回:** 661 662| 类型 | 说明 | 663| -- | -- | 664| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 | 665 666 667