
# 初始化
#### Init
**接口描述**
用于启动并且初始化SDK。
**注意事项**
1. 调用该接口之前请先修改HwmSdk文件夹下HwmSdk.exe文件的名称。
2. 该接口用于启动并初始化SDK，在调用其他接口之前必须先调用该接口并等待初始化回调结果。
3. 每次调用初始化接口会重新启动SDK，之前所有设置与操作将不复存在。
4. 该接口为异步接口，返回值只代表接口是否调用成功，实际业务处理结果在对应的回调函数中返回。
**方法定义**
```
HWM_SDK_AGENT_API hwmsdk::HwmErrCode Init(HwmInitInfo *initInfo);
```
**回调函数**
```
virtual void OnInitResult(hwmsdk::HwmErrCode ret, const char* reason, HwmSdkInfo *sdkInfo) {};
```
**参数描述**
 表1结构体HwmInitInfo 参数说明 
| 参数                     | 是否必须                | 类型               | 描述                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| exePath                | x64平台是必须，win32平台不用传 | char\[\]         | SDK启动路径，SDK压缩包中HwmSdk文件夹下的exe文件所在的绝对路径。使用前请将SDK压缩包中HwmSdk文件夹下HwmSdk.exe文件名修改为期望的名称。如果HwmSdk文件夹的路径为：D:\\MyApp\\SDK\\HwmSdk\\，exe文件的名称为MySdk.exe，则exePath=D:\\MyApp\\SDK\\HwmSdk\\MySdk.exe。 注：需要UTF8编码。 |
| logPath                | 是                   | char\[\]         | SDK日志路径，如果不设置，则使用默认路径。 注：需要UTF8编码。                                                                                                                                                                       |
| userDataPath           | 是                   | char\[\]         | SDK用户数据路径，如果不设置，则使用默认路径。 注：需要UTF8编码。                                                                                                                                                                    |
| appId                  | 是                   | char\[\]         | App ID。App ID的申请，请参考《开发指南》的"[App ID的申请](https://support.huaweicloud.com/devg-meeting/meeting_20_0011.html#section1)"章节。                                                                                                                        |
| notify                 | 是                   | HwmAgentNotify   | 通知对象。继承于基类HwmAgentNotify的类的对象。                                                                                                                                                                                                                 |
| callback               | 是                   | HwmAgentCallback | 接口回调对象。继承于基类HwmAgentCallback的类的对象。                                                                                                                                                                                                             |
| authType               | 是                   | HwmAuthType      | 鉴权方式。                                                                                                                                                                                                                                          |
| siteType               | 否                   | HwmSiteType      | 站点类型。默认使用国内站点（值置0）。                                                                                                                                                                                                                            |
| logKeepDays            | 否                   | unsigned int     | 配置项-日志保存天数，输入有效范围为3-30，默认值0。0为不按天数删除日志。 注意：输入1和2会转换为3，大于30的值会被转换为30。                                                                                                                                 |
| preferredCamera        | 否                   | char\[\]         | 优选摄像头列表，填写后，初次打开摄像头按列表中的顺序选择第一个可用的摄像头。可以不填，不填按照默认顺序打开可用的摄像头。                                                                                                                                                                                   |
| isSupportMultiAppLogin | 否                   | bool             | 是否支持同终端多应用登录。默认关闭。                                                                                                                                                                                                                             |
   
 表2枚举HwmAuthType说明 
| 枚举值                                | 描述          |
|:---|:---|
| HWM_AUTH_TYPE_ACCOUNT_AND_PASSWORD | 账号密码鉴权方式。   |
| HWM_AUTH_TYPE_APPID                | App ID鉴权方式。 |
   
表3枚举HwmSiteType说明 
| 枚举值             | 描述   |
|:---|:---|
| SITE_TYPE_CHINA | 国内站点 |
| SITE_TYPE_AP    | 亚太站点 |
   
表4结构体HwmSdkInfo参数说明 
| 参数      | 类型       | 描述     |
|:---|:---|:---|
| version | char\[\] | SDK版本号 |
   
![](https://support.huaweicloud.com/sdkreference-meeting/public_sys-resources/note_3.0-zh-cn.png)
推荐使用App ID鉴权方式。App ID的申请，请参考[《开发指南》](https://support.huaweicloud.com/devg-meeting/meeting_20_0001.html)中的"App ID鉴权介绍"章节。
**返回值**
表5返回值 
| 类型         | 描述                                                                                                           |
|:---|:---|
| HwmErrCode | 成功返回0，其他值表示失败。失败返回值见[错误码参考](https://support.huaweicloud.com/sdkreference-meeting/meeting_control_0022.html)。 |
   
**示例代码**
```
//创建消息通知处理对象
static demoNotifyProc *notifyObj = new demoNotifyProc();
//创建回调函数处理对象
static demoCallbackProc *callbackObj = new demoCallbackProc();
/**
*初始化接口，拉起应用
*/
int CdemoBeforeLoginDlg::Init()
{
    //组装入参结构体
    hwmsdkagent::HwmInitInfo initParam;
    memset(&initParam, 0, sizeof(HwmInitInfo));
 
    //(win32平台不需要)x64平台需要设置sdk路径，即exe文件路径，对exe文件重命名后，需要对应修改
    //将路径转换为UTF8格式后拷贝给initParam，此处省略转换代码
    strcpy_s(initParam.exePath, HWM_MAX_FILE_PATH_LEN, GetHwmSdkExePath().c_str());
    //指定日志路径，将路径转换为UTF8格式后拷贝给initParam，此处省略转换代码
    strcpy_s(initParam.logPath, HWM_MAX_FILE_PATH_LEN, GetLogPath().c_str());
    //指定数据路径，将路径转换为UTF8格式后拷贝给initParam，此处省略转换代码
    strcpy_s(initParam.userDataPath, HWM_MAX_FILE_PATH_LEN, GetUserDataPath().c_str());
    //传入申请到的企业AppId
    strncpy_s(initParam.appId, GetAppId.c_str(), HWM_MAX_APPID_LEN);
    initParam.notify = notifyObj;
    initParam.callback = callbackObj;
    initParam.authType = hwmsdkagent::HWM_AUTH_TYPE_APPID;
    int ret = hwmsdkagent::Init(&initParam);
 
    return ret;
}
```
![](https://support.huaweicloud.com/sdkreference-meeting/public_sys-resources/note_3.0-zh-cn.png)
- 典型场景和接口参考中的示例代码仅作为示例用的伪代码，不能直接使用。
- 消息通知处理类demoNotifyProc和回调函数处理类demoCallbackProc的定义，请参考SDK包中的Demo代码。
 
