Ver código fonte

上传文件至 'hc/incCn'

hanzhengyi 4 anos atrás
pai
commit
26622bfe14
5 arquivos alterados com 3638 adições e 0 exclusões
  1. 307 0
      hc/incCn/AudioIntercom.h
  2. 539 0
      hc/incCn/HCEHomeAlarm.h
  3. 2435 0
      hc/incCn/HCEHomeCMS.h
  4. 203 0
      hc/incCn/HCEHomePublic.h
  5. 154 0
      hc/incCn/HCEHomeSS.h

+ 307 - 0
hc/incCn/AudioIntercom.h

@@ -0,0 +1,307 @@
+/**	@File   AUDIOINTERCOM.H
+ *
+ *	@Note   HangZhou Hikvision System Technology Co., Ltd. All Right Reserved.
+ *
+ *	@Brief  音频对讲库
+ *
+ *	@Author zhangxinyf3 张欣
+ *
+ *	@Date   2012/4/9
+ *
+ *  @Remark 
+ */
+
+#ifndef _AUDIO_INTERCOM_H_
+#define _AUDIO_INTERCOM_H_
+
+#ifdef WIN32
+    #if defined(_WINDLL)
+        #define AUDIOCOM_API  __declspec(dllexport) 
+    #else 
+        #define AUDIOCOM_API  __declspec(dllimport) 
+    #endif
+#else
+    #ifndef __stdcall
+        #define __stdcall
+    #endif
+
+    #ifndef AUDIOCOM_API
+        #define AUDIOCOM_API
+    #endif
+#endif
+
+///<错误码
+#define ERROR_NO            1      ///<无错误
+#define ERROR_ALLOC_MEMORY  2      ///<内存分配出错
+#define ERROR_PARAMETER     3      ///<调用参数出错
+#define ERROR_CALL_ORDER    4      ///<调用顺序出错
+#define ERROR_FIND_DEVICE   5      ///<不能找到声卡设备
+#define ERROR_OPEN_DEVICE   6      ///<不能打开声卡设备
+#define ERROR_NO_CONTEXT    7      ///<设备音频引擎上下文出错
+#define ERROR_NO_WAVEFILE   8      ///<WAV文件出错
+#define ERROR_INVALID_TYPE  9      ///<无效的WAV参数类型
+#define ERROR_ENCODE_FAIL   10     ///<音频编码失败
+#define ERROR_DECODE_FAIL   11     ///<音频解码失败
+#define ERROR_NO_PLAYBACK   12     ///<音频播放失败
+#define ERROR_DENOISE_FAIL  13     ///<降噪失败
+#define ERROR_SUPPORT       14     ///<类型不支持
+#define ERROR_UNKNOWN       99     ///<未知错误
+
+///<声卡设备信息结构体
+typedef struct _SOUND_CARD_INFO
+{
+    char           byDeviceName[128];///<设备名称
+    unsigned int   dwFrequency;      ///<采集频率
+    unsigned int   dwRefresh;        ///<刷新频率
+    unsigned int   dwSync;           ///<同步
+    unsigned int   dwMonoSources;    ///<单声道源数量
+    unsigned int   dwStereoSources;  ///<多声道源数量
+    unsigned int   dwMajorVersion;   ///<主版本号
+    unsigned int   dwMinorVersion;   ///<次版本号
+    unsigned int   dwReserved[16];   ///<保留参数
+}SoundCardInfo;
+
+///<pcm 声道数
+typedef enum _CHANNEL_PCM_
+{
+    CHANNEL_1 = 1,                  ///<单声道
+    CHANNEL_2 = 2                   ///<双声道
+}ChannelPcm;
+
+///<位宽
+typedef enum _BITWIDTH_PCM_
+{
+    BITS_08 = 8,                    ///<编解码库不支持
+    BITS_16 = 16                    ///<16位
+}BitsPcm;
+
+///<pcm采样率
+typedef enum _SAMPLERATE_PCM_
+{
+    SAMPLERATE_08K  =  8000,         ///<8k采样率
+    SAMPLERATE_16K  = 16000,         ///<16k采样率
+    SAMPLERATE_32K  = 32000,         ///<32k采样率
+    SAMPLERATE_44K1 = 44100,         ///<44.1k采样率
+    SAMPLERATE_48K  = 48000          ///<48k采样率
+}SampleratePcm;
+
+///<编码比特率
+typedef enum _BITRATE_ENCODE_
+{
+    BITRATE_ENCODE_08k = 8000,      ///<8k比特率
+    BITRATE_ENCODE_16k = 16000,     ///<16k比特率
+    BITRATE_ENCODE_32k = 32000,     ///<32k比特率
+	BITRATE_ENCODE_64k = 64000,     ///<64k比特率
+	BITRATE_ENCODE_128k = 128000    ///<128k比特率
+	
+}BitRateEncode;
+
+///<音频编解码类别
+typedef enum _AUDIO_ENCODE_TYPE_EX
+{
+    AUDIO_TYPE_PCM    = 0x00,
+    AUDIO_TYPE_G711A  = 0x01,
+    AUDIO_TYPE_G711U  = 0x02,
+    AUDIO_TYPE_G722   = 0x03,
+    AUDIO_TYPE_G726   = 0x04,
+    AUDIO_TYPE_MPEG2  = 0x05,
+    AUDIO_TYPE_AAC    = 0x06,
+    AUDIO_TYPE_G729   = 0x07,
+    AUDIO_TYPE_ADPCM  = 0x08,
+    AUDIO_TYPE_MP3    = 0x0A
+}AudioEncodeTypeEx;
+
+typedef enum _AUDIO_ENCODE_TYPE
+{
+    AUDIO_TYPE_PCM_S16K    = 0x00,
+    AUDIO_TYPE_G711A_S8K   = 0x01,
+    AUDIO_TYPE_G711U_S8K   = 0x02,
+    AUDIO_TYPE_G722_S16K   = 0x03,
+    AUDIO_TYPE_G726_S8K    = 0x04,
+    AUDIO_TYPE_MPEG2_S16K  = 0x05,
+    AUDIO_TYPE_AAC_S32K    = 0x06,
+    AUDIO_TYPE_PCM_S8K	   = 0x07,
+    AUDIO_TYPE_PCM_S32K    = 0x08,
+    AUDIO_TYPE_AAC_S16K	   = 0x09
+}AudioEncodeType;
+
+///<音频编解码格式(注:pcm三属性值、编码比特率、编解码类别不是任意组合都可以的)
+typedef struct _AUDIO_PARAM_
+{
+    unsigned short    nChannel;           ///<PCM声道数
+    unsigned short    nBitWidth;          ///<PCM位宽
+    unsigned int      nSampleRate;        ///<PCM采样率
+    unsigned int      nBitRate;           ///<编码比特率
+    AudioEncodeTypeEx enAudioEncodeTypeEx;///<编解码类别
+}AudioParam;
+
+///<原音频编解码格式
+/*****************************************************************
+原音频枚举类型            声道, 位宽, 采样率, 编码比特率, 编码类别  
+AUDIO_TYPE_MPEG2_S16K <——> {1, 16, 16000, 64000, AUDIO_TYPE_MPEG2}
+AUDIO_TYPE_G726_S8K   <——> {1, 16,  8000, 16000,  AUDIO_TYPE_G726}
+AUDIO_TYPE_G722_S16K  <——> {1, 16, 16000, 16000,  AUDIO_TYPE_G722}
+AUDIO_TYPE_G711U_S8K  <——> {1, 16,  8000, 64000, AUDIO_TYPE_G711U}
+AUDIO_TYPE_G711A_S8K  <——> {1, 16,  8000, 64000, AUDIO_TYPE_G711A}
+AUDIO_TYPE_PCM_S32K   <——> {1, 16, 32000, xxxxx,   AUDIO_TYPE_PCM}
+AUDIO_TYPE_PCM_S8K    <——> {1, 16,  8000, xxxxx,   AUDIO_TYPE_PCM}
+AUDIO_TYPE_AAC_S16K   <——> {1, 16, 16000, 32000,   AUDIO_TYPE_AAC}
+AUDIO_TYPE_AAC_S32K   <——> {1, 16, 32000, 32000,   AUDIO_TYPE_AAC}
+*****************************************************************/
+
+///<回调函数输出数据信息结构体
+typedef struct _OUTPUT_DATA_INFO_EX_ 
+{
+    unsigned char*    pData;
+    unsigned int      dwDataLen;
+    AudioEncodeTypeEx enDataTypeEx;
+}OutputDataInfoEx;
+
+typedef struct _OUTPUT_DATA_INFO_
+{
+    unsigned char*    pData;
+    unsigned int      dwDataLen;
+    AudioEncodeType   enDataType;
+}OutputDataInfo;
+
+typedef void (__stdcall* OutputDataCallBack)(OutputDataInfo* pstDataInfo,void* pUser);
+typedef void (__stdcall* OutputDataCallBackEx)(OutputDataInfoEx* pstDataInfo,void* pUser);
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**********************************获取声卡信息*******************************************************************************/
+
+///<获取声卡数量
+AUDIOCOM_API int __stdcall AUDIOCOM_GetSoundCardNum(unsigned int* pdwDeviceNum);
+
+///<获取指定声卡的设备信息
+AUDIOCOM_API int __stdcall AUDIOCOM_GetOneSoundCardInfo(unsigned int dwDeviceIndex, SoundCardInfo* pstDeviceInfo);
+
+
+///<获取采集设备的数量
+AUDIOCOM_API int __stdcall AUDIOCOM_GetCaptureDeviceNum(unsigned int* pCaptureDeviceNum);
+
+///<获取采集设备的名称
+AUDIOCOM_API int __stdcall AUDIOCOM_GetOneCaptureDeviceName(unsigned int dwCaptureDeviceIndex, char* pCaptureDeviceName);
+
+
+///<获取播放设备的数量
+AUDIOCOM_API int __stdcall AUDIOCOM_GetPlayDeviceNum(unsigned int* pPlayDeviceNum);
+
+///<获取播放设备的名称
+AUDIOCOM_API int __stdcall AUDIOCOM_GetOnePlayDeviceName(unsigned int dwPlayDeviceIndex, char* pPlayDeviceName);
+
+
+/**********************************采集编码模块接口***************************************************************************/
+
+///<根据指定设备名称,创建采集编码模块端口号
+AUDIOCOM_API int __stdcall AUDIOCOM_CreateCaptureHandle(int* pnCapturePort, const char* pDeviceName);
+
+
+///<根据指定采集设备名称,创建采集编码模块端口号
+AUDIOCOM_API int __stdcall AUDIOCOM_CreateCaptureHandleEx(int* pnCapturePort, const char* pCapDeviceName);
+
+
+///<注册回调函数,可以指定不同格式的编码数据,并通过回调函数输出(旧接口)
+AUDIOCOM_API int __stdcall AUDIOCOM_RegisterOutputDataCallBack(int nCapturePort, 
+                                                               AudioEncodeType enDataType, 
+                                                               OutputDataCallBack pfnOutputDataCallBack, 
+                                                               void* pUser);
+
+
+
+///<注册回调函数,可以指定不同格式的编码数据,并通过回调函数输出
+AUDIOCOM_API int __stdcall AUDIOCOM_RegisterOutputDataCallBackEx(int nCapturePort, 
+                                                                 AudioParam *pstAudioParam, 
+                                                                 OutputDataCallBackEx pfnOutputDataCallBack, 
+                                                                 void* pUser);
+
+///<开始采集编码
+AUDIOCOM_API int __stdcall AUDIOCOM_StartCapture(int nCapturePort);
+
+///<停止采集编码
+AUDIOCOM_API int __stdcall AUDIOCOM_StopCapture(int nCapturePort);
+
+///<注册采集编码前回调函数(旧接口)
+AUDIOCOM_API int __stdcall AUDIOCOM_RegisterCaptureDataCallBack(int nCapturePort, 
+                                                                OutputDataCallBack pfnCaptureDataCallBack, 
+                                                                void* pUser);
+
+///<注册采集编码前回调函数
+AUDIOCOM_API int __stdcall AUDIOCOM_RegisterCaptureDataCallBackEx(int nCapturePort, 
+                                                                  OutputDataCallBackEx pfnCaptureDataCallBack, 
+                                                                  void* pUser);
+
+///<释放采集编码模块端口号
+AUDIOCOM_API int __stdcall AUDIOCOM_ReleaseCaptureHandle(int nCapturePort);
+
+///<释放采集编码模块端口号
+AUDIOCOM_API int __stdcall AUDIOCOM_ReleaseCaptureHandleEx(int nCapturePort);
+
+/**********************************播放解码模块接口**************************************************************************/
+
+///<根据指定设备名称,创建播放解码模块端口号
+AUDIOCOM_API int __stdcall AUDIOCOM_CreatePlayHandle(int* pnPlayPort, const char* pDeviceName);
+
+
+///<根据指定设备名称,创建播放解码模块端口号
+AUDIOCOM_API int __stdcall AUDIOCOM_CreatePlayHandleEx(int* pnPlayPort, const char* pDeviceName);
+/*
+///<指定文件路径,打开WAV文件
+AUDIOCOM_API int __stdcall AUDIOCOM_OpenWaveFile(int nPlayPort, const char* pFilePath);
+*/
+
+///<指定流类型,打开流
+AUDIOCOM_API int __stdcall AUDIOCOM_OpenStream(int nPlayPort, AudioEncodeType enDataType);
+
+///<指定流类型,打开流
+AUDIOCOM_API int __stdcall AUDIOCOM_OpenStreamEx(int nPlayPort, AudioParam *pstAudioParam);
+
+///<输入流数据
+AUDIOCOM_API int __stdcall AUDIOCOM_InputStreamData(int nPlayPort, unsigned char* pData, unsigned int dwDataLen);
+
+///<开始解码播放
+AUDIOCOM_API int __stdcall AUDIOCOM_StartPlay(int nPlayPort);
+
+///<停止解码播放
+AUDIOCOM_API int __stdcall AUDIOCOM_StopPlay(int nPlayPort);
+
+///<解码后数据回调(旧接口)
+AUDIOCOM_API int __stdcall AUDIOCOM_RegisterDecodeDataCallBack(int nPlayPort, 
+                                                               OutputDataCallBack pfnDecodeDataCallBack, 
+                                                               void* pUser);
+
+///<解码后数据回调
+AUDIOCOM_API int __stdcall AUDIOCOM_RegisterDecodeDataCallBackEx(int nPlayPort, 
+                                                                 OutputDataCallBackEx pfnDecodeDataCallBack, 
+                                                                 void* pUser);
+
+///<设置音量
+AUDIOCOM_API int __stdcall AUDIOCOM_SetVolume(int nPlayPort, float fVolume);
+
+///<获取音量
+AUDIOCOM_API int __stdcall AUDIOCOM_GetVolume(int nPlayPort, float* fVolume);
+
+///<释放播放解码模块端口号
+AUDIOCOM_API int __stdcall AUDIOCOM_ReleasePlayHandle(int nPlayPort);
+
+///<释放声卡资源
+//AUDIOCOM_API int __stdcall AUDIOCOM_Release
+
+/******************************************************************************************************************************/
+
+///<获取错误信息
+AUDIOCOM_API int __stdcall AUDIOCOM_GetLastError(int nPort);
+
+///<获取版本号
+AUDIOCOM_API unsigned int __stdcall AUDIOCOM_GetVersion();
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif//_AUDIO_INTERCOM_H_

+ 539 - 0
hc/incCn/HCEHomeAlarm.h

@@ -0,0 +1,539 @@
+#ifndef _HC_EHOME_ALARM_H_
+#define _HC_EHOME_ALARM_H_
+
+#include "HCEHomePublic.h"
+
+//报警
+#define   EHOME_ALARM_UNKNOWN 0  //未知报警类型
+#define   EHOME_ALARM                    1        //Ehome基本报警
+#define   EHOME_ALARM_HEATMAP_REPORT    2        //热度图报告
+#define   EHOME_ALARM_FACESNAP_REPORT    3        //人脸抓拍报告
+#define   EHOME_ALARM_GPS                4        //GPS信息上传
+#define   EHOME_ALARM_CID_REPORT        5        //报警主机CID告警上传
+#define   EHOME_ALARM_NOTICE_PICURL    6        //图片URL上报
+#define   EHOME_ALARM_NOTIFY_FAIL        7        //异步失败通知
+#define   EHOME_ALARM_SELFDEFINE         9      //自定义报警上传
+#define   EHOME_ALARM_DEVICE_NETSWITCH_REPORT 10    //设备网络切换上传
+#define   EHOME_ALARM_ACS               11       //门禁事件上报
+#define   EHOME_ALARM_WIRELESS_INFO   12   //无线网络信息上传
+#define   EHOME_ISAPI_ALARM   13           //ISAPI报警上传
+#define   EHOME_INFO_RELEASE_PRIVATE    14  //为了兼容信息发布产品的私有EHome协议报警(不再维护)
+
+#define MAX_TIME_LEN                32      //时间字符串长度
+#define MAX_REMARK_LEN        64      //报警备注长度
+#define MAX_URL_LEN                512     //URL长度
+#define CID_DES_LEN             32      //CID报警描述长度
+#define MAX_FILE_PATH_LEN       256
+#define MAX_UUID_LEN			64	//最大UUID长度
+#define CID_DES_LEN_EX          256      //CID报警描述长度扩展
+
+typedef enum
+{
+    ALARM_TYPE_DISK_FULL = 0,                     //0-硬盘满
+    ALARM_TYPE_DISK_WRERROR,                     //1-读写硬盘出错
+    ALARM_TYPE_VIDEO_LOST = 5,                   //5-视频(信号)丢失*/
+    ALARM_TYPE_EXTERNAL,                         //6-外部(信号量)报警
+    ALARM_TYPE_VIDEO_COVERED,                    //7-视频遮盖
+    ALARM_TYPE_MOTION,                           //8-移动侦测
+    ALARM_TYPE_STANDARD_NOTMATCH,                //9-制式不匹配
+    ALARM_TYPE_SPEEDLIMIT_EXCEED,                //10-超速
+    ALARM_TYPE_PIR,                                 //11-PIR报警
+    ALARM_TYPE_WIRELESS,                         //12-无线报警
+    ALARM_TYPE_CALL_HELP,                         //13-呼救报警
+    ALARM_TYPE_DISARM,                             //14-布撤防报警
+    ALARM_TYPE_STREAM_PRIVATE,                     //15-码流隐私状态改变通知
+    ALARM_TYPE_PIC_UPLOAD_FAIL,                     //16-设备上传图片失败
+    ALARM_TYPE_LOCAL_REC_EXCEPTION,                 //17-设备本地录像(抓图)异常
+    ALARM_TYPE_UPGRADE_FAIL,                     //18-设备版本升级失败
+    ALARM_TYPE_ILLEGAL_ACCESS,                     //19-非法访问
+    ALARM_TYPE_SOUNDLIMIT_EXCEED = 80,           //80-声音分贝数超标
+    ALARM_TYPE_TRIFFIC_VIOLATION = 90,             //90-违章报警
+    ALARM_TYPE_ALARM_CONTROL,                     //91-布控报警
+    ALARM_TYPE_FACE_DETECTION = 97,                 //97-人脸侦测
+    ALARM_TYPE_DEFOUSE_DETECTION,                 //98-虚焦侦测
+    ALARM_TYPE_AUDIO_EXCEPTION,                     //99-音频异常侦测
+    ALARM_TYPE_SCENE_CHANGE,                     //100-场景变更报警
+    ALARM_TYPE_TRAVERSE_PLANE,                     //101-穿越警戒面(越界侦测)
+    ALARM_TYPE_ENTER_AREA,                         //102-目标进入区域
+    ALARM_TYPE_LEAVE_AREA,                         //103-目标离开区域
+    ALARM_TYPE_INTRUSION,                         //104-周界入侵(区域入侵)
+    ALARM_TYPE_LOITER,                             //105-徘徊
+    ALARM_TYPE_LEFT_TAKE,                         //106-物品遗留拿取
+    ALARM_TYPE_CAR_STOP,                         //107-停车
+    ALARM_TYPE_MOVE_FAST,                         //108-快速运动
+    ALARM_TYPE_HIGH_DENSITY,                     //109-人员聚集
+    ALARM_TYPE_PDC_BY_TIME,                         //110-人流量按时间段统计上报
+    ALARM_TYPE_PDC_BY_FRAME,                     //111-人流量单帧统计上报
+    ALARM_TYPE_LEFT,                             //112-物品遗留
+    ALARM_TYPE_TAKE,                             //113-物品拿取
+    ALARM_TYPE_ROLLOVER,                         //114-侧翻
+    ALARM_TYPE_COLLISION,                       //115-碰撞
+
+    ALARM_TYPE_FLOW_OVERRUN =256,                    //256-流量超限报警
+    ALARM_TYPE_WARN_FLOW_OVERRUN,              //257-流量超限提醒
+
+
+    ALARM_TYPE_DEV_CHANGED_STATUS = 700,           //700-设备状态改变报警上传
+    ALARM_TYPE_CHAN_CHANGED_STATUS,               //701-通道状态改变报警上报
+    ALARM_TYPE_HD_CHANGED_STATUS,               //702-磁盘状态改变报警上报
+    ALARM_TYPE_DEV_TIMING_STATUS,               //703-定时上报设备状态信息
+    ALARM_TYPE_CHAN_TIMING_STATUS,               //704-定时上报通道状态信息
+    ALARM_TYPE_HD_TIMING_STATUS,               //705-定时上报磁盘状态信息
+    ALARM_TYPE_RECORD_ABNORMAL,               //706-录像异常,当前时间点本来应该是在执行录像的,结果因为异常原因导致设备无法正常录像。
+
+    ALARM_TYPE_ENV_LIMIT = 8800,                 //8800-动环环境量超限报警
+    ALARM_TYPE_ENV_REAL_TIME,                     //8801-动环环境量实时数据上报
+    ALARM_TYPE_ENV_EXCEPTION,                     //8802-动环异常上报
+    ALARM_TYPE_HIGH_TEMP = 40961,                 //40961-设备温度过高报警
+    ALARM_TYPE_ACC_EXCEPTION,                     //40962-设备加速度异常报警
+}EN_ALARM_TYPE;
+
+/*
+dwAlarmType                           dwAlarmAction            dwVideoChannel        dwAlarmInChannel            dwDiskNumber        byRemark
+ALARM_TYPE_DISK_FULL                  0-报警开始 1-报警结束    N/A                  N/A                            硬盘号                N/A
+ALARM_TYPE_DISK_WRERROR               0-报警开始 1-报警结束    N/A                    N/A                            硬盘号                N/A
+ALARM_TYPE_VIDEO_LOST                 0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_EXTERNAL                   0-报警开始 1-报警结束    N/A                    报警输入号                    N/A                    N/A
+ALARM_TYPE_VIDEO_COVERED              0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_MOTION                     0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_STANDARD_NOTMATCH          0-报警开始 1-报警结束    N/A                    N/A                            N/A                    N/A
+ALARM_TYPE_SPEEDLIMIT_EXCEED          0-报警开始 1-报警结束    限速值                当前速度                    N/A                    N/A
+ALARM_TYPE_PIR                        0-报警开始 1-报警结束    报警器编号            N/A                            N/A                    N/A
+ALARM_TYPE_WIRELESS                   0-报警开始 1-报警结束    N/A                    无线报警器编号                N/A                    N/A
+ALARM_TYPE_CALL_HELP                  0-报警开始 1-报警结束    报警器编号            N/A                            N/A                    N/A
+ALARM_TYPE_DISARM                     0-布防 1-撤防            N/A                    N/A                            N/A                    N/A
+ALARM_TYPE_STREAM_PRIVATE             0-开启 1-关闭            N/A                    N/A                            N/A                    N/A
+ALARM_TYPE_PIC_UPLOAD_FAIL            0-发生异常或报警         通道号                报警联动抓拍上传失败时        手动抓拍上传失败时    N/A                
+对应的报警类型                手动抓拍流水号        N/A
+ALARM_TYPE_LOCAL_REC_EXCEPTION        0-发生异常或报警         N/A                    N/A                            N/A                    N/A
+ALARM_TYPE_UPGRADE_FAIL               0-发生异常或报警         N/A                    N/A                            N/A                    当前版本号,格式:Vx.y.z buildYYMMDD
+ALARM_TYPE_ILLEGAL_ACCESS             0-发生异常或报警         N/A                    N/A                            N/A                    N/A
+ALARM_TYPE_SOUNDLIMIT_EXCEED          0-发生异常或报警         噪声阈值分贝*10        当前噪声值分贝*10            N/A                    N/A
+ALARM_TYPE_TRIFFIC_VIOLATION          0-发生异常或报警         N/A                    N/A                            N/A                    N/A
+ALARM_TYPE_ALARM_CONTROL              0-发生异常或报警         N/A                    N/A                            N/A                    N/A
+ALARM_TYPE_FACE_DETECTION             0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_DEFOUSE_DETECTION          0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_AUDIO_EXCEPTION            0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_SCENE_CHANGE               0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_TRAVERSE_PLANE             0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_ENTER_AREA                 0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_LEAVE_AREA                 0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_INTRUSION                  0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_LOITER                     0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_LEFT_TAKE                  0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_CAR_STOP                   0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_MOVE_FAST                  0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_HIGH_DENSITY               0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_PDC_BY_TIME                0-报警上报               通道号                进入人数                    离开人数            人流量统计结束时间(YYYY-MM-DD HHMISS)
+ALARM_TYPE_PDC_BY_FRAME               0-报警上报               通道号                进入人数                    离开人数            N/A
+ALARM_TYPE_LEFT                       0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_TAKE                       0-报警开始 1-报警结束    通道号                N/A                            N/A                    N/A
+ALARM_TYPE_ENV_LIMIT                  0-报警上报               点号(默认104)        N/A                            N/A                    报警、异常描述信息,不超过256字节
+ALARM_TYPE_ENV_REAL_TIME              0-报警上报               点号(默认104)        N/A                            N/A                    动环相关量实时数值(double类型,比如11.20)
+ALARM_TYPE_ENV_EXCEPTION              0-报警上报               N/A                    N/A                            N/A                    报警、异常描述信息,不超过256字节
+ALARM_TYPE_HIGH_TEMP                  0-报警上报               N/A                    N/A                            N/A                    N/A
+ALARM_TYPE_ACC_EXCEPTION              0-报警上报               N/A                    N/A                            N/A                    N/A
+*/
+
+//设备状态改变上报
+typedef struct tagNET_EHOME_DEV_STATUS_CHANGED
+{
+    BYTE   byDeviceStatus; //设备状态,0-正常;1-CPU占用率太高,超过85%,2-硬件错误,例如串口异常
+    BYTE   byRes[11];       //保留 
+}NET_EHOME_DEV_STATUS_CHANGED, *LPNET_EHOME_DEV_STATUS_CHANGED;
+
+
+//通道状态改变上报
+typedef struct tagNET_EHOME_CHAN_STATUS_CHANGED
+{
+    WORD  wChanNO;      //通道号 
+    BYTE   byChanStatus;     //通道状态,按位表示 
+    //bit0:启用状态,0-禁用/删除,1-启用/添加
+    //模拟通道由禁用到启用,或者启用到禁用,上报该字段
+    //数字通道添加到删除,或者删除到重新添加,上报该字段
+    //bit1:在线状态,0-不在线,1-在线
+    //bit2:信号状态,0-无信号,1-有信号
+    //bit3:录像状态,0-不在录像 1-在录像
+    //bit4:IP通道信息改变状态,0-未改变 1-有改变,这位表示该通道的配
+    //置信息发生了改变,比如添加的IPC有过更换,通知上层更新能力集 
+    BYTE   byRes[9];
+}NET_EHOME_CHAN_STATUS_CHANGED, *LPNET_EHOME_CHAN_STATUS_CHANGED;
+
+//磁盘状态改变
+typedef struct tagNET_EHOME_HD_STATUS_CHANGED
+{
+    DWORD       dwVolume;       //硬盘容量,单位:MB
+    WORD        wHDNo;      //硬盘号
+    BYTE        byHDStatus;     //硬盘的状态, 0-活动1-休眠,2-异常,3-休眠硬盘出错,
+    //4-未格式化, 5-未连接状态(网络硬盘),6-硬盘正在格式化
+    BYTE        byRes[5];       //保留 
+}NET_EHOME_HD_STATUS_CHANGED, *LPNET_EHOME_HD_STATUS_CHANGED;
+
+//定时上报设备状态项
+typedef struct tagNET_EHOME_DEV_TIMING_STATUS
+{
+    DWORD       dwMemoryTotal; //内存总量,单位Kbyte
+    DWORD       dwMemoryUsage;     //内存使用量,单位Kbyte
+    BYTE        byCPUUsage;         //CPU使用率,0-100
+    BYTE        byMainFrameTemp;    //机箱温度,单位:摄氏度
+    BYTE        byBackPanelTemp;        //背板温度,单位:摄氏度
+    BYTE        byRes;
+}NET_EHOME_DEV_TIMING_STATUS, *LPNET_EHOME_DEV_TIMING_STATUS;
+
+//定时上报通道状态项-单个通道
+typedef struct tagNET_EHOME_CHAN_TIMING_STATUS_SINGLE
+{
+    DWORD dwBitRate;       //实际码率,单位kbps 
+    WORD  wChanNO;    //通道号 
+    BYTE   byLinkNum;  //客户端连接的个数
+    BYTE   byRes[5];
+}NET_EHOME_CHAN_TIMING_STATUS_SINGLE, *LPNET_EHOME_CHAN_TIMING_STATUS_SINGLE;
+
+//定时上报磁盘状态项
+typedef struct tagNET_EHOME_HD_TIMING_STATUS_SINGLE
+{
+    DWORD   dwHDFreeSpace;    //硬盘剩余空间,单位:MB 
+    WORD    wHDNo;  //磁盘号 
+    BYTE    byRes[6];
+}NET_EHOME_HD_TIMING_STATUS_SINGLE, *LPNET_EHOME_HD_TIMING_STATUS_SINGLE;
+
+
+typedef union tagNET_EHOME_ALARM_STATUS_UNION
+{
+    BYTE    byRes[12]; //联合体大小
+    NET_EHOME_DEV_STATUS_CHANGED struDevStatusChanged;
+    NET_EHOME_CHAN_STATUS_CHANGED struChanStatusChanged;
+    NET_EHOME_HD_STATUS_CHANGED struHdStatusChanged;
+    NET_EHOME_DEV_TIMING_STATUS struDevTimeStatus;
+    NET_EHOME_CHAN_TIMING_STATUS_SINGLE struChanTimeStatus;
+    NET_EHOME_HD_TIMING_STATUS_SINGLE struHdTimeStatus;
+}NET_EHOME_ALARM_STATUS_UNION, *LPNET_EHOME_ALARM_STATUS_UNION;
+
+typedef struct tagNET_EHOME_ALARM_INFO
+{
+    DWORD   dwSize;
+    char    szAlarmTime[MAX_TIME_LEN];    //报警触发时间(设备本地时间),格式,YYYY-MM-DD HH:MM:SS
+    char    szDeviceID[MAX_DEVICE_ID_LEN];//设备注册ID
+    DWORD   dwAlarmType;                  //报警类型见EN_ALARM_TYPE枚举变量
+    DWORD   dwAlarmAction;                //报警动作0:开始    1:停止
+    DWORD   dwVideoChannel;               //各报警中的意义见注释
+    DWORD   dwAlarmInChannel;             //各报警中的意义见注释
+    DWORD   dwDiskNumber;                 //各报警中的意义见注释
+    BYTE    byRemark[MAX_REMARK_LEN];     //各报警中的意义见注释
+    BYTE    byRetransFlag;                //重传标记,0-实时包,1-重传包
+    BYTE    byTimeDiffH;  //szAlarmTime,szAlarmUploadTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
+    BYTE    byTimeDiffM;  //szAlarmTime,szAlarmUploadTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
+    BYTE    byRes1;
+    char    szAlarmUploadTime[MAX_TIME_LEN];    //报警上传时间(设备本地时间),时间格式,YYYY-MM-DD HH:MM:SS
+    NET_EHOME_ALARM_STATUS_UNION    uStatusUnion;
+    BYTE    byRes2[16];
+}NET_EHOME_ALARM_INFO, *LPNET_EHOME_ALARM_INFO;
+
+typedef struct tagNET_EHOME_GPS_INFO
+{
+    DWORD    dwSize;
+    char    bySampleTime[MAX_TIME_LEN];      //GPS采样时间,设备本地时间,格式:YYYY-MM-DD HH:MM:SS
+    char    byDeviceID[MAX_DEVICE_ID_LEN];   //设备注册ID
+    char    byDivision[2];                   //division[0]:'E'or'W'(东经/西经), division[1]:'N'or'S'(北纬/南纬)
+    BYTE    bySatelites;                     //卫星数量
+    BYTE    byPrecision;                     //精度因子,原始值*100
+    DWORD    dwLongitude;                     //经度,取值范围为(0~180*3600*100),转换公式为:longitude= 实际度*3600*100+实际分*60*100+实际秒*100
+    DWORD    dwLatitude;                      //纬度,取值范围为(0~90*3600*100),转换公式为:latitude = 实际度*3600*100+实际分*60*100+实际秒*100
+    DWORD    dwDirection;                     //方向,取值范围为(0~359.9*100),正北方向为0,转换公式为:direction= 实际方向*100
+    DWORD    dwSpeed;                         //速度,取值范围为(0~999.9*100000),转换公式为:speed =实际速度*100000,相当于cm/h
+    DWORD    dwHeight;                         //高度,单位:cm
+    BYTE    byRetransFlag;                     //重传标记,0-实时包,1-重传包
+    BYTE    byLocateMode;                      //定位模式(初值0),仅NMEA0183 3.00版本输出,值:0-自主定位,1- 差分,2- 估算,3- 数据无效 
+    BYTE    byTimeDiffH;  //bySampleTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
+    BYTE    byTimeDiffM;  //bySampleTimee与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
+    DWORD   dwMileage;                       //设备里程数统计,单位为米,整型,每天第一次开机或者00:00:00时清零,后续累加当天里程数上报到中心 
+    BYTE    byRes[56];
+}NET_EHOME_GPS_INFO, *LPNET_EHOME_GPS_INFO;
+
+typedef struct tagNET_EHOME_ALARMWIRELESSINFO
+{
+    BYTE     byDeviceID[MAX_DEVICE_ID_LEN];   //设备ID
+    DWORD       dwDataTraffic;    /* 已用流量,单位:MB,实际流量*100*/
+    BYTE      bySignalIntensity;  /* 信号强度,0~100*/
+    BYTE      byRes[127];
+} NET_EHOME_ALARMWIRELESSINFO, *LPNET_EHOME_ALARMWIRELESSINFO;
+
+
+typedef struct tagNET_EHOME_HEATMAP_VALUE
+{
+    DWORD dwMaxHeatMapValue;    //最大热度值
+    DWORD dwMinHeatMapValue;    //最小热度值
+    DWORD dwTimeHeatMapValue;    //平均热度值
+}NET_EHOME_HEATMAP_VALUE, *LPNET_EHOME_HEATMAP_VALUE;
+
+typedef struct tagNET_EHOME_PIXEL_ARRAY_SIZE
+{
+    DWORD dwLineValue;    //像素点行值
+    DWORD dwColumnValue;//像素点列值
+}NET_EHOME_PIXEL_ARRAY_SIZE, *LPNET_EHOME_PIXEL_ARRAY_SIZE;
+
+typedef struct tagNET_EHOME_HEATMAP_REPORT
+{
+    DWORD   dwSize;
+    char    byDeviceID[MAX_DEVICE_ID_LEN];   //设备注册ID
+    DWORD   dwVideoChannel;                     //通道号
+    char    byStartTime[MAX_TIME_LEN];       //开始时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
+    char    byStopTime[MAX_TIME_LEN];        //结束时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
+    NET_EHOME_HEATMAP_VALUE struHeatmapValue;//热度值
+    NET_EHOME_PIXEL_ARRAY_SIZE struPixelArraySize;    //热度图大小
+    char    byPixelArrayData[MAX_URL_LEN];     //热度图数据索引
+    BYTE    byRetransFlag;                     //重传标记,0-实时包,1-重传包
+    BYTE    byTimeDiffH; //byStartTime,byStopTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
+    BYTE    byTimeDiffM;  //byStartTime,byStopTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
+    BYTE    byRes[61];
+}NET_EHOME_HEATMAP_REPORT, *LPNET_EHOME_HEATMAP_REPORT;
+
+typedef struct tagNET_EHOME_HUMAN_FEATURE
+{
+    BYTE byAgeGroup;    //年龄属性,1-婴幼儿,2-儿童,3-少年,4-青少年,5-青年,6-壮年,7-中年,8-中老年,9-老年
+    BYTE bySex;            //性别属性,1-男,2-女
+    BYTE byEyeGlass;    //是否戴眼睛,1-不戴,2-戴
+    BYTE byRes[13];
+}NET_EHOME_HUMAN_FEATURE, *LPNET_EHOME_HUMAN_FEATURE;
+
+typedef struct tagNET_EHOME_FACESNAP_REPORT
+{
+    DWORD   dwSize;
+    char    byDeviceID[MAX_DEVICE_ID_LEN];   //设备注册ID
+    DWORD   dwVideoChannel;                     //通道号
+    char    byAlarmTime[MAX_TIME_LEN];       //报警时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
+    DWORD   dwFacePicID;                     //人脸图ID
+    DWORD   dwFaceScore;                     //人脸评分,0-100
+    DWORD   dwTargetID;                         //目标ID
+    NET_EHOME_ZONE    struTarketZone;             //目标区域,归一化坐标:数值为当前画面的百分比大小*1000,精度为小数点后三位
+    NET_EHOME_ZONE  struFacePicZone;         //人脸子图区域,归一化坐标:数值为当前画面的百分比大小*1000,精度为小数点后三位
+    NET_EHOME_HUMAN_FEATURE struHumanFeature;//人属性
+    DWORD    dwStayDuration;                     //停留画面中时间
+    DWORD    dwFacePicLen;                     //人脸图长度,单位:字节
+    char    byFacePicUrl[MAX_URL_LEN];         //人脸子图数据索引
+    DWORD    dwBackgroudPicLen;                     //背景图片长度,单位:字节
+    char    byBackgroudPicUrl[MAX_URL_LEN];         //背景图片数据索引
+    BYTE    byRetransFlag;                     //重传标记,0-实时包,1-重传包
+    BYTE    byTimeDiffH;  //byAlamTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
+    BYTE    byTimeDiffM;  //byAlamTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
+    BYTE    byRes[61];
+}NET_EHOME_FACESNAP_REPORT, *LPNET_EHOME_FACESNAP_REPORT;
+
+typedef struct tagNET_EHOME_CID_PARAM
+{
+    DWORD dwUserType;    //用户类型,1键盘用户 2网络用户,其他值表示无效
+    LONG  lUserNo;        //用户类型,-1表示无效
+    LONG  lZoneNo;        //防区号,-1表示无效
+    LONG  lKeyboardNo;    //键盘号,
+    LONG  lVideoChanNo;    //视频通道号
+    LONG  lDiskNo;        //硬盘号
+    LONG  lModuleAddr;    //模块地址
+    char  byUserName[NAME_LEN];    //用户名
+    BYTE  byRes[32];
+}NET_EHOME_CID_PARAM, *LPNET_EHOME_CID_PARAM;
+
+typedef struct tagNET_EHOME_CID_INFO
+{
+    DWORD   dwSize;
+    char    byDeviceID[MAX_DEVICE_ID_LEN];		//设备注册ID
+    DWORD   dwCIDCode;							//CID报告代码
+    DWORD   dwCIDType;							//CID报警类型
+    DWORD   dwSubSysNo;                         //产生报告的子系统号,0为全局报告,子系统范围0~32
+    char    byCIDDescribe[CID_DES_LEN];         //CID报警描述
+    char    byTriggerTime[MAX_TIME_LEN];		//CID报警发生时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
+    char    byUploadTime[MAX_TIME_LEN];         //CID报告上传时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
+    NET_EHOME_CID_PARAM struCIDParam;			//CID报警参数
+	BYTE 	byTimeDiffH;						//byTriggerTime,byUploadTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
+	BYTE 	byTimeDiffM;						//byTriggerTime,byUploadTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
+    BYTE    byExtend;   //是否有扩展字段
+    BYTE    byRes1[5];
+    void*   pCidInfoEx; //byExtend为1是有效,指向NET_EHOME_CID_INFO_INTERNAL_EX结构体
+    BYTE    byRes[52];
+}NET_EHOME_CID_INFO, *LPNET_EHOME_CID_INFO;
+
+typedef struct tagNET_EHOME_CID_INFO_INTERNAL_EX
+{
+    BYTE  byRecheck;    //是否是视频复核报警 1-复核报警,0-普通报警 
+    BYTE  byRes[3];
+    char  byUUID[MAX_UUID_LEN];    //报警唯一ID,区分是否属于同一个报警;不支持视频复核报警时,该字段为0;
+    char  byVideoURL[MAX_URL_LEN]; // byRecheck为1时有效,视频复核报警中视频的URL地址,用于从存储服务器获取视频;(复核报警第二次上报该URL)
+    char  byCIDDescribeEx[CID_DES_LEN_EX];         //CID报警描述扩展
+    BYTE  byRes1[256];
+}NET_EHOME_CID_INFO_INTERNAL_EX, *LPNET_EHOME_CID_INFO_INTERNAL_EX;
+
+typedef struct tagNET_EHOME_NOTICE_PICURL
+{
+    DWORD   dwSize;
+    char    byDeviceID[MAX_DEVICE_ID_LEN];   //设备注册ID
+    WORD    wPicType;    //图片业务类型,0-PU定时抓图上传中心,1-PU报警抓图上传中心(AlarmType、AlarmChan、AlarmTime 三个节点在PicType为时才有效) ,2-CU手动抓图上传中心,
+    //3-CU下载图片,4-外部触发PU抓图上传中心(比如DVR通过串口接收到POS机刷卡触发抓图请求)
+    WORD    wAlarmType;					//报警类型,6-报警输入,7-视频遮挡,8-移动侦测,11-PIR报警,12-门磁报警,13-呼救报警    
+    DWORD   dwAlarmChan;				//报警通道编号
+    char    byAlarmTime[MAX_TIME_LEN];  //报警产生时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
+    DWORD   dwCaptureChan;				//图片抓拍通道编号
+    char    byPicTime[MAX_TIME_LEN];    //图片时间(设备本地时间),格式:YYYY-MM-DD HH:MM:SS
+    char    byPicUrl[MAX_URL_LEN];      //图片数据索引
+    DWORD   dwManualSnapSeq;			//请求流水号(字节整数),PicType值为2、3时有效
+    BYTE    byRetransFlag;              //重传标记,0-实时包,-重传包
+	BYTE 	byTimeDiffH;				//byAlarmTime,byPicTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
+	BYTE 	byTimeDiffM;				//byAlarmTime,byPicTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
+    BYTE    byRes[29];
+}NET_EHOME_NOTICE_PICURL, *LPNET_EHOME_NOTICE_PICURL;
+
+typedef struct tagNET_EHOME_NOTIFY_FAIL_INFO
+{
+    DWORD dwSize;
+    char  byDeviceID[MAX_DEVICE_ID_LEN];	//设备注册ID
+    WORD  wFailedCommand;					//失败的命令,1-抓图失败
+    WORD  wPicType;							//图片业务类型,失败命令为抓图失败时有效,0-PU定时抓图上传中心,1-PU报警抓图上传中心,2-CU手动抓图上传中心,
+    //3-CU下载图片,4-外部触发PU抓图上传中心    
+    DWORD    dwManualSnapSeq;				//请求流水号(字节整数),PicType值为2、3时有效
+    BYTE    byRetransFlag;                  //重传标记,0-实时包,1-重传包    
+    BYTE    byRes[31];
+}NET_EHOME_NOTIFY_FAIL_INFO, *LPNET_EHOME_NOTIFY_FAIL_INFO;
+
+typedef struct tagNET_EHOME_ALARM_MSG
+{
+    DWORD dwAlarmType;      //报警类型,见EN_ALARM_TYPE
+    void *pAlarmInfo;       //报警内容(结构体)
+    DWORD dwAlarmInfoLen;   //结构体报警内容长度
+    void *pXmlBuf;          //报警内容(XML)
+    DWORD dwXmlBufLen;      //xml报警内容长度
+    char  sSerialNumber[NET_EHOME_SERIAL_LEN]; //设备序列号,用于进行Token认证
+    void *pHttpUrl;
+    DWORD dwHttpUrlLen;
+    BYTE  byRes[12];
+}NET_EHOME_ALARM_MSG, *LPNET_EHOME_ALARM_MSG;
+
+typedef BOOL (CALLBACK *EHomeMsgCallBack)(LONG iHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, void *pUser);
+
+typedef struct tagNET_EHOME_ALARM_LISTEN_PARAM
+{
+    NET_EHOME_IPADDRESS struAddress;  //本地监听信息,IP为0.0.0.0的情况下,默认为本地地址,多个网卡的情况下,默认为从操作系统获取到的第一个
+    EHomeMsgCallBack    fnMsgCb; //报警信息回调函数
+    void * pUserData;   //用户数据
+    BYTE  byProtocolType;  //协议类型,0-TCP,1-UDP,2-MQTT
+    BYTE  byUseCmsPort; //是否复用CMS端口,0-不复用,非0-复用,如果复用cms端口,协议类型字段无效(此时本地监听信息struAddress填本地回环地址)
+    BYTE  byUseThreadPool;  //0-回调报警时,使用线程池,1-回调报警时,不使用线程池,默认情况下,报警回调的时候,使用线程池
+    BYTE  byRes[29];
+}NET_EHOME_ALARM_LISTEN_PARAM, *LPNET_EHOME_ALARM_LISTEN_PARAM;
+
+typedef struct tagNET_EHOME_ALARM_ISAPI_INFO
+{
+    char * pAlarmData;           // 报警数据
+    DWORD dwAlarmDataLen;   // 报警数据长度
+    BYTE byDataType;        // 0-invalid,1-xml,2-json
+    BYTE byPicturesNumber;  // 图片数量
+    BYTE byRes[2];
+    void * pPicPackData;         // 图片变长部分,byPicturesNumber个NET_EHOME_ALARM_ISAPI_PICDATA
+    BYTE byRes1[32];
+}NET_EHOME_ALARM_ISAPI_INFO, *LPNET_EHOME_ALARM_ISAPI_INFO;
+
+typedef struct tagNET_EHOME_ALARM_ISAPI_PICDATA
+{
+    DWORD dwPicLen;//报警图片长度
+    BYTE byRes[4];
+    char szFilename[MAX_FILE_PATH_LEN];//保存图象的文件路径(包括文件名)。 
+    BYTE *pPicData;//报警上传的图片数据指针
+}NET_EHOME_ALARM_ISAPI_PICDATA, *LPNET_EHOME_ALARM_ISAPI_PICDATA;
+
+
+/** 兼容信息发布私有协议 begin */
+
+
+#define NET_EHOME_C2S_WEATHERINFO                   0x61            //城市天气信息请求
+#define NET_EHOME_C2S_LOCAL_DEVOFFLINE              0xA00           //设备下线通知
+#define NET_EHOME_C2S_REPORT_TERMINAL_STATUS        0x1002          //终端主动上报状态
+#define NET_EHOME_C2S_PROGESS_REPORT                0xAF301         //终端进度上报
+
+/* 终端主动上报的数据结构 */
+typedef struct tagNET_EHOME_TERMINAL_REPORT_INFO
+{
+    DWORD   dwSubCmd; //标识终端上报的是什么内容
+    DWORD   dwContentLen; //终端上报的具体内容的长度
+    BYTE    byContentBuf[2048]; //终端上报的具体内容
+    BYTE    byRes[64];
+}NET_EHOME_TERMINAL_REPORT_INFO, *LPNET_EHOME_TERMINAL_REPORT_INFO;
+
+/* 终端播放状态 */
+typedef enum
+{
+    NET_EHOME_INVAILD_STATE = 0,
+    NET_EHOME_HDMI = 1, //HDMI状态
+    NET_EHOME_VGA, //VGA状态	
+    NET_EHOME_SCHEDULE_PLAY, //日程播放
+    NET_EHOME_SCHEDULE_STOP, //日程停止
+    NET_EHOME_SCREEN_OFF, //屏幕关	
+}NET_EHOME_TERMINAL_PLAY_STATE;
+
+/* 终端类型 */
+typedef enum
+{
+    NET_EHOME_INVAILD_TERMINAL_TYPE = 0,
+    NET_EHOME_ANDROID_STANDARD = 1, //安卓标准
+    NET_EHOME_ANDROID_DECODE, //安卓解码
+    NET_EHOME_ANDROID_TOUCH, //安卓触摸		
+}NET_EHOME_TERMINAL_TYPE;
+
+/* 插播状态 */
+typedef enum
+{
+    NET_EHOME_INVAILD_INSERT_TYPE = 0,
+    NET_EHOME_INSERT_END = 1, //插播结束	
+    NET_EHOME_INSERT_PUBLISH, //正在往终端发送数据包
+    NET_EHOME_INSERT_START = 3, //插播开始	
+    NET_EHOME_INSERT_FAIL, //插播失败
+}NET_EHOME_INSERT_STATE;
+
+/* 终端状态 */
+typedef struct tagNET_EHOME_TERMINAL_STATE
+{
+    NET_EHOME_TERMINAL_PLAY_STATE enumPlayState; //播放状态
+    NET_EHOME_TERMINAL_TYPE enumTerminalType; //终端类型
+    NET_EHOME_INSERT_STATE enumInsertState; //插播状态
+    BYTE bySoftVersion[32]; //终端的软件版本号
+    BYTE byLocalIP[32]; //终端的IP
+    DWORD dwTermAbnormalState; //终端是否处于温度异常关机状态,0-否,1-是
+}NET_EHOME_TERMINAL_STATE, *LPNET_EHOME_TERMINAL_STATE;
+
+//终端进度
+typedef struct tagNET_EHOME_TERMINAL_PROGRESS
+{
+    DWORD  dwTerminalId; //终端ID
+    DWORD  dwTermStatus; //终端状态,1-正常,2-异常	
+    DWORD  dwProgessType; //进度类型 1素材进度,2节目进度,3日程进度,4升级进度
+    DWORD  dwUniqueID; //日程ID或节目ID或素材ID(升级这个字段无效)	
+    BYTE   byMainProgess; //0-100正常,101进度异常,下载文件的总进度(升级只有主进度,无子进度)
+    BYTE   bySubProgess; //下载当前单个文件的进度	
+}NET_EHOME_TERMINAL_PROGRESS, *LPNET_EHOME_TERMINAL_PROGRESS;
+
+/** 兼容信息发布私有协议 end */
+
+
+//初始化,反初始化
+NET_DVR_API BOOL  CALLBACK NET_EALARM_Init();
+NET_DVR_API BOOL  CALLBACK NET_EALARM_Fini();
+
+//获取错误码
+NET_DVR_API DWORD CALLBACK NET_EALARM_GetLastError();
+
+//日志
+NET_DVR_API BOOL CALLBACK NET_EALARM_SetLogToFile(LONG iLogLevel, const char *strLogDir, BOOL bAutoDel);
+
+//获取版本号
+NET_DVR_API DWORD CALLBACK NET_EALARM_GetBuildVersion();
+
+NET_DVR_API LONG CALLBACK NET_EALARM_StartListen(NET_EHOME_ALARM_LISTEN_PARAM *pAlarmListenParam);
+
+NET_DVR_API BOOL CALLBACK NET_EALARM_StopListen(LONG iListenHandle);
+
+
+NET_DVR_API BOOL  CALLBACK NET_EALARM_SetSDKLocalCfg(  NET_EHOME_LOCAL_CFG_TYPE enumType, void* const lpInBuff);
+NET_DVR_API BOOL  CALLBACK NET_EALARM_GetSDKLocalCfg(NET_EHOME_LOCAL_CFG_TYPE enumType,void *lpOutBuff);
+
+//设置设备SessionKey信息
+NET_DVR_API BOOL  CALLBACK NET_EALARM_SetDeviceSessionKey(NET_EHOME_DEV_SESSIONKEY* pDeviceKey);
+//获取设备EhomeKey信息
+NET_DVR_API BOOL  CALLBACK NET_EALARM_GetDeviceSessionKey(NET_EHOME_DEV_SESSIONKEY* pDeviceKey);
+
+#endif //_HC_EHOME_ALARM_H_

+ 2435 - 0
hc/incCn/HCEHomeCMS.h

@@ -0,0 +1,2435 @@
+#ifndef _HC_EHOME_CMS_H_
+#define _HC_EHOME_CMS_H_
+
+#include "HCEHomePublic.h"
+
+#define EHOME_PROTOCOL_LEN  300*1024 /*300KB*/
+
+//初始化,反初始化
+NET_DVR_API BOOL  CALLBACK NET_ECMS_Init();
+NET_DVR_API BOOL  CALLBACK NET_ECMS_Fini();
+
+//获取错误码
+NET_DVR_API DWORD CALLBACK NET_ECMS_GetLastError();
+
+//获取版本号
+NET_DVR_API DWORD CALLBACK NET_ECMS_GetBuildVersion();
+
+//开启关闭监听
+typedef enum tagNET_EHOME_REGISTER_TYPE{
+    ENUM_UNKNOWN = -1,   
+    ENUM_DEV_ON = 0,             //设备上线回调
+    ENUM_DEV_OFF,                //设备下线回调
+    ENUM_DEV_ADDRESS_CHANGED,    //设备地址发生变化
+    ENUM_DEV_AUTH,       //Ehome5.0设备认证回调
+    ENUM_DEV_SESSIONKEY, //Ehome5.0设备Sessionkey回调
+    ENUM_DEV_DAS_REQ     //Ehome5.0设备重定向请求回调
+}NET_EHOME_REGISTER_TYPE;
+
+//语音对讲编码类型
+typedef enum tagNET_EHOME_TALK_ENCODING_TYPE{
+    ENUM_ENCODING_START = 0,            //编码类型开始
+    ENUM_ENCODING_G722_1,               //G722_1
+    ENUM_ENCODING_G711_MU,              //G711_MU
+    ENUM_ENCODING_G711_A,               //G711_A
+    ENUM_ENCODING_G723,                 //G723
+    ENUM_ENCODING_MP1L2,                //MP1L2
+    ENUM_ENCODING_MP2L2,                //MP2L2
+    ENUM_ENCODING_G726,                 //G726
+    ENUM_ENCODING_AAC,                  //AAC
+    ENUM_ENCODING_RAW = 100             //RAW
+}NET_EHOME_TALK_ENCODING_TYPE;
+
+typedef BOOL (CALLBACK * DEVICE_REGISTER_CB)(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dwOutLen, 
+                                                 void *pInBuffer, DWORD dwInLen, void *pUser);
+
+typedef struct tagNET_EHOME_CMS_LISTEN_PARAM
+{
+    NET_EHOME_IPADDRESS struAddress;  //本地监听信息,IP为0.0.0.0的情况下,默认为本地地址,多个网卡的情况下,默认为从操作系统获取到的第一个
+    DEVICE_REGISTER_CB  fnCB; //报警信息回调函数
+    void * pUserData;   //用户数据
+    BYTE  byRes[32]; 
+}NET_EHOME_CMS_LISTEN_PARAM, *LPNET_EHOME_CMS_LISTEN_PARAM;
+
+//开启关闭监听
+NET_DVR_API LONG CALLBACK NET_ECMS_StartListen(LPNET_EHOME_CMS_LISTEN_PARAM lpCMSListenPara);
+NET_DVR_API BOOL CALLBACK NET_ECMS_StopListen(LONG iHandle);
+//注销设备
+NET_DVR_API BOOL CALLBACK NET_ECMS_ForceLogout(LONG lUserID);
+NET_DVR_API BOOL CALLBACK NET_ECMS_SetLogToFile(DWORD iLogLevel, char *strLogDir, BOOL bAutoDel);
+
+#define FIRMWARE_VER_LEN 24
+#define CODE_LEN   8
+#define MAX_DEVNAME_LEN 32
+
+typedef struct tagNET_EHOME_DEV_REG_INFO
+{
+    DWORD  dwSize; 
+    DWORD  dwNetUnitType;            //根据EHomeSDK协议预留,目前没有意义
+    BYTE   byDeviceID[MAX_DEVICE_ID_LEN]; //设备ID
+    BYTE   byFirmwareVersion[24];    //固件版本
+    NET_EHOME_IPADDRESS struDevAdd;         //设备注册上来是,设备的本地地址
+    DWORD  dwDevType;                  //设备类型
+    DWORD  dwManufacture;              //设备厂家代码
+    BYTE   byPassWord[32];             //设备登陆CMS的密码,由用户自行根据需求进行验证
+    BYTE   sDeviceSerial[NET_EHOME_SERIAL_LEN/*12*/];    //设备序列号,数字序列号
+    BYTE   byReliableTransmission;
+    BYTE   byWebSocketTransmission;
+    BYTE   bySupportRedirect;    //设备支持重定向注册 0-不支持 1-支持
+    BYTE   byDevProtocolVersion[6];  //设备协议版本
+    BYTE   bySessionKey[MAX_MASTER_KEY_LEN];//Ehome5.0设备SessionKey
+    BYTE   byRes[27];
+}NET_EHOME_DEV_REG_INFO, *LPNET_EHOME_DEV_REG_INFO;
+
+typedef struct tagNET_EHOME_DEV_REG_INFO_V12
+{
+    NET_EHOME_DEV_REG_INFO struRegInfo;
+    NET_EHOME_IPADDRESS struRegAddr;         //设备注册的服务器地址
+    BYTE   sDevName[MAX_DEVNAME_LEN]; /*设备名称*/
+    BYTE   byRes[224];
+}NET_EHOME_DEV_REG_INFO_V12, *LPNET_EHOME_DEV_REG_INFO_V12;
+
+typedef struct tagNET_EHOME_BLACKLIST_SEVER
+{
+    NET_EHOME_IPADDRESS struAdd;          //服务器地址
+    BYTE    byServerName[NAME_LEN/*32*/];       //服务器名称
+    BYTE    byUserName[NAME_LEN/*32*/];             //用户名
+    BYTE    byPassWord[NAME_LEN/*32*/];             //密码
+    BYTE   byRes[64];
+}NET_EHOME_BLACKLIST_SEVER, *LPNET_EHOME_BLACKLIST_SEVER;
+
+typedef struct tagNET_EHOME_SERVER_INFO
+{
+    DWORD                  dwSize;
+    DWORD                  dwKeepAliveSec;            //心跳间隔(单位:秒,0:默认为15S)
+    DWORD                  dwTimeOutCount;         //心跳超时次数(0:默认为6)
+    NET_EHOME_IPADDRESS         struTCPAlarmSever;      //报警服务器地址(TCP协议)
+    NET_EHOME_IPADDRESS         struUDPAlarmSever;        //报警服务器地址(UDP协议)
+    DWORD                  dwAlarmServerType;        //报警服务器类型0-只支持UDP协议上报,1-支持UDP、TCP两种协议上报,2 - 采用MQTT协议方式上报(此时服务器地址为TCP协议服务地址)
+    NET_EHOME_IPADDRESS         struNTPSever;            //NTP服务器地址
+    DWORD                  dwNTPInterval;            //NTP校时间隔(单位:秒)
+    NET_EHOME_IPADDRESS         struPictureSever;       //图片服务器地址
+    DWORD                  dwPicServerType;        //图片服务器类型图片服务器类型,1-VRB图片服务器,0-Tomcat图片服务,2-云存储3,3-KMS,4-EHome5.0存储协议
+    NET_EHOME_BLACKLIST_SEVER   struBlackListServer;    //黑名单服务器
+    BYTE                        byRes[128];
+}NET_EHOME_SERVER_INFO, *LPNET_EHOME_SERVER_INFO;
+
+typedef struct tagNET_EHOME_SERVER_INFO_V50
+{
+    DWORD                  dwSize;
+    DWORD                  dwKeepAliveSec;            //心跳间隔(单位:秒,0:默认为15S)
+    DWORD                  dwTimeOutCount;         //心跳超时次数(0:默认为6)
+    NET_EHOME_IPADDRESS         struTCPAlarmSever;      //报警服务器地址(TCP协议)
+    NET_EHOME_IPADDRESS         struUDPAlarmSever;        //报警服务器地址(UDP协议)
+    DWORD                  dwAlarmServerType;        //报警服务器类型0-只支持UDP协议上报,1-支持UDP、TCP两种协议上报
+    NET_EHOME_IPADDRESS         struNTPSever;            //NTP服务器地址
+    DWORD                  dwNTPInterval;            //NTP校时间隔(单位:秒)
+    NET_EHOME_IPADDRESS         struPictureSever;       //图片服务器地址
+    DWORD                  dwPicServerType;        //图片服务器类型图片服务器类型,1-VRB图片服务器,0-Tomcat图片服务,2-云存储3,3-KMS
+    NET_EHOME_BLACKLIST_SEVER   struBlackListServer;    //黑名单服务器
+    NET_EHOME_IPADDRESS         struRedirectSever;       //Redirect Server
+    BYTE                   byClouldAccessKey[64];   //云存储AK
+    BYTE                   byClouldSecretKey[64];   //云存储SK
+    BYTE                   byClouldHttps;           //云存储HTTPS使能 1-HTTPS 0-HTTP
+    BYTE                        byRes[383];
+}NET_EHOME_SERVER_INFO_V50, *LPNET_EHOME_SERVER_INFO_V50;
+//-----------------------------------------------------------------------------------------------------------
+//语音对讲
+
+typedef void(CALLBACK *fVoiceDataCallBack)(LONG iVoiceHandle, char *pRecvDataBuffer, DWORD dwBufSize, DWORD dwEncodeType, BYTE byAudioFlag, void* pUser);
+
+typedef struct tagNET_EHOME_VOICETALK_PARA
+{
+    BOOL           bNeedCBNoEncData; //需要回调的语音类型:0-编码后语音,1-编码前语音(语音转发时不支持)
+    fVoiceDataCallBack  cbVoiceDataCallBack; //用于回调音频数据的回调函数
+    DWORD          dwEncodeType;    //SDK赋值,SDK的语音编码类型,0- OggVorbis,1-G711U,2-G711A,3-G726,4-AAC,5-MP2L2,6-PCM,7-MP3
+    void*          pUser;    //用户参数
+    BYTE           byVoiceTalk;    //0-语音对讲,1-语音转发
+    BYTE           byDevAudioEnc;  //输出参数,设备的音频编码方式 0- OggVorbis,1-G711U,2-G711A,3-G726,4-AAC,5-MP2L2,6-PCM,7-MP3
+    BYTE           byRes[62];//Reserved, set as 0. 0
+} NET_EHOME_VOICETALK_PARA,*LPNET_EHOME_VOICETALK_PARA;
+
+typedef struct tagNET_EHOME_VOICE_TALK_IN
+{
+    DWORD dwVoiceChan;                                          //通道号
+    NET_EHOME_IPADDRESS struStreamSever;                        //流媒体地址
+    NET_EHOME_TALK_ENCODING_TYPE  byEncodingType[9];            //语音对讲编码类型
+    BYTE  byRes[119];
+}NET_EHOME_VOICE_TALK_IN, *LPNET_EHOME_VOICE_TALK_IN;
+
+typedef struct tagNET_EHOME_VOICE_TALK_OUT
+{
+    LONG  lSessionID;
+    BYTE  byRes[128];
+}NET_EHOME_VOICE_TALK_OUT, *LPNET_EHOME_VOICE_TALK_OUT;
+
+typedef struct tagNET_EHOME_PUSHVOICE_IN
+{
+    DWORD dwSize;
+    LONG  lSessionID; 
+    BYTE  byToken[64];
+    BYTE  byRes[64];
+}NET_EHOME_PUSHVOICE_IN, *LPNET_EHOME_PUSHVOICE_IN;
+
+typedef struct tagNET_EHOME_PUSHVOICE_OUT
+{
+    DWORD dwSize;
+    BYTE  byRes[128];
+}NET_EHOME_PUSHVOICE_OUT, *LPNET_EHOME_PUSHVOICE_OUT;
+
+
+NET_DVR_API LONG CALLBACK  NET_ECMS_StartVoiceTalk(LONG lUserID, DWORD dwVoiceChan, 
+                                                   const NET_EHOME_VOICETALK_PARA    *pVoiceTalkPara);
+
+NET_DVR_API BOOL CALLBACK   NET_ECMS_StartVoiceWithStmServer(LONG lUserID, NET_EHOME_VOICE_TALK_IN *lpVoiceTalkIn, NET_EHOME_VOICE_TALK_OUT *lpVoiceTalkOut);
+NET_DVR_API BOOL CALLBACK   NET_ECMS_StartPushVoiceStream(LONG lUserID, LPNET_EHOME_PUSHVOICE_IN lpPushParamIn, LPNET_EHOME_PUSHVOICE_OUT lpPushParamOut);
+NET_DVR_API BOOL CALLBACK   NET_ECMS_StopVoiceTalk(LONG iVoiceHandle);
+NET_DVR_API BOOL CALLBACK   NET_ECMS_StopVoiceTalkWithStmServer(LONG lUserID, LONG lSessionID);
+NET_DVR_API BOOL CALLBACK   NET_ECMS_SendVoiceTransData(LONG iVoiceHandle, const char *pSendBuf, DWORD dwBufSize);
+
+bool NET_EHOME_ClientAudioStart(fVoiceDataCallBack cbVoiceDataCallBack, void *pUser);
+//---------------------------------------------------------------------------------------------------------
+
+typedef    struct    tagNET_EHOME_CONFIG
+{
+    void*        pCondBuf;    //[in],条件数据指针,如表示通道号等
+    DWORD        dwCondSize; //[in],pCondBuf指向的数据大小
+    void*        pInBuf;        //[in],设置时需要用到,指向结构体的指针
+    DWORD        dwInSize;    //[in], pInBuf指向的数据大小
+    void*        pOutBuf;        //[out],获取时需要用到,指向结构体的指针,内存由上层分配
+    DWORD        dwOutSize;    //[in],获取时需要用到,表示pOutBuf指向的内存大小, 
+    BYTE         byRes[40];    //保留
+}NET_EHOME_CONFIG, *LPNET_EHOME_CONFIG;
+
+typedef struct tagNET_EHOME_XML_CFG 
+{
+    void*      pCmdBuf;    //字符串格式命令
+    DWORD      dwCmdLen;   //pCmdBuf长度
+    void*      pInBuf;     //输入数据
+    DWORD      dwInSize;   //输入数据长度
+    void*      pOutBuf;    //输出缓冲
+    DWORD      dwOutSize;  //输出缓冲区长度
+    DWORD      dwSendTimeOut;  //数据发送超时时间,单位ms,默认5s
+    DWORD      dwRecvTimeOut;  //数据接收超时时间,单位ms,默认5s
+    void*      pStatusBuf;     //返回的状态参数(XML格式),如果不需要,可以置NULL
+    DWORD      dwStatusSize;   //状态缓冲区大小(内存大小)
+    BYTE       byRes[24];
+}NET_EHOME_XML_CFG, *LPNET_EHOME_XML_CFG;
+
+#define    MAX_SERIALNO_LEN        128    //序列号最大长度
+#define    MAX_PHOMENUM_LEN        32    //手机号码最大长度
+#define    MAX_DEVICE_NAME_LEN     32//设备名称长度
+
+typedef struct tagNET_DVR_DVR_TYPE_NAME
+{
+    DWORD dwDVRType;
+    char byDevName[24];  
+}NET_DVR_TYPE_NAME;
+
+static const NET_DVR_TYPE_NAME DVRTypeName[] = 
+{
+    {0,"UNKNOWN TYPE"},      /*对尚未定义的dvr类型返回NETRET_DVR*/
+    {1,"DVR"},                    /*DVR*/    
+    {2,"ATMDVR"},                /*atm dvr*/
+    {3,"DVS"},                /*DVS*/
+    {4,"DEC"},                /* 6001D */
+    {5,"ENC_DEC"},                /* 6001F */
+    {6,"DVR_HC"},                /*8000HC*/
+    {7,"DVR_HT"},                /*8000HT*/
+    {8,"DVR_HF"},                /*8000HF*/
+    {9,"DVR_HS"},                /* 8000HS DVR(no audio) */
+    {10,"DVR_HTS"},              /* 8016HTS DVR(no audio) */
+    {11,"DVR_HB"},              /* HB DVR(SATA HD) */
+    {12,"DVR_HCS"},              /* 8000HCS DVR */
+    {13,"DVS_A"},              /* 带ATA硬盘的DVS */
+    {14,"DVR_HC_S"},              /* 8000HC-S */
+    {15,"DVR_HT_S"},              /* 8000HT-S */
+    {16,"DVR_HF_S"},              /* 8000HF-S */
+    {17,"DVR_HS_S"},              /* 8000HS-S */
+    {18,"ATMDVR_S"},              /* ATM-S */
+    {19,"DVR_7000H"},                /*7000H系列*/
+    {20,"DEC_MAT"},              /*多路解码器*/
+    {21,"DVR_MOBILE"},                /* mobile DVR */                 
+    {22,"DVR_HD_S"},              /* 8000HD-S */
+    {23,"DVR_HD_SL"},                /* 8000HD-SL */
+    {24,"DVR_HC_SL"},                /* 8000HC-SL */
+    {25,"DVR_HS_ST"},                /* 8000HS_ST */
+    {26,"DVS_HW"},              /* 6000HW */
+    {27,"DS630X_D"},             /* 多路解码器 */
+    {28,"DS640X_HD"},                /*640X高清解码器*/
+    {29,"DS610X_D"},              /*610X解码器*/
+    {30,"IPCAM"},                /*IP 摄像机*/
+    {31,"MEGA_IPCAM"},                /*高清IP摄像机 852F&852MF*/
+    {32,"IPCAM_862MF"},                /*862MF可以接入9000设备*/
+    {35,"ITCCAM"},                /*智能高清网络摄像机*/
+    {36,"IVS_IPCAM"},          /*智能分析高清网络摄像机*/
+    {38,"ZOOMCAM"},            /*一体机*/
+    {40,"IPDOME"},              /*IP 标清球机*/
+    {41,"IPDOME_MEGA200"},              /*IP 200万高清球机*/
+    {42,"IPDOME_MEGA130"},              /*IP 130万高清球机*/
+    {43,"IPDOME_AI"},              /*IP 高清智能快球*/ 
+    {44,"TII_IPCAM"},          /*红外热成像摄像机*/
+    {50,"IPMOD"},                /*IP 模块*/
+    {59,"DS64XXHD_T"},                //64-T高清解码器
+    {60,"IDS6501_HF_P"},    // 6501 车牌
+    {61,"IDS6101_HF_A"},              //智能ATM
+    {62,"IDS6002_HF_B"},          //双机跟踪:DS6002-HF/B
+    {63,"IDS6101_HF_B"},          //行为分析:DS6101-HF/B
+    {64,"IDS52XX"},          //智能分析仪IVMS
+    {65,"IDS90XX"},                // 9000智能
+    {67,"IDS8104_AHL_S_H"},              // 海康人脸识别 ATM
+    {68,"IDS91XX"},                // 9100智能
+    {69,"IIP_CAM_B"},  //智能行为IP摄像机
+    {70,"IIP_CAM_F"},  //智能人脸IP摄像机
+    {71,"DS71XX_H"},                /* DS71XXH_S */
+    {72,"DS72XX_H_S"},                /* DS72XXH_S */
+    {73,"DS73XX_H_S"},                /* DS73XXH_S */
+    {74,"DS72XX_HF_S"},              //DS72XX_HF_S
+    {75,"DS73XX_HFI_S"},              //DS73XX_HFI_S
+    {75,"DS73XX_HF_S"},              //DS73XX_HF_S
+    {76,"DS76XX_H_S"},                /* DVR,e.g. DS7604_HI_S */
+    {77,"DS76XX_N_S"},                /* NVR,e.g. DS7604_NI_S */
+    {81,"DS81XX_HS_S"},                /* DS81XX_HS_S */
+    {82,"DS81XX_HL_S"},                /* DS81XX_HL_S */
+    {83,"DS81XX_HC_S"},                /* DS81XX_HC_S */
+    {84,"DS81XX_HD_S"},                /* DS81XX_HD_S */
+    {85,"DS81XX_HE_S"},                /* DS81XX_HE_S */
+    {86,"DS81XX_HF_S"},                /* DS81XX_HF_S */
+    {87,"DS81XX_AH_S"},                /* DS81XX_AH_S */
+    {88,"DS81XX_AHF_S"},                /* DS81XX_AHF_S */
+    {90,"DS90XX_HF_S"},              /*DS90XX_HF_S*/
+    {91,"DS91XX_HF_S"},              /*DS91XX_HF_S*/
+    {92,"DS91XX_HD_S"},              /*91XXHD-S(MD)*/
+    {93,"IDS90XX_A"},                // 9000智能 ATM
+    {94,"IDS91XX_A"},                // 9100智能 ATM
+    {95,"DS95XX_N_S"},              /*DS95XX_N_S NVR 不带任何输出*/
+    {96,"DS96XX_N_SH"},              /*DS96XX_N_SH NVR*/
+    {97,"DS90XX_HF_SH"},              /*DS90XX_HF_SH */   
+    {98,"DS91XX_HF_SH"},              /*DS91XX_HF_SH */
+    {100,"DS_B10_XY"},             /*视频综合平台设备型号(X:编码板片数,Y:解码板片数)*/
+    {101,"DS_6504HF_B10"},             /*视频综合平台内部编码器*/
+    {102,"DS_6504D_B10"},             /*视频综合平台内部解码器*/
+    {103,"DS_1832_B10"},             /*视频综合平台内部码分器*/
+    {104,"DS_6401HFH_B10"},             /*视频综合平台内部光纤板*/
+    {105,"DS_65XXHC"},                //65XXHC DVS
+    {106,"DS_65XXHC_S"},                //65XXHC-SATA DVS
+    {107,"DS_65XXHF"},                //65XXHF DVS
+    {108,"DS_65XXHF_S"},                //65XXHF-SATA DVS
+    {109,"DS_6500HF_B"},             //65 rack DVS
+    {110,"IVMS_6200_C"},            // iVMS-6200(/C)  
+    {111,"IVMS_6200_B"},             // iVMS-6200(/B)
+    {112,"DS_72XXHV_ST"},                //72XXHV_ST15 DVR
+    {113,"DS_72XXHV_ST"},                //72XXHV_ST20 DVR,这两个设备显示一个名字
+    {114,"IVMS_6200_T"},             // IVMS-6200(/T)
+    {115,"IVMS_6200_BP"},             // IVMS-6200(/BP)
+    {116,"DS_81XXHC_ST"},                //DS_81XXHC_ST
+    {117,"DS_81XXHS_ST"},                //DS_81XXHS_ST
+    {118,"DS_81XXAH_ST"},                //DS_81XXAH_ST
+    {119,"DS_81XXAHF_ST"},                //DS_81XXAHF_ST
+    {120,"DS_66XXDVS"},                //66XX DVS
+    {121,"DS_1964_B10"},             /*视频综合平台内部报警器*/
+    {122,"DS_B10N04_IN"},             /*视频综合平台内部级联输入*/
+    {123,"DS_B10N04_OUT"},             /*视频综合平台内部级联输出*/
+    {124,"DS_B10N04_INTEL"},             /*视频综合平台内部智能*/
+    {125,"DS_6408HFH_B10E_RM"},             //V6高清
+    {126,"DS_B10N64F1_RTM"},             //V6级联不带DSP
+    {127,"DS_B10N64F1D_RTM"},             //V6级联带DSP
+    {128,"DS_B10_SDS"},             //视频综合平台子域控制器
+    {129,"DS_B10_DS"},             //视频综合平台域控制器
+    {130,"DS_6401HFH_B10V"},             //VGA高清编码器
+    {131,"DS_6504D_B10B"},             /*视频综合平台内部标清解码器*/
+    {132,"DS_6504D_B10H"},             /*视频综合平台内部高清解码器*/
+    {133,"DS_6504D_B10V"},             /*视频综合平台内部VGA解码器*/
+    {134,"DS_6408HFH_B10S"},             //视频综合平台SDI子板 
+    {135,"DS_18XX_N"},             /* 矩阵接入网关*/ 
+    //注:121~140预留给视频综合平台系列产品使用,141~160留给码分设备和报警设备类用
+    {141,"DS_18XX_PTZ"},                /*网络码分类产品*/
+    {142,"DS_19AXX"},                /*通用报警主机类产品*/
+    {143,"DS_19BXX"},                /*家用报警主机*/
+    {144,"DS_19CXX"},                /*自助银行报警主机*/
+    {145,"DS_19DXX"},                /*动环监控报警主机*/    
+    {146,"DS_19XX"},             /*1900系列报警主机*/ 
+    {147,"DS_19SXX"},                /*视频报警主机*/
+    {148, "DS_1HXX"},            /*CS类产品*/ //防护舱
+    /**********************设备类型 end***********************/
+    //2011-11-03 161~170分配给大屏设备使用
+    {161,"DS_C10H"},           /*多屏控制器*/
+    {162,"DS_C10N_BI"},            //BNC处理器
+    {163,"DS_C10N_DI"},            //rbg处理器
+    {164,"DS_C10N_SI"},            //码流处理器
+    {165,"DS_C10N_DO"},            //显示处理器
+    {166,"DS_C10N_SERVER"},        //分布式服务器
+    // 171- 180  划给智能使用
+    {171,"IDS_8104_AHFL_S_H"},             // 8104ATM 
+    {172,"IDS_65XX_HF_A"},             // 65 ATM
+    {173,"IDS90XX_HF_RH"},             // 9000 智能RH
+    {174,"IDS91XX_HF_RH"},             // 9100 智能RH设备
+    {175,"IDS_65XX_HF_B"},             // 65 行为分析
+    {176,"IDS_65XX_HF_P"},             // 65 车牌识别
+    {177,"IVMS_6200_F"},     // IVMS-6200(/F)
+    {178,"IVMS_6200_A"},             //iVMS-6200(/A)
+    {179,"IVMS_6200_F_S"},   //iVMS-6200(/F_S)
+    {181,"DS90XX_HF_RH"},             // 9000 RH
+    {182,"DS91XX_HF_RH"},             // 9100 RH设备
+    {183,"DS78XX_S"},             // 78系列设备
+    {185,"DS81XXHW_S"},                // 81 Resolution 960 
+    {186,"DS81XXHW_ST"},             // DS81XXHW_ST
+    {187,"DS91XXHW_ST"},             // DS91XXHW_ST
+    {188,"DS91XX_ST"},             // DS91XX_ST
+    {189,"DS81XX_ST"},             // DS81XX_ST
+    {190,"DS81XXH_ST"},             // DS81XXHDI_ST,DS81XXHE_ST ky2012
+    {191,"DS73XXH_ST"},             // DS73XXHI_ST ky2012
+    {192,"DS81XX_SH"},             // 审讯81SH,81SHF
+    {193,"DS81XX_SN"},             // 审讯81SNL
+    {194,"DS96XXN_ST"},             //NVR:DS96xxN_ST
+    {195,"DS86XXN_ST"},             //NVR:DS86xxN_ST
+    {196,"DS80XXHF_ST"},             //DVR:DS80xxHF_ST
+    {197,"DS90XXHF_ST"},             //DVR:DS90xxHF_ST
+    {198,"DS76XXN_ST"},             //NVR:DS76xxN_ST
+    {199,"DS_9664N_RX"},         //嵌入式NVR(64路IP通道,无模拟通道),最后一个X:T/H    
+    {200,"ENCODER_SERVER"},            // 编码卡服务器
+    {201,"DECODER_SERVER"},         // 解码卡服务器
+    {202,"PCNVR_SERVER"},         // PCNVR存储服务器
+    {203,"CVR_SERVER"},         // 邦诺CVR,他给自己定的类型为DVR_S-1
+    {204,"DS_91XXHFH_ST"},         // 91系列HD-SDI高清DVR
+    {205,"DS_66XXHFH"},         // 66高清编码器    
+    {210,"TRAFFIC_TS_SERVER"},         //终端服务器
+    {211,"TRAFFIC_VAR"},         //视频分析记录仪
+    {212,"IPCALL"},              //IP可视对讲分机
+
+    //2012-03-21 类型值255以后的设备不要添加至此数组中,该数组的作用是为了使扩展协议能获取类型值255以下设备的名称
+    //{2001, "DS90XXHW_ST"}        // DS90XXHW_ST混合DVR
+};
+
+
+/**********************设备大类 begin**********************/
+
+/* dvr相关 1-50 */
+#define DEV_CLASS_DVR      1          //普通dvr类型
+#define DEV_CLASS_INTERROGATION  2    //审讯机
+#define DEV_CLASS_SIMPLE_TRAIL  3    //简易庭审主机
+#define DEV_CLASS_TRAIL  4           //标准庭审主机
+#define DEV_CLASS_RECORD_PLAY  5     //录播主机
+#define DEV_CLASS_ATM 6           //ATM机
+
+/* dvs相关 51-100 */
+#define DEV_CLASS_DVS 51          //普通dvs
+
+/* nvr相关 101-150 */
+#define DEV_CLASS_NVR 101          //普通nvr
+
+/* ipc相关 151-200 */
+#define DEV_CLASS_GUN 151          //ipc枪机
+#define DEV_CLASS_BALL 152          //ipc球机
+#define DEV_CLASS_SNAP 153          //抓拍机
+#define DEV_CLASS_INTELLI_TILT 154   //智能云台
+#define DEV_CLASS_FISH_EYE 155          //鱼眼
+#define DEV_CLASS_2DP_Z 156         //大鹰眼
+#define DEV_CLASS_2DP 157   //小鹰眼
+#define DEV_CLASS_PT 158   //全景细节相机
+#define DEV_CLASS_TRI 159   //超高频固定式读卡器
+
+/* CVR相关 201 - 250*/
+#define DEV_CLASS_CVR 201          //CVR
+
+/* 传显相关 251 - 300*/
+#define DEV_CLASS_B20 251          //传显B20系列
+#define DEV_CLASS_B10 252          //传显B10系列
+#define DEV_CLASS_DECODER 253      //解码器
+#define DEV_CLASS_MATRIXMANAGEDEVICE 254      //矩阵接入网关
+#define DEV_CLASS_OTICAL 255      //光端机
+#define DEV_CLASS_CODESPITTER 256      //码分器
+#define DEV_CLASS_ALARMHOST 257      //行业报警主机
+#define DEV_CLASS_MOVING_RING 258      //动环设备
+#define DEV_CLASS_CVCS 259      //集中式多屏控制器
+#define DEV_CLASS_DVCS 260      //分布式多屏控制器
+#define DEV_CLASS_TRANSCODER 261      //转码器
+#define DEV_CLASS_LCD_SCREEN 262      //LCD屏幕
+#define DEV_CLASS_LED_SCREEN 263      //LED屏幕
+#define DEV_CLASS_MATRIX 264      //矩阵
+#define DEV_CLASS_CONFERENCE_SYSTEM 265      //视频会议设备
+#define DEV_CLASS_INFORMATION_RELEASE_EQUIPMENT  266      //信息发布设备
+#define DEV_CLASS_NET_GAP 267      //网闸
+#define DEV_CLASS_MERGE 268      //合码器
+#define DEV_CLASS_REAR_PROJECTION 269      //背投显示设备
+#define DEV_CLASS_SWITCH 270      //交换机
+#define DEV_CLASS_FIBER_CONVERTER 271      //光纤收发器
+#define DEV_CLASS_SCREEN_SERVER 272      //屏幕服务器
+#define DEV_CLASS_SCE_SERVER 273      //抓屏服务器
+#define DEV_CLASS_WIRELESS_TRANS  274    //无线传输设备
+#define DEV_CLASS_Y10_SERIES      275    //Y10系列
+#define DEV_CLASS_SAFETY_MAVHINE  276    //安监一体机
+#define DEV_CLASS_IOTGATEWAY 277    //物联网关类
+/* 报警主机相关 301 - 350*/
+#define DEV_CLASS_VIDEO_ALARM_HOST 301          //视频报警主机
+#define DEV_CLASS_NET_ALARM_HOST 302          //网络报警主机
+#define DEV_CLASS_ONE_KEY_ALARM 303      //一键式报警产品
+#define DEV_CLASS_WIRELESS_ALARM_HOST 304      //无线报警主机
+#define DEV_CLASS_ALARM_MODULE 305      //报警模块
+#define DEV_CLASS_HOME_ALARM_HOST 306      //家用报警主机
+
+/* 门禁相关 351 - 400*/
+#define DEV_CLASS_ACCESS_CONTROL 351          //门禁产品
+
+/* 可视对讲 401 - 450*/
+#define DEV_CLASS_VIDEO_INTERCOM 401          //可视对讲
+
+/* 无人机 451 - 500*/
+#define DEV_CLASS_UMMANNED_AERIAL_VEHICLE 451          //无人机产品
+
+/* 移动产品: 501-550*/
+#define DEV_CLASS_MOBILE 501          //移动产品
+
+/* 移动车载设备: 551-600*/
+#define DEV_CLASS_MOBILE_VEHICLE 551          //移动车载设备
+
+//智能分析仪:601-650
+#define DEV_CLASS_INTELLIGENT_ANALYZER 601  //智能分析仪
+
+//智能交通服务器:651-700
+#define DEV_CLASS_INTELLIGENT_TRAFFIC_SERVER 651  //智能交通服务器
+#define DS_TP2200_EC                         652  //经济型机柜监测仪
+
+/* nvs相关 701-750 */
+#define DEV_CLASS_NVS 701          //普通nvs
+
+/*有源RFID系列 751-800*/
+#define DS_TRI21A_1_P 751   //有源RFID读取器
+
+/* 数据中心设备801-850 */
+#define DS_CLASS_FA              801 //脸谱单机
+#define DS_CLASS_PURE            802 //脸谱纯分析
+#define DS_CLASS_FS              803 //人脸静态数据服务器
+#define DS_CLASS_FD              804 //抓拍检测服务器
+#define DS_CLASS_HAWK            805 //猎鹰服务器
+#define DS_CLASS_BLADE           806 //刀锋
+#define DS_CLASS_HMCP            807 //模型对比服务器
+
+/* 智能锁相关 851 - 900*/
+#define DEV_CLASS_SMART_LOCK     851  //智能锁盒子
+
+/* 雷达相关 901 - 950*/
+#define DEV_CLASS_RADAR          901  //雷达产品
+
+/*全景细节相机: 8451-8470*/
+#define iDS_PT              8451  //全景细节相机
+
+/* 其他设备类型 65534 */
+#define DEV_CLASS_DEFAULT 65534   //默认设备类型
+/**********************设备大类 end**********************/
+
+typedef struct tagNET_EHOME_DEVICE_INFO
+{
+    DWORD        dwSize;                //结构体大小
+    DWORD        dwChannelNumber;     //模拟视频通道个数
+    DWORD        dwChannelAmount;    //总视频通道数(模拟+IP)
+    DWORD        dwDevType;            //设备类型,1-DVR,3-DVS,30-IPC,40-IPDOME,其他值参考海康NetSdk设备类型号定义值
+    DWORD        dwDiskNumber;        //设备当前硬盘数
+    BYTE        sSerialNumber[MAX_SERIALNO_LEN];        //设备序列号
+    DWORD        dwAlarmInPortNum;    //模拟通道报警输入个数
+    DWORD        dwAlarmInAmount;    //设备总报警输入个数
+    DWORD        dwAlarmOutPortNum;    //模拟通道报警输出个数
+    DWORD        dwAlarmOutAmount;    //设备总报警输出个数
+    DWORD        dwStartChannel;        //视频起始通道号
+    DWORD        dwAudioChanNum;    //语音对讲通道个数
+    DWORD        dwMaxDigitChannelNum;    //设备支持的最大数字通道路数
+    DWORD        dwAudioEncType;        //语音对讲音频格式,0- OggVorbis,1-G711U,2-G711A,3-G726,4-AAC,5-MP2L2,6-PCM,7-MP3
+    BYTE        sSIMCardSN[MAX_SERIALNO_LEN];    //车载设备扩展:SIM卡序列号
+    BYTE        sSIMCardPhoneNum[MAX_PHOMENUM_LEN];    //车载扩展:SIM卡手机号码
+    DWORD        dwSupportZeroChan;    // SupportZeroChan:支持零通道的个数:0-不支持,1-支持1路,2-支持2路,以此类推
+    DWORD        dwStartZeroChan;        //零通道起始编号,默认10000
+    DWORD        dwSmartType;            //智能类型,0-smart,1-专业智能;默认0-smart
+    WORD        wDevClass;             //设备大类
+    BYTE        byRes[158];            //保留
+}NET_EHOME_DEVICE_INFO,*LPNET_EHOME_DEVICE_INFO;
+
+#define    MAX_VERSION_LEN            32  //版本描述长度
+typedef struct tagNET_EHOME_VERSION_INFO
+{
+    DWORD        dwSize;                //结构体大小
+    BYTE        sSoftwareVersion[MAX_VERSION_LEN];    //主控版本
+    BYTE        sDSPSoftwareVersion[MAX_VERSION_LEN];//编码版本
+    BYTE        sPanelVersion[MAX_VERSION_LEN];    //面板版本
+    BYTE        sHardwareVersion[MAX_VERSION_LEN];    //硬件版本
+    BYTE        byRes[124];
+}NET_EHOME_VERSION_INFO,*LPNET_EHOME_VERSION_INFO;
+
+typedef struct tagNET_EHOME_DEVICE_CFG
+{
+    DWORD        dwSize;                //结构体大小
+    BYTE        sServerName[MAX_DEVICE_NAME_LEN];    //设备名称
+    DWORD        dwServerID;            //设备号(遥控器编号:0~255)
+    DWORD        dwRecycleRecord;        //是否循环录像,0代表不循环,1代表循环
+    DWORD        dwServerType;        //设备类型,同DevType,由于公司设备型号有几百个,本协议中只使用通用型号:1-DVR,3-DVS,30-IPC,40-IPDOME
+    DWORD        dwChannelNum;        //通道个数,包括模拟+IP通道(只读)
+    DWORD        dwHardDiskNum;        //硬盘个数(只读)
+    DWORD        dwAlarmInNum;        //报警输入个数(模拟通道)(只读)
+    DWORD        dwAlarmOutNum;        //报警输出个数(模拟通道)(只读)
+    DWORD        dwRS232Num;        //232串口个数(只读)
+    DWORD        dwRS485Num;        //485串口个数(只读)
+    DWORD        dwNetworkPortNum;    //网络口个数(只读)
+    DWORD        dwAuxoutNum;        //辅口个数(只读)
+    DWORD        dwAudioNum;        //语音口个数(只读)
+    BYTE        sSerialNumber[MAX_SERIALNO_LEN];    //设备序列号(只读)
+    DWORD        dwMajorScale;        //主口缩放:0代表不缩放;1代表缩放
+    DWORD        dwMinorScale;        //辅口缩放:0代表不缩放;1代表缩放
+    BYTE        byRes[292];            //保留
+}NET_EHOME_DEVICE_CFG,*LPNET_EHOME_DEVICE_CFG;
+
+#define    NET_EHOME_GET_DEVICE_INFO        1    //获取设备信息
+#define    NET_EHOME_GET_VERSION_INFO        2    //获取版本信息
+#define    NET_EHOME_GET_DEVICE_CFG        3    //获取设备基本参数
+#define    NET_EHOME_SET_DEVICE_CFG        4    //设置设备基本参数
+
+#define NET_EHOME_GET_GPS_CFG 20 //获取GPS参数
+#define NET_EHOME_SET_GPS_CFG 21 //设置GPS参数
+#define NET_EHOME_GET_PIC_CFG 22 //获取OSD显示参数
+#define NET_EHOME_SET_PIC_CFG 23 //设置OSD显示参数
+#define NET_EHOME_GET_WIRELESSINFO_CFG 24 //获取无线网络信息参数
+#define NET_EHOME_SET_WIRELESSINFO_CFG 25 //设置无线网络信息参数
+
+#define MAX_EHOME_PROTOCOL_LEN  1500
+
+typedef struct tagNET_EHOME_REMOTE_CTRL_PARAM
+{
+    DWORD dwSize;
+    void *lpCondBuffer;        //条件参数缓冲区
+    DWORD  dwCondBufferSize;    //条件参数缓冲区长度
+    void *lpInbuffer;          //控制参数缓冲区
+    DWORD  dwInBufferSize;      //控制参数缓冲区长度
+    BYTE   byRes[32];
+}NET_EHOME_REMOTE_CTRL_PARAM, *LPNET_EHOME_REMOTE_CTRL_PARAM;
+
+//GPS参数
+typedef struct tagNET_EHOME_GPS_CFG
+{
+    DWORD        dwSize;
+    DWORD        dwTransInterval;    //GPS上传时间,单位:秒
+    DWORD        dwMaxSpeed;        //超速限速值,单位:厘米/小时
+    DWORD        dwMinSpeed;        //低速限速值,单位:厘米/小时
+    BYTE         bEnable;           //使能,1-不启用,2-启用
+    BYTE            byRes[63];                //保留
+}NET_EHOME_GPS_CFG, *LPNET_EHOME_GPS_CFG;
+
+//OSD显示参数
+typedef struct tagNET_EHOME_PIC_CFG
+{
+    DWORD        dwSize;
+    BYTE            byChannelName[NAME_LEN];        //通道名称(GB2312编码, V30以后版本使用UTF-8编码),长度不超过31字节
+    BOOL            bIsShowChanName;                            //是否显示通道名称:0:不显示;1:显示
+    WORD            wChanNameXPos;                            //通道名称显示X坐标,按照704x576来配置
+    WORD            wChanNameYPos;                            //通道名称显示Y坐标,按照704x576来配置,坐标值为16的倍数
+    BOOL            bIsShowOSD;                                    //是否显示OSD:0:不显示;1:显示
+    WORD            wOSDXPos;                                        //OSD显示X坐标
+    WORD            wOSDYPos;                                        //OSD显示Y坐标
+    BYTE            byOSDType;                                        /**OSD类型 0:XXXX-XX-XX(年月日) 1:XX-XX-XXXX(月日年) 2:XXXX年XX月XX日
+                                                                    3:XX月XX日XXXX年 4:XX-XX-XXXX(日月年) 5:XX日XX月XXXX年
+                                                                    */
+    BYTE            byOSDAtrib;                                    //OSD属性 0:不显示OSD 1:透明,闪烁 2:透明,不闪烁 3:闪烁,不透明 4:不透明,不闪烁
+    BYTE            byRes1[2];                                            //保留1
+    BOOL            bIsShowWeek;                                    //是否显示星期:0:不显示;1:显示
+    BYTE            byRes2[64];                                        //保留2
+}NET_EHOME_PIC_CFG, *LPNET_EHOME_PIC_CFG;
+
+typedef struct tagNET_EHOME_WIRELESS_INFO_CFG
+{
+    DWORD        dwSize;
+    DWORD        dwInfoTransInterval;   //上传间隔,单位:秒
+    BYTE         byEnable; //使能,0-不启用 1-启用
+    BYTE         byRes[47];
+}NET_EHOME_WIRELESS_INFO_CFG, *LPNET_EHOME_WIRELESS_INFO_CFG;
+
+typedef struct tagNET_CMS_ISAPI_CONFIG
+{
+    DWORD    dwSize;
+    void     *lpRequestUrl;
+    DWORD    dwRequestUrlLen;
+    void     *lpInBuffer;
+    DWORD    dwInBufferSize;
+    void     *lpOutBuffer;
+    DWORD    dwOutBufferSize;
+    DWORD    dwReturnedSize;
+    DWORD    dwRecvTimeOut;
+    BYTE     byRes[32];
+}NET_CMS_ISAPI_CONFIG, *LPNET_CMS_ISAPI_CONFIG;
+
+#define STREAM_KEY_LEN 32
+typedef struct tagNET_EHOME_STREAM_PASSWORD
+{
+    BYTE byEnable;                  // 加密操作,0- 不启用,1- 启用, 2- 修改密码
+    BYTE byRes1[3];
+    BYTE byNewKey[STREAM_KEY_LEN];                  // 密码;
+    BYTE byOldKey[STREAM_KEY_LEN];      //原密码
+    BYTE  byRes[12];
+}NET_EHOME_STREAM_PASSWORD, *LPNET_EHOME_STREAM_PASSWORD;
+
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_GetDevConfig(LONG lUserID, DWORD dwCommand, LPNET_EHOME_CONFIG lpConfig, DWORD dwConfigSize);
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_SetDevConfig(LONG lUserID, DWORD dwCommand, LPNET_EHOME_CONFIG lpConfig, DWORD dwConfigSize);
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_XMLConfig(LONG lUserID, LPNET_EHOME_XML_CFG pXmlCfg, DWORD dwConfigSize);
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_RemoteControl(LONG lUserID, DWORD dwCommand, LPNET_EHOME_REMOTE_CTRL_PARAM lpCtrlParam);
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_ISAPI_Config(LONG lUserID, NET_CMS_ISAPI_CONFIG *lpParam);
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_CheckStreamEncrypt(LONG lUserID, const char* pStreamEncrypt);
+
+//设置设备SessionKey信息
+NET_DVR_API BOOL  CALLBACK NET_ECMS_SetDeviceSessionKey(NET_EHOME_DEV_SESSIONKEY* pDeviceKey);
+//获取设备EhomeKey信息
+NET_DVR_API BOOL  CALLBACK NET_ECMS_GetDeviceSessionKey(NET_EHOME_DEV_SESSIONKEY* pDeviceKey);
+//重置5.0设备注册状态
+NET_DVR_API BOOL CALLBACK NET_ECMS_ResetDevRegisterState(const char* sDeviceID);
+
+//预览请求
+typedef struct tagNET_EHOME_PREVIEWINFO_IN
+{
+    int iChannel;                        //通道号 
+    DWORD dwStreamType;                    // 码流类型,0-主码流,1-子码流, 2-第三码流
+    DWORD dwLinkMode;                        // 0:TCP方式,1:UDP方式,2: HRUDP方式  
+    NET_EHOME_IPADDRESS struStreamSever;     //流媒体地址
+}NET_EHOME_PREVIEWINFO_IN, *LPNET_EHOME_PREVIEWINFO_IN;
+
+typedef struct tagNET_EHOME_PREVIEWINFO_IN_V11
+{
+    int iChannel;
+    DWORD dwStreamType;
+    DWORD dwLinkMode;
+    NET_EHOME_IPADDRESS struStreamSever;
+    BYTE  byDelayPreview;
+    BYTE  byEncrypt; //0-不加密,1-加密
+    BYTE  byRes[30];
+}NET_EHOME_PREVIEWINFO_IN_V11, *LPNET_EHOME_PREVIEWINFO_IN_V11;
+
+typedef struct tagNET_EHOME_MAKE_I_FRAME
+{
+    int iChannel;                      // 通道号
+    DWORD dwStreamType;                  // 码流类型,0- 主码流,1- 子码流, 2- 预留 
+    BYTE  byRes[40];
+}NET_EHOME_MAKE_I_FRAME, *LPNET_EHOME_MAKE_I_FRAME;
+
+
+typedef struct tagNET_EHOME_PREVIEWINFO_OUT
+{
+    LONG  lSessionID; 
+    BYTE byRes[128];
+}NET_EHOME_PREVIEWINFO_OUT, *LPNET_EHOME_PREVIEWINFO_OUT;
+
+typedef struct tagNET_EHOME_PUSHSTREAM_IN
+{
+    DWORD dwSize;
+    LONG  lSessionID; 
+    BYTE  byRes[128];
+}NET_EHOME_PUSHSTREAM_IN, *LPNET_EHOME_PUSHSTREAM_IN;
+
+typedef struct tagNET_EHOME_PUSHSTREAM_INFO_OUT
+{
+    DWORD dwSize;
+    BYTE  byRes[128];
+}NET_EHOME_PUSHSTREAM_OUT, *LPNET_EHOME_PUSHSTREAM_OUT;
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_StartGetRealStream(LONG lUserID, LPNET_EHOME_PREVIEWINFO_IN pPreviewInfoIn, LPNET_EHOME_PREVIEWINFO_OUT pPreviewInfoOut ); //lUserID由SDK分配的用户ID,由设备注册回调时fDeviceRegisterCallBack返回
+NET_DVR_API BOOL CALLBACK NET_ECMS_StartGetRealStreamV11(LONG lUserID, LPNET_EHOME_PREVIEWINFO_IN_V11 pPreviewInfoIn, LPNET_EHOME_PREVIEWINFO_OUT pPreviewInfoOut);
+NET_DVR_API BOOL CALLBACK NET_ECMS_StopGetRealStream(LONG lUserID, LONG lSessionID);
+NET_DVR_API BOOL CALLBACK NET_ECMS_StartPushRealStream(LONG lUserID, LPNET_EHOME_PUSHSTREAM_IN pPushInfoIn, LPNET_EHOME_PUSHSTREAM_OUT pPushInfoOut);
+NET_DVR_API BOOL CALLBACK NET_ECMS_MakeIFrame(LONG lUserID, LPNET_EHOME_MAKE_I_FRAME pIFrameParma);
+NET_DVR_API BOOL CALLBACK NET_ECMS_SetStreamEncrypt(LONG lUserID, LPNET_EHOME_STREAM_PASSWORD pStreamPassword);
+
+//查询接口
+#define MAX_FILE_NAME_LEN  100
+#define LEN_32             32
+
+typedef enum tagSEARCH_TYPE
+{
+    ENUM_SEARCH_TYPE_ERR = -1,
+    ENUM_SEARCH_RECORD_FILE = 0,    //查找录像文件
+    ENUM_SEARCH_PICTURE_FILE  = 1,  //查找图片文件
+    ENUM_SEARCH_FLOW_INFO = 2,      //流量查询
+    ENUM_SEARCH_DEV_LOG = 3,        //设备日志查询
+    ENUM_SEARCH_ALARM_HOST_LOG = 4, //报警主机日志查询
+}SEARCH_TYPE_ENUM;
+
+typedef enum
+{
+    ENUM_GET_NEXT_STATUS_SUCCESS = 1000,    //成功读取到一条数据,处理完本次数据后需要再次调用FindNext获取下一条数据
+    ENUM_GET_NETX_STATUS_NO_FILE,           //没有找到一条数据
+    ENUM_GET_NETX_STATUS_NEED_WAIT,         //数据还未就绪,需等待,继续调用FindNext函数
+    ENUM_GET_NEXT_STATUS_FINISH,            //数据全部取完
+    ENUM_GET_NEXT_STATUS_FAILED,            //出现异常
+    ENUM_GET_NEXT_STATUS_NOT_SUPPORT        //设备不支持该操作,不支持的查询类型
+}SEARCH_GET_NEXT_STATUS_ENUM;
+
+//时间参数
+typedef struct tagNET_EHOME_TIME
+{
+    WORD    wYear;      //年
+    BYTE    byMonth;    //月
+    BYTE    byDay;      //日
+    BYTE    byHour;     //时
+    BYTE    byMinute;   //分
+    BYTE    bySecond;   //秒
+    BYTE    byRes1;        
+    WORD    wMSecond;   //毫秒
+    BYTE    byRes2[2];
+}NET_EHOME_TIME, *LPNET_EHOME_TIME;
+
+typedef struct tagNET_EHOME_FINDCOND
+{
+    DWORD               dwSize;
+    LONG                iChannel;           //通道号,从1开始
+    DWORD               dwMaxFileCountPer;  //单次搜索最大文件个数,最大文件个数,需要确定实际网络环境,建议最大个数为8
+    NET_EHOME_TIME      struStartTime;      //开始时间
+    NET_EHOME_TIME      struStopTime;       //结束时间
+    SEARCH_TYPE_ENUM    enumSearchType;     //查找类型 0-录像文件查找,对应struRecordFileParam  1-图片文件查找,对应struPicFileParam 2-流量查询,对应struFlowParam
+    union
+    {
+        BYTE            byLen[64];
+        struct
+        {
+            DWORD       dwFileType;         /**文件类型(字节整形数):
+                                            0xff-全部类型录像(不包含图片类型) 
+                                            0-定时录像
+                                            1-移动报警
+                                            2-报警触发
+                                            3-报警|动测
+                                            4-报警&动测
+                                            5-命令触发
+                                            6-手动录像
+                                            7-震动报警
+                                            8-环境报警
+                                            9-智能报警(或者取证录像)
+                                            10(0x0a)-PIR报警
+                                            11(0x0b)-无线报警
+                                            12(0x0c)-呼救报警
+                                            13(0x0d)全部报警
+                                            100-全部类型图片
+                                            101-车牌识别图片
+                                            102-稽查报警图片
+                                            103-手动抓拍图片
+                                            104-回放抓拍图片
+                                            **/
+
+       }struRecordFileParam;
+        struct
+        {
+            DWORD       dwFileType;         /*255(0xff)-全部类型:
+                                            0(0x00)-定时抓图
+                                            1(0x01)-移动侦测抓图
+                                            2(0x02)-报警抓图
+                                            3(0x03)-报警|移动侦测抓图
+                                            4(0x04)-报警&移动侦测抓图
+                                            5(0x05)-命令触发抓图
+                                            6(0x06)-手动抓图
+                                            7(0x07)-震动报警抓图
+                                            8(0x08)-环境报警触发抓图
+                                            9(0x09)-智能报警图片
+                                            10(0x0a)-PIR报警图片
+                                            11(0x0b)-无线报警图片
+                                            12(0x0c)-呼救报警图片
+                                            13(0x0d)-人脸侦测图片
+                                            14(0x0e)-越界侦测图片
+                                            15(0x0f)-入侵区域侦测图片
+                                            16(0x10)-场景变更侦测图片
+                                            17(0x11)-设备本地回放时截图
+                                            18(0x12)-智能侦测图片
+                                            19(0x13)-进入区域侦测图片
+                                            20(0x14)-离开区域侦测图片
+                                            21(0x15)-徘徊侦测图片
+                                            22(0x16)-人员聚集侦测图片
+                                            23(0x17)-快速运动侦测图片
+                                            24(0x18)-停车侦测图片
+                                            25(0x19)-物品遗留侦测图片
+                                            26(0x1a)-物品拿取侦测图片
+                                            27(0x1b)-车牌侦测图片
+                                            28(0x1c)-客户端上传图片
+                                            */
+        }struPicFileParam;
+        struct
+        {
+            BYTE        bySearchMode;       //查询模式,1-按year查询,2-按month查询,3-按day查询
+        }struFlowParam;
+    }unionSearchParam;
+	BYTE                byStartIndex;       //查询起始位置,兼容老版本,新版本中不建议使用
+	BYTE                byRes1[1];
+	DWORD               dwStartIndexEx;     //扩展后的查询起始位置, 增加对记录条数过大的支持
+	BYTE                byRes[122];
+}NET_EHOME_FINDCOND, *LPNET_EHOME_FINDCOND;
+
+//录像文件查找条件
+typedef struct tagNET_EHOME_REC_FILE_COND
+{
+    DWORD           dwChannel;          //通道号,从1开始
+    DWORD           dwRecType;          /*0xff-全部类型录像(不包含图片类型)
+                                        0-定时录像
+                                        1-移动报警
+                                        2-报警触发
+                                        3-报警|动测
+                                        4-报警&动测
+                                        5-命令触发
+                                        6-手动录像
+                                        7-震动报警
+                                        8-环境报警
+                                        9-智能报警(或者取证录像)
+                                        10(0x0a)-PIR报警
+                                        11(0x0b)-无线报警
+                                        12(0x0c)-呼救报警
+                                        13(0x0d)全部报警
+                                        100-全部类型图片
+                                        101-车牌识别图片
+                                        102-稽查报警图片
+                                        103-手动抓拍图片
+                                        104-回放抓拍图片
+                                        */
+    NET_EHOME_TIME  struStartTime;      //开始时间
+    NET_EHOME_TIME  struStopTime;       //结束时间
+    DWORD           dwStartIndex;       //查询起始位置
+    DWORD           dwMaxFileCountPer;  //单次搜索最大文件个数,最大文件个数,需要确定实际网络环境,建议最大个数为8
+    BYTE            byLocalOrUTC;        //0-struStartTime和struStopTime中,表示的是设备本地时间,即设备OSD时间  1-struStartTime和struStopTime中,表示的是UTC时间
+    BYTE            byRes[63];
+}NET_EHOME_REC_FILE_COND, *LPNET_EHOME_REC_FILE_COND;
+
+//图片文件查找条件
+typedef struct tagNET_EHOME_PIC_FILE_COND
+{
+    DWORD           dwChannel;          //通道号,从1开始
+    DWORD           dwPicType;          /*255(0xff)-全部类型
+                                        0(0x00)-定时抓图
+                                        1(0x01)-移动侦测抓图
+                                        2(0x02)-报警抓图
+                                        3(0x03)-报警|移动侦测抓图
+                                        4(0x04)-报警&移动侦测抓图
+                                        5(0x05)-命令触发抓图
+                                        6(0x06)-手动抓图
+                                        7(0x07)-震动报警抓图
+                                        8(0x08)-环境报警触发抓图
+                                        9(0x09)-智能报警图片
+                                        10(0x0a)-PIR报警图片
+                                        11(0x0b)-无线报警图片
+                                        12(0x0c)-呼救报警图片
+                                        13(0x0d)-人脸侦测图片
+                                        14(0x0e)-越界侦测图片
+                                        15(0x0f)-入侵区域侦测图片
+                                        16(0x10)-场景变更侦测图片
+                                        17(0x11)-设备本地回放时截图
+                                        18(0x12)-智能侦测图片
+                                        19(0x13)-进入区域侦测图片
+                                        20(0x14)-离开区域侦测图片
+                                        21(0x15)-徘徊侦测图片
+                                        22(0x16)-人员聚集侦测图片
+                                        23(0x17)-快速运动侦测图片
+                                        24(0x18)-停车侦测图片
+                                        25(0x19)-物品遗留侦测图片
+                                        26(0x1a)-物品拿取侦测图片
+                                        27(0x1b)-车牌侦测图片
+                                        28(0x1c)-客户端上传图片
+                                        */
+    NET_EHOME_TIME  struStartTime;      //开始时间
+    NET_EHOME_TIME  struStopTime;       //结束时间
+    DWORD           dwStartIndex;       //查询起始位置
+    DWORD           dwMaxFileCountPer;  //单次搜索最大文件个数,最大文件个数,需要确定实际网络环境,建议最大个数为8
+    BYTE            byLocalOrUTC;        //0-struStartTime和struStopTime中,表示的是设备本地时间,即设备OSD时间  1-struStartTime和struStopTime中,表示的是UTC时间
+    BYTE            byRes[63];
+}NET_EHOME_PIC_FILE_COND, *LPNET_EHOME_PIC_FILE_COND;
+
+//流量查询条件
+typedef struct tagNET_EHOME_FLOW_COND
+{
+    BYTE            bySearchMode;       //查询模式,1-按year查询,2-按month查询,3-按day查询
+    BYTE            byRes[3];
+    NET_EHOME_TIME  struStartTime;      //开始时间
+    NET_EHOME_TIME  struStopTime;       //结束时间
+    DWORD           dwStartIndex;       //查询起始位置
+    DWORD           dwMaxFileCountPer;  //单次搜索最大文件个数,最大文件个数,需要确定实际网络环境,建议最大个数为8
+    BYTE            byLocalOrUTC;        //0-struStartTime和struStopTime中,表示的是设备本地时间,即设备OSD时间  1-struStartTime和struStopTime中,表示的是UTC时间
+    BYTE            byRes1[63];
+}NET_EHOME_FLOW_COND, *LPNET_EHOME_FLOW_COND;
+
+//设备日志查询条件
+typedef struct tagNET_EHOME_DEV_LOG_COND
+{
+    DWORD           dwMajorType;        //日志主类型,1-报警,2-异常,3-操作,0xffff-全部
+    DWORD           dwMinorType;        //日志次类型,与设备基线代码定义相同
+    NET_EHOME_TIME  struStartTime;      //开始时间
+    NET_EHOME_TIME  struStopTime;       //结束时间
+    DWORD           dwStartIndex;       //查询起始位置
+    DWORD           dwMaxFileCountPer;  //单次搜索最大文件个数,最大文件个数,需要确定实际网络环境,建议最大个数为8
+    BYTE            byLocalOrUTC;        //0-struStartTime和struStopTime中,表示的是设备本地时间,即设备OSD时间  1-struStartTime和struStopTime中,表示的是UTC时间
+    BYTE            byRes[63];
+}NET_EHOME_DEV_LOG_COND, *LPNET_EHOME_DEV_LOG_COND;
+
+//报警主机日志查询条件
+typedef struct tagNET_EHOME_ALARM_HOST_LOG_COND
+{
+    DWORD           dwMajorType;        //日志主类型,1-报警,2-异常,3-操作,4-事件,0xffff-全部
+    DWORD           dwMinorType;        //日志次类型,与设备基线代码定义相同
+    NET_EHOME_TIME  struStartTime;      //开始时间
+    NET_EHOME_TIME  struStopTime;       //结束时间
+    DWORD           dwStartIndex;       //查询起始位置
+    DWORD           dwMaxFileCountPer;  //单次搜索最大文件个数,最大文件个数,需要确定实际网络环境,建议最大个数为8
+    BYTE            byLocalOrUTC;        //0-struStartTime和struStopTime中,表示的是设备本地时间,即设备OSD时间  1-struStartTime和struStopTime中,表示的是UTC时间
+    BYTE            byRes1[63];
+}NET_EHOME_ALARM_HOST_LOG_COND, *LPNET_EHOME_ALARM_HOST_LOG_COND;
+
+//老版的录像文件信息
+typedef struct tagNET_EHOME_FINDDATA
+{
+    DWORD           dwSize;
+    char            szFileName[MAX_FILE_NAME_LEN];  //文件名
+    NET_EHOME_TIME  struStartTime;                  //文件的开始时间
+    NET_EHOME_TIME  struStopTime;                   //文件的结束时间
+    DWORD           dwFileSize;                     //文件的大小
+    DWORD           dwFileMainType;                 //录像文件主类型
+    DWORD           dwFileSubType;                  //录像文件子类型
+    DWORD           dwFileIndex;                    //录像文件索引
+    BYTE            byRes[128];
+}NET_EHOME_FINDDATA, *LPNET_EHOME_FINDDATA;
+
+//录像文件信息
+typedef struct tagNET_EHOME_REC_FILE
+{
+    DWORD           dwSize;
+    char            sFileName[MAX_FILE_NAME_LEN];   //文件名
+    NET_EHOME_TIME  struStartTime;                  //文件的开始时间
+    NET_EHOME_TIME  struStopTime;                   //文件的结束时间
+    DWORD           dwFileSize;                     //文件的大小
+    DWORD           dwFileMainType;                 //录像文件主类型
+    DWORD           dwFileSubType;                  //录像文件子类型
+    DWORD           dwFileIndex;                    //录像文件索引
+    BYTE            byTimeDiffH;                    //struStartTime、struStopTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
+    BYTE            byTimeDiffM;                    //struStartTime、struStopTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
+    BYTE            byRes[126];
+}NET_EHOME_REC_FILE, *LPNET_EHOME_REC_FILE;
+
+//图片文件信息
+typedef struct tagNET_EHOME_PIC_FILE
+{
+    DWORD           dwSize;
+    char            sFileName[MAX_FILE_NAME_LEN];   //文件名
+    NET_EHOME_TIME  struPicTime;                    //图片生成时间
+    DWORD           dwFileSize;                     //文件的大小
+    DWORD           dwFileMainType;                 //图片文件主类型
+    DWORD           dwFileIndex;                    //图片文件索引
+    BYTE            byTimeDiffH;                    //struPicTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
+    BYTE            byTimeDiffM;                    //struPicTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
+    BYTE            byRes[126];
+}NET_EHOME_PIC_FILE, *LPNET_EHOME_PIC_FILE;
+
+//流量信息
+typedef struct tagNET_EHOME_FLOW_INFO
+{
+    DWORD   dwSize;
+    DWORD   dwFlowValue;    //流量值
+    DWORD   dwFlowIndex;    //流量索引
+    BYTE    byRes[128];
+}NET_EHOME_FLOW_INFO, *LPNET_EHOME_FLOW_INFO;
+
+//设备日志信息
+#define MAX_LOG_INFO_LEN    8*1024   //日志附加信息长度
+typedef struct tagNET_EHOME_DEV_LOG
+{
+    NET_EHOME_TIME  struLogTime;                    //日志时间
+    DWORD           dwMajorType;                    //日志主类型,1-报警,2-异常,3-操作
+    DWORD           dwMinorType;                    //日志次类型,与设备基线代码定义相同
+    DWORD           dwParamType;                    //次类型参数类型,大部分表示防区号,如果没有则值为0
+    char            sLocalUser[NAME_LEN];           //本地用户
+    char            sRemoteUser[NAME_LEN];          //远程用户
+    char            sIPAddress[128];                //远端主机IP地址
+    DWORD           dwChannelNo;                    //通道号
+    DWORD           dwHardDiskNo;                   //硬盘号
+    DWORD           dwAlarmInputChanNo;             //报警输入通道号
+    DWORD           dwAlarmOutputChanNo;            //报警输出通道号
+    char            sLogContext[MAX_LOG_INFO_LEN];  //日志内容
+    BYTE            byTimeDiffH;                    //struLogTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
+    BYTE            byTimeDiffM;                    //struLogTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
+    BYTE            byRes[62];
+}NET_EHOME_DEV_LOG, *LPNET_EHOME_DEV_LOG;
+
+//报警主机日志信息
+typedef struct tagNET_EHOME_ALARM_HOST_LOG
+{
+    NET_EHOME_TIME  struLogTime;                    //日志时间
+    DWORD           dwMajorType;                    //日志主类型,1-报警,2-异常,3-操作,4-事件
+    DWORD           dwMinorType;                    //日志次类型,与设备基线代码定义相同
+    DWORD           dwParamType;                    //次类型参数类型,大部分表示防区号,如果没有则值为0
+    char            sUserName[NAME_LEN];            //用户名
+    char            sIPAddress[128];                //远端主机IP地址
+    char            sLogContext[MAX_LOG_INFO_LEN];  //日志内容
+    BYTE            byTimeDiffH;                    //struLogTime与国际标准时间(UTC)的时差(小时),-12 ... +14,0xff表示无效
+    BYTE            byTimeDiffM;                    //struLogTime与国际标准时间(UTC)的时差(分钟),-30,0, 30, 45, 0xff表示无效
+    BYTE            byRes[62];
+}NET_EHOME_ALARM_HOST_LOG, *LPNET_EHOME_ALARM_HOST_LOG;
+
+NET_DVR_API LONG CALLBACK NET_ECMS_StartFindFile(LONG lUserID, LPNET_EHOME_FINDCOND pFindCond); //仅支持录像文件、图片文件和流量查询
+NET_DVR_API LONG CALLBACK NET_ECMS_FindNextFile(LONG lHandle, LPNET_EHOME_FINDDATA pFindData); //仅支持录像文件查询
+
+NET_DVR_API LONG CALLBACK NET_ECMS_StartFindFile_V11(LONG lUserID, LONG lSearchType, LPVOID pFindCond, DWORD dwCondSize);
+NET_DVR_API LONG CALLBACK NET_ECMS_FindNextFile_V11(LONG lHandle, LPVOID pFindData, DWORD dwDataSize);
+NET_DVR_API BOOL CALLBACK NET_ECMS_StopFindFile(LONG lHandle);
+
+
+typedef struct tagNET_EHOME_PLAYBACK_INFO_IN
+{
+    DWORD       dwSize;
+    DWORD       dwChannel;                    //回放的通道号
+    BYTE        byPlayBackMode;               //回放下载模式 0-按名字 1-按时间
+    BYTE        byStreamPackage;               //回放码流类型,设备端发出的码流格式 0-PS(默认) 1-RTP
+    BYTE        byRes[2];
+    union
+    {
+        BYTE    byLen[512];
+        struct
+        {
+            char   szFileName[MAX_FILE_NAME_LEN];          //回放的文件名
+            DWORD  dwSeekType;                             //0-按字节长度计算偏移量  1-按时间(秒数)计算偏移量
+            DWORD  dwFileOffset;                           //文件偏移量,从哪个位置开始下载,如果dwSeekType为0,偏移则以字节计算,为1则以秒数计算
+            DWORD  dwFileSpan;                             //下载的文件大小,为0时,表示下载直到该文件结束为止,如果dwSeekType为0,大小则以字节计算,为1则以秒数计算
+        }struPlayBackbyName;
+        struct 
+        {
+            NET_EHOME_TIME  struStartTime;            // 按时间回放的开始时间
+            NET_EHOME_TIME  struStopTime;            // 按时间回放的结束时间
+            BYTE    byLocalOrUTC;                     //0-设备本地时间,即设备OSD时间  1-UTC时间
+            BYTE    byDuplicateSegment;                //byLocalOrUTC为1时无效 0-重复时间段的前段 1-重复时间段后端
+        }struPlayBackbyTime;
+    }unionPlayBackMode;
+    NET_EHOME_IPADDRESS struStreamSever;     //流媒体地址
+}NET_EHOME_PLAYBACK_INFO_IN, *LPNET_EHOME_PLAYBACK_INFO_IN;
+
+typedef struct tagNET_EHOME_PLAYBACK_INFO_OUT
+{
+    LONG   lSessionID;     //目前协议不支持,返回-1
+    BYTE   byRes[128];
+}NET_EHOME_PLAYBACK_INFO_OUT, *LPNET_EHOME_PLAYBACK_INFO_OUT;
+
+typedef struct tagNET_EHOME_PUSHPLAYBACK_IN
+{
+    DWORD dwSize;
+    LONG lSessionID; 
+    BYTE byKeyMD5[32];//码流加密秘钥,两次MD5
+    BYTE  byRes[96];
+} NET_EHOME_PUSHPLAYBACK_IN, *LPNET_EHOME_PUSHPLAYBACK_IN;
+
+typedef struct tagNET_EHOME_PUSHPLAYBACK_OUT
+{
+    DWORD dwSize;
+    BYTE  byRes[128];
+} NET_EHOME_PUSHPLAYBACK_OUT, *LPNET_EHOME_PUSHPLAYBACK_OUT;
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_StartPlayBack(LONG lUserID, LPNET_EHOME_PLAYBACK_INFO_IN pPlayBackInfoIn, LPNET_EHOME_PLAYBACK_INFO_OUT pPlayBackInfoOut);
+NET_DVR_API BOOL CALLBACK NET_ECMS_StopPlayBack(LONG lUserID, LONG lSessionID);
+NET_DVR_API BOOL CALLBACK NET_ECMS_StartPushPlayBack(LONG lUserID, LPNET_EHOME_PUSHPLAYBACK_IN pPushInfoIn, LPNET_EHOME_PUSHPLAYBACK_OUT pPushInfoOut);
+
+//云台相关结构体
+#define NET_EHOME_PTZ_CTRL                1000        //云镜控制
+#define NET_EHOME_PRESET_CTRL        1001        //预置点操作
+#define NET_EHOME_PZIN                        1002        //3D框选放大缩小
+#define NET_EHOME_PTRACK                    1003        //3D点击居中
+
+typedef enum
+{
+    PTZ_UP = 0,            //向上
+    PTZ_DOWN,            //向下
+    PTZ_LEFT,                //向左
+    PTZ_RIGHT,            //向右
+    PTZ_UPLEFT,            //向左上
+    PTZ_DOWNLEFT,        //向左下
+    PTZ_UPRIGHT,            //向右上
+    PTZ_DOWNRIGHT,        //向右下
+    PTZ_ZOOMIN,            //变焦-
+    PTZ_ZOOMOUT,        //变焦+
+    PTZ_FOCUSNEAR,        //聚焦-
+    PTZ_FOCUSFAR,        //聚焦+
+    PTZ_IRISSTARTUP,        //光圈变大
+    PTZ_IRISSTOPDOWN,    //光圈变小
+    PTZ_LIGHT,            //补光灯
+    PTZ_WIPER,            //雨刷
+    PTZ_AUTO            //自动
+}EN_PTZ_CMD;
+
+typedef struct tagNET_EHOME_PTZ_PARAM
+{
+    DWORD dwSize;
+    BYTE  byPTZCmd;        //云台命令,参见EN_PTZ_CMD
+    BYTE  byAction;        //云台动作,0-开始云台动作,1-停止云台动作
+    BYTE  bySpeed;        //云台速度,0-7,数值越大速度越快
+    BYTE  byRes[29];
+}NET_EHOME_PTZ_PARAM, *LPNET_EHOME_PTZ_PARAM;
+
+typedef struct tagNET_EHOME_PRESET_PARAM
+{
+    DWORD dwSize;
+    BYTE  byPresetCmd;    //预置点控制命令,1-设置预置点,2-清除预置点,3-转到预置点
+    BYTE  byRes1[3];
+    DWORD dwPresetIndex;    //预置点编号
+    BYTE  byRes2[32];
+}NET_EHOME_PRESET_PARAM, *LPNET_EHOME_PRESET_PARAM;
+
+typedef struct tagNET_EHOME_PZIN_PARAM
+{
+    DWORD dwSize;
+    BYTE  byAction;    //动作,0缩小(右上->左下,右下->左上) 1放大(左上->右下,左下->右上)
+    BYTE  byRes1[3];
+    NET_EHOME_ZONE struArea;    //框选范围
+    BYTE  byRes2[32];
+}NET_EHOME_PZIN_PARAM, *LPNET_EHOME_PZIN_PARAM;
+
+typedef struct tagNET_EHOME_POINT
+{
+    DWORD dwX;
+    DWORD dwY;
+    BYTE  byRes[4];
+}NET_EHOME_POINT, *LPNET_EHOME_POINT;
+
+typedef struct tagNET_EHOME_IPADDR
+{
+    char         sIpV4[16];
+    char        sIpV6[128];    
+}NET_EHOME_IPADDR, *LPNET_EHOME_IPADDR;
+
+#define MACADDR_LEN                    6       //mac地址长度
+
+typedef struct tagNET_EHOME_ETHERNET
+{
+    NET_EHOME_IPADDR    struDevIP;        //设备IP地址
+    NET_EHOME_IPADDR    struDevIPMask;    //掩码地址
+    DWORD        dwNetInterface; // 网卡类型1:10M半双工 2:10M全双工 3:100M半双工 4:100M全双工 6:1000M全双工 5:10M/100M/1000M自适应
+    WORD        wDevPort;                    //设备SDK端口号:8000
+    WORD        wMTU;                        // MTU参数
+    BYTE        byMACAddr[MACADDR_LEN]; //mac地址
+    BYTE        byRes[2];
+}NET_EHOME_ETHERNET,*LPNET_EHOME_ETHERNET;
+#define PASSWD_LEN                    16      //密码长度
+typedef struct tagNET_EHOME_PPPOECFG
+{
+    DWORD        dwPPPoE;    //是否启用PPPOE:1代表使用;0代表不使用
+    char            sPPPoEUser[NAME_LEN];    //PPPoE用户名
+    char            sPPPoEPassword[PASSWD_LEN];    //PPPoE密码
+    NET_EHOME_IPADDR    struPPPoEIP;        //PPPoE IP地址
+}NET_EHOME_PPPOECFG,*LPNET_EHOME_PPPOECFG;
+
+typedef struct tagNET_EHOME_NETWORK_CFG
+{
+    DWORD        dwSize;                //结构体大小
+    NET_EHOME_ETHERNET        struEtherNet;    //以太网口
+    NET_EHOME_IPADDR        struGateWayIP;//网关地址
+    NET_EHOME_IPADDR        struMultiCastIP;//多播地址
+    NET_EHOME_IPADDR        struDDNSServer1IP;//DDNS1服务器IP
+    NET_EHOME_IPADDR        struDDNSServer2IP;//DDNS2服务器IP
+    NET_EHOME_IPADDR        struAlarmHostIP;    //报警主机IP
+    WORD        wAlarmHostPort;    //报警主机端口号
+    WORD        wIPResolverPort;    //解析服务器端口
+    NET_EHOME_IPADDR        struIPResolver; //解析服务器地址
+    NET_EHOME_PPPOECFG        struPPPoE;    //PPPoE参数
+    WORD        wHTTPPort;;        //Http端口
+    BYTE        byRes[674];        //保留
+}NET_EHOME_NETWORK_CFG,*LPNET_EHOME_NETWORK_CFG;
+
+typedef struct tagNET_EHOME_COMPRESSION_COND
+{
+    DWORD        dwSize;    //结构体大小
+    DWORD        dwChannelNum;    //通道号,从1开始
+    BYTE        byCompressionType;//码流类型,1-主码流,2-子码流,3-三码流
+    BYTE        byRes[23];
+}NET_EHOME_COMPRESSION_COND,*LPNET_EHOME_COMPRESSION_COND;
+
+typedef struct tagNET_EHOME_COMPRESSION_CFG
+{
+    DWORD        dwSize;    //结构体大小
+    BYTE        byStreamType;    //码流类型
+    BYTE        byPicQuality;    //图像质量0:最高 1:较高 2:中等 3:低 4:较低 5:最低
+    BYTE        byBitRateType;    //码率类型0:变码率 1:定码率
+    BYTE        byRes1;    //保留
+    DWORD        dwResolution;    //分辨率,0:DCIF 1:CIF 2:QCIF 3:4CIF 4:2CIF 6:QVGA(320x240) 16:VGA 17:UXGA 18:SVGA 19:HD720p 20:hd900 21:XVGA    22:SXGAp(1360*1024)
+    //27:1080P(1920*1080)    28:2560x1920 /*500W*/    29:1600x304    30:2048x1536 /*300W*/
+    //31:2448x2048/*500W*/        32:2448x1200        33:2448x800    34:XGA/*(1024*768)*/
+    //35:SXGA/*(1280*1024)*/    36:WD1/*(960*576/960*480)*/    37:HD1080I    38-WXGA(1440*900),
+    //39-HD_F(1920*1080/1280*720),40-HD_H(1920*540/1280*360),  41-HD_Q(960*540/630*360),  
+    //42-2336*1744,    43-1920*1456,44-2592*2048,    45-3296*2472,46-1376*768,47-1366*768,                 
+    //48-1360*768,  49-WSXGA+,50-720*720,51-1280*1280,52-2048*768,53-2048*2048
+    //54-2560x2048,  55-3072x2048 ,  56-2304*1296  57-WXGA(1280*800),  58-1600*600    
+    //59-2592*1944  60-2752*2208,    61-384*288,    62-4000*3000,  63-4096*2160,  64-3840*2160,
+    //65-4000*2250, 66-3072*1728,
+    DWORD        dwVideoBitRate;    //0-32K 1-48k 2-64K 3-80K 4-96K 5-128K 6-160k 7-192K 8-224K 9-256K 10-320K 11-384K 12-448K 13-512K 14-640K 15-768K 16-896K 17-1024K 18-1280K 19-1536K 20-1792K 21-2048K 22-自定义
+    DWORD        dwMaxBitRate;    //自定义码率
+    DWORD        dwVideoFrameRate;    //视频帧率(4字节整数)0:全帧率 1:1/16 2:1/8 3:1/4 4:1/2 5:1 6:2 7:4 8:6 9:8 10:10 11:12 12:16 13:20 14:15 15:18 16:22
+    WORD        wIntervalFrameI;    // I帧间隔,范围1~400
+    BYTE        byIntervalBPFrame; //帧类型 0:BBP 1:BP 2:P
+    BYTE        byRes[41];    //保留
+}NET_EHOME_COMPRESSION_CFG,*LPNET_EHOME_COMPRESSION_CFG;
+
+#define    MAX_TIME_SEGMENT        8   //时间段,ehome协议只支持4个
+#define MAX_ANALOG_ALARMOUT     32      //最大32路模拟报警输出
+#define MAX_ANALOG_CHANNUM      32      //最大32个模拟通道
+#define MAX_DIGIT_CHANNUM    480/*512-32*/      //最大480个数字通道,与网络库保持
+
+typedef struct tagNET_EHOME_ALARM_TIME_COND
+{
+    DWORD        dwSize;    //结构体大小
+    BYTE        byAlarmType;    //报警类型,0-移动侦测,1-视频丢失,2-遮挡报警,3-报警输入,4-报警输出,9-客流量
+    BYTE        byWeekday;    //0-Mon,1-Tues,2-Wed,3-Thur,4-Fri,5-Sat,6-Sun
+    BYTE        byRes1[2];
+    DWORD        dwChannel;    //通道号,从1开始
+    BYTE        byRes2[20];
+}NET_EHOME_ALARM_TIME_COND,*LPNET_EHOME_ALARM_TIME_COND;
+
+typedef struct tagNET_EHOME_SCHEDTIME
+{
+    BYTE        byStartHour;    //开始时间:时
+    BYTE        byStartMin;    //开始时间:分
+    BYTE        byStopHour;    //结束时间:时
+    BYTE        byStopMin;    //结束时间:分
+}NET_EHOME_SCHEDTIME,*LPNET_EHOME_SCHEDTIME;
+
+typedef struct tagNET_EHOME_ALARM_TIME_CFG
+{
+    DWORD        dwSize;    //结构体大小
+    NET_EHOME_SCHEDTIME    struSchedTime[MAX_TIME_SEGMENT];//布防时间段
+    BYTE        bySchedTimeCount;    //只读,布防时间段数
+    BYTE        byRes[43];
+}NET_EHOME_ALARM_TIME_CFG,*LPNET_EHOME_ALARM_TIME_CFG;
+
+typedef struct tagNET_EHOME_ALARMOUT_CFG
+{
+    DWORD        dwSize;    //结构体大小
+    BYTE        sAlarmOutName[NAME_LEN];    //报警输出名称
+    WORD        wAlarmOutDelay;    //输出延时:0:5秒;1:10秒; 2:30秒; 3:1分; 4:2分; 5:5分; 6:10分; 7:最大;
+    BYTE        byRes[26];    //保留
+}NET_EHOME_ALARMOUT_CFG,*LPNET_EHOME_ALARMOUT_CFG;
+
+typedef struct tagNET_EHOME_ALARMOUT_STATUS_CFG
+{
+    DWORD        dwSize;    //结构体大小
+    BYTE        byAlarmOutStatus;    //1-开启报警输出,0-关闭报警输出
+    BYTE        byRes[11];
+}NET_EHOME_ALARMOUT_STATUS_CFG,*LPNET_EHOME_ALARMOUT_STATUS_CFG;
+
+typedef struct tagNET_EHOME_ALARMIN_COND
+{
+    DWORD        dwSize;    //结构体大小
+    DWORD        dwAlarmInNum;    //报警编号,从1开始
+    DWORD        dwPTZChan;// PTZ联动视频通道编号,从1开始
+    BYTE        byRes[20];
+}NET_EHOME_ALARMIN_COND,*LPNET_EHOME_ALARMIN_COND;
+
+typedef struct tagNET_EHOME_LINKAGE_ALARMOUT
+{
+    DWORD        dwAnalogAlarmOutNum;    //只读,模拟报警数量
+    BYTE        byAnalogAlarmOut[MAX_ANALOG_ALARMOUT];    //模拟报警输出,0:不使用;1:使用
+    BYTE        byRes[5000];    //保留,协议里面没有IP报警输出联动,接口上位置留出来
+}NET_EHOME_LINKAGE_ALARMOUT,*LPNET_EHOME_LINKAGE_ALARMOUT;
+
+typedef struct tagNET_EHOME_LINKAGE_PTZ
+{
+    BYTE    byUsePreset;    //是否调用预置点,0:不使用;1:使用
+    BYTE    byUseCurise;    //是否调用巡航,0:不使用;1:使用
+    BYTE    byUseTrack;    //是否调用轨迹,0:不使用;1:使用
+    BYTE    byRes1;        //保留
+    WORD    wPresetNo;    //预置点号,范围:1~256,协议中规定是1~256,实际已有设备支持300
+    WORD    wCuriseNo;    //巡航路径号,范围:1~16
+    WORD    wTrackNo;    //轨迹号,范围:1~16
+    BYTE    byRes2[6];    //保留
+}NET_EHOME_LINKAGE_PTZ,*LPNET_EHOME_LINKAGE_PTZ;
+
+typedef struct tagNET_EHOME_ALARMIN_LINKAGE_TYPE
+{
+    BYTE    byMonitorAlarm;    //监视器上警告,0:不使用;1:使用
+    BYTE    bySoundAlarm;    //声音报警,0:不使用;1:使用
+    BYTE    byUpload;        //上传中心,0:不使用;1:使用
+    BYTE    byAlarmout;        //触发报警输出,0:不使用;1:使用-
+    BYTE    byEmail;            //邮件联动,0:不使用;1:使用
+    BYTE    byRes1[3];        //保留
+    NET_EHOME_LINKAGE_PTZ    struPTZLinkage;    //PTZ联动
+    NET_EHOME_LINKAGE_ALARMOUT    struAlarmOut;    //报警输出联动
+    BYTE    byRes[128];
+}NET_EHOME_ALARMIN_LINKAGE_TYPE,*LPNET_EHOME_ALARMIN_LINKAGE_TYPE;
+
+typedef    struct    tagNET_EHOME_RECORD_CHAN
+{
+    BYTE    byAnalogChanNum;    //只读,模拟通道数
+    BYTE    byAnalogChan[MAX_ANALOG_CHANNUM];    //模拟通道,0:不使用;1:使用
+    BYTE    byRes1[3];    //保留
+    WORD    wDigitChanNum;    //只读,数字通道数
+    BYTE    byDigitChan[MAX_DIGIT_CHANNUM];    //数字通道,0:不使用;1:使用
+    BYTE    byRes2[62];    //保留
+}NET_EHOME_RECORD_CHAN,*LPNET_EHOME_RECORD_CHAN;
+
+typedef struct tagNET_EHOME_ALARMIN_CFG
+{
+    DWORD        dwSize;    //结构体大小
+    BYTE        sAlarmInName[NAME_LEN];    //报警输入名称
+    BYTE        byAlarmInType;    //报警器类型:0:常开;1:常闭
+    BYTE        byUseAlarmIn;    //是否处理,0:不使用;1:使用
+    BYTE        byRes1[2];            //保留
+    NET_EHOME_ALARMIN_LINKAGE_TYPE    struLinkageType;    //联动模式
+    NET_EHOME_RECORD_CHAN    struRecordChan;    //关联录像通道
+    BYTE        byRes2[128];        //保留
+}NET_EHOME_ALARMIN_CFG,*LPNET_EHOME_ALARMIN_CFG;
+
+typedef    struct    tagNET_EHOME_MANUAL_IOOUT_CTRL
+{
+    DWORD        dwSize;    //结构体大小
+    DWORD        dwChan;        //IO输出编号,从1开始
+    DWORD        dwDelayTime;        //报警输出持续时间(秒),值为0表示一直输出,否则按指定时间长度进行输出。
+    BYTE        byAction;        //0-关闭报警输出,1-开启报警输出
+    BYTE        byRes[19];
+}NET_EHOME_MANUAL_IOOUT_CTRL,*LPNET_EHOME_MANUAL_IOOUT_CTRL;
+
+typedef struct tagNET_EHOME_IMAGE_CFG
+{
+    DWORD       dwSize;    //结构体大小
+    BYTE        byHue;    //色调,0~255
+    BYTE        byContrast;    //对比度,0~255
+    BYTE        byBright;        //亮度,0~255
+    BYTE        bySaturation;    //饱和度
+    BYTE        byRes[24];
+}NET_EHOME_IMAGE_CFG,*LPNET_EHOME_IMAGE_CFG;
+
+
+typedef struct tagBINARY_DATA_INFO
+{
+    DWORD dwMagic;
+    DWORD dwCommand;  //命令码
+    DWORD dwSequence; //序号
+    DWORD dwStatus;   //状态值
+    DWORD dwBufLen;
+    BYTE  byMsgType;    /*报文类型,0-无效,1-请求报文,2-应答报文*/
+    char  sSerialNumber[12];//设备序列号,尚未使用
+    //char  sDeviceID[16];//设备ID
+    BYTE  byVersion;
+    BYTE  byRes[2];
+} BINARY_DATA_INFO, *LPBINARY_DATA_INFO;
+
+
+#define    NET_EHOME_GET_NETWORK_CFG        5    //获取网络参数
+#define    NET_EHOME_SET_NETWORK_CFG        6    //设置网络参数
+#define    NET_EHOME_GET_COMPRESSION_CFG    7    //获取压缩参数
+#define    NET_EHOME_SET_COMPRESSION_CFG    8    //设置压缩参数
+#define    NET_EHOME_GET_IMAGE_CFG            9    //获取图像参数
+#define    NET_EHOME_SET_IMAGE_CFG            10    //设置图像参数
+#define    NET_EHOME_GET_ALARMIN_CFG        11        //获取报警输入参数
+#define    NET_EHOME_SET_ALARMIN_CFG        12    //设置报警输入参数
+#define    NET_EHOME_GET_ALARM_TIME_CFG    13    //获取报警布防时间参数
+#define    NET_EHOME_SET_ALARM_TIME_CFG    14    //设置报警布防时间参数
+#define    NET_EHOME_GET_ALARMOUT_CFG        15    //获取报警输出参数
+#define    NET_EHOME_SET_ALARMOUT_CFG        16    //设置报警输出参数
+#define    NET_EHOME_GET_ALARMOUT_STATUS_CFG        17    //获取报警输出状态参数
+#define    NET_EHOME_SET_ALARMOUT_STATUS_CFG        18    //设置报警输出状态参数
+#define    NET_EHOME_MANUAL_IOOUT            19    //手动控制IO输出
+
+typedef enum tagNET_CMS_ENUM_PROXY_TYPE
+{
+	ENUM_PROXY_TYPE_NETSDK = 0,	//NetSDK代理
+	ENUM_PROXY_TYPE_HTTP					//HTTP代理
+}NET_CMS_ENUM_PROXY_TYPE;
+
+typedef struct tagNET_EHOME_PT_PARAM
+{
+	NET_EHOME_IPADDRESS struIP;   //监听的IP和端口
+	BYTE	byProtocolType;							//协议类型,0-TCP
+	BYTE	byProxyType;									//代理类型,0-NetSDK代理,1-HTTP代理
+	BYTE	byRes[2];
+}NET_EHOME_PT_PARAM, *LPNET_EHOME_Proxy_PARAM;
+
+typedef struct tagNET_EHOME_PASSTHROUGH_PARAM
+{
+	DWORD	dwSequence;	//报文序号
+	DWORD	dwUUID;		//会话ID
+	BYTE			byRes[64];
+}NET_EHOME_PASSTHROUGH_PARAM, *LPNET_EHOME_PASSTHROUGH_PARAM;
+
+typedef struct tagNET_EHOME_PTXML_PARAM
+{
+    void*   pRequestUrl;        //请求URL
+    DWORD   dwRequestUrlLen;    //请求URL长度
+    void*   pCondBuffer;        //条件缓冲区(XML格式数据)
+    DWORD   dwCondSize;         //条件缓冲区大小
+    void*   pInBuffer;          //输入缓冲区(XML格式数据)
+    DWORD   dwInSize;           //输入缓冲区大小
+    void*   pOutBuffer;         //输出缓冲区(XML格式数据)
+    DWORD   dwOutSize;          //输出缓冲区大小
+    DWORD   dwReturnedXMLLen;   //实际从设备接收到的XML数据的长度
+    DWORD   dwRecvTimeOut;      //默认5000ms
+    BYTE    byRes[28];          //保留
+}NET_EHOME_PTXML_PARAM, *LPNET_EHOME_PTXML_PARAM;
+
+NET_DVR_API LONG CALLBACK NET_ECMS_StartListenProxy(LPNET_EHOME_Proxy_PARAM lpStru);
+NET_DVR_API BOOL CALLBACK NET_ECMS_StopListenProxy(LONG lListenHandle, DWORD dwProxyType = 0);
+NET_DVR_API LONG CALLBACK NET_ECMS_ConvertProtocolHttpToPassthrough(void* pSrcBuffer, DWORD dwSrcBufLen, void* pDestBuffer, DWORD dwDestBufLen, LPNET_EHOME_PASSTHROUGH_PARAM lpParam, BOOL bToPassthrough = TRUE);
+typedef void (CALLBACK* PASSTHROUGHDATACALLBACK)(DWORD dwProxyType, LONG lListenHandle, void* pDeviceID, DWORD dwDevIDLen, void* pDataBuffer, DWORD dwDataLen, void* pUser);
+NET_DVR_API BOOL CALLBACK NET_ECMS_SetPassthroughDataCallback(PASSTHROUGHDATACALLBACK fnPassthroughDataCb, void* pUser, DWORD dwProxyType = 0);
+NET_DVR_API BOOL CALLBACK NET_ECMS_SendPassthroughData(void* pDataBuffer, DWORD dDataLen, DWORD dwProxyType = 0);
+NET_DVR_API BOOL CALLBACK NET_ECMS_GetPTXMLConfig(LONG iUserID, LPNET_EHOME_PTXML_PARAM lpPTXMLParam);
+NET_DVR_API BOOL CALLBACK NET_ECMS_PutPTXMLConfig(LONG iUserID, LPNET_EHOME_PTXML_PARAM lpPTXMLParam);
+NET_DVR_API BOOL CALLBACK NET_ECMS_PostPTXMLConfig(LONG iUserID, LPNET_EHOME_PTXML_PARAM lpPTXMLParam);
+NET_DVR_API BOOL CALLBACK NET_ECMS_DeletePTXMLConfig(LONG lUserID, LPNET_EHOME_PTXML_PARAM lpPTXMLParam);
+
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_SetSDKLocalCfg(NET_EHOME_LOCAL_CFG_TYPE enumType, void* const lpInBuff);
+NET_DVR_API BOOL CALLBACK NET_ECMS_GetSDKLocalCfg(NET_EHOME_LOCAL_CFG_TYPE enumType,void *lpOutBuff);
+
+typedef struct tagNET_EHOME_XML_REMOTE_CTRL_PARAM
+{
+    DWORD dwSize;
+    void* lpInbuffer;          //控制参数缓冲区
+    DWORD  dwInBufferSize;      //控制参数缓冲区长度
+    DWORD  dwSendTimeOut;  //数据发送超时时间,单位ms,默认5s
+    DWORD  dwRecvTimeOut;  //数据接收超时时间,单位ms,默认5s
+    void *lpOutBuffer;     //输出缓冲区
+    DWORD dwOutBufferSize;  //输出缓冲区大小
+    void *lpStatusBuffer;   //状态缓冲区,若不需要可置为NULL
+    DWORD dwStatusBufferSize;  //状态缓冲区大小
+    BYTE   byRes[16];
+}NET_EHOME_XML_REMOTE_CTRL_PARAM, *LPNET_EHOME_XML_REMOTE_CTRL_PARAM;
+NET_DVR_API BOOL CALLBACK NET_ECMS_XMLRemoteControl(LONG lUserID, LPNET_EHOME_XML_REMOTE_CTRL_PARAM lpCtrlParam, DWORD dwCtrlSize);
+
+
+#define    EHOME_CMSALARM_EXCEPTION      0x105  //CMS接收报警异常
+NET_DVR_API BOOL CALLBACK NET_ECMS_SetExceptionCallBack(DWORD dwMessage, HANDLE hWnd, void (CALLBACK* fExceptionCallBack)(DWORD dwType, LONG iUserID, LONG iHandle, void* pUser), void* pUser);
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_TranBuf(LONG lUserID, DWORD dwLength, void *pBuf);
+
+
+typedef enum
+{
+    LONG_CFG_CREATED,  //长连接建立成功
+    LONG_CFG_CREATE_FAIL,   //长连接建立失败
+    LONG_CFG_DATA,  //长连接普通数据
+    LONG_CFG_TERMINATE  //长连接销毁消息
+}LONG_LINK_MSG;
+
+typedef BOOL(CALLBACK *LongConfigCallBack)(LONG iHandle, LONG_LINK_MSG enMsg, void *pOutBuffer, DWORD dwOutLen, void *pUser);
+
+typedef struct tagNET_EHOME_LONG_CFG_INPUT
+{
+    LongConfigCallBack fnDataCallBack;
+    void *pUser;
+    BYTE byRes[32];
+}NET_EHOME_LONG_CFG_INPUT, *LPNET_EHOME_LONG_CFG_INPUT;
+
+typedef struct tagNET_EHOME_LONG_CFG_SEND
+{
+    void *pDataBuffer;
+    DWORD dwDataLen;
+    BYTE byRes[32];
+}NET_EHOME_LONG_CFG_SEND, *LPNET_EHOME_LONG_CFG_SEND;
+
+/** 兼容信息发布私有协议 begin */
+
+#define NET_EHOME_S2C_TIME_ADJUST                   0x9             //终端校时
+#define NET_EHOME_S2C_SEND_ERRCODE                  0xD             //发送错误码
+
+#define NET_EHOME_S2C_SET_SERVER_INFO               0x18            //设置服务器信息给终端
+#define NET_EHOME_S2C_GET_TERMINAL_INFO             0x19            //获取终端信息
+
+#define NET_EHOME_S2C_LOGOUT                        0x20            //通知终端登出服务器
+
+#define NET_EHOME_S2C_POST_SCHEDULE                 0x50            //日程下发
+#define NET_EHOME_S2C_TERMINALCONTROL_V20           0x51            //终端设备控制V20
+#define NET_EHOME_S2C_GET_CAP_SUPPORTEDCMD          0x52            //获取终端支持的信令的能力集
+#define NET_EHOME_S2C_TERMINALCONTROL               0x53            //终端设备控制
+#define NET_EHOME_S2C_PLAYCONTROL                   0x54            //终端播放控制
+#define NET_EHOME_S2C_SET_IPCINFO                   0x55            //设置IPC信息
+#define NET_EHOME_S2C_GET_WORKSTATUS                0x56            //获取设备工作状态
+#define NET_EHOME_S2C_VERSIONUPGRADE                0x57            //设备升级
+#define NET_EHOME_S2C_SETPLAYERPARAM                0x58            //设置终端播放参数
+#define NET_EHOME_S2C_SETSERVERADDR                 0x5B            //设置终端注册的服务器信息
+
+#define NET_EHOME_S2C_SET_WEATHERINFO               0x61            //城市天气信息设置     
+#define NET_EHOME_S2C_GET_SCREENSHOT                0x62            //获取终端的屏幕截图
+#define NET_EHOME_S2C_GET_DEFAULTPARAM              0x63            //获取恢复默认参数后的值
+#define NET_EHOME_S2C_REPLACE_MATERIAL              0x64            //素材替换
+#define NET_EHOME_S2C_CANCEL_SCHEDULE               0x65            //取消日程发布
+#define NET_EHOME_S2C_SET_QUEUE_INFO                0x66            //叫号管理信息
+#define NET_EHOME_S2C_PUBLISH_SHOT_PIC              0x67            //下发弹图图片
+#define NET_EHOME_S2C_GET_IPCINFO                   0x68            //获取IPC信息
+#define NET_EHOME_S2C_SET_TERMINAL_IP               0x69            //设置终端的ip
+#define NET_EHOME_S2C_GET_TERMINAL_IP               0x70            //获取终端的ip
+#define NET_EHOME_S2C_SET_TERMINAL_NAME             0x71            //设置终端的名称
+
+#define NET_EHOME_S2C_SET_SWITCHPLAN                0x100           //定时开关机计划下发
+#define NET_EHOME_S2C_GET_SWITCHPLAN                0x101           //获取定时开关机计划
+#define NET_EHOME_S2C_SET_VOLUMEPLAN                0x102           //设置定时音量计划
+#define NET_EHOME_S2C_GET_VOLUMEPLAN                0x103           //获取音量控制计划
+#define NET_EHOME_S2C_SET_INPUTPLAN                 0x104           //按时间段控制HDMI和信息发布切换
+#define NET_EHOME_S2C_GET_INPUTPLAN                 0x105           //获取HDMI和信息发布切换切换计划
+#define NET_EHOME_S2C_SET_CHARACTER                 0x106           //往终端插播文字消息
+#define NET_EHOME_S2C_GET_CHARACTER                 0x107           //获取终端正在插播的文字消息
+#define NET_EHOME_S2C_RETRANSMIT_TO_TERM            0x108           //服务器数据透传到终端
+#define NET_EHOME_S2C_TRANS_WITH_RET                0x10A           //服务器数据透传到终端并接收终端透传到服务器的数据
+#define NET_EHOME_S2C_SET_ADB_CFG                   0x110           //设置ADB参数    
+#define NET_EHOME_S2C_GET_ADB_CFG                   0x111           //获取ADB参数
+#define NET_EHOME_S2C_SET_TIEM_ZONE                 0x112           //设置终端的时区信息
+#define NET_EHOME_S2C_GET_TIME_ZONE                 0x113           //获取终端的时区信息
+#define NET_EHOME_S2C_SET_SADP                      0x114           //设置终端的SADP信息
+#define NET_EHOME_S2C_GET_SADP                      0x115           //获取终端的SADP信息
+#define NET_EHOME_S2C_GET_COMPONENT		            0x116 	        //获取终端组件信息
+
+#define NET_EHOME_S2C_PUBLISH_XML                   0x200           //日程、插播、升级XML透传(公安平台专用)
+#define NET_EHOME_S2C_SCREEN_SHOT                   0x201           //终端截屏(公安平台专用)
+
+#define NET_EHOME_S2C_GET_VCA_VERSION               0x100034        //获取智能库版本号
+
+#define NET_EHOME_S2C_GET_VCA_MASK_REGION           0x100054        //获取人脸屏蔽区域配置
+#define NET_EHOME_S2C_SET_VCA_MASK_REGION           0x100055        //设置人脸屏蔽区域配置
+
+#define NET_EHOME_S2C_SET_CALIBRATION               0x100080        //设置标定场景
+#define NET_EHOME_S2C_GET_CALIBRATION               0x100081        //获取标定场景
+
+#define NET_EHOME_S2C_GET_PDC_RULECFG_V42           0x113427        //获取客流量统计规则参数
+#define NET_EHOME_S2C_SET_PDC_RULECFG_V42           0x113428        //设置客流量统计规则参数
+
+#define NET_EHOME_S2C_GET_CAMERA_SETUPCFG           0x11350d        //获取相机安装位置
+#define NET_EHOME_S2C_SET_CAMERA_SETUPCFG           0x11350e        //配置相机安装位置
+
+#define NET_EHOME_S2C_GET_FACESNAPCFG               0x115001        //获取人脸抓拍参数
+#define NET_EHOME_S2C_SET_FACESNAPCFG               0x115002        //设置人脸抓拍参数
+
+#define NET_EHOME_S2C_GET_VCA_CTRLINFO_CFG          0x11503e        //批量获取智能控制参数
+#define NET_EHOME_S2C_SET_VCA_CTRLINFO_CFG          0x11503f        //批量设置智能控制参数
+
+#define NET_EHOME_MAX_TYPE_LEN          32      //通用长度
+#define NET_EHOME_MAX_NAME_LEN          64      //名称长度
+#define NET_EHOME_MAX_TERM_NAME_LEN     100     //终端的名字长度
+#define NET_EHOME_MAX_TEXT_MESSAGE_NUM  5       //终端一个窗口最大支持的文字消息条数
+#define NET_EHOME_MAX_TEXT_CONTENT_NUM  1024    //插播的文字消息内容的长度
+#define NET_EHOME_MAX_PLATFROM_URL_LEN  256     //KMS服务器上文件的URL地址的最大长度
+#define NET_EHOME_MAX_WEATHERINFO_LEN   4*1024  //天气信息的最大长度
+
+//二进制数据的发送结构
+typedef struct tagNET_EHOME_BINARY_SEND_DATA
+{
+    DWORD   dwSize;
+    void    *lpInBuffer;
+    DWORD   dwInBufferSize;
+    DWORD   dwRecvTimeOut; //接收超时时间
+    BYTE    byRes[64];
+}NET_EHOME_BINARY_SEND_DATA, *LPNET_EHOME_BINARY_SEND_DATA;
+
+//二进制数据的接收结构
+typedef struct tagNET_EHOME_BINARY_RECV_DATA
+{
+    DWORD   dwSize;
+    void    *lpOutBuffer;
+    DWORD   dwOutBufferSize;
+    BYTE    byRes[64];
+}NET_EHOME_BINARY_RECV_DATA, *LPNET_EHOME_BINARY_RECV_DATA;
+
+/** 日程下发 */
+typedef struct tagNET_EHOME_POST_SCHEDULE
+{
+    BYTE    byServerIP[32]; //服务器ip
+    DWORD   dwServerPort; //服务器的端口号
+    DWORD   dwScheduleID; //日程的ID,新建日程时分配的唯一索引
+    DWORD   dwScheduleSeq; //断点续传的时候使用,用来标示日程是否被修改,能否继续传输
+    BOOL    byIsDefaultSchedual; //用来标示这个日程是否是垫片日程
+    BYTE    byRes[2];
+    DWORD   dwTimingSchedualID; //定时日程计划的ID,标示终端想要获取的是哪个定时计划
+    BYTE    byEffectiveTime[32]; //日程开始播放的时间
+}NET_EHOME_POST_SCHEDULE, *LPNET_EHOME_POST_SCHEDULE;
+
+//用来标示发送的是叫号数据还是命令
+typedef enum
+{
+    NET_EHOME_DATA_INFO_TYPE = 1, //叫号数据
+    NET_EHOME_COMMAND_INFO_TYPE = 2, //叫号控制命令
+    NET_EHOME_CANCEL_SHOT_PIC, //取消动态弹图
+    NET_EHOME_START_CAPTURE_PIC, //开始抓拍
+    NET_EHOME_STOP_CAPTURE_PIC, //取消显示抓拍图片
+}NET_EHOME_THIRD_PARTY_DATA_TYPE;
+
+typedef enum
+{
+    NET_EHOME_SINGLE_REFRESH_TYPE = 1, //单个数据
+    NET_EHOME_WHOLE_REFRESH_TYPE = 2, //全部数据
+    NET_EHOME_OTHER_REFRESH_TYPE,
+}NET_EHOME_REFRESH_TYPE;
+
+typedef struct
+{
+    char    szQueueDataValue[32];
+    DWORD   dwQueueDataId;
+}NET_EHOME_QUEUE_DATA;
+
+typedef struct
+{
+    NET_EHOME_QUEUE_DATA queueData[20];
+}NET_EHOME_QUEUE_DATALIST;
+
+typedef struct
+{
+    DWORD   dwQueueDataListCnt; //行
+    DWORD   dwQueueDataCnt; //列
+    NET_EHOME_QUEUE_DATALIST struQueueDatalist[4];
+}NET_EHOME_QUEUE_ITEM_DATALIST;
+
+//叫号管理信息
+typedef struct tagNET_EHOME_QUEUE_INFO
+{
+    DWORD   dwMaterialId; //素材ID
+    DWORD   dwQueueId; //叫号ID
+    NET_EHOME_THIRD_PARTY_DATA_TYPE enumDataType; //命令类型
+    NET_EHOME_REFRESH_TYPE enumRefreshType; //数据更新方式
+    NET_EHOME_QUEUE_ITEM_DATALIST struItemDataList; //叫号数据列表
+}NET_EHOME_QUEUE_INFO, *LPNET_EHOME_QUEUE_INFO;
+
+//弹图命令
+typedef struct tagNET_EHOME_SHOT_PIC
+{
+    BYTE    byServerIP[32]; //服务器IP地址
+    DWORD   dwServerPort; //服务器端口号
+    DWORD   dwShotPicID; //弹图的图片ID
+}NET_EHOME_SHOT_PIC, *LPNET_EHOME_SHOT_PIC;
+
+/* 错误回应 */
+typedef struct tagNET_EHOME_ERRCODE_RET
+{
+    DWORD dwCmd; //命令对应的错误码
+    DWORD dwErrCode; //对应的NET_EHOME_ERROR_CODE的值
+}NET_EHOME_ERRCODE_RET, *LPNET_EHOME_ERRCODE_RET;
+
+/* 服务器和终端之间定义的错误码(2.0及以上版本可用)*/
+enum NET_EHOME_ERROR_CODE
+{
+    EHOME_OK = 0,
+    EHOME_PASSERWORD_ERROR = 1, //密码错误	
+    EHOME_NOT_SUPPORT = 2, //终端不支持
+    EHOME_USERNAME_ERROR = 3, //用户名错误
+    EHOME_USERNAME_PASSWORD_ERROR = 4, //用户名或者密码错误
+    EHOME_TERM_RNAME_REPEAT = 5, //终端名称重复
+    EHOME_TERM_SERIAL_REPEAT = 6, //终端序列号重复
+    EHOME_PARAM_ERROR = 7, //参数错误
+};
+
+//控制命令对应的命令码
+enum NET_EHOME_CONTROL_TYPE
+{
+    NET_EHOME_CONTROL_STARTPLAY = 1, //开始播放
+    NET_EHOME_CONTROL_STOPPLAY, //停止播放
+    NET_EHOME_CONTROL_INSERT, //插播
+    NET_EHOME_CONTROL_STOPINSERT, //停止插播
+    NET_EHOME_CONTROL_POWERON, //开机
+    NET_EHOME_CONTROL_POWEROFF, //关机
+    NET_EHOME_CONTROL_REBOOT, //重启
+    NET_EHOME_CONTROL_RESTORECONFIG, //恢复默认参数
+    NET_EHOME_CONTROL_SCREENOPEN, //屏幕开
+    NET_EHOME_CONTROL_SCREENCLOSE, //屏幕关
+    NET_EHOME_CONTROL_PLANCTRL, //音量和定时开关机计划
+    NET_EHOME_CONTROL_CANCELINSERT, //取消插播
+    NET_EHOME_CONTROL_PUBLISH_STATE_SHOW, //终端发布进度显示
+    NET_EHOME_CONTROL_PUBLISH_STATE_HIDE, //终端发布进度隐藏
+};
+
+/*插播的类型,插播素材或者节目*/
+enum NET_EHOME_PROGRAM_INSERT_TYPE
+{
+    NET_EHOME_INSERT_TYPE_MATERIAL = 1,
+    NET_EHOME_INSERT_TYPE_PROGRAM,
+};
+
+/*位置坐标*/
+typedef struct tagNET_EHOME_POSITION_INFO
+{
+    DWORD dwPositionX;
+    DWORD dwPositionY;
+    DWORD dwHeight;
+    DWORD dwWidth;
+}NET_EHOME_POSITION_INFO, *LPNET_EHOME_POSITION_INFO;
+
+//字符效果
+typedef struct
+{
+    DWORD   dwFontSize; //字体大小
+    DWORD   dwFontColor; //字体颜色
+    DWORD   dwBackColor; //背景颜色
+    DWORD   dwBackTransparent; //透明度
+    BOOL    bSubtitlesEnabled; //使能字符显示模式
+    BYTE    szScrollDirection[32]; //滚动方向,left,right,up,down
+    DWORD   dwScrollSpeed;//滚动速度
+}NET_EHOME_CHAR_EFFECT;
+
+/* 插播效果 */
+typedef struct
+{
+    NET_EHOME_CHAR_EFFECT struCharEffect; //字符效果
+    DWORD   dwPageTime; //页面时间
+    DWORD   dwScrollSpeedWeb; //页面滚动速度
+}NET_EHOME_INSERT_EFFECT;
+
+/*插播素材或者节目的信息*/
+typedef struct tagNET_EHOME_INSERT_TEXT_INFO
+{
+    DWORD   dwTextNo; //插播的文件索引,素材ID或者节目ID
+    BYTE    szPlayMode[32]; //播放模式,byTime或byEndTime
+    DWORD   dwCountNum; //播放次数,暂时不支持
+    DWORD   dwPlayDuration; //播放时间
+    BYTE    playEndTime[32]; //按照结束时间进行插播
+    DWORD   dwTextSeq; //用于判断文件ID对应的文件是否一致
+}NET_EHOME_INSERT_TEXT_INFO, *LPNET_EHOME_INSERT_TEXT_INFO;
+
+/* 坐标模式 */
+enum NET_EHOME_POS_MODE
+{
+    NET_EHOME_POS_MODE_ILLEGAL = 0,
+    NET_EHOME_POS_MODE_STANDARD = 1,//基准坐标1920*1920
+    NET_EHOME_POS_MODE_RESOLUTION = 2,//分辨率坐标
+};
+
+/* 插播参数 */
+typedef struct tagNET_EHOME_INSERT_INFO
+{
+    DWORD   dwInsertType; //NET_EHOME_PROGRAM_INSERT_TYPE
+    NET_EHOME_INSERT_TEXT_INFO struMaterialInfo;
+    NET_EHOME_INSERT_TEXT_INFO struProgramInfo;
+    NET_EHOME_POSITION_INFO struPosInfo;
+    NET_EHOME_INSERT_EFFECT struInsertEffect;
+}NET_EHOME_INSERT_INFO, *LPNET_EHOME_INSERT_INFO;
+
+/* 插播参数V20 */
+typedef struct tagNET_EHOME_INSERT_INFO_V20
+{
+    DWORD   dwInsertType; //NET_EHOME_PROGRAM_INSERT_TYPE
+    NET_EHOME_INSERT_TEXT_INFO struMaterialInfo;
+    NET_EHOME_INSERT_TEXT_INFO struProgramInfo;
+    NET_EHOME_POSITION_INFO struPosInfo;
+    NET_EHOME_INSERT_EFFECT struInsertEffect;
+    DWORD   dwPosMode; //坐标模式,参见枚举NET_EHOME_POS_MODE
+    BYTE    byRes[64];
+}NET_EHOME_INSERT_INFO_V20, *LPNET_EHOME_INSERT_INFO_V20;
+
+enum NET_EHOME_PLANCTRL_TYPE
+{
+    NET_EHOME_CONTROL_SWITCHPLAY = 1, //定时开关机对应的EHome命令
+    NET_EHOME_CONTROL_VOLUMEPLAY, //音量对应的EHome命令
+    NET_EHOME_CONTROL_INPUTPLAY, //定时输入计划是否启用对应的的EHome命令
+};
+
+/*定时计划控制*/
+typedef struct tagNET_EHOME_PLAY_CTRLPARAM
+{
+    NET_EHOME_PLANCTRL_TYPE enumPlanType; //控制的类型
+    BOOL    bEnable; //是否使能
+}NET_EHOME_PLAN_CTRLPARAM, *LPNET_EHOME_PLAY_CTRLPARAM;
+
+/* 终端控制 */
+typedef struct tagNET_EHOME_TERMINAL_CONTROL
+{
+    DWORD   dwControlType; //NET_EHOME_CONTROL_TYPE 控制命令的类型
+    NET_EHOME_INSERT_INFO struInsertInfo; //插播相关的参数
+    NET_EHOME_PLAN_CTRLPARAM struPlanCtrl; //信息发布终端的定时计划控制
+    DWORD   dwConnPort; //数据传输端口,暂时没使用
+}NET_EHOME_TERMINAL_CONTROL, *LPNET_EHOME_TERMINAL_CONTROL;
+
+/* 终端控制V20 */
+typedef struct tagNET_EHOME_TERMINAL_CONTROL_V20
+{
+    DWORD   dwControlType; //NET_EHOME_CONTROL_TYPE 控制命令的类型
+    NET_EHOME_INSERT_INFO_V20 struInsertInfo; //插播相关的参数
+    NET_EHOME_PLAN_CTRLPARAM struPlanCtrl; //信息发布终端的定时计划控制
+    DWORD   dwConnPort; //数据传输端口,暂时没使用
+    BYTE    byRes[64];
+}NET_EHOME_TERMINAL_CONTROL_V20, *LPNET_EHOME_TERMINAL_CONTROL_V20;
+
+//文字消息的内容
+typedef struct tagNET_EHOME_TEXT_MESSAGE
+{
+    DWORD   dwId;//文字消息唯一索引
+    BYTE    szMsgName[NET_EHOME_MAX_NAME_LEN]; //消息名称
+    BYTE    szContent[NET_EHOME_MAX_TEXT_CONTENT_NUM]; //消息内容
+    BYTE    szBeginTime[NET_EHOME_MAX_TYPE_LEN]; //消息开始插播时间
+    BYTE    szEndTime[NET_EHOME_MAX_TYPE_LEN]; //消息插播结束时间
+}NET_EHOME_TEXT_MESSAGE, *LPNET_EHOME_TEXT_MESSAGE;
+
+//插播文字消息
+typedef struct tagNET_EHOME_INSERT_CHARACTER
+{
+    DWORD   dwMessageCnt;
+    NET_EHOME_TEXT_MESSAGE struTextMessage[NET_EHOME_MAX_TEXT_MESSAGE_NUM];
+    BYTE    szMsgPos[NET_EHOME_MAX_TYPE_LEN]; //消息位置,顶部,中部,底部,自定义
+    NET_EHOME_POSITION_INFO struPosition; //消息自定义位置,只有msgPos为自定义时有效
+    NET_EHOME_CHAR_EFFECT struCharEffect; /* 字符效果 */
+}NET_EHOME_INSERT_CHARACTER, *LPNET_EHOME_INSERT_CHARACTER;
+
+typedef enum
+{
+    POWER_ON = 1, //开机
+    POWER_OFF, //关机
+}NET_EHOME_POWER_ONOFF;
+
+typedef enum
+{
+    INVALID_PLAN = 0,
+    DAYLY_PLAN, /*日计划*/
+    WEEKLY_PLAN, /*周计划*/
+    SELF_DEF_PLAN, /*自定义计划*/
+    CIRCLE_PLAN, /*轮播*/
+}NET_EHOME_PLAY_SCHEDULE_TYPE1;
+
+typedef enum
+{
+    INVALID_DAY = 0,
+    MONDAY,
+    TUESDAY,
+    WEDNESDAY,
+    THURSDAY,
+    FRIDAY,
+    SATURDAY,
+    SUNDAY,
+}NET_EHOME_DAY_OF_WEEK1;
+
+/*具体的配置信息*/
+typedef struct
+{
+    DWORD   dwId; /*标示第几个开关机配置节点*/
+    DWORD   dwSwitchType; /*开关机类型,开机还是关机,1开机,2关机*/
+    DWORD   dwSwitchDate; /*开机或者关机的日期*/
+    DWORD   dwSwitchTime; //开机或者关机的时间,235959 等价于23:59:59
+}NET_EHOME_SWITCH_PLAN, *LPNET_EHOME_SWITCHE_PLAN;
+
+//定时开关机日计划
+typedef struct
+{
+    DWORD   dwDayPlanCnt; /*一天有几个开关机节点*/
+    NET_EHOME_SWITCH_PLAN struDayPlan[16];
+}NET_EHOME_SWITCH_DAILY_PLAN, *LPNET_EHOME_SWITCH_DAILY_PLAN;
+
+typedef struct
+{
+    DWORD  dwId; /*标示第几天*/
+    NET_EHOME_DAY_OF_WEEK1 enumDayOfWeek; /*标示具体一周中的哪一天*/
+    NET_EHOME_SWITCH_DAILY_PLAN struDayOfWeekPlan; //日计划
+}NET_EHOME_SWITCHE_DAY_OF_WEEK_PLAN, *LPNET_EHOME_SWITCH_DAY_OF_WEEK_PLAN;
+
+//周计划
+typedef struct
+{
+    DWORD   dwWeekPlanCnt; /*一周有几天的定时计划*/
+    NET_EHOME_SWITCHE_DAY_OF_WEEK_PLAN struWeekPlan[7];
+}NET_EHOME_SWITCH_WEEKLY_PLAN, *LPNET_EHOME_SWITCH_WEEKLY_PLAN;
+
+//发送给终端的定时开关机参数结构
+typedef struct
+{
+    NET_EHOME_PLAY_SCHEDULE_TYPE1 enumPlanType; //计划类型,周计划还是日计划
+    union
+    {
+        NET_EHOME_SWITCH_DAILY_PLAN struDailyPlan; //每天的定时计划
+        NET_EHOME_SWITCH_WEEKLY_PLAN struWeeklyPlan; //每周的定时计划
+    }unionSwitchPlan;
+}NET_EHOME_SWITCH_PLAN_PARAM, *LPNET_EHOME_SWITCH_PLAN_PARAM;
+
+/*具体的音量参数*/
+typedef struct
+{
+    DWORD   dwId; /*用来标示第几个音量配置*/
+    DWORD   dwVolumeValue; //音量的数值
+    DWORD   dwVolumeBeginDate; //音量的开始日期
+    DWORD   dwVolumeBeginTime; //音量的开始时间235959等价于23:59:59
+    DWORD   dwVolumeEndDate; //音量的数据日期
+    DWORD   dwVolumeEndTime; //音量结束时间
+}NET_EHOME_VOLUME_PLAN, *LPNET_EHOME_VOLUME_PLAN;
+
+/*音量天计划*/
+typedef struct
+{
+    DWORD   dwDayPlanCnt;
+    NET_EHOME_VOLUME_PLAN struDayPlan[8]; //每一天的音量计划
+}NET_EHOME_VOLUME_DAILY_PLAN, *LPNET_EHOME_VOLUME_DAILY_PLAN;
+
+typedef struct
+{
+    DWORD   dwId;
+    NET_EHOME_DAY_OF_WEEK1 enumDayOfWeek; //一周中的哪一天
+    NET_EHOME_VOLUME_DAILY_PLAN struDayOfWeekPlan;
+}NET_EHOME_VOLUME_DAY_OF_WEEK_PLAN, *LPNET_EHOME_VOLUME_DAY_OF_WEEK_PLAN;
+
+/*音量周计划*/
+typedef struct
+{
+    DWORD   dwWeekPlanCnt;
+    NET_EHOME_VOLUME_DAY_OF_WEEK_PLAN struWeekPlan[7];
+}NET_EHOME_VOLUME_WEEKLY_PLAN, *LPNET_EHOME_VOLUME_WEEKLY_PLAN;
+
+//发送给终端的定时调节音量参数结构
+typedef struct
+{
+    NET_EHOME_PLAY_SCHEDULE_TYPE1 enumPlanType;
+    union
+    {
+        NET_EHOME_VOLUME_DAILY_PLAN struDailyPlan; //每天的定时计划
+        NET_EHOME_VOLUME_WEEKLY_PLAN struWeeklyPlan; //每周的定时计划
+    }unionVolumePlan;
+
+}NET_EHOME_VOLUME_PLAN_PARAM, *LPNET_EHOME_VOLUME_PLAN_PARAM;
+
+/*定时输入切换,某个时间段,具体的计划参数*/
+typedef struct tagNET_EHOME_INPUT_DAY_PLAN
+{
+    DWORD   dwId;
+    BYTE    byInputType[32]; //输入类型,HDMI,InfoPublish,VGA
+    DWORD   dwBeginDate; //年月日转换成十进制
+    DWORD   dwBeginTime; //235959 等价于23:59:59
+    DWORD   dwEndDate; //定时输入切换开始时间
+    DWORD   dwEndTime; //定时输入切换结束时间
+}NET_EHOME_INPUT_DAY_PLAN, *LPNET_EHOME_INPUT_DAY_PLAN;
+
+/* 信息发布平台HDMI和信息发布切换日计划 */
+typedef struct tagNET_EHOME_INPUT_DAILY_PLAN
+{
+    DWORD   dwDayPlanCnt; //一天多少个定时输入切换
+    NET_EHOME_INPUT_DAY_PLAN struDayPlan[8]; //最多支持8个
+}NET_EHOME_INPUT_DAILY_PLAN, *LPNET_EHOME_INPUT_DAILY_PLAN;
+
+/*HDMI和信息发布切换一周中某一天的计划*/
+typedef struct tagNET_EHOME_INPUT_DAY_OF_WEEK_PLAN
+{
+    DWORD   dwId;
+    NET_EHOME_DAY_OF_WEEK1 enumDayOfWeek; //周
+    NET_EHOME_INPUT_DAILY_PLAN struDayOfWeekPlan;
+}NET_EHOME_INPUT_DAY_OF_WEEK_PLAN, *LPNET_EHOME_INPUT_DAY_OF_WEEK_PLAN;
+
+/* 信息发布平台HDMI和信息发布切换周计划 */
+typedef struct tagNET_EHOME_INPUT_WEEKLY_PLAN
+{
+    DWORD   dwWeekPlanCnt;
+    NET_EHOME_INPUT_DAY_OF_WEEK_PLAN struWeekPlan[7]; //7天
+}NET_EHOME_INPUT_WEEKLY_PLAN, *LPNET_EHOME_INPUT_WEEKLY_PLAN;
+
+/* 信息发布平台HDMI和信息发布切换自定义计划 */
+typedef struct tagNET_EHOME_INPUT_SELF_PLAN
+{
+    DWORD   dwSelfPlanCnt;
+    NET_EHOME_INPUT_DAY_PLAN struSelfPlan[8];
+}NET_EHOME_INPUT_SELF_PLAN, *LPNET_EHOME_INPUT_SELF_PLAN;
+
+/* HDMI和信息发布切换计划 */
+typedef struct tagNET_EHOME_INPUT_PLAN
+{
+    DWORD   dwId;
+    BYTE    byPlanType[32];
+    union
+    {
+        NET_EHOME_INPUT_DAILY_PLAN struDailyPlan;
+        NET_EHOME_INPUT_WEEKLY_PLAN struWeeklyPlan;
+    }unionInputPlan;
+}NET_EHOME_INPUT_PLAN, *LPNET_EHOME_INPUT_PLAN;
+
+/*终端的播放参数*/
+typedef struct tagNET_EHOME_DISPLAY_PARAM
+{
+    DWORD   dwR; //显示的颜色,红
+    DWORD   dwG;
+    DWORD   dwB;
+    DWORD   dwOffsetR; //红偏移
+    DWORD   dwOffsetG;
+    DWORD   dwOffsetB;
+    DWORD   dwBrightnessLevel; //亮度
+    DWORD   dwContrastLevel; //对比度
+    DWORD   dwSharpnessLevel; //锐度
+    DWORD   dwSaturationLevel; //饱和度
+    DWORD   dwHueLevel; //色调,上边的参数暂时不支持,可以不用赋值
+    /*自动亮度调节*/
+    BOOL    bAutoLightEnable; //自动亮度调节(2.0新增)
+    DWORD   dwLightMode; //自动亮度的值(2.0新增,有个范围的)
+    DWORD   dwBackLightLevel; //背光参数
+    BOOL    bBootLogoEnabled; //开机Logo
+    DWORD   dwScreenVolume; //屏幕音量,暂时不支持
+    //垫片信息
+    BOOL    bDefaultScheduleEnable; //垫片日程是否使能
+    DWORD   dwDefaultScheduleId; //垫片日程的ID
+    BYTE    byDefaultScheduleName[32]; //垫片日程的名字
+    BOOL    bTemperaturenable; //温度安全是否启用(2.0新增)
+    DWORD   bSecurity; //温度的安全值
+    DWORD   bProtectValue; //温度的保护值
+}NET_EHOME_DISPLAY_PARAM, *LPNET_EHOME_DISPLAY_PARAM;
+
+/*终端密码参数*/
+typedef struct tagNET_EHOME_PASSWORD_CFG
+{
+    BYTE    szOldPwd[32]; //老的密码
+    BYTE    szNewPwd[32]; //新密码
+}NET_EHOME_PASSWORD_CFG, *LPNET_EHOME_PASSWORD_CFG;
+
+/*终端的参数*/
+typedef struct tagNET_EHOME_PLAYER_PARAM
+{
+    BYTE    szCfgType[32]; //volume,light,logo,defaultSchedule,password,temperature,allParam
+    DWORD   dwplayerVolume; //播放音量
+    NET_EHOME_DISPLAY_PARAM struDisplayParam; //终端的播放参数
+    NET_EHOME_PASSWORD_CFG struPasswordCfg; //终端的密码
+}NET_EHOME_PLAYER_PARAM, *LPNET_EHOME_PLAYER_PARAM;
+
+/*终端设备的基本参数*/
+typedef struct tagNET_EHOME_DEV_DEFAULT_PARAM
+{
+    BOOL    bAutoLightEnable; //自动亮度调节(新增)
+    DWORD   dwLightMode; //亮度值(新增)
+    DWORD   dwBackLightLevel; //背光参数
+    DWORD   dwVolume; //音量
+    BOOL    bEnableStartLogo; //开机LOGO是否使能
+    BOOL    bEnableVolumeTiming; //定时音量计划是否使能
+    BOOL    bEnablePowerTiming; //定时开关机计划是否使能
+    BOOL    bDefaultScheduleEnable; //垫片是否使能
+    DWORD   dwDefaultScheduleId; //垫片日程的id
+    BYTE    szDefaultScheduleName[32]; //垫片日程的名字
+    BOOL    bTemperaturenable; //温度安全是否启用(2.0新增)
+    DWORD   dwSecurity; //温度的安全值
+    DWORD   dwProtectValue; //温度的保护值
+}NET_EHOME_DEV_DEFAULT_PARAM, *LPNET_EHOME_DEV_DEFAULT_PARAM;
+
+//终端的IP对应的网关
+typedef struct tagNET_EHOME_TERM_DEFAULT_GATEWAY
+{
+    BYTE    szIpAddress[32]; //Ipv4的网关
+    BYTE    szIpv6Address[32]; //Ipv6的网关
+}NET_EHOME_TERM_DEFAULT_GATEWAY, *LPNET_EHOME_TERM_DEFAULT_GATEWAY;
+
+//终端的ip地址信息
+typedef struct tagNET_EHOME_TERM_IP_ADDRESS
+{
+    BYTE    szIpVersion[32]; //v4,v6
+    BYTE    szIpAddress[32]; //IP地址
+    BYTE    szSubnetMask[32]; //子网掩码
+    BYTE    szIpv6Address[32]; //Ipv6地址,暂时不支持
+    BYTE    szBitMask[32]; //Ipv6网关
+    NET_EHOME_TERM_DEFAULT_GATEWAY strDefaultGateway;
+}NET_EHOME_TERM_IP_ADDRESS, *LPNET_EHOME_TERM_IP_ADDRESS;
+
+enum NET_EHOME_TIME_ZONE
+{
+    NET_EHOME_ZONE_GMT_LOCAL, // 使用当前时区配置
+    NET_EHOME_ZONE_GMT_MINUS_12,
+    NET_EHOME_ZONE_GMT_MINUS_11,
+    NET_EHOME_ZONE_GMT_MINUS_10,
+    NET_EHOME_ZONE_GMT_MINUS_9,
+    NET_EHOME_ZONE_GMT_MINUS_8,
+    NET_EHOME_ZONE_GMT_MINUS_7,
+    NET_EHOME_ZONE_GMT_MINUS_6,
+    NET_EHOME_ZONE_GMT_MINUS_5,
+    NET_EHOME_ZONE_GMT_MINUS_430,
+    NET_EHOME_ZONE_GMT_MINUS_4,
+    NET_EHOME_ZONE_GMT_MINUS_330,
+    NET_EHOME_ZONE_GMT_MINUS_3,
+    NET_EHOME_ZONE_GMT_MINUS_2,
+    NET_EHOME_ZONE_GMT_MINUS_1,
+    NET_EHOME_ZONE_GMT_0, //UTC 时区
+    NET_EHOME_ZONE_GMT_PLUS_1,
+    NET_EHOME_ZONE_GMT_PLUS_2,
+    NET_EHOME_ZONE_GMT_PLUS_3,
+    NET_EHOME_ZONE_GMT_PLUS_330,
+    NET_EHOME_ZONE_GMT_PLUS_4,
+    NET_EHOME_ZONE_GMT_PLUS_430,
+    NET_EHOME_ZONE_GMT_PLUS_5,
+    NET_EHOME_ZONE_GMT_PLUS_530,
+    NET_EHOME_ZONE_GMT_PLUS_545,
+    NET_EHOME_ZONE_GMT_PLUS_6,
+    NET_EHOME_ZONE_GMT_PLUS_630,
+    NET_EHOME_ZONE_GMT_PLUS_7,
+    NET_EHOME_ZONE_GMT_PLUS_8, //东八区
+    NET_EHOME_ZONE_GMT_PLUS_9,
+    NET_EHOME_ZONE_GMT_PLUS_930,
+    NET_EHOME_ZONE_GMT_PLUS_10,
+    NET_EHOME_ZONE_GMT_PLUS_11,
+    NET_EHOME_ZONE_GMT_PLUS_12,
+    NET_EHOME_ZONE_GMT_PLUS_13,
+};
+
+/* 时间同步参数 */
+typedef struct tagNET_EHOME_TIME_ADJUST_PARAM
+{
+    DWORD   dwTimeZone; //参考NET_EHOME_TIME_ZONE
+    BYTE    szTime[32]; // YYYY-MM-DD HH:MM:SS
+}NET_EHOME_TIME_ADJUST_PARAM, *LPNET_EHOME_TIME_ADJUST_PARAM;
+
+//终端ADB控制信息
+typedef struct tagNET_EHOME_ADB_DEBUG
+{
+    BOOL    bAdbEnable;
+    BYTE    bySecreKey[128];
+}NET_EHOME_ADB_DEBUG, *LPNET_EHOME_ADB_DEBUG;
+
+//终端时区信息
+typedef struct tagNET_EHOME_TERM_TIME_ZONE
+{
+    BYTE    szTimeZone[32]; //时区信息,GMT+08
+}NET_EHOME_TERM_TIME_ZONE, *LPNET_EHOME_TERM_TIME_ZONE;
+
+/*终端的discovery模式参数,SADP是否使能*/
+typedef struct tagNET_EHOME_DISCOVERY_MODE
+{
+    BOOL    bSadpMode;
+}NET_EHOME_DISCOVERY_MODE, *LPNET_EHOME_DISCOVERY_MODE;
+
+typedef enum
+{
+    ADDRTYPE_IPV4 = 0,
+    ADDRTYPE_IPV6,
+    HOSTNAME,
+}NET_EHOME_ADDRFORMAT_CMD;
+
+typedef struct tagNET_EHOME_PUBLISH_SERVERADDR
+{
+    NET_EHOME_ADDRFORMAT_CMD enumAddressingFormatType;
+    BYTE    szIpAddress[NET_EHOME_MAX_TYPE_LEN];
+    BYTE    szIpv6Address[NET_EHOME_MAX_TYPE_LEN];
+    BYTE    szHostName[NET_EHOME_MAX_TYPE_LEN];
+    DWORD   dwPortNo;
+    BYTE    szUserName[NET_EHOME_MAX_TYPE_LEN];
+    BYTE    szPassword[NET_EHOME_MAX_TYPE_LEN];
+    BOOL    bRegStatus;
+}NET_EHOME_PUBLISH_SERVERADDR, *LPNET_EHOME_PUBLISH_SERVERADDR;
+
+typedef enum
+{
+    NET_EHOME_NORMAL_IPC, //普通IPC
+    NET_EHOME_SMART_PASSENGER_IPC, //客流量IPC
+    NET_EHOME_SMART_VALID_PASSENGER_IPC, //有效客流量IPC(人脸识别)
+}NET_EHOME_IPC_TYPE;
+
+typedef enum
+{
+    NET_EHOME_HOST_MODE, //主机名
+    NET_EHOME_IP_MODE, //IP地址
+}NET_EHOME_ADDRESS_TYPE;
+
+/*取流协议*/
+typedef enum
+{
+    NET_EHOME_TCP = 1,
+    NET_EHOME_UDP,
+    NET_EHOME_MCAST,
+}NET_EHOME_TRANSMINT_PROTOCAL;
+
+/*码流类型*/
+typedef enum
+{
+    NET_EHOME_MAIN = 1, //主码流
+    NET_EHOME_SUB, //子码流
+    NET_EHOME_THIRD,
+}NET_EHOME_STREAM_TYPE;
+
+/* 单个IPC信息 */
+typedef struct tagNET_EHOME_IPC_INFO
+{
+    NET_EHOME_IPC_TYPE enumIPCType; //参考NET_EHOME_IPC_TYPE
+    DWORD   dwId;
+    DWORD   chanNum; //ipc关联的节目中的通道号
+    NET_EHOME_ADDRESS_TYPE enumAddressType; //IP地址类型,参考NET_EHOME_ADDRESS_TYPE
+    BYTE    szIpcState[32]; //online和offline两种状态
+    BYTE    szHostName[32]; //主机名
+    BYTE    szIpVersion[16]; //v4或者v6
+    BYTE    szIpAddress[32]; //ipv4地址
+    BYTE    szIpv6Address[32]; //ipV6地址
+    DWORD   dwPortNo; //ipc的端口号
+    DWORD   dwIpcChanNum; //ipc通道号
+    BYTE    szUserName[52]; //ipc登陆用户名
+    BYTE    szPassWord[32]; //ipc登陆密码
+    NET_EHOME_TRANSMINT_PROTOCAL enumTransmitProtocol;//取流协议,参考NET_EHOME_TRANSMINT_PROTOCAL
+    NET_EHOME_STREAM_TYPE enumStreamType; //码流类型,参考NET_EHOME_STREAM_TYPE
+}NET_EHOME_IPC_INFO, *LPNET_EHOME_IPC_INFO;
+
+/* 终端关联IPC信息 */
+typedef struct tagNET_EHOME_RELATE_IPC_INFO
+{
+    DWORD   dwIpcNum; //IPC个数,添加了几个IPC
+    NET_EHOME_IPC_INFO struIpcInfo[6];
+}NET_EHOME_RELATE_IPC_INFO, *LPNET_EHOME_RELATE_IPC_INFO;
+
+/* 获取设备工作状态 */
+typedef struct tagNET_EHOME_DEV_WORK_STATUS
+{
+    BYTE    byIdentifyCode[32]; //终端序列号
+    DWORD   dwCpuUsage; //cpu利用率
+    DWORD   dwMemTotal; //内存总大小
+    DWORD   dwMemUsed;
+    DWORD   dwDiskTotal; //磁盘总容量
+    DWORD   dwDiskUsed; //磁盘利用率
+    DWORD   dwTemperature; //终端温度	
+    BYTE    bySoftwareVersion[32]; //软件版本号
+    BYTE    byDspwareVersion[32]; //DSP版本号
+    BYTE    byHardwareVersion[32]; //硬件版本号
+    BYTE    bySystemVersion[32]; //系统版本号	
+    BYTE    byMacAddress[2][32]; //最大支持2个网卡	
+    BOOL    bySwitchEnable; //定时开关机是否使能   
+    BOOL    byVolumeEnable; //定时音量是否使能
+    DWORD   dwRelateScheNo; //日程id
+    BYTE    byScheName[100]; //终端正在播放的日程名字
+    BYTE    byInstallType[32];//vertical or horizontal,横屏or竖屏
+    DWORD   byResWidth; //分辨率
+    DWORD   byResHeight; //分辨率
+}NET_EHOME_DEV_WORK_STATUS, *LPNET_EHOME_DEV_WORK_STATUS;
+
+//终端截屏
+typedef struct tagNET_EHOME_SCREEN_SHOT
+{
+    DWORD   dwServerPort; //服务器端口号
+    DWORD   dwClientFdIndex; //客户端fd索引
+}NET_EHOME_SCREEN_SHOT, *LPNET_EHOME_SCREEN_SHOT;
+
+/* 升级命令tcp链路协商 */
+typedef struct tagNET_EHOME_UPGRADE_CONN_PARAM
+{
+    BYTE    szServerIP[32]; //服务器IP地址
+    DWORD   dwServerPort; //服务器端口号
+}NET_EHOME_UPGRADE_CONN_PARAM, *LPNET_EHOME_UPGRADE_CONN_PARAM;
+
+//终端回应升级状态结构体
+typedef struct tagNET_EHOME_TERMINAL_UPG_ST_REPORT
+{
+    DWORD   dwLength; //结构体总长度
+    DWORD   dwCheckSum; //校验和
+    DWORD   dwRetVal; //1000升级成功,1001正在升级,1002升级失,1003解压缩失败,1004 APK版本不匹配,1005 ROM版本不匹配
+    DWORD   dwUpgradPercent;
+}NET_EHOME_TERMINAL_UPG_ST_REPORT, *LPNET_EHOME_TERMINAL_UPG_ST_REPORT;
+
+/* 终端名称 */
+typedef struct tagNET_EHOME_TERMINAL_NAME
+{
+    BYTE    szTermName[NET_EHOME_MAX_TERM_NAME_LEN];
+}NET_EHOME_TERMINAL_NAME, *LPNET_EHOME_TERMINAL_NAME;
+
+/* 终端组件信息 */
+typedef struct tagNET_EHOME_SYSCOMPONENT_REDUCED_ADDR
+{
+    BYTE    szComponentName[32]; //组件名称,例如:SDK    
+    BYTE    szComponentPkgName[32]; //组件包名,例如:com.hikvision.sdk,不需要在客户端显示
+    BYTE    szComponentVersion[32]; //组件版本,例如:V2.0.2 build 20180705
+    DWORD   dwIsEnableAutoStart; //是否开机自启动,暂时不需要在客户端显示
+    DWORD   dwIsSupportUpgrade; //是否支持远程升级  
+    BYTE	byRes[20];
+}NET_EHOME_SYSCOMPONENT_REDUCED_ADDR, *LPNET_EHOME_SYSCOMPONENT_REDUCED_ADDR;
+
+typedef struct tagNET_EHOME_COMPONENT_GROUP_INFO
+{
+    DWORD   dwComponentNum; /*系统组件个数*/
+    NET_EHOME_SYSCOMPONENT_REDUCED_ADDR struSysComponentAddr[6]; /*组件信息*/
+    BYTE    byRes[20];
+}NET_EHOME_COMPONENT_GROUP_INFO, *LPNET_EHOME_COMPONENT_GROUP_INFO;
+
+//素材替换
+typedef struct tagNET_EHOME_REPLACE_MATERIAL
+{
+    BYTE    szServerIP[NET_EHOME_MAX_TYPE_LEN]; //服务器IP
+    DWORD   dwServerPort; //服务器端口
+    DWORD   dwMaterialId; //素材ID
+    DWORD   dwMaterialSeq; //素材Seq
+}NET_EHOME_REPLACE_MATERIAL, *LPNET_EHOME_REPLACE_MATERIAL;
+
+/* IPAG日程、插播、升级XML透传 */
+typedef struct tagNET_EHOME_POST_PUBLISH_XML
+{
+    BYTE    szServerIP[32]; //服务器IP
+    DWORD   szServerPort; //服务器的端口号
+    DWORD   dwTerminalID; //终端ID,返回进度时带上来  
+    DWORD   dwXmlUniqueSeq; //唯一xml标示
+    DWORD   dwXmlSizeH; //xml大小高32位
+    DWORD   dwXmlSizeL; //xml大小低32位
+    BYTE    byStorageId[128]; //xml文件存放位置
+    BYTE	byRes[16]; //保留字段
+}NET_EHOME_POST_PUBLISH_XML, *LPNET_EHOME_POST_PUBLISH_XML;
+
+/* 城市天气信息 */
+typedef struct tagNET_EHOME_WEATHER_INFO
+{
+    BYTE   byCityCode[32]; //城市编码
+    BYTE   byWeatherData[4 * 1024]; //天气数据
+}NET_EHOME_WEATHER_INFO, *LPNET_EHOME_WEATHER_INFO;
+
+/* 终端的序列号 */
+typedef struct tagNET_EHOME_IDENTIFICATION
+{
+    BYTE bySerialNumber[32]; //这个字段暂时没用
+    BYTE byIdentifyCode[32]; //终端的序列号,即特征码
+}NET_EHOME_IDENTIFICATION, *LPNET_EHOME_IDENTIFICATION;
+
+/* 终端信息 */
+typedef struct tagNET_EHOME_TERMINAL_INFO
+{
+    NET_EHOME_IDENTIFICATION struDevIdentify;
+    DWORD  dwNetUintType;
+    BYTE   byDeviceID[NET_EHOME_MAX_TYPE_LEN];
+    BYTE	byPassWord[NET_EHOME_MAX_TYPE_LEN];
+    BYTE	byFirmWareVersion[NET_EHOME_MAX_TYPE_LEN];
+    BYTE	byLocalIP[NET_EHOME_MAX_TYPE_LEN]; //终端通信IP
+    DWORD	dwLocalPort;
+    DWORD	dwDevType;
+    DWORD	dwManufacture; //0-hikvision
+    BOOL	bDetectPackage;	//1-探测包,0-注册包
+    BOOL	bReliableTrans;	//1-支持可靠传输,0-不支持可靠传输
+    BYTE   byServerUserName[NET_EHOME_MAX_NAME_LEN]; //服务器用户名
+    BYTE   byServerUserPassword[NET_EHOME_MAX_NAME_LEN]; //服务器密码
+    BYTE   byTerminalName[NET_EHOME_MAX_NAME_LEN]; //来注册的终端的名字
+}NET_EHOME_TERMINAL_INFO, *LPNET_EHOME_TERMINAL_INFO;
+
+/* 信息发布服务器信息 */
+typedef struct tagNET_EHOME_RELEASE_SERVER_INFO
+{
+    DWORD  dwKeepAliveSeconds; //保活时间,默认50s
+    BYTE	byAlarmServerIP[32];
+    DWORD	dwAlarmServerPort;
+    DWORD	dwAlarmServerType; //通信类型,0-TCP, 1-UDP,默认为0
+    DWORD	dwAlarmServerTcpPort; //服务器为终端申请的报警端口
+    BYTE	byNtpServerIP[32];
+    DWORD	dwNtpServerPort;
+    DWORD	dwNtpInterval;
+    BYTE	byPicServerIP[32];
+    DWORD	dwPicServerPort;
+    DWORD	dwPicServerType;
+    BYTE	byBlackListAddr[32];
+    BYTE	byBlackListName[32];
+    DWORD	dwBlackListPort;
+    BYTE	byBlackListUser[32];
+    BYTE	byBlackListPasswd[32];
+    DWORD	dwTranserialSvrPort;
+    BOOL	bReliableTransmission;
+}NET_EHOME_RELEASE_SERVER_INFO, *LPNET_EHOME_RELEASE_SERVER_INFO;
+
+//终端截屏(公安平台专用)
+typedef struct tagNET_EHOME_SCREEN_SHOT_EX
+{
+    DWORD  dwServerPort; //服务器端口号
+    DWORD  dwClientFdIndex; //客户端fd索引
+    BYTE   szKmsURL[256]; //终端要上传到KMS的URL地址
+}NET_EHOME_SCREEN_SHOT_EX, *LPNET_EHOME_SCREEN_SHOT_EX;
+
+//终端截屏返回结构
+typedef struct tagNET_EHOME_SCREEN_SHOT_RET
+{
+    unsigned int    dwConnfd; //终端和服务器异步通信套接字
+    unsigned int    dwSeq; //终端和服务器异步交互的标识
+    char    szUUID[64]; //截屏图片的uuid唯一标示
+    char    szPicURL[256]; //截图在KMS服务器上的URL地址
+}NET_EHOME_SCREEN_SHOT_RET, *LPNET_EHOME_SCREEN_SHOT_RET;
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_STDBinaryCfg(LONG lUserID, LONG dwCommand, NET_EHOME_BINARY_SEND_DATA *pSendData, NET_EHOME_BINARY_RECV_DATA *pRecvData);
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_STDBinaryCtrl(LONG lUserID, LONG dwCommand, NET_EHOME_BINARY_SEND_DATA *pSendData);
+
+/** 兼容信息发布私有协议 end */
+
+NET_DVR_API LONG CALLBACK NET_ECMS_LongConfigCreate(LONG lUserlD, LPNET_EHOME_LONG_CFG_INPUT pLongCfgInput);
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_LongConfigSend(LONG lHandle, LPNET_EHOME_LONG_CFG_SEND pSend);
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_LongConfigDestory(LONG lHandle);
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_LongConfigGetSessionId(LONG iHandle, LONG *pSessionId);
+
+typedef struct tagNET_EHOME_ASYNC_RESP_CB_DATA
+{
+    void*  pOutBuffer;      //设备响应数据
+    DWORD  dwOutLen;       //设备响应数据长度
+    DWORD  dwErrorNo;      //SDK错误码
+    DWORD  dwHandle;       //消息句柄,唯一标识,匹配请求和响应
+    LONG  lUserID;  //用户ID
+    char byRes[32];
+}NET_EHOME_ASYNC_RESP_CB_DATA, *LPNET_EHOME_ASYNC_RESP_CB_DATA;
+
+typedef BOOL(CALLBACK * ASYNC_RESPONSE_CB)(LPNET_EHOME_ASYNC_RESP_CB_DATA lpData, void *pUser);
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_SetXmlConfigResponseCB(ASYNC_RESPONSE_CB fnCB, void *pUser);
+
+NET_DVR_API BOOL CALLBACK NET_ECMS_XMLConfigEx(LONG lUserID, NET_EHOME_XML_CFG * pXmlCfg, DWORD *dwHandle);
+
+#endif //_HC_EHOME_CMS_H_

+ 203 - 0
hc/incCn/HCEHomePublic.h

@@ -0,0 +1,203 @@
+#ifndef _HC_EHOME_PUBLIC_H_
+#define _HC_EHOME_PUBLIC_H_ 
+
+//多SDK公共定义
+#ifndef _HC_NET_SDK_H_
+
+/*******************平台相关的数据类型定义 begin**********************/    
+
+#if (defined(_WIN32)) //windows
+    #define NET_DVR_API  extern "C" __declspec(dllimport)
+    typedef  unsigned __int64 UINT64;
+#elif defined(__linux__) || defined(__APPLE__) //linux
+    typedef    unsigned int    DWORD;
+    typedef    unsigned short  WORD;
+    typedef    unsigned short  USHORT;
+    typedef    short           SHORT;
+    typedef    int             LONG;
+    typedef    unsigned char     BYTE;
+    #define    BOOL            int
+    typedef    unsigned int    UINT;
+    typedef    void*           LPVOID;
+    typedef    void*           HANDLE;
+    typedef    unsigned int*   LPDWORD; 
+    typedef    unsigned long long UINT64;
+
+    #ifndef    TRUE
+    #define    TRUE    1
+    #endif
+    #ifndef    FALSE
+    #define       FALSE 0
+    #endif
+    #ifndef    NULL
+    #define       NULL 0
+    #endif
+
+    #define __stdcall 
+    #define CALLBACK  
+
+    #define NET_DVR_API extern "C"
+#endif //linux
+
+/*******************平台相关的数据类型定义 end**********************/    
+
+/*******************全局错误码 begin**********************/
+#define NET_DVR_NOERROR                 0   //没有错误
+#define NET_DVR_PASSWORD_ERROR          1   //用户名密码错误
+#define NET_DVR_NOENOUGHPRI             2   //权限不足
+#define NET_DVR_NOINIT                  3   //没有初始化
+#define NET_DVR_CHANNEL_ERROR           4   //通道号错误
+#define NET_DVR_OVER_MAXLINK            5   //连接到DVR的客户端个数超过最大
+#define NET_DVR_VERSIONNOMATCH          6   //版本不匹配
+#define NET_DVR_NETWORK_FAIL_CONNECT    7   //连接服务器失败
+#define NET_DVR_NETWORK_SEND_ERROR      8    //向服务器发送失败
+#define NET_DVR_NETWORK_RECV_ERROR      9    //从服务器接收数据失败
+#define NET_DVR_NETWORK_RECV_TIMEOUT    10    //从服务器接收数据超时
+#define NET_DVR_NETWORK_ERRORDATA       11    //传送的数据有误
+#define NET_DVR_ORDER_ERROR             12    //调用次序错误
+#define NET_DVR_OPERNOPERMIT            13    //无此权限
+#define NET_DVR_COMMANDTIMEOUT          14    //DVR命令执行超时c
+
+#define NET_DVR_PARAMETER_ERROR         17  //参数错误
+
+#define NET_DVR_NOSUPPORT               23    //服务器不支持
+
+#define    NET_DVR_DVROPRATEFAILED         29  //DVR操作失败
+
+#define NET_DVR_DIR_ERROR               40    //路径错误
+#define NET_DVR_ALLOC_RESOURCE_ERROR    41  //资源分配错误
+#define NET_DVR_AUDIO_MODE_ERROR        42    //声卡模式错误
+#define NET_DVR_NOENOUGH_BUF            43    //缓冲区太小
+#define NET_DVR_CREATESOCKET_ERROR      44    //创建SOCKET出错
+#define NET_DVR_SETSOCKET_ERROR         45    //设置SOCKET出错
+#define NET_DVR_MAX_NUM                 46  //个数达到最大
+#define NET_DVR_USERNOTEXIST            47    //用户不存在
+
+#define NET_DVR_GETLOCALIPANDMACFAIL    53  //获得本地的IP地址或物理地址失败
+
+#define NET_DVR_VOICEMONOPOLIZE         69    //声卡被独占
+
+#define NET_DVR_CREATEDIR_ERROR         71    //建立日志文件目录失败
+#define NET_DVR_BINDSOCKET_ERROR        72    //绑定套接字失败
+#define NET_DVR_SOCKETCLOSE_ERROR       73    //socket连接中断,此错误通常是由于连接中断或目的地不可达
+#define NET_DVR_USERID_ISUSING          74    //注销时用户ID正在进行某操作
+#define NET_DVR_SOCKETLISTEN_ERROR      75    //监听失败
+
+#define NET_DVR_CONVERT_SDK_ERROR       85    //加载转码库失败
+
+#define NET_DVR_FUNCTION_NOT_SUPPORT_OS 98  //此功能不支持该操作系统
+
+#define NET_DVR_USE_LOG_SWITCH_FILE     103 //正在使用日志开关文件
+
+#define    NET_DVR_PACKET_TYPE_NOT_SUPPORT 105    //码流封装格式错误
+
+#define    NET_DVR_STREAM_ENCRYPT_CHECK_FAIL 130    //码流加密校验失败
+
+//语音对讲库错误码
+#define  NET_AUDIOINTERCOM_OK                   600 //无错误
+#define  NET_AUDIOINTECOM_ERR_NOTSUPORT         601 //不支持
+#define  NET_AUDIOINTECOM_ERR_ALLOC_MEMERY      602 //内存申请错误
+#define  NET_AUDIOINTECOM_ERR_PARAMETER         603 //参数错误
+#define  NET_AUDIOINTECOM_ERR_CALL_ORDER        604 //调用次序错误
+#define  NET_AUDIOINTECOM_ERR_FIND_DEVICE       605 //未发现设备
+#define  NET_AUDIOINTECOM_ERR_OPEN_DEVICE       606 //不能打开设备诶
+#define  NET_AUDIOINTECOM_ERR_NO_CONTEXT        607 //设备上下文出错
+#define  NET_AUDIOINTECOM_ERR_NO_WAVFILE        608 //WAV文件出错
+#define  NET_AUDIOINTECOM_ERR_INVALID_TYPE      609 //无效的WAV参数类型
+#define  NET_AUDIOINTECOM_ERR_ENCODE_FAIL       610 //编码失败
+#define  NET_AUDIOINTECOM_ERR_DECODE_FAIL       611 //解码失败
+#define  NET_AUDIOINTECOM_ERR_NO_PLAYBACK       612 //播放失败
+#define  NET_AUDIOINTECOM_ERR_DENOISE_FAIL      613 //降噪失败
+#define  NET_AUDIOINTECOM_ERR_UNKOWN            619 //未知错误
+
+#define NET_ERR_TERM_NAME_REPEAT                    1313  //终端名称重复
+#define NET_ERR_TERM_SERIAL_REPEAT                  1314  //终端序列号重复
+
+#define NET_SS_CLIENT_ERR_KMS_TOKEN_FAIL        3601//KMS图片上传协议,获取Token失败
+#define NET_SS_CLIENT_ERR_KMS_UPLOAD_FAIL       3602//KMS图片上传协议,上传失败
+#define NET_SS_CLIENT_ERR_CLOUD_POOLIST_FAIL    3603//云存储协议,获取资源池失败
+#define NET_SS_CLIENT_ERR_CLOUD_BESTNODE_FAIL   3604//云存储协议,获取最优节点失败
+
+/*******************全局错误码 begin**********************/    
+#define MAX_PASSWD_LEN      32
+#define NAME_LEN            32      //用户名长度
+
+#endif //_HC_NET_SDK_H_
+#define MAX_DEVICE_ID_LEN    256     //设备ID长度
+#define NET_EHOME_SERIAL_LEN 12
+#define MAX_MASTER_KEY_LEN 16
+#define MAX_TIME_LEN                32      //时间字符串长度
+#define MAX_URL_LEN_SS         4096    //图片服务器回调URL长度
+
+#define MAX_TIME_LEN                32      //时间字符串长度
+#define MAX_URL_LEN_SS         4096    //图片服务器回调URL长度
+
+typedef struct tagNET_EHOME_IPADDRESS
+{
+    char szIP[128]; 
+    WORD wPort;     //端口
+    char byRes[2];
+}NET_EHOME_IPADDRESS, *LPNET_EHOME_IPADDRESS;
+
+typedef struct tagNET_EHOME_ZONE
+{
+    DWORD dwX;          //X轴坐标
+    DWORD dwY;          //Y轴坐标
+    DWORD dwWidth;  //宽度
+    DWORD dwHeight;    //高度
+}NET_EHOME_ZONE, *LPNET_EHOME_ZONE;
+
+//本地配置
+typedef enum tagNET_EHOME_LOCAL_CFG_TYPE
+{
+    UNDEFINE = -1,   //暂时没有具体的定义
+    ACTIVE_ACCESS_SECURITY = 0, //设备主动接入的安全性
+    AMS_ADDRESS = 1,            //报警服务器本地回环地址
+    SEND_PARAM = 2,                 //发送参数配置
+    SET_REREGISTER_MODE = 3,        //设置设备重复注册模式
+    LOCAL_CFG_TYPE_GENERAL = 4     //通用参数配置
+}NET_EHOME_LOCAL_CFG_TYPE, *LPNET_EHOME_LOCAL_CFG_TYPE;
+
+typedef struct tagNET_EHOME_LOCAL_ACCESS_SECURITY
+{
+    DWORD   dwSize;
+    BYTE    byAccessSecurity;    //0-兼容模式(允许任意版本的协议接入),1-普通模式(只支持4.0以下版本,不支持协议安全的版本接入) 2-安全模式(只允许4.0以上版本,支持协议安全的版本接入)
+    BYTE    byRes[127];
+}NET_EHOME_LOCAL_ACCESS_SECURITY,*LPNET_EHOME_LOCAL_ACCESS_SECURITY;
+
+typedef struct tagNET_EHOME_AMS_ADDRESS
+{
+    DWORD dwSize;
+    BYTE  byEnable;  //0-关闭CMS接收报警功能,1-开启CMS接收报警功能
+    BYTE  byRes1[3];
+    NET_EHOME_IPADDRESS  struAddress;    //AMS本地回环地址
+    BYTE byRes2[32];
+}NET_EHOME_AMS_ADDRESS, *LPNET_EHOME_AMS_ADDRESS;
+
+typedef struct tagNET_EHOME_SEND_PARAM
+{
+    DWORD dwSize;
+    DWORD dwRecvTimeOut;    //接收超时时间,单位毫秒
+    BYTE  bySendTimes;      //报文发送次数,为了应对网络环境较差的情况下,丢包的情况,默认一次,最大3次
+    BYTE  byRes2[127];
+}NET_EHOME_SEND_PARAM, *LPNET_EHOME_SEND_PARAM;
+
+//Ehome5.0协议设备EhomeKey信息
+typedef struct tagNET_EHOME_DEV_SESSIONKEY
+{
+    BYTE   sDeviceID[MAX_DEVICE_ID_LEN];    				//设备ID/*256*/
+    BYTE   sSessionKey[MAX_MASTER_KEY_LEN];       //设备Sessionkey/*16*/
+} NET_EHOME_DEV_SESSIONKEY, *LPNET_EHOME_DEV_SESSIONKEY;
+
+typedef struct tagNET_EHOME_SET_REREGISTER_MODE
+{
+    DWORD dwSize;
+    DWORD dwReRegisterMode;    //设置设备重复注册模式,仅针对EHome2.0协议,若为0,表示在保活时间内设备重复注册,EHomeSDK接受,默认为此方式,若为1,表示在保活时间内,设备重复注册,不接受,回复设备403重复注册错误码
+}NET_EHOME_SET_REREGISTER_MODE, *LPNET_EHOME_SET_REREGISTER_MODE;
+typedef struct tagNET_EHOME_LOCAL_GENERAL_CFG
+{
+    BYTE byAlarmPictureSeparate;   //控制透传ISAPI报警数据和图片是否分离,0-不分离,1-分离(分离后走EHOME_ISAPI_ALARM回调返回)
+    BYTE byRes[127];    //保留
+}NET_EHOME_LOCAL_GENERAL_CFG, *LPNET_EHOME_LOCAL_GENERAL_CFG;
+
+#endif //_HC_EHOME_PUBLIC_H_

+ 154 - 0
hc/incCn/HCEHomeSS.h

@@ -0,0 +1,154 @@
+#ifndef _HC_EHOME_SS_H_
+#define _HC_EHOME_SS_H_
+
+#include "HCEHomePublic.h"
+
+#define MAX_KMS_USER_LEN    512 //KMS用户名最大长度
+#define MAX_KMS_PWD_LEN     512 //KMS密码最大长度
+#define MAX_CLOUD_AK_SK_LEN 64  //EHome5.0存储协议AK SK最大长度
+#define SS_CLIENT_FILE_PATH_PARAM_NAME "File-Path"
+#define SS_CLIENT_VRB_FILENAME_CODE "Filename-Code"
+#define SS_CLIENT_KMS_USER_NAME "KMS-Username"
+#define SS_CLIENT_KMS_PASSWIRD "KMS-Password"
+#define SS_CLIENT_CLOUD_AK_NAME "Access-Key"
+#define SS_CLIENT_CLOUD_SK_NAME "Secret-Key"
+#ifndef MAX_PATH
+#define MAX_PATH 260
+#endif
+
+enum NET_EHOME_SS_MSG_TYPE
+{
+    NET_EHOME_SS_MSG_TOMCAT = 1,       //Tomcat回调函数
+    NET_EHOME_SS_MSG_KMS_USER_PWD,     //KMS用户名密码校验
+    NET_EHOME_SS_MSG_CLOUD_AK          //EHome5.0存储协议AK回调
+};
+
+enum NET_EHOME_SS_CLIENT_TYPE
+{
+    NET_EHOME_SS_CLIENT_TYPE_TOMCAT = 1,       //Tomcat图片上传客户端
+    NET_EHOME_SS_CLIENT_TYPE_VRB,              //VRB图片上传客户端
+    NET_EHOME_SS_CLIENT_TYPE_KMS,              //KMS图片上传客户端
+    NET_EHOME_SS_CLIENT_TYPE_CLOUD             //EHome5.0存储协议客户端
+};
+
+//Tomcat图片服务器回调信息
+typedef struct tagNET_EHOME_SS_TOMCAT_MSG
+{
+    char szDevUri[MAX_URL_LEN_SS];         //设备请求的URI
+    DWORD dwPicNum;                         //图片数
+    char* pPicURLs;                         //图片URL,每个URL MAX_URL_LEN_SS长度
+    BYTE  byRes[64];
+}NET_EHOME_SS_TOMCAT_MSG, *LPNET_EHOME_SS_TOMCAT_MSG;
+
+//信息回调函数
+typedef BOOL(CALLBACK *EHomeSSMsgCallBack)(LONG iHandle, NET_EHOME_SS_MSG_TYPE enumType
+    , void *pOutBuffer, DWORD dwOutLen, void *pInBuffer, DWORD dwInLen, void *pUser);
+
+//存储回调函数
+typedef BOOL(CALLBACK *EHomeSSStorageCallBack)(LONG iHandle, const char* pFileName, void *pFileBuf, DWORD dwFileLen, char *pFilePath, void *pUser);
+
+
+//读写回调函数 byAct 0-读 1-写 2-删
+typedef BOOL(CALLBACK *EHomeSSRWCallBack)(LONG iHandle, BYTE byAct, const char* pFileName
+    , void *pFileBuf, LONG& dwFileLen, const char* pFileUrl, void *pUser);
+
+//监听参数
+typedef struct tagNET_EHOME_SS_LISTEN_PARAM
+{
+    NET_EHOME_IPADDRESS struAddress;  //本地监听信息,IP为0.0.0.0的情况下,默认为本地地址,多个网卡的情况下,默认为从操作系统获取到的第一个
+    char szKMS_UserName[MAX_KMS_USER_LEN];//KMS用户名
+    char szKMS_Password[MAX_KMS_PWD_LEN];//KMS密码
+    EHomeSSStorageCallBack fnSStorageCb; //图片服务器信息存储回调函数
+    EHomeSSMsgCallBack    fnSSMsgCb; //图片服务器信息Tomcat回调函数
+    char szAccessKey[MAX_CLOUD_AK_SK_LEN]; //EHome5.0存储协议AK
+    char szSecretKey[MAX_CLOUD_AK_SK_LEN]; //EHome5.0存储协议SK
+    void * pUserData;   //用户数据
+    BYTE  byHttps;                 //是否启用HTTPs
+    BYTE  byRes1[3];
+    EHomeSSRWCallBack fnSSRWCb;         //读写回调函数
+    BYTE  byRes[56];
+}NET_EHOME_SS_LISTEN_PARAM, *LPNET_EHOME_SS_LISTEN_PARAM;
+
+//监听Https参数
+typedef struct tagNET_EHOME_SS_LISTEN_HTTPS_PARAM
+{
+    BYTE byHttps;      //0-不启用HTTPS 1-启用HTTPS
+    BYTE byVerifyMode; //0-单向认证(暂只支持单向认证)
+    BYTE byCertificateFileType; //证书类型0-pem, 1-ANS1
+    BYTE byPrivateKeyFileType;  //私钥类型0-pem, 1-ANS1
+    char szUserCertificateFile[MAX_PATH]; //公钥证书文件路径
+    char szUserPrivateKeyFile[MAX_PATH];  //私钥证书文件路径
+
+    DWORD dwSSLVersion; //SSL Method版本
+    //0 - SSL23, 1 - SSL2, 2 - SSL3, 3 - TLS1.0, 4 - TLS1.1, 5 - TLS1.2
+    //SSL23是兼容模式,会协商客户端和服务端使用的最高版本
+
+    BYTE byRes3[360];
+}NET_EHOME_SS_LISTEN_HTTPS_PARAM, *LPNET_EHOME_SS_LISTEN_HTTPS_PARAM;
+
+//图片上传客户端参数
+typedef struct tagNET_EHOME_SS_CLIENT_PARAM
+{
+    NET_EHOME_SS_CLIENT_TYPE enumType; //图片上传客户端类型
+    NET_EHOME_IPADDRESS struAddress;    //图片服务器地址
+    BYTE  byHttps;                 //是否启用HTTPs
+    BYTE  byRes[63];
+}NET_EHOME_SS_CLIENT_PARAM, *LPNET_EHOME_SS_CLIENT_PARAM;
+
+enum NET_EHOME_SS_INIT_CFG_TYPE
+{
+    NET_EHOME_SS_INIT_CFG_SDK_PATH = 1,            //设置SS组件加载路径(仅Linux版本支持)
+    NET_EHOME_SS_INIT_CFG_CLOUD_TIME_DIFF,         //设置运存储的请求时间差值,默认15分钟,最小5分钟,最大60分钟
+    NET_EHOME_SS_INIT_CFG_PUBLIC_IP_PORT           //设置公网地址(当存在内外网映射时)
+};
+
+typedef struct tagNET_EHOME_SS_LOCAL_SDK_PATH{
+    char    sPath[MAX_PATH];
+    BYTE    byRes[128];
+}NET_EHOME_SS_LOCAL_SDK_PATH, *LPNET_EHOME_SS_LOCAL_SDK_PATH;
+
+//初始化,反初始化
+NET_DVR_API BOOL  CALLBACK NET_ESS_Init();
+NET_DVR_API BOOL  CALLBACK NET_ESS_Fini();
+
+//获取错误码
+NET_DVR_API DWORD CALLBACK NET_ESS_GetLastError();
+
+//日志
+NET_DVR_API BOOL CALLBACK NET_ESS_SetLogToFile(LONG iLogLevel, const char *strLogDir, BOOL bAutoDel);
+
+//获取版本号
+NET_DVR_API DWORD CALLBACK NET_ESS_GetBuildVersion();
+
+//设置HTTP监听的Https参数
+NET_DVR_API BOOL CALLBACK NET_ESS_SetListenHttpsParam(NET_EHOME_SS_LISTEN_HTTPS_PARAM* pSSHttpsParam);
+
+//开启监听
+NET_DVR_API LONG CALLBACK NET_ESS_StartListen(NET_EHOME_SS_LISTEN_PARAM* pSSListenParam);
+//关闭监听
+NET_DVR_API BOOL  CALLBACK NET_ESS_StopListen(LONG lListenHandle);
+
+//设置初始化参数
+NET_DVR_API BOOL NET_ESS_SetSDKInitCfg(NET_EHOME_SS_INIT_CFG_TYPE enumType, void* const lpInBuff);
+
+//创建图片上传/下载客户端
+NET_DVR_API LONG CALLBACK NET_ESS_CreateClient(NET_EHOME_SS_CLIENT_PARAM* pClientParam);
+
+//设置图片上传/下载客户端超时时间,单位ms,默认为5s
+NET_DVR_API BOOL CALLBACK NET_ESS_ClientSetTimeout(LONG lHandle, DWORD dwSendTimeout, DWORD dwRecvTimeout);
+
+//设置图片上传/下载客户端参数
+NET_DVR_API BOOL CALLBACK NET_ESS_ClientSetParam(LONG lHandle, const char* strParamName, const char* strParamVal);
+
+//图片上传/下载客户端执行上传
+NET_DVR_API BOOL CALLBACK NET_ESS_ClientDoUpload(LONG lHandle, char* strUrl, LONG dwUrlLen);
+
+//图片上传/下载客户端执行下载
+NET_DVR_API BOOL CALLBACK NET_ESS_ClientDoDownload(LONG lHandle, char* strUrl, void** pFileContent, DWORD& dwContentLen);
+
+//销毁客户端
+NET_DVR_API BOOL CALLBACK NET_ESS_DestroyClient(LONG lHandle);
+
+//计算HMAC-SHA256
+NET_DVR_API BOOL NET_ESS_HAMSHA256(const char* pSrc, const char* pSecretKey, char* pSingatureOut, DWORD dwSingatureLen);
+#endif //_HC_EHOME_SS_H_