---
title: release
description: "释放DataGuard配置信息。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcctrustzone/tee/kcal/kunpeng_kcal_16_0015.html
sourcePath: /source/zh/kunpengcctrustzone/tee/kcal/kunpeng_kcal_16_0015.html
indexId: ebb98e6a82cad31d046a47f1cca326f02bbcc79bbd9a47735d90256209c8698464
---
# release

释放DataGuard配置信息。

```
int release (
DG_Cfg *config
)
```

#### 参数


**表1 参数说明**

| 参数名 | 描述 | 取值范围 | 输入/输出 |
| --- | --- | --- | --- |
| config | 初始化配置信息 | 输入为初始化成功的配置信息 | 输入 |


#### 返回值

成功：返回0。


#### 依赖

#include "data_guard_config.h" ：该接口声明所在的头文件。


#### 示例

使用调用DG_InitConfigOpts成功后的opts来调用release接口。


```
#include "data_guard_config.h"
#include "data_guard_mpc.h"
// 此opts为DG_InitConfigOpts的结果,teeCfg为init成功的结果。
int res = opts->release(&teeCfg);
```

运行结果：res为0。

设置KCAL的配置信息的整体示例为：

```
#include "data_guard_config.h"
#include "data_guard_mpc.h"
// 假设nodeId已在config中初始化完成。
DG_ConfigOpts *opts = NULL;
int rv = DG_InitConfigOpts(DG_BusinessType::MPC, &opts);
if (rv != 0) {
printf("DG_InitConfigOpts error!code:%d\n", rv);
return rv;
}
void *teeCfg = NULL;
rv = opts->init(&teeCfg);
if (rv != 0) {
printf(" opts->init(teeCfg)!-%d\n", rv);
return rv;
}
rv = opts->setIntValue(teeCfg, DG_CON_MPC_TEE_INT_NODEID, nodeId);
if (rv != 0) {
printf(" opts-> setIntValue(teeCfg)!-%d\n", rv);
return rv;
}
rv = opts->setIntValue(teeCfg, DG_CON_MPC_TEE_INT_FXP_BITS, 2);
if (rv != 0) {
printf(" opts-> setIntValue(teeCfg)!-%d\n", rv);
return rv;
}
rv = opts->setIntValue(teeCfg, DG_CON_MPC_TEE_INT_THREAD_COUNT, 16);
if (rv != 0) {
printf(" opts-> setIntValue(teeCfg)!-%d\n", rv);
return rv;
}
//国密标志：0-非国密；1-国密。
rv = opts->setIntValue(teeCfg, DG_CON_MPC_TEE_INT_IS_SM_ALGORITHM, 1);
if (rv != 0) {
printf(" opts-> setIntValue(teeCfg)!-%d\n", rv);
return rv;
}
// SendData和RecvData为产品实现。
TEE_NET_RES teeNet = {SendData, RecvData};
DG_Void netFunc;
netFunc.data = &teeNet;
netFunc.size = sizeof(TEE_NET_RES);
rv = opts->setVoidValue(teeCfg, DG_CON_MPC_TEE_VOID_NET_API, &netFunc);
if (rv != 0) {
printf(" opts-> setVoidValue(teeCfg)!-%d\n", rv);
return rv;
}
//  业务全部结束后释放。
DG_ReleaseConfigOpts(&opts);
```

运行结果：rv均为0。
