
//if the OS is linux 64bit open this define when compile the library.﻿ and open define LINUX in the OriginalSDK.cs file.
//如果系统是Linux 64位编译的时候请打下下面的宏,以及OriginalSDK.cs文件中的宏
//#define LINUX_X64   

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace SHH.CameraSdk
{
    /// <summary>
    /// 存放长度相关的常量
    /// </summary>
    public static class SDK_CONST_NUM
    {
        /************************************************************************
         ** 常量定义
        ***********************************************************************/
        public const int MAX_MASKTYPE_COUNT = 8;
        public const int MAX_MOSAICTYPE_COUNT = 8;

        public const int MAX_CHANNEL_COUNT = 16;
        public const int MAX_VIDEO_CHANNEL_NUM = 256;             // 最大通道数256
        public const int MAX_CHANNELNAME_LEN = 64;              // 最大通道名称长度
        public const int MAX_VIDEOSTREAM_NUM = 4;               // 最大码流个数
        public const int MAX_VIDEO_COVER_NUM = 16;              // 最大遮挡区域个数
        public const int WEEK_DAY_NUM = 7;               // 一周的天数
        public const int MAX_REC_TSECT = 6;               // 录像时间段个数
        public const int MAX_REC_TSECT_EX = 10;              // 录像时间段扩展个数
        public const int MAX_WATERMARK_LEN = 4096;            // 数字水印数据最大长度
        public const int MAX_MOTION_ROW = 32;              // 动态检测区域的行数
        public const int MAX_MOTION_COL = 32;              // 动态检测区域的列数
        public const int MAX_IMAGESIZE_NUM = 256;             // 最大支持的分辨率个数
        public const int MAX_FPS_NUM = 1024;            // 最大支持的帧率个数
        public const int MAX_QUALITY_NUM = 32;              // 最大支持的画质个数
        public const int MAX_ADDRESS_LEN = 256;             // 最大的地址长度
        public const int MAX_USERNAME_LEN = 64;              // 最大用户名长度
        public const int MAX_PASSWORD_LEN = 64;              // 最大密码长度
        public const int MAX_DIRECTORY_LEN = 256;             // 文件夹名字字符串长度
        public const int MAX_NAS_TIME_SECTION = 2;               // 网络存储时间段个数
        public const int MAX_NAME_LEN = 128;             // 通用名字字符串长度
        public const int MAX_SCENE_TYPE_LIST_SIZE = 8;               // 场景列表中最多支持的场景个数
        public const int MAX_DECPRO_LIST_SIZE = 100;             // 解码器协议列表个数上限
        public const int MAX_SCENE_LIST_SIZE = 32;              // 视频分析设备支持的场景类型列表个数上限
        public const int MAX_OBJECT_LIST_SIZE = 16;              // 视频分析设备支持的检测物体类型列表个数上限
        public const int MAX_RULE_LIST_SIZE = 128;             // 视频分析设备支持的规则列表个数上限
        public const int MAX_SUPPORTED_COMP_SIZE = 4;               // 最大支持的场景组合项
        public const int MAX_SUPPORTED_COMP_DATA = 8;               // 每个组合项里最多支持的场景个数
        public const int MAX_ANALYSE_MODULE_NUM = 16;              // 视频分析设备最大检测模块个数
        public const int MAX_ANALYSE_RULE_NUM = 32;              // 视频分析设备最大规则个数
        public const int MAX_POLYGON_NUM = 20;              // 视频分析设备区域顶点个数上限
        public const int MAX_POLYLINE_NUM = 20;              // 视频分析设备折线顶点个数上限
        public const int MAX_TEMPLATEREGION_NUM = 32;              // 视频分析设备模拟区域信息点对个数上限
        public const int POINT_PAIR_NUM = 2;               // 视频分析设备模拟区域点对包含的点个数
        public const int MAX_VEHICLE_SIZE_LIST = 4;               // 视频分析设备车辆大小个数上限
        public const int MAX_VEHICLE_TYPE_LIST = 4;               // 视频分析设备车辆类型个数上限
        public const int MAX_PLATE_TYPE_LIST = 32;              // 视频分析设备车牌类型个数上限
        public const int MAX_LANE_NUM = 8;               // 视频分析设备每个通道对应车道数上限
        public const int MAX_STAFF_NUM = 20;              // 视频分析设备每个通道对应的标尺数上限
        public const int MAX_CALIBRATEAREA_NUM = 20;              // 视频分析设备标定区域的上限
        public const int MAX_EXCLUDEREGION_NUM = 10;              // 智能分析检测区域中需要排除的区域个数上限 
        public const int MAX_CALIBRATEBOX_NUM = 10;              // 智能分析校准框个数上限
        public const int MAX_SPECIALDETECT_NUM = 10;              // 智能分析特殊检测区域上限
        public const int MAX_HUMANFACE_LIST_SIZE = 8;               // 视频分析设备支持的目标检测类型列表个数上限
        public const int MAX_FEATURE_LIST_SIZE = 32;				// 视频分析设备支持的人脸属性列表个数上限
        public const int MAX_SEVER_NUM = 16;              // 服务类型上限
        public const int MAX_SERVER_NAME_LEN = 16;              // 服务名称字符串大小
        public const int MAX_POWER_NUM = 8;               // 电源个数上限
        public const int MAX_FUN_NUM = 8;               // 风扇个数上限
        public const int MAX_CPU_NUM = 8;               // cpu个数上限
        public const int MAX_HARDDISK_NUM = 32;              // 硬盘上限
        public const int MAX_TANK_NUM = 16;              // 最大存储柜上限
        public const int MAX_CHAN_NUM = 256;             // 最大通道数上限
        public const int MAX_RAID_NUM = 16;              // 最大磁盘阵列上限
        public const int MAX_DEV_NUM = 16;              // 最大设备上限
        public const int MAX_STORAGEPOOL_NUM = 16;              // 最大存储池上限
        public const int MAX_STRORAGEPOS_NUM = 16;              // 最大存储位置上限
        public const int MAX_VIDEODEV_NUM = 256;             // 前端设备上限
        public const int MAX_REMOTEDEVICENAME_LEN = 32;              // 最大远程设备名字长度
        public const int MAX_REMOTE_DEV_NUM = 256;             // 最大远程设备数量
        public const int MAX_PLATEHINT_NUM = 8;               // 车牌字符暗示个数上限
        public const int MAX_LIGHT_NUM = 8;               // 交通灯个数上限
        public const int MAX_LIGHTGROUP_NUM = 8;               // 交通灯组个数上限
        public const int MAX_LIGHT_TYPE = 8;               // 交通灯类型上限
        public const int MAX_LIGHT_DIRECTION = 8;               // 交通灯指示方向数上限
        public const int MAX_TRIGGERMODE_NUM = 32;              // 交通路口规则触发模式上限 
        public const int MAX_VIOLATIONCODE = 16;              // 智能交通违章代码长度上限
        public const int MAX_DETECTOR = 6;               // 智能交通车检器配置上限
        public const int MAX_COILCONFIG = 3;               // 智能交通车检器线圈配置上限
        public const int MAX_DEVICE_ADDRESS = 256;             // TrafficSnapshot智能交通设备地址
        public const int MAX_DEPARTMENT = 256;             // Department智能交通设备所属单位
        public const int MAX_ROADWAYNO = 128;             // 道路编号	由32个数字和字母构成
        public const int MAX_VIOLATIONCODE_DESCRIPT = 64;              // 智能交通违章代码长度上限
        public const int MAX_DRIVINGDIRECTION = 256;             // 行驶方向字符串长度
        public const int MAX_ACTIVEUSER_NUM = 64;              // 最大活动用户信息数
        public const int MAX_POLYGON_NUM10 = 10;              // 视频分析设备区域顶点个数上限
        public const int MAX_VIDEODIAGNOSIS_DETECT_TYPE = 64;             // 视频诊断类型个数上限
        public const int MAX_ACTION_LIST_SIZE = 16;              // 视频分析设备支持的规则的动作类型列表个数上限
        public const int MAX_STORAGEGROUPNAME_LEN = 32;              // 存储组名称缓冲区上限
        public const int MAX_CALIBRATEAREA_TYPE_NUM = 4;               // 标定区域类型上限
        public const int MAX_PROTOCOL_NAME_LEN = 32;              // 协议名称长度
        public const int MAX_COMM_NUM = 16;              // 最大串口数量
        public const int MAX_DNS_SERVER_NUM = 2;               // DNS最大数量
        public const int MAX_NETWORK_INTERFACE_NUM = 32;              // 最大网卡数量
        public const int MAX_NAS_NUM = 16;              // 网络存储服务器最大数量
        public const int MAX_STORAGEPOINT_NUM = 32;              // 录像存储点映射最大数量
        public const int MAX_TRACKSCENE_NUM = 10;              // 智能跟踪场景最大数量
        public const int MAX_STATUS_NUM = 16;              // 交通设备状态最大个数
        public const int MAX_SERVICE_NUM = 128;             // 服务器支持的最大服务数
        public const int MAX_DBKEY_NUM = 64;              // 数据库关键字最大值
        public const int MAX_SUMMARY_LEN = 1024;            // 叠加到JPEG图片的摘要信息最大长度
        public const int MAX_MOTION_WINDOW = 10;              // 动检支持的视频窗口值
        public const int MAX_OSD_SUMMARY_LEN = 256;             // osd叠加内容最大长度    
        public const int MAX_OSD_TITLE_LEN = 128;             // osd叠加标题最大长度
        public const int MAX_CUSTOMCASE_NUM = 16;              // 自定义SF案件最大个数
        public const int MAX_GLOBAL_MSTERSLAVE_NUM = 64;              //主从式跟踪器最大全局配置数
        public const int MAX_OBJECT_ATTRIBUTES_SIZE = 16;              // 视频分析设备支持的检测物体属性类型列表个数上限
        public const int MAX_MODEL_LEN = 32;              // 设备型号长度
        public const int MAX_BURNING_DEV_NUM = 32;              // 最大刻录设备个数
        public const int MAX_NET_TYPE_NUM = 8;               // 最大网络类型个数
        public const int MAX_NET_TYPE_LEN = 64;              // 网络类型字符串长度 
        public const int MAX_DEVICE_NAME_LEN = 64;              // 机器名称
        public const int MAX_DEV_ID_LEN_EX = 128;             // 设备ID最大长度
        public const int MONTH_OF_YEAR = 12;              // 一年中月份数
        public const int MAX_SERVER_NUM = 10;              // 服务器最大个数
        public const int MAX_REGISTER_NUM = 10;              // 主动注册配置最大个数 
        public const int MAX_VIDEO_IN_ZOOM = 32;              // 单通道最大变速配置个数
        public const int MAX_ANALYSE_SCENE_NUM = 32;              // 视频分析全局配置场景最大数量
        public const int MAX_CONFIG_NUM = 32;              // 每个云台的最大配置数
        public const int MAX_PTZ_PRESET_NAME_LEN = 64;              // 云台预置点名称长度
        public const int NET_CFG_COMMON_STRING_8 = 8;               // 通用字符串长度8
        public const int NET_CFG_COMMON_STRING_16 = 16;              // 通用字符串长度16
        public const int NET_CFG_COMMON_STRING_32 = 32;              // 通用字符串长度32
        public const int NET_CFG_COMMON_STRING_64 = 64;              // 通用字符串长度64
        public const int NET_CFG_COMMON_STRING_128 = 128;             // 通用字符串长度128
        public const int NET_CFG_COMMON_STRING_256 = 256;             // 通用字符串长度256
        public const int NET_CFG_COMMON_STRING_512 = 512;             // 通用字符串长度512
        public const int AV_CFG_Channel_Name_Len = 64;              // 通道名称长度
        public const int NET_CFG_MAX_CHANNEL_NAME_LEN = 256;             // 通道名称最大长度    
        public const int AV_CFG_Weekday_Num = 7;               // 一周天数
        public const int AV_CFG_Max_TimeSection = 6;               // 时间段数量
        public const int AV_CFG_Device_ID_Len = 64;              // 设备ID长度
        public const int AV_CFG_IP_Address_Len = 32;              // ip长度
        public const int AV_CFG_IP_Address_Len_EX = 40;              // 扩展IP地址字符串长度, 支持IPV6
        public const int AV_CFG_User_Name_Len = 64;              // 用户名长度
        public const int AV_CFG_Password_Len = 64;              // 密码长度
        public const int AV_CFG_Protocol_Len = 32;              // 协议名长度
        public const int AV_CFG_Serial_Len = 32;              // 序列号长度
        public const int AV_CFG_Device_Class_Len = 16;              // 设备类型长度
        public const int AV_CFG_Device_Type_Len = 32;              // 设备具体型号长度
        public const int AV_CFG_Device_Name_Len = 128;             // 机器名称
        public const int AV_CFG_Address_Len = 128;             // 机器部署地点
        public const int AV_CFG_Max_Path = 260;             // 路径长度
        public const int AV_CFG_Max_Split_Window = 128;             // 最大分割窗口数量
        public const int AV_CFG_Monitor_Favorite_In_Channel = 64;              // 每个输出通道的最大轮训画面收藏数量
        public const int AV_CFG_Monitor_Favorite_Name_Len = 64;              // 画面收藏名称长度
        public const int AV_CFG_Max_Monitor_Favorite_Window = 64;              // 画面收藏的最大窗口数量
        public const int AV_CFG_Max_Split_Group = 64;              // 分割最大分组数量
        public const int AV_CFG_Max_Split_Mode = 32;              // 分割模式最大数量
        public const int AV_CFG_Raid_Name_Len = 64;              // RAID名称长度
        public const int AV_CFG_Max_Rail_Member = 32;              // 单个RAID包含磁盘数
        public const int AV_CFG_Max_Encode_Main_Format = 3;               // 主码流编码类型数
        public const int AV_CFG_Max_Encode_Extra_Format = 3;               // 辅码流编码类型数
        public const int AV_CFG_Max_Encode_Snap_Format = 3;               // 抓图编码类型数
        public const int AV_CFG_Max_VideoColor = 24;              // 每个通道最大视频输入颜色配置数量
        public const int AV_CFG_Custom_Title_Len = 1024;            // 自定义标题名称长度(扩充到1024)
        public const int AV_CFG_Custom_TitleType_Len = 32;              // 自定义标题类型长度
        public const int AV_CFG_Max_Video_Widget_Cover = 16;              // 编码区域覆盖最大数量
        public const int AV_CFG_Max_Video_Widget_Custom_Title = 8;               // 编码物件自定义标题最大数量
        public const int AV_CFG_Max_Video_Widget_Sensor_Info = 2;               // 编码物件叠加传感器信息的最大数目
        public const int AV_CFG_Max_Description_Num = 4;               // 叠加区域描述信息的最大个数
        public const int AV_CFG_Group_Name_Len = 64;              // 分组名称长度
        public const int AV_CFG_DeviceNo_Len = 32;              // 设备编号长度
        public const int AV_CFG_Group_Memo_Len = 128;             // 分组说明长度
        public const int AV_CFG_Max_Channel_Num = 1024;            // 最大通道数量
        public const int AV_CFG_Time_Format_Len = 32;              // 时间格式长度
        public const int AV_CFG_Max_White_List = 1024;            // 允许名单数量
        public const int AV_CFG_Max_Black_List = 1024;            // 禁止名单数量
        public const int AV_CFG_Filter_IP_Len = 96;              // 过滤IP最大长度
        public const int AV_CFG_Max_ChannelRule = 32;              // 通道存储规则最大长度, 仅通道部分
        public const int AV_CFG_Max_DBKey_Num = 64;              // 事件关键字数量
        public const int AV_CFG_DBKey_Len = 32;              // 事件关键字长度
        public const int AV_CFG_Max_Summary_Len = 1024;            // 摘要长度
        public const int AV_CFG_Max_Event_Title_Num = 32;              // 事件标题最大数量
        public const int AV_CFG_Max_Tour_Link_Num = 128;             // 联动轮巡最大数量
        public const int AV_CFG_PIP_BASE = 1000;            // 画中画分割模式基础值
        public const int DES_KEY_LEN = 8;               // DES密钥的字节长度
        public const int DES_KEY_NUM = 3;               // 3DES密钥的个数
        public const int AES_KEY_LEN = 32;              // AES密钥的字节长度
        public const int MAX_TIME_SCHEDULE_NUM = 8;               // 时间表元素个数
        public const int MAX_SCENE_SUBTYPE_LEN = 64;              // 场景子类型字符串长度
        public const int MAX_SCENE_SUBTYPE_NUM = 32;              // 场景子类型最大个数    
        public const int MAX_VIDEO_IN_FOCUS = 32;              // 单通道最大聚焦配置个数
        public const int MAX_TIMESPEEDLIMIT_NUM = 16;              // 最大时间段限速配置个数
        public const int MAX_VOICEALERT_NUM = 64;              // 最大语音提示配置个数
        public const int NET_CFG_MAX_LOWER_MATRIX_NUM = 16;              // 最大下位矩阵数量
        public const int NET_CFG_MAX_LOWER_MATRIX_INPUT = 64;              // 最大下位矩阵输入通道数
        public const int NET_CFG_MAX_LOWER_MATRIX_OUTPUT = 32;              // 最大下位矩阵输出通道数
        public const int NET_CFG_MAX_AUDIO_MATRIX_INPUT = 32;              // 音频矩阵最大输入通道数
        public const int NET_CFG_MAX_AUDIO_OUTPUT_CHN = 32;              // 音频矩阵最大输出通道数
        public const int NET_CFG_MAX_AUDIO_MATRIX_NUM = 4;               // 最大音频矩阵数量
        public const int NET_CFG_MAX_AUDIO_MATRIX_OUTPUT = 8;               // 每个音频矩阵支持的最大输出通道数
        public const int NET_CFG_MAX_VIDEO_IN_DEFOG = 3;               // 每个通道最多透雾配置个数
        public const int NET_CFG_MAX_INFRARED_BOARD_TEMPLATE_NUM = 16;              // 最大红外面板模板数量
        public const int NET_CFG_MAX_INFRARED_KEY_NUM = 128;             // 最大红外面板按键数量
        public const int NET_CFG_MAX_INFRARED_BOARD_NUM = 16;              // 最大红外面板数量
        public const int NET_CFG_MAX_VTO_NUM = 128;             // 最大门口机数量
        public const int MAX_PHONE_NUMBER_LEN = 32;              // 电话号码最大长度
        public const int MAX_AUDIO_OUTPUT_NUM = 16;              // 音频输出最大通道数
        public const int MAX_AUDIO_INPUT_NUM = 32;              // 音频输入最大通道数
        public const int MAX_LIGHT_GLOBAL_NUM = 16;				// 乐橙状态灯最大数目
        public const int MAX_AUDIO_MIX_NUM = 16;              // 混合音频最大通道数
        public const int MAX_PSTN_SERVER_NUM = 8;               // 最大报警电话服务器数
        public const int MAX_ALARM_CHANNEL_NUM = 32;              // 最大报警通道数
        public const int MAX_ALARM_DEFENCE_TYPE_NUM = 8;               // 最大报警防区类型数
        public const int MAX_ALARM_SENSE_METHOD_NUM = 16;              // 最大报警感应器方式数
        public const int MAX_EXALARMBOX_PROTOCOL_NUM = 8;               // 最大支持扩展报警盒协议数
        public const int MAX_EXALARM_CHANNEL_NUM = 256;             // 最大报警通道数
        public const int MAX_EXALARMBOX_NUM = 8;               // 最大报警盒子数
        public const int MAX_MAILTITLE_LEN = 256;             // 最大邮件标题长度
        public const int MAX_DEVICE_ID_LEN = 48;              // 最大设备编码长度
        public const int MAX_DEVICE_MARK_LEN = 64;              // 最大设备描述长度
        public const int MAX_BRAND_NAME_LEN = 64;              // 最大设备品牌长度
        public const int MAX_ADDRESS_NUM = 16;              // 最大串口地址个数
        public const int MAX_AIRCONDITION_NUM = 16;              // 最大空调设备个数
        public const int NET_CFG_MAX_COLLECTION_NUM = 64;              // 最大预案数
        public const int MAX_FLOOR_NUM = 128;             // 最大楼层数
        public const int MAX_SEAT_NUM = 8;               // 最大座位数
        public const string AV_CFG_Local_Device_ID = "Local";         // 本地设备ID
        public const string AV_CFG_Remote_Devce_ID = "Remote";        // 远程设备ID   
        public const int MAX_LANE_CONFIG_NUMBER = 32;              // 车道最大个数
        public const int MAX_PRIORITY_NUMBER = 256;             // 违章优先级包含违章最大个数
        public const int MAX_CATEGORY_TYPE_NUMBER = 128;             // 子类别类型数
        public const int MAX_TRIGGER_MODE_NUMBER = 64;              // 触发模式个数
        public const int MAX_ABNORMAL_DETECT_TYPE = 32;              // 异常检测类型数
        public const int MAX_ABNORMAL_THRESHOLD_LEN = 32;              // 异常检测阙值最大个数
        public const int TS_POINT_NUM = 3;               // 触摸屏校准点数
        public const int NET_CFG_FILTER_IP_LEN = 96;              // 过滤IP最大长度
        public const int NET_CFG_MAX_TRUST_LIST = 1024;            // 允许名单数量
        public const int NET_CFG_MAX_BANNED_LIST = 1024;            // 禁止名单数量
        public const int VIDEOIN_TSEC_NUM = 3;               // VideoIn 系列协议时间段个数，目前有普通、白天、黑夜三种
        public const int MAX_RECT_COUNT = 4;               // 单个通道支持的马赛克区域最大个数
        public const int NET_CFG_MAX_SSID_LEN = 36;              // SSID最大长度
        public const int MAX_OUTAUDIO_CHANNEL_COUNT = 16;              // 最大音频输出通道数
        public const int MAX_INAUDIO_CHANNEL_COUNT = 32;              // 最大音频输入通道数
        public const int MAX_FREQUENCY_COUNT = 16;              // 最大频率段个数
        public const int MAX_NTP_SERVER = 4;               // 最大备用NTP服务器地址
        public const int MAX_ACCESS_TEXTDISPLAY_LEN = 32;              // 最大门禁控制显示文字长度
        public const int NET_CFG_MAX_NVR_ENCRYPT_COUNT = 4;               // 每个通道最多加密配置个数
        public const int MAX_IP_ADDR_LEN = 16;              // IP地址字符串长度
        public const int MAX_PRIVACY_MASKING_COUNT = 64;              // 单个通道隐私遮挡配置个数
        public const int MAX_ALL_SNAP_CAR_COUNT = 32;				// 所有车开闸种类个数
        public const int NET_CFG_MAX_PLATE_NUMBER_LEN = 32;				// 最大车牌号码长度
        public const int NET_CFG_MAX_SN_LEN = 32;				// 最大设备序列号长度
        public const int NET_CFG_MAX_ACCESS_CONTROL_ADDRESS_LEN = 64;				// 最大的地址长度
        public const int MAX_CFG_APN_NAME = 32;				// Wireless中接入网络名长度
        public const int MAX_CFG_DAIL_NUMBER = 32;				// Wireless中拨号号码长度
        public const int MAX_GROUP_ID_LEN = 64;				// 最大布控组ID长度
        public const int MAX_COLOR_NAME_LEN = 32;				// 最大颜色名长度
        public const int MAX_COLOR_HEX_LEN = 8;				// 最大HEX颜色长度
        public const int MAX_LINK_GROUP_NUM = 20;				// 联动的布控组最大数量
        public const int MAX_CROWD_DISTRI_MAP_REGION_POINT_NUM = 20;				// 区域检测坐标个数
        public const int MAX_PEOPLESTATREGIONS_NUM = 8;				// 人数统计区域个数
        public const int MAX_AUDIOCHANNELS_ARRAY_NUM = 8;                // 视频通道的伴音通道号列表数组的最大个数
        public const int MAX_NUMBER_STAT_MAULT_NUM = 32;				// 最大客流量统计场景PD个数
        public const int NET_CFG_MAX_DAY_NIGHT_MODE = 3;				// 每个视频输入通道对应多个配置(分别表示白天、黑夜、普通)

        public const int MAX_COMPANY_NAME_LEN = 200;              // 单位名称最大长度
        public const int MAX_COMMON_STRING_128 = 128;              // 通用字符串长度128

        /// <summary>
        /// day or night lightInfo max number
        /// 白天黑夜对应灯光配置最大个数
        /// </summary>
        public const int CFG_LC_LIGHT_CONFIG = 8;
        /// <summary>
        /// max number of light type
        /// 灯光类型最大个数
        /// </summary>
        public const int LC_LIGHT_TYPE_NUM = 3;
        /// <summary>
        /// number of light group
        /// 灯光组灯光数量
        /// </summary>
        public const int CFG_LC_LIGHT_COUNT = 4;
    }


    /************************************************************************
    ** 配置命令 对应 CLIENT_GetNewDevConfig 和 CLIENT_SetNewDevConfig 接口
    ***********************************************************************/
    /// <summary>
    /// Configuration command  CLIENT_GetNewDevConfig / CLIENT_SetNewDevConfig 
    /// 配置命令 对应 CLIENT_GetNewDevConfig 和 CLIENT_SetNewDevConfig 接口
    /// </summary>
    public static class SDK_NEWDEVCONFIG_CMD
    {
        /// <summary>
        /// ecording storage point mapping configuration (corresponding to NET_A_CFG_RECORDTOSTORAGEPOINT_INFO)
        /// 录像存储点映射配置(对应 NET_A_CFG_RECORDTOSTORAGEPOINT_INFO)
        /// </summary>
        public const string CFG_CMD_RECORD_STORAGEPOINT = "RecordStoragePoint";
        /// <summary>
        /// Video storage point mapping configuration extension (corresponding to NET_A_CFG_RECORDTOSTORAGEPOINT_EX_INFO)
        /// 录像存储点映射配置扩展 (对应 NET_A_CFG_RECORDTOSTORAGEPOINT_EX_INFO)
        /// </summary>
        public const string CFG_CMD_RECORD_STORAGEPOINT_EX = "RecordStoragePoint";
        /// <summary>
        /// UPnP configuration extension (corresponding to NET_A_CFG_UPNP_INFO)
        /// UPnP配置(对应 NET_A_CFG_UPNP_INFO )
        /// </summary>
        public const string CFG_CMD_UPNP = "UPnP";
        /// <summary>
        /// Timed Recording Configuration (corresponding to NET_CFG_RECORD_INFO)
        /// 定时录像配置(对应 NET_CFG_RECORD_INFO)
        /// </summary>
        public const string CFG_CMD_RECORD = "Record";
        /// <summary>
        /// Fish eye details configuration (corresponding to NET_A_CFG_FISHEYE_DETAIL_INFO)
        /// 鱼眼详细信息配置(NET_A_CFG_FISHEYE_DETAIL_INFO)
        /// </summary>
        public const string CFG_CMD_FISHEYE_INFO = "FishEye";
        /// <summary>
        /// Login Failure Alarm Configuration (corresponding to NET_A_CFG_LOGIN_FAILURE_ALARM)
        /// 登陆失败报警配置(对应结构体 NET_A_CFG_LOGIN_FAILURE_ALARM)
        /// </summary>
        public const string CFG_CMD_LOGIN_FAILURE_ALARM = "LoginFailureAlarm";
        /// <summary>
        /// Fog penetration setting configuration (corresponding to NET_A_CFG_VIDEOINDEFOG_LIST)
        /// 透雾设置配置(对应结构体 NET_A_CFG_VIDEOINDEFOG_LIST )
        /// </summary>
        public const string CFG_CMD_VIDEOINDEFOG = "VideoInDefog";
        /// <summary>
        /// Network protocol configuration (corresponding to NET_CFG_DVRIP_INFO)
        /// 网络协议配置(对应 NET_CFG_DVRIP_INFO)
        /// </summary>
        public const string CFG_CMD_DVRIP = "DVRIP";
        /// <summary>
        /// Alarm subsystem configuration (corresponding to NET_A_CFG_ALARM_SUBSYSTEM_INFO)
        /// 报警子系统配置 ( NET_A_CFG_ALARM_SUBSYSTEM_INFO )
        /// </summary>
        public const string CFG_CMD_ALARM_SUBSYSTEM = "AlarmSubSystem";
        /// <summary>
        /// General configuration (corresponding to NET_A_CFG_DEV_DISPOSITION_INFO )
        /// 普通配置 (对应 NET_A_CFG_DEV_DISPOSITION_INFO )
        /// </summary>
        public const string CFG_CMD_DEV_GENERRAL = "General";
        /// <summary>
        /// Scene mode configuration (corresponding to NET_A_CFG_SCENE_MODE_INFO )
        /// 情景模式(对应结构体 NET_A_CFG_SCENE_MODE_INFO)
        /// </summary>
        public const string CFG_CMD_SCENE_MODE = "SceneMode";
        /// <summary>
        /// Configuration of case intrusion alarm (anti-disassembly alarm) (corresponding to NET_A_CFG_CHASSISINTRUSION_INFO )
        /// 机箱入侵报警(防拆报警)配置( NET_A_CFG_CHASSISINTRUSION_INFO )
        /// </summary>
        public const string CFG_CMD_CHASSISINTRUSION = "ChassisIntrusion";
        /// <summary>
        /// Configuration of network (corresponding to CFG_NETWORK_INFO )
        /// 网络配置(对应 CFG_NETWORK_INFO)
        /// </summary>
        public const string CFG_CMD_NETWORK = "Network";
        /// <summary>
        /// Configuration of WLAN (corresponding to NET_A_CFG_NETAPP_WLAN )
        /// WLAN配置(对应 NET_A_CFG_NETAPP_WLAN )
        /// </summary>
        public const string CFG_CMD_WLAN = "WLan";
        /// <summary>
        /// Network not connected (corresponding to NET_A_CFG_WIRELESS_NOT_CONNECTED_INFO )
        /// 网络未连接（包括wifi，3G/4G）配置(对应结构体 NET_A_CFG_WIRELESS_NOT_CONNECTED_INFO)
        /// </summary>
        public const string CFG_CMD_WIRELESS_NOT_CONNECTED = "WireLessNotConnected";
        /// <summary>
        /// Wireless network connection settings (corresponding to NET_A_CFG_WIRELESS_INFO )
        /// 无线网络连接设置(对应 NET_A_CFG_WIRELESS_INFO)
        /// </summary>
        public const string CFG_CMD_WIRELESS = "Wireless";
        /// <summary>
        /// Wireless network connection settings (corresponding to NET_A_CFG_COMMGROUP_INFO )
        /// 串口配置(对应 NET_A_CFG_COMMGROUP_INFO)
        /// </summary>
        public const string CFG_CMD_COMM = "Comm";
        /// <summary>
        /// Video analysis rule configuration (corresponding to NET_CFG_ANALYSERULES_INFO )
        /// 视频分析规则配置(对应 NET_CFG_ANALYSERULES_INFO)
        /// </summary>
        public const string CFG_CMD_ANALYSERULE = "VideoAnalyseRule";
        /// <summary>
		/// Video analysis global configuration (corresponding to NET_CFG_ANALYSERULES_EX_INFO )
        /// 视频分析全局配置(对应 NET_CFG_ANALYSEGLOBAL_EX_INFO)
        /// </summary>
        public const string CFG_CMD_ANALYSEGLOBAL = "VideoAnalyseGlobal";
        /// <summary>
        /// Channel Name configuration (corresponding to NET_A_AV_CFG_ChannelName )
        /// 通道名称(对应 NET_A_AV_CFG_ChannelName )
        /// </summary>
        public const string CFG_CMD_CHANNELTITLE = "ChannelTitle";
        /// <summary>
        /// Email configuration (corresponding to NET_A_CFG_EMAIL_INFO )
        /// 邮件发送配置(对应 NET_A_CFG_EMAIL_INFO )
        /// </summary>
        public const string CFG_CMD_EMAIL = "Email";
        /// <summary>
        /// Video input color configuration (corresponding to NET_A_AV_CFG_ChannelVideoColor )
        /// 视频输入颜色配置(对应 NET_A_AV_CFG_ChannelVideoColor)
        /// </summary>
        public const string CFG_CMD_VIDEOCOLOR = "VideoColor";
        /// <summary>
        /// Video input front-end options (corresponding to NET_A_CFG_VIDEO_IN_OPTIONS )
        /// 视频输入前端选项(对应 NET_A_CFG_VIDEO_IN_OPTIONS)
        /// </summary>
        public const string CFG_CMD_VIDEOINOPTIONS = "VideoInOptions";
        /// <summary>
        /// Https Service Configuration (corresponding to NET_A_CFG_HTTPS_INFO )
        /// Https服务配置(对应结构体 NET_A_CFG_HTTPS_INFO)
        /// </summary>
        public const string CFG_CMD_HTTPS = "Https";
        /// <summary>
        /// Transfer Offline File Configuration (corresponding to NET_A_TRAFFIC_TRANSFER_OFFLINE_INFO )
        /// 传输离线文件配置(NET_A_TRAFFIC_TRANSFER_OFFLINE_INFO)
        /// </summary>
        public const string CFG_CMD_TRAFFIC_TRANSFER_OFFLINE = "TrafficTransferOffline";
        /// <summary>
        /// Record Mode Configuration (corresponding to NET_AV_CFG_RecordMode )
        /// 录像模式(对应 NET_A_AV_CFG_RecordMode)
        /// </summary>
        public const string CFG_CMD_RECORDMODE = "RecordMode";
        /// <summary>
        /// Idle config(NET_A_CFG_IDLE_MOTION_INFO)
        /// 空闲动作配置(NET_A_CFG_IDLE_MOTION_INFO)
        /// </summary>
        public const string CFG_CMD_IDLEMOTION_INFO = "IdleMotion";
        /// <summary>
        /// PTZ Timed Action Configuration(NET_A_CFG_PTZ_AUTOMOVE_INFO)
        /// 云台定时动作配置(NET_A_CFG_PTZ_AUTOMOVE_INFO)
        /// </summary>
        public const string CFG_CMD_PTZ_AUTO_MOVEMENT = "PtzAutoMovement";
        /// <summary>
        /// GPS configure(NET_A_CFG_GPS_INFO_ALL)
        /// GPS配置(NET_A_CFG_GPS_INFO_ALL)
        /// </summary>
        public const string CFG_CMD_GPS = "GPS";
        /// <summary>
        /// Configuration of object detection module(NET_CFG_ANALYSEMODULES_INFO)
        /// 物体的检测模块配置(NET_CFG_ANALYSEMODULES_INFO)
        /// </summary>
        public const string CFG_CMD_ANALYSEMODULE = "VideoAnalyseModule";
        /// <summary>
        /// Configuration of alarm out(NET_CFG_ALARMOUT_INFO)
        /// 报警输出通道配置(NET_CFG_ALARMOUT_INFO)
        /// </summary>
        public const string CFG_CMD_ALARMOUT = "AlarmOut";
        /// <summary>
        /// Audio detection alarm configuration(NET_CFG_AUDIO_DETECT_INFO)
        /// 音频检测报警配置(NET_CFG_AUDIO_DETECT_INFO)
        /// </summary>
        public const string CFG_CMD_AUDIODETECT = "AudioDetect";
        /// <summary>
        /// Door machine configuration(NET_CFG_VTO_LIST)
        /// 门口机配置(NET_CFG_VTO_LIST)
        /// </summary>
        public const string CFG_CMD_VTO_INFO = "VTOInfo";
        /// <summary>
        /// Video output attribute configuration(NET_A_AV_CFG_VideoOutAttr)
        /// 视频输出属性配置(NET_A_AV_CFG_VideoOutAttr)
        /// </summary>
        public const string CFG_CMD_VIDEOOUT = "VideoOut";
        /// <summary>
        /// Image channel attribute configuration(NET_A_CFG_ENCODE_INFO)
        /// 图像通道属性配置(NET_A_CFG_ENCODE_INFO)
        /// </summary>
        public const string CFG_CMD_ENCODE = "Encode";
        /// <summary>
        /// Holiday recording plan configuration(NET_A_CFG_HOLIDAY_SCHEDULE)
        /// 假期录像计划配置(NET_A_CFG_HOLIDAY_SCHEDULE)
        /// </summary>
        public const string CFG_CMD_CHANNEL_HOLIDAY = "HolidaySchedule";
        /// <summary>
        /// Thermal imaging Temperature Monitoring rule config(NET_CFG_RADIOMETRY_RULE_INFO)
        /// 热成像测温规则配置(NET_CFG_RADIOMETRY_RULE_INFO)
        /// </summary>
        public const string CFG_CMD_THERMOMETRY_RULE = "ThermometryRule";
        /// <summary>
        /// Video wall configuration (NET_AV_CFG_MonitorWall)
        /// 电视墙配置(NET_AV_CFG_MonitorWall)
        /// </summary>
        public const string CFG_CMD_MONITORWALL = "MonitorWall";
        /// <summary>
        /// day/night color change config (NET_CFG_VIDEOIN_DAYNIGHT_INFO)
        /// 球机机芯日夜配置(对应 NET_CFG_VIDEOIN_DAYNIGHT_INFO)
        /// </summary>
        public const string CFG_CMD_VIDEOIN_DAYNIGHT = "VideoInDayNight";
        /// <summary>
        /// Thermal imaging configuration (NET_CFG_THERMOGRAPHY_INFO)
        /// 热成像配置(对应 NET_CFG_THERMOGRAPHY_INFO)
        /// </summary>
        public const string CFG_CMD_THERMO_GRAPHY = "ThermographyOptions";
        /// <summary>
        /// Thermal imaging local contrast enhancement config (NET_CFG_LCE_STATE_INFO)
        /// 热成像自研机芯中摄像头属性的局部对比度增强配置(对应 NET_CFG_LCE_STATE_INFO)
        /// </summary>
        public const string CFG_CMD_LCE_STATE = "LCEState";
        /// <summary>
        /// Thermal imaging Temperature Monitoring global config (NET_A_CFG_THERMOMETRY_INFO)
        /// 热成像测温全局配置(对应 NET_A_CFG_THERMOMETRY_INFO)
        /// </summary>
        public const string CFG_CMD_THERMOMETRY = "HeatImagingThermometry";
		/// <summary>
        /// configuration of video encode staff(corresponding to NET_A_CFG_VIDEO_WIDGET2_INFO)
        /// 视频编码物件配置(对应结构体 NET_A_CFG_VIDEO_WIDGET2_INFO)
        /// </summary>
        public const string CFG_CMD_VIDEO_WIDGET2 = "VideoWidget2";
        /// <summary>
        /// Audio output volume(corresponding to NET_A_CFG_AUDIO_OUTPUT_VOLUME)
        /// 音频输出音量(对应结构体 NET_A_CFG_AUDIO_OUTPUT_VOLUME)
        /// </summary>
        public const string CFG_CMD_AUDIO_OUTPUT_VOLUME = "AudioOutputVolume";
        /// <summary>
        /// Audio input volume(corresponding to NET_A_CFG_AUDIO_INPUT_VOLUME)
        /// 音频输入音量(对应结构体 NET_A_CFG_AUDIO_INPUT_VOLUME)
        /// </summary>
        public const string CFG_CMD_AUDIO_INPUT_VOLUME = "AudioInputVolume";
    }

    public static class SDK_DEVCONFIG_CMD
    {
        /************************************************************************
        ** 能力集命令  对应CLIENT_QueryNewSystemInfo/CLIENT_QueryNewSystemInfoEx
        ***********************************************************************/

        public const string NET_CFG_CAP_CMD_VIDEOANALYSE = "devVideoAnalyse.getCaps";                   // 视频分析能力集(对应 CFG_CAP_ANALYSE_INFO, pExtendInfo 对应 CFG_CAP_ANALYSE_REQ_EXTEND_INFO)
        public const string NET_CFG_CAP_CMD_VIDEOANALYSE_EX = "devVideoAnalyse.getCapsEx";                 // 视频分析能力集(对应CFG_CAP_ANALYSE_INFO_EX)
        public const string NET_CFG_CAP_CMD_REMOTE_VIDEOANALYSE = "devRemoteVideoAnalyse.getCaps";             // 远程视频分析能力集(对应CFG_CAP_ANALYSE_INFO)
        public const string NET_CFG_NETAPP_REMOTEDEVICE = "netApp.getRemoteDeviceStatus";              // 获取后端设备的的在线状态(对应CFG_REMOTE_DEVICE_STATUS)
        public const string NET_CFG_CAP_CMD_PRODUCTDEFINITION = "magicBox.getProductDefinition";             // 接入设备信息(对应 CFG_PRODUCT_DEFINITION_INFO)
        public const string NET_CFG_DEVICE_CAP_CMD_VIDEOANALYSE = "intelli.getVideoAnalyseDeviceChannels";     // 设备智能分析能力(对应CFG_CAP_DEVICE_ANALYSE_INFO)兼容老设备
        public const string NET_CFG_DEVICE_CAP_NEW_CMD_VIDEOANALYSE = "devVideoAnalyse.factory.getCollect";        // 设备智能分析能力(对应CFG_CAP_DEVICE_ANALYSE_INFO)
        public const string NET_CFG_CAP_CMD_CPU_COUNT = "magicBox.getCPUCount";                      // 获得CPU个数
        public const string NET_CFG_CAP_CMD_CPU_USAGE = "magicBox.getCPUUsage";                      // 获取CPU占用率
        public const string NET_CFG_CAP_CMD_MEMORY_INFO = "magicBox.getMemoryInfo";                    // 获得内存容量
        public const string NET_CFG_CAP_CMD_DEVICE_CLASS = "magicBox.getDeviceClass";					 // 获取设备类型(对应CFG_DEVICE_CLASS_INFO)
        public const string NET_CFG_CAP_CMD_DEVICE_STATE = "trafficSnap.getDeviceStatus";              // 获取设备状态信息 (对应CFG_CAP_TRAFFIC_DEVICE_STATUS)
        public const string NET_CFG_CAP_CMD_VIDEOINPUT = "devVideoInput.getCaps";                    // 视频输入能力集(对应CFG_CAP_VIDEOINPUT_INFO)
        public const string NET_CFG_USERMANAGER_ACTIVEUSER = "userManager.getActiveUserInfoAll";         // 得到所有活动的用户信息(对应 NET_A_CFG_ACTIVEALLUSER_INFO)
        public const string NET_CFG_CAP_VIDEOSTAT_SUMMARY = "videoStatServer.getSummary";               // 获取视频统计摘要信息(对应NET_A_CFG_VIDEOSATA_SUMMARY_INFO)
        public const string NET_CFG_CAP_CMD_VIDEODIAGNOSIS_SERVER = "videoDiagnosisServer.getCaps";             // 获取视频诊断服务能力(CFG_VIDEODIAGNOSIS_CAPS_INFO)
        public const string NET_CFG_CMD_VIDEODIAGNOSIS_GETCOLLECT = "videoDiagnosisServer.factory.getCollect";   // 获取视频诊断通道数目(CFG_VIDEODIAGNOSIS_GETCOLLECT_INFO)
        public const string NET_CFG_CMD_VIDEODIAGNOSIS_GETSTATE = "videoDiagnosisServer.getState";            // 获取视频诊断进行状态(CFG_VIDEODIAGNOSIS_STATE_INFO)
        public const string NET_CFG_CAP_CMD_SERVICE_LIST = "system.listService";                       //获取服务器上支持的服务列表(CFG_DEV_SERVICE_LIST)
        public const string NET_CFG_CAP_CMD_EVENTHANDLER = "capsManager.get&EventManagerEventHandler";  // 获取服务器报警联动能力集(CFG_CAP_EVENTHANDLER_INFO)
        public const string NET_CFG_CAP_ALARM = "alarm.getAlarmCaps";                       // 获取报警能力集(CFG_CAP_ALARM_INFO)
        public const string NET_CFG_CAP_CMD_AUDIO_ANALYSE = "devAudioAnalyse.getCaps";                  // 获取音频分析能力集(CFG_CAP_AUDIO_ANALYSE_INFO)
        public const string NET_CFG_CMD_MASTERSLAVE_GETCOLLECT = "masterSlaveTracker.factory.getCollect";    // 获取主从式跟踪器通道数目(对应结构体CFG_ZCTRACKER_INFO)
        public const string NET_CFG_CAP_CMD_MASTERSLAVE = "capsManager.get&MasterSlaveTracker";       // 获取主从式设备能力集(CFG_CAP_ZC_INFO)
        public const string NET_CFG_CAP_CMD_FOCUS_STATE = "devVideoInput.getFocusStatus";             // 获取镜头聚焦状态信息 (对应 NET_A_CFG_CAP_FOCUS_STATUS)
        public const string NET_CFG_CAP_CMD_NETAPP = "netApp.getCaps";                           // 获取网络应用能力集(对应CFG_CAP_NETAPP)
        public const string NET_CFG_CAP_CMD_PTZ_ENABLE = "ptz.factory.instance";                     // 获取云台支持信息(CFG_CAP_PTZ_ENABLEINFO )
        public const string NET_CFG_CAP_CMD_RECORD = "recordManager.getCaps";                    // 获取录像能力集(CFG_CAP_RECORD_INFO)
        public const string NET_CFG_CAP_CMD_BURN_MANAGER = "BurnManager.getCaps";                      // 获取刻录管理能力集( CFG_CAP_BURN_MANAGER)
        public const string NET_CFG_CAP_CMD_PTZ = "ptz.getCurrentProtocolCaps";               // 获取云台能力集(CFG_PTZ_PROTOCOL_CAPS_INFO)
        public const string NET_CFG_CMD_ENCODE_GETCAPS = "encode.getCaps";                           // 获取编码能力集(CFG_ENCODECAP)
        public const string NET_CFG_CAP_CMD_VIDEOINPUT_EX = "devVideoInput.getCapsEx";                  // 视频输入能力集扩展(对应CFG_CAP_VIDEOINPUT_INFO_EX)
        public const string NET_CFG_CAP_CMD_ANALYSE_MODE = "intelli.getCaps.AnalyseMode";              // 获取设备智能分析模式(对应 CFG_ANALYSE_MODE)
        public const string NET_CFG_CAP_CMD_EVENTMANAGER = "eventManager.getCaps";                     // 获取设备报警联动能力,老协议已废除,新开发请使用该字段(CFG_CAP_EVENTMANAGER_INFO)
        public const string NET_CFG_CAP_CMD_REMOTE_EVENTMANAGER = "RemoteEventManager.getCaps";               // 获取远程设备事件整体联动能力集(对应 CFG_CAP_EVENTMANAGER_INFO) 
        public const string NET_CFG_CAP_CMD_FILEMANAGER = "FileManager.getCaps";                      // 获取文件能力(CFG_CAP_FILEMANAGER)
        public const string NET_CFG_CAP_CMD_LOG = "log.getCaps";                              // 获取日志服务能力(NET_CFG_CAP_LOG)
        public const string NET_CFG_CAP_CMD_SPEAK = "speak.getCaps";                            // 扬声器播放能力(NET_CFG_CAP_SPEAK)
        public const string NET_CFG_CAP_CMD_ACCESSCONTROLMANAGER = "accessControlManager.getCaps";             // 门禁能力(CFG_CAP_ACCESSCONTROL)
        public const string NET_CFG_CAP_CMD_EXALARM = "alarm.getExAlarmCaps";                     // 获取扩展报警能力集, (对应结构体 CFG_CAP_EXALARM_INFO)
        public const string NET_CFG_CAP_CMD_EXALARMBOX = "alarm.getExAlarmBoxCaps";                  // 获取扩展报警盒能力集, (对应结构体 CFG_CAP_EXALARMBOX_INFO)
        public const string NET_CFG_CAP_CMD_RECORDFINDER = "RecordFinder.getCaps";                     // 获取查询记录能力集, (对应结构体 CFG_CAP_RECORDFINDER_INFO)
        public const string NET_CFG_CAP_CMD_ANALOGALARM = "AnalogAlarm.getCaps";                      // 模拟量报警输入通道能力(对应结构体 CFG_CAP_ANALOGALARM)
        public const string NET_CFG_CAP_CMD_LOWRATEWPAN = "LowRateWPAN.getCaps";                      // 获取LowRateWPAN能力(对应的结构体 CFG_CAP_LOWRATEWPAN)
        public const string NET_CFG_CAP_CMD_ADAPTENCODE = "encode.getNAACaps";                        // 获取编码自适应编码能力(对应的结构体 CFG_CAP_ADAPT_ENCODE_INFO)
        public const string NET_CFG_CAP_CMD_PTZPROTOCAL = "ptz.getProtocol";                          // 获取该云台实际能够使用的协议，按介质区分 (对应结构体 CFG_CAP_PTZ_PROTOCOL)
        public const string NET_CFG_CAP_CMD_MEDIACROP = "encode.getCropCaps";                       // 查询是否支持视频裁剪能力 (对应结构体 CFG_CAP_MEDIA_CROP)
        public const string NET_CFG_CAP_CMD_OSDMANAGER = "OSDManager.getCaps";			            // 获取OSD叠加能力(对应结构体CFG_CAP_OSDMANAGER_INFO)
        public const string NET_CFG_CAP_CMD_CUSTOM = "OSDManager.getCustomCaps";		            //  获取自定义标题能力集(对应结构体CFG_CAP_CUSTOM_OSD_INFO)
        public const string NET_CFG_CMD_TRAFFICSTROBE = "TrafficStrobe";                           //道闸配置(NET_CFG_TRAFFICSTROBE_INFO)

    }

    /// <summary>
    /// initialization parameter structure
    /// 初始化接口参数结构体
    /// </summary>
    public struct NETSDK_INIT_PARAM
    {
        /// <summary>
        /// specify netsdk's normal network process thread number, zero means using default value
        /// 指定NetSDK常规网络处理线程数, 当值为0时, 使用内部默认值
        /// </summary>
        public int nThreadNum;
        /// <summary>
        /// reserved
        /// 保留字节
        /// </summary>                      
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// SDK error code number enumeration
    /// SDK错误码枚举
    /// </summary>
    public enum EM_ErrorCode : uint
    {
        /// <summary>
        /// No error
        /// 没有错误
        /// </summary>
        NET_NOERROR = 0,
        /// <summary>
        /// Unknown error
        /// 未知错误
        /// </summary>
        NET_ERROR = 0xFFFFFFFF,
        /// <summary>
        /// Windows system error
        /// Windows系统错误
        /// </summary>
        NET_SYSTEM_ERROR = 0x80000000 | 1,
        /// <summary>
        /// Protocol error it may result from network timeout
        /// 网络错误,可能是因为网络超时
        /// </summary>
        NET_NETWORK_ERROR = 0x80000000 | 2,
        /// <summary>
        /// Device protocol does not match
        /// 设备协议不匹配
        /// </summary>
        NET_DEV_VER_NOMATCH = 0x80000000 | 3,
        /// <summary>
        /// Handle is invalid
        /// 句柄无效
        /// </summary>
        NET_INVALID_HANDLE = 0x80000000 | 4,
        /// <summary>
        /// Failed to open channel
        /// 打开通道失败
        /// </summary>
        NET_OPEN_CHANNEL_ERROR = 0x80000000 | 5,
        /// <summary>
        /// Failed to close channel
        /// 关闭通道失败
        /// </summary>
        NET_CLOSE_CHANNEL_ERROR = 0x80000000 | 6,
        /// <summary>
        /// User parameter is illegal
        /// 用户参数不合法
        /// </summary>
        NET_ILLEGAL_PARAM = 0x80000000 | 7,
        /// <summary>
        /// SDK initialization error
        /// SDK初始化出错
        /// </summary>
        NET_SDK_INIT_ERROR = 0x80000000 | 8,
        /// <summary>
        /// SDK clear error 
        /// SDK清理出错
        /// </summary>
        NET_SDK_UNINIT_ERROR = 0x80000000 | 9,
        /// <summary>
        /// Error occurs when apply for render resources
        /// 申请render资源出错
        /// </summary>
        NET_RENDER_OPEN_ERROR = 0x80000000 | 10,
        /// <summary>
        /// Error occurs when opening the decoder library
        /// 打开解码库出错
        /// </summary>
        NET_DEC_OPEN_ERROR = 0x80000000 | 11,
        /// <summary>
        /// Error occurs when closing the decoder library
        /// 关闭解码库出错
        /// </summary>
        NET_DEC_CLOSE_ERROR = 0x80000000 | 12,
        /// <summary>
        /// The detected channel number is 0 in multiple-channel preview
        /// 多画面预览中检测到通道数为0
        /// </summary>
        NET_MULTIPLAY_NOCHANNEL = 0x80000000 | 13,
        /// <summary>
        /// Failed to initialize record library
        /// 录音库初始化失败
        /// </summary>
        NET_TALK_INIT_ERROR = 0x80000000 | 14,
        /// <summary>
        /// The record library has not been initialized
        /// 录音库未经初始化
        /// </summary>
        NET_TALK_NOT_INIT = 0x80000000 | 15,
        /// <summary>
        /// Error occurs when sending out audio data
        /// 发送音频数据出错
        /// </summary>
        NET_TALK_SENDDATA_ERROR = 0x80000000 | 16,
        /// <summary>
        /// The real-time has been protected
        /// 实时数据已经处于保存状态
        /// </summary>
        NET_REAL_ALREADY_SAVING = 0x80000000 | 17,
        /// <summary>
        /// The real-time data has not been save
        /// 未保存实时数据
        /// </summary>
        NET_NOT_SAVING = 0x80000000 | 18,
        /// <summary>
        /// Error occurs when opening the file
        /// 打开文件出错
        /// </summary>
        NET_OPEN_FILE_ERROR = 0x80000000 | 19,
        /// <summary>
        /// Failed to enable PTZ to control timer
        /// 启动云台控制定时器失败
        /// </summary>
        NET_PTZ_SET_TIMER_ERROR = 0x80000000 | 20,
        /// <summary>
        /// Error occurs when verify returned data
        /// 对返回数据的校验出错
        /// </summary>
        NET_RETURN_DATA_ERROR = 0x80000000 | 21,
        /// <summary>
        /// There is no sufficient buffer
        /// 没有足够的缓存
        /// </summary>
        NET_INSUFFICIENT_BUFFER = 0x80000000 | 22,
        /// <summary>
        /// The current SDK does not support this fucntion
        /// 当前SDK未支持该功能
        /// </summary>
        NET_NOT_SUPPORTED = 0x80000000 | 23,
        /// <summary>
        /// There is no searched result
        /// 查询不到录象
        /// </summary>
        NET_NO_RECORD_FOUND = 0x80000000 | 24,
        /// <summary>
        /// You have no operation right
        /// 无操作权限
        /// </summary>
        NET_NOT_AUTHORIZED = 0x80000000 | 25,
        /// <summary>
        /// Can not operate right now
        /// 暂时无法执行
        /// </summary>
        NET_NOT_NOW = 0x80000000 | 26,
        /// <summary>
        /// There is no audio talk channel
        /// 未发现对讲通道
        /// </summary>
        NET_NO_TALK_CHANNEL = 0x80000000 | 27,
        /// <summary>
        /// There is no audio
        /// 未发现音频
        /// </summary>
        NET_NO_AUDIO = 0x80000000 | 28,
        /// <summary>
        /// The network SDK has not been initialized
        /// 网络SDK未经初始化
        /// </summary>
        NET_NO_INIT = 0x80000000 | 29,
        /// <summary>
        /// The download completed
        /// 下载已结束
        /// </summary>
        NET_DOWNLOAD_END = 0x80000000 | 30,
        /// <summary>
        /// There is no searched result
        /// 查询结果为空
        /// </summary>
        NET_EMPTY_LIST = 0x80000000 | 31,
        /// <summary>
        /// Failed to get system property setup
        /// 获取系统属性配置失败
        /// </summary>
        NET_ERROR_GETCFG_SYSATTR = 0x80000000 | 32,
        /// <summary>
        /// Failed to get SN
        /// 获取序列号失败
        /// </summary>
        NET_ERROR_GETCFG_SERIAL = 0x80000000 | 33,
        /// <summary>
        /// Failed to get general property
        /// 获取常规属性失败
        /// </summary>
        NET_ERROR_GETCFG_GENERAL = 0x80000000 | 34,
        /// <summary>
        /// Failed to get DSP capacity description
        /// 获取DSP能力描述失败
        /// </summary>
        NET_ERROR_GETCFG_DSPCAP = 0x80000000 | 35,
        /// <summary>
        /// Failed to get network channel setup
        /// 获取网络配置失败
        /// </summary>
        NET_ERROR_GETCFG_NETCFG = 0x80000000 | 36,
        /// <summary>
        /// Failed to get channel name
        /// 获取通道名称失败
        /// </summary>
        NET_ERROR_GETCFG_CHANNAME = 0x80000000 | 37,
        /// <summary>
        /// Failed to get video property
        /// 获取视频属性失败
        /// </summary>
        NET_ERROR_GETCFG_VIDEO = 0x80000000 | 38,
        /// <summary>
        /// Failed to get record setup
        /// 获取录象配置失败
        /// </summary>
        NET_ERROR_GETCFG_RECORD = 0x80000000 | 39,
        /// <summary>
        /// Failed to get decoder protocol name
        /// 获取解码器协议名称失败
        /// </summary>
        NET_ERROR_GETCFG_PRONAME = 0x80000000 | 40,
        /// <summary>
        /// Failed to get 232 COM function name
        /// 获取232串口功能名称失败
        /// </summary>
        NET_ERROR_GETCFG_FUNCNAME = 0x80000000 | 41,
        /// <summary>
        /// Failed to get decoder property
        /// 获取解码器属性失败
        /// </summary>
        NET_ERROR_GETCFG_485DECODER = 0x80000000 | 42,
        /// <summary>
        /// Failed to get 232 COM setup
        /// 获取232串口配置失败
        /// </summary>
        NET_ERROR_GETCFG_232COM = 0x80000000 | 43,
        /// <summary>
        /// Failed to get external alarm input setup
        /// 获取外部报警输入配置失败
        /// </summary>
        NET_ERROR_GETCFG_ALARMIN = 0x80000000 | 44,
        /// <summary>
        /// Failed to get motion detection alarm
        /// 获取动态检测报警失败
        /// </summary>
        NET_ERROR_GETCFG_ALARMDET = 0x80000000 | 45,
        /// <summary>
        /// Failed to get device time
        /// 获取设备时间失败
        /// </summary>
        NET_ERROR_GETCFG_SYSTIME = 0x80000000 | 46,
        /// <summary>
        /// Failed to get preview parameter
        /// 获取预览参数失败
        /// </summary>
        NET_ERROR_GETCFG_PREVIEW = 0x80000000 | 47,
        /// <summary>
        /// Failed to get audio maintenance setup
        /// 获取自动维护配置失败
        /// </summary>
        NET_ERROR_GETCFG_AUTOMT = 0x80000000 | 48,
        /// <summary>
        /// Failed to get video matrix setup
        /// 获取视频矩阵配置失败
        /// </summary>
        NET_ERROR_GETCFG_VIDEOMTRX = 0x80000000 | 49,
        /// <summary>
        /// Failed to get privacy mask zone setup
        /// 获取区域遮挡配置失败
        /// </summary>
        NET_ERROR_GETCFG_COVER = 0x80000000 | 50,
        /// <summary>
        /// Failed to get video watermark setup
        /// 获取图象水印配置失败
        /// </summary>
        NET_ERROR_GETCFG_WATERMAKE = 0x80000000 | 51,
        /// <summary>
        /// Failed to get config￡omulticast port by channel
        /// 获取配置失败位置：组播端口按通道配置
        /// </summary>
        NET_ERROR_GETCFG_MULTICAST = 0x80000000 | 52,
        /// <summary>
        /// Failed to modify general property
        /// 修改常规属性失败
        /// </summary>
        NET_ERROR_SETCFG_GENERAL = 0x80000000 | 55,
        /// <summary>
        /// Failed to modify channel setup
        /// 修改网络配置失败
        /// </summary>
        NET_ERROR_SETCFG_NETCFG = 0x80000000 | 56,
        /// <summary>
        /// Failed to modify channel name
        /// 修改通道名称失败
        /// </summary>
        NET_ERROR_SETCFG_CHANNAME = 0x80000000 | 57,
        /// <summary>
        /// Failed to modify video channel
        /// 修改视频属性失败
        /// </summary>
        NET_ERROR_SETCFG_VIDEO = 0x80000000 | 58,
        /// <summary>
        /// Failed to modify record setup
        /// 修改录象配置失败
        /// </summary>
        NET_ERROR_SETCFG_RECORD = 0x80000000 | 59,
        /// <summary>
        /// Failed to modify decoder property 
        /// 修改解码器属性失败
        /// </summary>
        NET_ERROR_SETCFG_485DECODER = 0x80000000 | 60,
        /// <summary>
        /// Failed to modify 232 COM setup
        /// 修改232串口配置失败
        /// </summary>
        NET_ERROR_SETCFG_232COM = 0x80000000 | 61,
        /// <summary>
        /// Failed to modify external input alarm setup
        /// 修改外部输入报警配置失败
        /// </summary>
        NET_ERROR_SETCFG_ALARMIN = 0x80000000 | 62,
        /// <summary>
        /// Failed to modify motion detection alarm setup
        /// 修改动态检测报警配置失败
        /// </summary>
        NET_ERROR_SETCFG_ALARMDET = 0x80000000 | 63,
        /// <summary>
        /// Failed to modify device time
        /// 修改设备时间失败
        /// </summary>
        NET_ERROR_SETCFG_SYSTIME = 0x80000000 | 64,
        /// <summary>
        /// Failed to modify preview parameter
        /// 修改预览参数失败
        /// </summary>
        NET_ERROR_SETCFG_PREVIEW = 0x80000000 | 65,
        /// <summary>
        /// Failed to modify auto maintenance setup
        /// 修改自动维护配置失败
        /// </summary>
        NET_ERROR_SETCFG_AUTOMT = 0x80000000 | 66,
        /// <summary>
        /// Failed to modify video matrix setup
        /// 修改视频矩阵配置失败
        /// </summary>
        NET_ERROR_SETCFG_VIDEOMTRX = 0x80000000 | 67,
        /// <summary>
        /// Failed to modify privacy mask zone
        /// 修改区域遮挡配置失败
        /// </summary>
        NET_ERROR_SETCFG_COVER = 0x80000000 | 68,
        /// <summary>
        /// Failed to modify video watermark setup
        /// 修改图象水印配置失败
        /// </summary>
        NET_ERROR_SETCFG_WATERMAKE = 0x80000000 | 69,
        /// <summary>
        /// Failed to modify wireless network information
        /// 修改无线网络信息失败
        /// </summary>
        NET_ERROR_SETCFG_WLAN = 0x80000000 | 70,
        /// <summary>
        /// Failed to select wireless network device
        /// 选择无线网络设备失败
        /// </summary>
        NET_ERROR_SETCFG_WLANDEV = 0x80000000 | 71,
        /// <summary>
        /// Failed to modify the actively registration parameter setup
        /// 修改主动注册参数配置失败
        /// </summary>
        NET_ERROR_SETCFG_REGISTER = 0x80000000 | 72,
        /// <summary>
        /// Failed to modify camera property
        /// 修改摄像头属性配置失败
        /// </summary>
        NET_ERROR_SETCFG_CAMERA = 0x80000000 | 73,
        /// <summary>
        /// Failed to modify IR alarm setup
        /// 修改红外报警配置失败
        /// </summary>
        NET_ERROR_SETCFG_INFRARED = 0x80000000 | 74,
        /// <summary>
        /// Failed to modify audio alarm setup
        /// 修改音频报警配置失败
        /// </summary>
        NET_ERROR_SETCFG_SOUNDALARM = 0x80000000 | 75,
        /// <summary>
        /// Failed to modify storage position setup
        /// 修改存储位置配置失败
        /// </summary>
        NET_ERROR_SETCFG_STORAGE = 0x80000000 | 76,
        /// <summary>
        /// The audio encode port has not been successfully initialized
        /// 音频编码接口没有成功初始化
        /// </summary>
        NET_AUDIOENCODE_NOTINIT = 0x80000000 | 77,
        /// <summary>
        /// The data are too long
        /// 数据过长
        /// </summary>
        NET_DATA_TOOLONGH = 0x80000000 | 78,
        /// <summary>
        /// The device does not support current operation
        /// 设备不支持该操作
        /// </summary>
        NET_UNSUPPORTED = 0x80000000 | 79,
        /// <summary>
        /// Device resources is not sufficient
        /// 设备资源不足
        /// </summary>
        NET_DEVICE_BUSY = 0x80000000 | 80,
        /// <summary>
        /// The server has boot up
        /// 服务器已经启动
        /// </summary>
        NET_SERVER_STARTED = 0x80000000 | 81,
        /// <summary>
        /// The server has not fully boot up
        /// 服务器尚未成功启动
        /// </summary>
        NET_SERVER_STOPPED = 0x80000000 | 82,
        /// <summary>
        /// Input serial number is not correct
        /// 输入序列号有误
        /// </summary>
        NET_LISTER_INCORRECT_SERIAL = 0x80000000 | 83,
        /// <summary>
        /// Failed to get HDD information
        /// 获取硬盘信息失败
        /// </summary>
        NET_QUERY_DISKINFO_FAILED = 0x80000000 | 84,
        /// <summary>
        /// Failed to get connect session information
        /// 获取连接Session信息
        /// </summary>
        NET_ERROR_GETCFG_SESSION = 0x80000000 | 85,
        /// <summary>
        /// The password you typed is incorrect. You have exceeded the maximum number of retries
        /// 输入密码错误超过限制次数
        /// </summary>
        NET_USER_FLASEPWD_TRYTIME = 0x80000000 | 86,
        /// <summary>
        /// Password is not correct
        /// 密码不正确
        /// </summary>
        NET_LOGIN_ERROR_PASSWORD = 0x80000000 | 100,
        /// <summary>
        /// The account does not exist
        /// 帐户不存在
        /// </summary>
        NET_LOGIN_ERROR_USER = 0x80000000 | 101,
        /// <summary>
        /// Time out for log in returned value
        /// 等待登录返回超时
        /// </summary>
        NET_LOGIN_ERROR_TIMEOUT = 0x80000000 | 102,
        /// <summary>
        /// The account has logged in
        /// 帐号已登录
        /// </summary>
        NET_LOGIN_ERROR_RELOGGIN = 0x80000000 | 103,
        /// <summary>
        /// The account has been locked
        /// 帐号已被锁定
        /// </summary>
        NET_LOGIN_ERROR_LOCKED = 0x80000000 | 104,
        /// <summary>
        /// The account bas been in the BL
        /// 帐号已被列为禁止名单
        /// </summary>
        NET_LOGIN_ERROR_BLACKLIST = 0x80000000 | 105,
        /// <summary>
        /// Resources are not sufficient. System is busy now
        /// 资源不足,系统忙
        /// </summary>
        NET_LOGIN_ERROR_BUSY = 0x80000000 | 106,
        /// <summary>
        /// Time out. Please check network and try again
        /// 登录设备超时,请检查网络并重试
        /// </summary>
        NET_LOGIN_ERROR_CONNECT = 0x80000000 | 107,
        /// <summary>
        /// Network connection failed
        /// 网络连接失败
        /// </summary>
        NET_LOGIN_ERROR_NETWORK = 0x80000000 | 108,
        /// <summary>
        /// Successfully logged in the device but can not create video channel. Please check network connection
        /// 登录设备成功,但无法创建视频通道,请检查网络状况
        /// </summary>
        NET_LOGIN_ERROR_SUBCONNECT = 0x80000000 | 109,
        /// <summary>
        /// exceed the max connect number
        /// 超过最大连接数
        /// </summary>
        NET_LOGIN_ERROR_MAXCONNECT = 0x80000000 | 110,
        /// <summary>
        /// protocol 3 support
        /// 只支持3代协议
        /// </summary>
        NET_LOGIN_ERROR_PROTOCOL3_ONLY = 0x80000000 | 111,
        /// <summary>
        /// There is no USB or USB info error
        /// 未插入U盾或U盾信息错误
        /// </summary>
        NET_LOGIN_ERROR_UKEY_LOST = 0x80000000 | 112,
        /// <summary>
        /// Client-end IP address has no right to login
        /// 客户端IP地址没有登录权限
        /// </summary>
        NET_LOGIN_ERROR_NO_AUTHORIZED = 0x80000000 | 113,
        /// <summary>
        /// user or password error
        /// 账号或密码错误 
        /// </summary>
        NET_LOGIN_ERROR_USER_OR_PASSOWRD = 0X80000000 | 117,
        /// <summary>
        /// Error occurs when Render library open audio
        /// Render库打开音频出错
        /// </summary>
        NET_RENDER_SOUND_ON_ERROR = 0x80000000 | 120,
        /// <summary>
        /// Error occurs when Render library close audio
        /// Render库关闭音频出错
        /// </summary>
        NET_RENDER_SOUND_OFF_ERROR = 0x80000000 | 121,
        /// <summary>
        /// Error occurs when Render library control volume
        /// Render库控制音量出错
        /// </summary>
        NET_RENDER_SET_VOLUME_ERROR = 0x80000000 | 122,
        /// <summary>
        /// Error occurs when Render library set video parameter
        /// Render库设置画面参数出错
        /// </summary>
        NET_RENDER_ADJUST_ERROR = 0x80000000 | 123,
        /// <summary>
        /// Error occurs when Render library pause play
        /// Render库暂停播放出错
        /// </summary>
        NET_RENDER_PAUSE_ERROR = 0x80000000 | 124,
        /// <summary>
        /// Render library snapshot error
        /// Render库抓图出错
        /// </summary>
        NET_RENDER_SNAP_ERROR = 0x80000000 | 125,
        /// <summary>
        /// Render library stepper error
        /// Render库步进出错
        /// </summary>
        NET_RENDER_STEP_ERROR = 0x80000000 | 126,
        /// <summary>
        /// Error occurs when Render library set frame rate
        /// Render库设置帧率出错
        /// </summary>
        NET_RENDER_FRAMERATE_ERROR = 0x80000000 | 127,
        /// <summary>
        /// Error occurs when Render lib setting show region
        /// Render库设置显示区域出错
        /// </summary>
        NET_RENDER_DISPLAYREGION_ERROR = 0x80000000 | 128,
        /// <summary>
        /// An error occurred when Render library getting current play time
        /// Render库获取当前播放时间出错
        /// </summary>
        NET_RENDER_GETOSDTIME_ERROR = 0x80000000 | 129,
        /// <summary>
        /// Group name has been existed
        /// 组名已存在
        /// </summary>
        NET_GROUP_EXIST = 0x80000000 | 140,
        /// <summary>
        /// The group name does not exist
        /// 组名不存在
        /// </summary>
        NET_GROUP_NOEXIST = 0x80000000 | 141,
        /// <summary>
        /// The group right exceeds the right list
        /// 组的权限超出权限列表范围
        /// </summary>
        NET_GROUP_RIGHTOVER = 0x80000000 | 142,
        /// <summary>
        /// The group can not be removed since there is user in it
        /// 组下有用户,不能删除
        /// </summary>
        NET_GROUP_HAVEUSER = 0x80000000 | 143,
        /// <summary>
        /// The user has used one of the group right. It can not be removed
        /// 组的某个权限被用户使用,不能出除
        /// </summary>
        NET_GROUP_RIGHTUSE = 0x80000000 | 144,
        /// <summary>
        /// New group name has been existed
        /// 新组名同已有组名重复
        /// </summary>
        NET_GROUP_SAMENAME = 0x80000000 | 145,
        /// <summary>
        /// The user name has been existed
        /// 用户已存在
        /// </summary>
        NET_USER_EXIST = 0x80000000 | 146,
        /// <summary>
        /// The account does not exist
        /// 用户不存在
        /// </summary>
        NET_USER_NOEXIST = 0x80000000 | 147,
        /// <summary>
        /// User right exceeds the group right
        /// 用户权限超出组权限
        /// </summary>
        NET_USER_RIGHTOVER = 0x80000000 | 148,
        /// <summary>
        /// Reserved account. It does not allow to be modified
        /// 保留帐号,不容许修改密码
        /// </summary>
        NET_USER_PWD = 0x80000000 | 149,
        /// <summary>
        /// password is not correct
        /// 密码不正确
        /// </summary>
        NET_USER_FLASEPWD = 0x80000000 | 150,
        /// <summary>
        /// Password is invalid
        /// 密码不匹配
        /// </summary>
        NET_USER_NOMATCHING = 0x80000000 | 151,
        /// <summary>
        /// account in use
        /// 账号正在使用中
        /// </summary>
        NET_USER_INUSE = 0x80000000 | 152,
        /// <summary>
        /// Failed to get network card setup
        /// 获取网卡配置失败
        /// </summary>
        NET_ERROR_GETCFG_ETHERNET = 0x80000000 | 300,
        /// <summary>
        /// Failed to get wireless network information
        /// 获取无线网络信息失败
        /// </summary>
        NET_ERROR_GETCFG_WLAN = 0x80000000 | 301,
        /// <summary>
        /// Failed to get wireless network device
        /// 获取无线网络设备失败
        /// </summary>
        NET_ERROR_GETCFG_WLANDEV = 0x80000000 | 302,
        /// <summary>
        /// Failed to get actively registration parameter
        /// 获取主动注册参数失败
        /// </summary>
        NET_ERROR_GETCFG_REGISTER = 0x80000000 | 303,
        /// <summary>
        /// Failed to get camera property
        /// 获取摄像头属性失败
        /// </summary>
        NET_ERROR_GETCFG_CAMERA = 0x80000000 | 304,
        /// <summary>
        /// Failed to get IR alarm setup
        /// 获取红外报警配置失败
        /// </summary>
        NET_ERROR_GETCFG_INFRARED = 0x80000000 | 305,
        /// <summary>
        /// Failed to get audio alarm setup
        /// 获取音频报警配置失败
        /// </summary>
        NET_ERROR_GETCFG_SOUNDALARM = 0x80000000 | 306,
        /// <summary>
        /// Failed to get storage position
        /// 获取存储位置配置失败
        /// </summary>
        NET_ERROR_GETCFG_STORAGE = 0x80000000 | 307,
        /// <summary>
        /// Failed to get mail setup.
        /// 获取邮件配置失败
        /// </summary>
        NET_ERROR_GETCFG_MAIL = 0x80000000 | 308,
        /// <summary>
        /// Can not set right now.
        /// 暂时无法设置
        /// </summary>
        NET_CONFIG_DEVBUSY = 0x80000000 | 309,
        /// <summary>
        /// The configuration setup data are illegal.
        /// 配置数据不合法
        /// </summary>
        NET_CONFIG_DATAILLEGAL = 0x80000000 | 310,
        /// <summary>
        /// Failed to get DST setup
        /// 获取夏令时配置失败
        /// </summary>
        NET_ERROR_GETCFG_DST = 0x80000000 | 311,
        /// <summary>
        /// Failed to set DST 
        /// 设置夏令时配置失败
        /// </summary>
        NET_ERROR_SETCFG_DST = 0x80000000 | 312,
        /// <summary>
        /// Failed to get video osd setup.
        /// 获取视频OSD叠加配置失败
        /// </summary>
        NET_ERROR_GETCFG_VIDEO_OSD = 0x80000000 | 313,
        /// <summary>
        /// Failed to set video osd 
        /// 设置视频OSD叠加配置失败
        /// </summary>
        NET_ERROR_SETCFG_VIDEO_OSD = 0x80000000 | 314,
        /// <summary>
        /// Failed to get CDMA\GPRS configuration
        /// 获取CDMA\GPRS网络配置失败
        /// </summary>
        NET_ERROR_GETCFG_GPRSCDMA = 0x80000000 | 315,
        /// <summary>
        /// Failed to set CDMA\GPRS configuration
        /// 设置CDMA\GPRS网络配置失败
        /// </summary>
        NET_ERROR_SETCFG_GPRSCDMA = 0x80000000 | 316,
        /// <summary>
        /// Failed to get IP Filter configuration
        /// 获取IP过滤配置失败
        /// </summary>
        NET_ERROR_GETCFG_IPFILTER = 0x80000000 | 317,
        /// <summary>
        /// Failed to set IP Filter configuration
        /// 设置IP过滤配置失败
        /// </summary>
        NET_ERROR_SETCFG_IPFILTER = 0x80000000 | 318,
        /// <summary>
        /// Failed to get Talk Encode configuration
        /// 获取语音对讲编码配置失败
        /// </summary>
        NET_ERROR_GETCFG_TALKENCODE = 0x80000000 | 319,
        /// <summary>
        /// Failed to set Talk Encode configuration
        /// 设置语音对讲编码配置失败
        /// </summary>
        NET_ERROR_SETCFG_TALKENCODE = 0x80000000 | 320,
        /// <summary>
        /// Failed to get The length of the video package configuration
        /// 获取录像打包长度配置失败
        /// </summary>
        NET_ERROR_GETCFG_RECORDLEN = 0x80000000 | 321,
        /// <summary>
        /// Failed to set The length of the video package configuration
        /// 设置录像打包长度配置失败
        /// </summary>
        NET_ERROR_SETCFG_RECORDLEN = 0x80000000 | 322,
        /// <summary>
        /// Not support Network hard disk partition
        /// 不支持网络硬盘分区
        /// </summary>
        NET_DONT_SUPPORT_SUBAREA = 0x80000000 | 323,
        /// <summary>
        /// Failed to get the register server information
        /// 获取设备上主动注册服务器信息失败
        /// </summary>
        NET_ERROR_GET_AUTOREGSERVER = 0x80000000 | 324,
        /// <summary>
        /// Failed to control actively registration
        /// 主动注册重定向注册错误
        /// </summary>
        NET_ERROR_CONTROL_AUTOREGISTER = 0x80000000 | 325,
        /// <summary>
        /// Failed to disconnect actively registration
        /// 断开主动注册服务器错误
        /// </summary>
        NET_ERROR_DISCONNECT_AUTOREGISTER = 0x80000000 | 326,
        /// <summary>
        /// Failed to get mms configuration
        /// 获取mms配置失败
        /// </summary>
        NET_ERROR_GETCFG_MMS = 0x80000000 | 327,
        /// <summary>
        /// Failed to set mms configuration
        /// 设置mms配置失败
        /// </summary>
        NET_ERROR_SETCFG_MMS = 0x80000000 | 328,
        /// <summary>
        /// Failed to get SMS configuration
        /// 获取短信激活无线连接配置失败
        /// </summary>
        NET_ERROR_GETCFG_SMSACTIVATION = 0x80000000 | 329,
        /// <summary>
        /// Failed to set SMS configuration
        /// 设置短信激活无线连接配置失败
        /// </summary>
        NET_ERROR_SETCFG_SMSACTIVATION = 0x80000000 | 330,
        /// <summary>
        /// Failed to get activation of a wireless connection
        /// 获取拨号激活无线连接配置失败
        /// </summary>
        NET_ERROR_GETCFG_DIALINACTIVATION = 0x80000000 | 331,
        /// <summary>
        /// Failed to set activation of a wireless connection
        /// 设置拨号激活无线连接配置失败
        /// </summary>
        NET_ERROR_SETCFG_DIALINACTIVATION = 0x80000000 | 332,
        /// <summary>
        /// Failed to get the parameter of video output
        /// 查询视频输出参数配置失败
        /// </summary>
        NET_ERROR_GETCFG_VIDEOOUT = 0x80000000 | 333,
        /// <summary>
        /// Failed to set the configuration of video output
        /// 设置视频输出参数配置失败
        /// </summary>
        NET_ERROR_SETCFG_VIDEOOUT = 0x80000000 | 334,
        /// <summary>
        /// Failed to get osd overlay enabling
        /// 获取osd叠加使能配置失败
        /// </summary>
        NET_ERROR_GETCFG_OSDENABLE = 0x80000000 | 335,
        /// <summary>
        /// Failed to set OSD overlay enabling
        /// 设置osd叠加使能配置失败
        /// </summary>
        NET_ERROR_SETCFG_OSDENABLE = 0x80000000 | 336,
        /// <summary>
        /// Failed to set digital input configuration of front encoders
        /// 设置数字通道前端编码接入配置失败
        /// </summary>
        NET_ERROR_SETCFG_ENCODERINFO = 0x80000000 | 337,
        /// <summary>
        /// Failed to get TV adjust configuration
        /// 获取TV调节配置失败
        /// </summary>
        NET_ERROR_GETCFG_TVADJUST = 0x80000000 | 338,
        /// <summary>
        /// Failed to set TV adjust configuration
        /// 设置TV调节配置失败
        /// </summary>
        NET_ERROR_SETCFG_TVADJUST = 0x80000000 | 339,
        /// <summary>
        /// Failed to request to establish a connection
        /// 请求建立连接失败
        /// </summary>
        NET_ERROR_CONNECT_FAILED = 0x80000000 | 340,
        /// <summary>
        /// Failed to request to upload burn files
        /// 请求刻录文件上传失败
        /// </summary>
        NET_ERROR_SETCFG_BURNFILE = 0x80000000 | 341,
        /// <summary>
        /// Failed to get capture configuration information
        /// 获取抓包配置信息失败
        /// </summary>
        NET_ERROR_SNIFFER_GETCFG = 0x80000000 | 342,
        /// <summary>
        /// Failed to set capture configuration information
        /// 设置抓包配置信息失败
        /// </summary>
        NET_ERROR_SNIFFER_SETCFG = 0x80000000 | 343,
        /// <summary>
        /// Failed to get download restrictions information
        /// 查询下载限制信息失败
        /// </summary>
        NET_ERROR_DOWNLOADRATE_GETCFG = 0x80000000 | 344,
        /// <summary>
        /// Failed to set download restrictions information
        /// 设置下载限制信息失败
        /// </summary>
        NET_ERROR_DOWNLOADRATE_SETCFG = 0x80000000 | 345,
        /// <summary>
        /// Failed to query serial port parameters
        /// 查询串口参数失败
        /// </summary>
        NET_ERROR_SEARCH_TRANSCOM = 0x80000000 | 346,
        /// <summary>
        /// Failed to get the preset info
        /// 获取预制点信息错误
        /// </summary>
        NET_ERROR_GETCFG_POINT = 0x80000000 | 347,
        /// <summary>
        /// Failed to set the preset info
        /// 设置预制点信息错误
        /// </summary>
        NET_ERROR_SETCFG_POINT = 0x80000000 | 348,
        /// <summary>
        /// SDK log out the device abnormally
        /// SDK没有正常登出设备
        /// </summary>
        NET_SDK_LOGOUT_ERROR = 0x80000000 | 349,
        /// <summary>
        /// Failed to get vehicle configuration
        /// 获取车载配置失败
        /// </summary>
        NET_ERROR_GET_VEHICLE_CFG = 0x80000000 | 350,
        /// <summary>
        /// Failed to set vehicle configuration
        /// 设置车载配置失败
        /// </summary>
        NET_ERROR_SET_VEHICLE_CFG = 0x80000000 | 351,
        /// <summary>
        /// Failed to get ATM overlay configuration
        /// 获取atm叠加配置失败
        /// </summary>
        NET_ERROR_GET_ATM_OVERLAY_CFG = 0x80000000 | 352,
        /// <summary>
        /// Failed to set ATM overlay configuration
        /// 设置atm叠加配置失败
        /// </summary>
        NET_ERROR_SET_ATM_OVERLAY_CFG = 0x80000000 | 353,
        /// <summary>
        /// Failed to get ATM overlay ability
        /// 获取atm叠加能力失败
        /// </summary>
        NET_ERROR_GET_ATM_OVERLAY_ABILITY = 0x80000000 | 354,
        /// <summary>
        /// Failed to get decoder tour configuration
        /// 获取解码器解码轮巡配置失败
        /// </summary>
        NET_ERROR_GET_DECODER_TOUR_CFG = 0x80000000 | 355,
        /// <summary>
        /// Failed to set decoder tour configuration
        /// 设置解码器解码轮巡配置失败
        /// </summary>
        NET_ERROR_SET_DECODER_TOUR_CFG = 0x80000000 | 356,
        /// <summary>
        /// Failed to control decoder tour
        /// 控制解码器解码轮巡失败
        /// </summary>
        NET_ERROR_CTRL_DECODER_TOUR = 0x80000000 | 357,
        /// <summary>
        /// Beyond the device supports for the largest number of user groups
        /// 超出设备支持最大用户组数目
        /// </summary>
        NET_GROUP_OVERSUPPORTNUM = 0x80000000 | 358,
        /// <summary>
        /// Beyond the device supports for the largest number of users
        /// 超出设备支持最大用户数目
        /// </summary>
        NET_USER_OVERSUPPORTNUM = 0x80000000 | 359,
        /// <summary>
        /// Failed to get SIP configuration
        /// 获取SIP配置失败
        /// </summary>
        NET_ERROR_GET_SIP_CFG = 0x80000000 | 368,
        /// <summary>
        /// Failed to set SIP configuration
        /// 设置SIP配置失败
        /// </summary>
        NET_ERROR_SET_SIP_CFG = 0x80000000 | 369,
        /// <summary>
        /// Failed to get SIP capability
        /// 获取SIP能力失败
        /// </summary>
        NET_ERROR_GET_SIP_ABILITY = 0x80000000 | 370,
        /// <summary>
        /// Failed to get "WIFI ap' configuration
        /// 获取WIFI ap配置失败
        /// </summary>
        NET_ERROR_GET_WIFI_AP_CFG = 0x80000000 | 371,
        /// <summary>
        /// Failed to set "WIFI ap" configuration
        /// 设置WIFI ap配置失败
        /// </summary>
        NET_ERROR_SET_WIFI_AP_CFG = 0x80000000 | 372,
        /// <summary>
        /// Failed to get decode policy
        /// 获取解码策略配置失败
        /// </summary>
        NET_ERROR_GET_DECODE_POLICY = 0x80000000 | 373,
        /// <summary>
        /// Failed to set decode policy
        /// 设置解码策略配置失败
        /// </summary>
        NET_ERROR_SET_DECODE_POLICY = 0x80000000 | 374,
        /// <summary>
        /// refuse talk
        /// 拒绝对讲
        /// </summary>
        NET_ERROR_TALK_REJECT = 0x80000000 | 375,
        /// <summary>
        /// talk has opened by other client
        /// 对讲被其他客户端打开
        /// </summary>
        NET_ERROR_TALK_OPENED = 0x80000000 | 376,
        /// <summary>
        /// resource conflict
        /// 资源冲突
        /// </summary>
        NET_ERROR_TALK_RESOURCE_CONFLICIT = 0x80000000 | 377,
        /// <summary>
        /// unsupported encode type
        /// 不支持的语音编码格式
        /// </summary>
        NET_ERROR_TALK_UNSUPPORTED_ENCODE = 0x80000000 | 378,
        /// <summary>
        /// no right
        /// 无权限
        /// </summary>
        NET_ERROR_TALK_RIGHTLESS = 0x80000000 | 379,
        /// <summary>
        /// request failed
        /// 请求对讲失败
        /// </summary>
        NET_ERROR_TALK_FAILED = 0x80000000 | 380,
        /// <summary>
        /// Failed to get device relative config
        /// 获取机器相关配置失败
        /// </summary>
        NET_ERROR_GET_MACHINE_CFG = 0x80000000 | 381,
        /// <summary>
        /// Failed to set device relative config
        /// 设置机器相关配置失败
        /// </summary>
        NET_ERROR_SET_MACHINE_CFG = 0x80000000 | 382,
        /// <summary>
        /// get data failed
        /// 设备无法获取当前请求数据
        /// </summary>
        NET_ERROR_GET_DATA_FAILED = 0x80000000 | 383,
        /// <summary>
        /// MAC validate failed
        /// MAC地址验证失败 
        /// </summary>
        NET_ERROR_MAC_VALIDATE_FAILED = 0x80000000 | 384,
        /// <summary>
        /// Failed to get server instance 
        /// 获取服务器实例失败
        /// </summary>
        NET_ERROR_GET_INSTANCE = 0x80000000 | 385,
        /// <summary>
        /// Generated json string is error
        /// 生成的jason字符串错误
        /// </summary>
        NET_ERROR_JSON_REQUEST = 0x80000000 | 386,
        /// <summary>
        /// The responding json string is error
        /// 响应的jason字符串错误
        /// </summary>
        NET_ERROR_JSON_RESPONSE = 0x80000000 | 387,
        /// <summary>
        /// The protocol version is lower than current version
        /// 协议版本低于当前使用的版本
        /// </summary>
        NET_ERROR_VERSION_HIGHER = 0x80000000 | 388,
        /// <summary>
        /// Hotspare disk operation failed. The capacity is low
        /// 热备操作失败, 容量不足
        /// </summary>
        NET_SPARE_NO_CAPACITY = 0x80000000 | 389,
        /// <summary>
        /// Display source is used by other output
        /// 显示源被其他输出占用
        /// </summary>
        NET_ERROR_SOURCE_IN_USE = 0x80000000 | 390,
        /// <summary>
        /// advanced users grab low-level user resource
        /// 高级用户抢占低级用户资源
        /// </summary>
        NET_ERROR_REAVE = 0x80000000 | 391,
        /// <summary>
        /// net forbid
        /// 禁止入网
        /// </summary>
        NET_ERROR_NETFORBID = 0x80000000 | 392,
        /// <summary>
        /// get MAC filter configuration error
        /// 获取MAC过滤配置失败
        /// </summary>
        NET_ERROR_GETCFG_MACFILTER = 0x80000000 | 393,
        /// <summary>
        /// set MAC filter configuration error
        /// 设置MAC过滤配置失败
        /// </summary>
        NET_ERROR_SETCFG_MACFILTER = 0x80000000 | 394,
        /// <summary>
        /// get IP/MAC filter configuration error
        /// 获取IP/MAC过滤配置失败
        /// </summary>
        NET_ERROR_GETCFG_IPMACFILTER = 0x80000000 | 395,
        /// <summary>
        /// set IP/MAC filter configuration error
        /// 设置IP/MAC过滤配置失败
        /// </summary>
        NET_ERROR_SETCFG_IPMACFILTER = 0x80000000 | 396,
        /// <summary>
        /// operation over time 
        /// 当前操作超时
        /// </summary>
        NET_ERROR_OPERATION_OVERTIME = 0x80000000 | 397,
        /// <summary>
        /// senior validation failure
        /// 高级校验失败
        /// </summary>
        NET_ERROR_SENIOR_VALIDATE_FAILED = 0x80000000 | 398,
        /// <summary>
        /// device ID is not exist
        /// 设备ID不存在
        /// </summary>
        NET_ERROR_DEVICE_ID_NOT_EXIST = 0x80000000 | 399,
        /// <summary>
        /// unsupport operation
        /// 不支持当前操作
        /// </summary>
        NET_ERROR_UNSUPPORTED = 0x80000000 | 400,
        /// <summary>
        /// proxy dll load error
        /// 代理库加载失败
        /// </summary>
        NET_ERROR_PROXY_DLLLOAD = 0x80000000 | 401,
        /// <summary>
        /// proxy user parameter is not legal
        /// 代理用户参数不合法
        /// </summary>
        NET_ERROR_PROXY_ILLEGAL_PARAM = 0x80000000 | 402,
        /// <summary>
        /// handle invalid
        /// 代理句柄无效
        /// </summary>
        NET_ERROR_PROXY_INVALID_HANDLE = 0x80000000 | 403,
        /// <summary>
        /// login device error
        /// 代理登入前端设备失败
        /// </summary>
        NET_ERROR_PROXY_LOGIN_DEVICE_ERROR = 0x80000000 | 404,
        /// <summary>
        /// start proxy server error
        /// 启动代理服务失败
        /// </summary>
        NET_ERROR_PROXY_START_SERVER_ERROR = 0x80000000 | 405,
        /// <summary>
        /// request speak failed
        /// 请求喊话失败
        /// </summary>
        NET_ERROR_SPEAK_FAILED = 0x80000000 | 406,
        /// <summary>
        /// unsupport F6
        /// 设备不支持此F6接口调用
        /// </summary>
        NET_ERROR_NOT_SUPPORT_F6 = 0x80000000 | 407,
        /// <summary>
        /// CD is not ready
        /// 光盘未就绪
        /// </summary>
        NET_ERROR_CD_UNREADY = 0x80000000 | 408,
        /// <summary>
        /// Directory does not exist
        /// 目录不存在
        /// </summary>
        NET_ERROR_DIR_NOT_EXIST = 0x80000000 | 409,
        /// <summary>
        /// The device does not support the segmentation model
        /// 设备不支持的分割模式
        /// </summary>
        NET_ERROR_UNSUPPORTED_SPLIT_MODE = 0x80000000 | 410,
        /// <summary>
        /// Open the window parameter is illegal
        /// 开窗参数不合法
        /// </summary>
        NET_ERROR_OPEN_WND_PARAM = 0x80000000 | 411,
        /// <summary>
        /// Open the window more than limit
        /// 开窗数量超过限制
        /// </summary>
        NET_ERROR_LIMITED_WND_COUNT = 0x80000000 | 412,
        /// <summary>
        /// Request command with the current pattern don't match
        /// 请求命令与当前模式不匹配
        /// </summary>
        NET_ERROR_UNMATCHED_REQUEST = 0x80000000 | 413,
        /// <summary>
        /// Render Library to enable high-definition image internal adjustment strategy error
        /// Render库启用高清图像内部调整策略出错
        /// </summary>
        NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR = 0x80000000 | 414,
        /// <summary>
        /// Upgrade equipment failure
        /// 设备升级失败
        /// </summary>
        NET_ERROR_UPGRADE_FAILED = 0x80000000 | 415,
        /// <summary>
        /// Can't find the target device
        /// 找不到目标设备
        /// </summary>
        NET_ERROR_NO_TARGET_DEVICE = 0x80000000 | 416,
        /// <summary>
        /// Can't find the verify device
        /// 找不到验证设备
        /// </summary>
        NET_ERROR_NO_VERIFY_DEVICE = 0x80000000 | 417,
        /// <summary>
        /// No cascade permissions
        /// 无级联权限
        /// </summary>
        NET_ERROR_CASCADE_RIGHTLESS = 0x80000000 | 418,
        /// <summary>
        /// low priority
        /// 低优先级
        /// </summary>
        NET_ERROR_LOW_PRIORITY = 0x80000000 | 419,
        /// <summary>
        /// The remote device request timeout
        /// 远程设备请求超时
        /// </summary>
        NET_ERROR_REMOTE_REQUEST_TIMEOUT = 0x80000000 | 420,
        /// <summary>
        /// Input source beyond maximum route restrictions
        /// 输入源超出最大路数限制
        /// </summary>
        NET_ERROR_LIMITED_INPUT_SOURCE = 0x80000000 | 421,
        /// <summary>
        /// Failed to set log print
        /// 设置日志打印失败
        /// </summary>
        NET_ERROR_SET_LOG_PRINT_INFO = 0x80000000 | 422,
        /// <summary>
        /// "dwSize" is not initialized in input param
        /// 入参的dwsize字段出错
        /// </summary>
        NET_ERROR_PARAM_DWSIZE_ERROR = 0x80000000 | 423,
        /// <summary>
        /// TV wall exceed limit
        /// 电视墙数量超过上限
        /// </summary>
        NET_ERROR_LIMITED_MONITORWALL_COUNT = 0x80000000 | 424,
        /// <summary>
        /// Fail to execute part of the process
        /// 部分过程执行失败
        /// </summary>
        NET_ERROR_PART_PROCESS_FAILED = 0x80000000 | 425,
        /// <summary>
        /// Fail to transmit due to not supported by target
        /// 该功能不支持转发
        /// </summary>
        NET_ERROR_TARGET_NOT_SUPPORT = 0x80000000 | 426,
        /// <summary>
        /// Access to the file failed
        /// 访问文件失败
        /// </summary>
        NET_ERROR_VISITE_FILE = 0x80000000 | 510,
        /// <summary>
        /// Device busy
        /// 设备忙
        /// </summary>
        NET_ERROR_DEVICE_STATUS_BUSY = 0x80000000 | 511,
        /// <summary>
        /// Fail to change the password
        /// 修改密码无权限
        /// </summary>
        NET_USER_PWD_NOT_AUTHORIZED = 0x80000000 | 512,
        /// <summary>
        /// Password strength is not enough
        /// 密码强度不够
        /// </summary>
        NET_USER_PWD_NOT_STRONG = 0x80000000 | 513,
        /// <summary>
        /// No corresponding setup
        /// 没有对应的配置
        /// </summary>
        NET_ERROR_NO_SUCH_CONFIG = 0x80000000 | 514,
        /// <summary>
        /// Failed to record audio
        /// 录音失败
        /// </summary>
        NET_ERROR_AUDIO_RECORD_FAILED = 0x80000000 | 515,
        /// <summary>
        /// Failed to send out data 
        /// 数据发送失败
        /// </summary>
        NET_ERROR_SEND_DATA_FAILED = 0x80000000 | 516,
        /// <summary>
        /// Abandoned port 
        /// 废弃接口
        /// </summary>
        NET_ERROR_OBSOLESCENT_INTERFACE = 0x80000000 | 517,
        /// <summary>
        /// Internal buffer is not sufficient 
        /// 内部缓冲不足
        /// </summary>
        NET_ERROR_INSUFFICIENT_INTERAL_BUF = 0x80000000 | 518,
        /// <summary>
        /// verify password when changing device IP
        /// 修改设备ip时,需要校验密码
        /// </summary>
        NET_ERROR_NEED_ENCRYPTION_PASSWORD = 0x80000000 | 519,
        /// <summary>
        /// device not support the record
        /// 设备不支持此记录集
        /// </summary>
        NET_ERROR_NOSUPPORT_RECORD = 0x80000000 | 520,
        /// <summary>
        /// Failed to serialize data
        /// 数据序列化错误
        /// </summary>
        NET_ERROR_SERIALIZE_ERROR = 0x80000000 | 1010,
        /// <summary>
        /// Failed to deserialize data
        /// 数据序列化错误
        /// </summary>
        NET_ERROR_DESERIALIZE_ERROR = 0x80000000 | 1011,
        /// <summary>
        /// the wireless id is already existed
        /// 数据反序列化错误
        /// </summary>
        NET_ERROR_LOWRATEWPAN_ID_EXISTED = 0x80000000 | 1012,
        /// <summary>
        /// the wireless id limited
        /// 该无线ID已存在
        /// </summary>
        NET_ERROR_LOWRATEWPAN_ID_LIMIT = 0x80000000 | 1013,
        /// <summary>
        /// add the wireless id abnormaly
        /// 无线ID数量已超限
        /// </summary>
        NET_ERROR_LOWRATEWPAN_ID_ABNORMAL = 0x80000000 | 1014,
        /// <summary>
        /// encrypt data fail
        /// 加密数据失败
        /// </summary>
        NET_ERROR_ENCRYPT = 0x80000000 | 1015,
        /// <summary>
        /// new password illegal
        /// 新密码不合规范
        /// </summary>
        NET_ERROR_PWD_ILLEGAL = 0x80000000 | 1016,
        /// <summary>
        /// device is already init
        /// 设备已经初始化
        /// </summary>
        NET_ERROR_DEVICE_ALREADY_INIT = 0x80000000 | 1017,
        /// <summary>
        /// security code check out fail
        /// 安全码错误
        /// </summary>
        NET_ERROR_SECURITY_CODE = 0x80000000 | 1018,
        /// <summary>
        /// security code out of time
        /// 安全码超出有效期
        /// </summary>
        NET_ERROR_SECURITY_CODE_TIMEOUT = 0x80000000 | 1019,
        /// <summary>
        /// get passwd specification fail
        /// 获取密码规范失败
        /// </summary>
        NET_ERROR_GET_PWD_SPECI = 0x80000000 | 1020,
        /// <summary>
        /// no authority of operation 
        /// 无权限进行该操作
        /// </summary>
        NET_ERROR_NO_AUTHORITY_OF_OPERATION = 0x80000000 | 1021,
        /// <summary>
        /// decrypt data fail
        /// 解密数据失败
        /// </summary>
        NET_ERROR_DECRYPT = 0x80000000 | 1022,
        /// <summary>
        /// 2D code check out fail
        /// 2D code校验失败
        /// </summary>
        NET_ERROR_2D_CODE = 0x80000000 | 1023,
        /// <summary>
        /// invalid request
        /// 非法的RPC请求
        /// </summary>
        NET_ERROR_INVALID_REQUEST = 0x80000000 | 1024,
        /// <summary>
        /// pwd reset unabled
        /// 密码重置功能已关闭
        /// </summary>
        NET_ERROR_PWD_RESET_DISABLE = 0x80000000 | 1025,
        /// <summary>
        /// failed to display private data,such as rule box
        /// 显示私有数据，比如规则框等失败
        /// </summary>
        NET_ERROR_PLAY_PRIVATE_DATA = 0x80000000 | 1026,
        /// <summary>
        /// robot operate failed
        /// 机器人操作失败
        /// </summary>
        NET_ERROR_ROBOT_OPERATE_FAILED = 0x80000000 | 1027,
        /// <summary>
        /// photosize exceeds limit
        /// 图片大小超限
        /// </summary>
        NET_ERROR_PHOTOSIZE_EXCEEDSLIMIT = 0x80000000 | 1028,
        /// <summary>
        /// userid invalid
        /// 用户ID不存在
        /// </summary>
        NET_ERROR_USERID_INVALID = 0x80000000 | 1029,
        /// <summary>
        /// photo extract feature failed
        /// 照片特征值提取失败
        /// </summary>
        NET_ERROR_EXTRACTFEATURE_FAILED = 0x80000000 | 1030,
        /// <summary>
        /// photo exist
        /// 照片已存在
        /// </summary>
        NET_ERROR_PHOTO_EXIST = 0x80000000 | 1031,
        /// <summary>
        /// photo over flow
        /// 照片数量超过上限
        /// </summary>
        NET_ERROR_PHOTO_OVERFLOW = 0x80000000 | 1032,
        /// <summary>
        /// channel has already been opened
        /// 通道已经打开
        /// </summary>
        NET_ERROR_CHANNEL_ALREADY_OPENED = 0x80000000 | 1033,
        /// <summary>
        /// photo format error
        /// 图片格式错误
        /// </summary>
        NET_ERROR_PHOTO_FORMAT = 0x80000000 | 1036,
        /// <summary>
        /// 组ID超过最大值
        /// </summary>
        NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_EXCEED = 0x80000000 | 1051,
        /// <summary>
        /// VK info decrypt failed
        /// VK信息解密失败
        /// </summary>
        NET_ERROR_VK_INFO_DECRYPT_FAILED = 0x80000000 | 1117,
        /// <summary>
        /// invalid param
        /// 参数无效
        /// </summary>
        NET_ERROR_INVALID_PARAM = 0x80000000 | 1133,
        /// <summary>
        /// invalid password
        /// 密码无效
        /// </summary>
        NET_ERROR_INVALID_PASSWORD = 0x80000000 | 1134,
        /// <summary>
        /// invalid infomation
        /// 信息无效
        /// </summary>
        NET_ERROR_INVALID_FINGERPRINT = 0x80000000 | 1135,
        /// <summary>
        /// invalid target
        /// 目标无效
        /// </summary>
        NET_ERROR_INVALID_FACE = 0x80000000 | 1136,
        /// <summary>
        /// invalid card
        /// 卡无效
        /// </summary>
        NET_ERROR_INVALID_CARD = 0x80000000 | 1137,
        /// <summary>
        /// invalid user
        /// 用户无效
        /// </summary>
        NET_ERROR_INVALID_USER = 0x80000000 | 1138,
        /// <summary>
        /// device get sub service fail
        /// 能力集子服务获取失败
        /// </summary>
        NET_ERROR_GET_SUBSERVICE = 0x80000000 | 1139,
        /// <summary>
        /// device get method fail
        /// 获取组件的方法集失败
        /// </summary>
        NET_ERROR_GET_METHOD = 0x80000000 | 1140,
        /// <summary>
        /// device get sub caps fail
        /// 获取资源实体能力集失败
        /// </summary>
        NET_ERROR_GET_SUBCAPS = 0x80000000 | 1141,
        /// <summary>
        /// up to insert limit
        /// 已达插入上限
        /// </summary>
        NET_ERROR_UPTO_INSERT_LIMIT = 0x80000000 | 1142,
        /// <summary>
        /// up tp max insert rate
        /// 已达最大插入速度
        /// </summary>
        NET_ERROR_UPTO_MAX_INSERT_RATE = 0x80000000 | 1143,
        /// <summary>
        /// erase infomation data fail
        /// 清除信息数据失败
        /// </summary>
        NET_ERROR_ERASE_FINGERPRINT = 0x80000000 | 1144,
        /// <summary>
        /// erase target data fail
        /// 清除目标数据失败
        /// </summary>
        NET_ERROR_ERASE_FACE = 0x80000000 | 1145,
        /// <summary>
        /// erase card data  fail
        /// 清除卡数据失败
        /// </summary>
        NET_ERROR_ERASE_CARD = 0x80000000 | 1146,
        /// <summary>
        /// no record
        /// 没有记录
        /// </summary>
        NET_ERROR_NO_RECORD = 0x80000000 | 1147,
        /// <summary>
        /// no more records
        /// 查找到最后，没有更多记录
        /// </summary>
        NET_ERROR_NOMORE_RECORDS = 0x80000000 | 1148,
        /// <summary>
        /// record already exist
        /// 下发卡或信息时，数据重复
        /// </summary>
        NET_ERROR_RECORD_ALREADY_EXISTS = 0x80000000 | 1149,
        /// <summary>
        /// exceed max infomation per user
        /// 超过个人最大信息记录数
        /// </summary>
        NET_ERROR_EXCEED_MAX_FINGERPRINT_PERUSER = 0x80000000 | 1150,
        /// <summary>
        /// exceed max card per user
        /// 超过个人最大卡片记录数
        /// </summary>
        NET_ERROR_EXCEED_MAX_CARD_PERUSER = 0x80000000 | 1151,
        /// <summary>
        /// exceed administrator limit
        /// 超过门禁管理员个数限制
        /// </summary>
        NET_ERROR_EXCEED_ADMINISTRATOR_LIMIT = 0x80000000 | 1152,
        /// <summary>
        /// 设备不支持高安全等级登录
        /// </summary>
        ERR_NOT_SUPPORT_HIGHLEVEL_SECURITY_LOGIN = 0x80000000 | 1153,
        /// <summary>
        /// card num already exist
        /// 卡号已存在
        /// </summary>
        NET_ERROR_CARD_NUM_EXIST = 0x80000000 | 1162,
        /// <summary>
        /// infomation already exist
        /// 信息已存在
        /// </summary>
        NET_ERROR_FINGERPRINT_EXIST = 0x80000000 | 1163,
        /// <summary>
        /// information Download Fail
        /// 信息通过URL下载方式下载失败
        /// </summary>
        NET_ERROR_FINGERPRINT_DOWNLOAD_FAIL = 0x80000000 | 1209,
        /// <summary>
        /// The door is in a normally open status
        /// 门处于常开状态
        /// </summary>
        NET_ERROR_DOOR_IN_NORMALLY_OPEN_STATUS = 0x80000000 | 1217,
        /// <summary>
        /// The door is in a normally closed status
        /// 门处于常闭状态
        /// </summary>
        NET_ERROR_DOOR_IN_NORMALLY_CLOSED_STATUS = 0x80000000 | 1218,
        /// <summary>
        /// The door is in an interlocking status
        /// 门处于互锁状态
        /// </summary>
        NET_ERROR_DOOR_IN_INTERLOCK_STATUS = 0x80000000 | 1219,
        /// <summary>
        /// Data Do Not Edit
        /// 数据不允许编辑
        /// </summary>
        NET_ERROR_DO_NOT_EDIT = 0x80000000 | 1234,
        /// <summary>
        /// Data bound
        /// 数据被绑定
        /// </summary>
        NET_ERROR_BINDING = 0x80000000 | 1235,
        /// <summary>
        /// The security code has exceeded its validity period
        /// 特征值长度错误
        /// </summary>
        NET_ERROR_FACEMANAGER_FEATURE_SIZE_ERROR = 0x80000000 | 1242,
        /// <summary>
        /// No target detected
        /// 图片中检测到0个目标
        /// </summary>
        NET_ERROR_FACEMANAGER_NO_FACE_DETECTED = 0x80000000 | 1300,
        /// <summary>
        /// Multi target detected, Can not extract eigenvalues
        /// 图片中检测到多个目标，无法返回特征
        /// </summary>
        NET_ERROR_FACEMANAGER_MULTI_FACE_DETECTED = 0x80000000 | 1301,
        /// <summary>
        /// Picture decoding error
        /// 图片解码错误
        /// </summary>
        NET_ERROR_FACEMANAGER_PICTURE_DECODING_ERROR = 0x80000000 | 1302,
        /// <summary>
        /// The picture quality is too low
        /// 图片质量太低
        /// </summary>
        NET_ERROR_FACEMANAGER_LOW_PICTURE_QUALITY = 0x80000000 | 1303,
        /// <summary>
        /// Not recommended, Eigen style mismatched to the algorithm model
        /// 结果不推荐使用，比如：对外国人，特征提取成功，但算法支持不好，容易造成误识别
        /// </summary>
        NET_ERROR_FACEMANAGER_NOT_RECOMMENDED = 0x80000000 | 1304,
        /// <summary>
        /// target eigenvalue already exist
        /// 目标特征已存在
        /// </summary>
        NET_ERROR_FACEMANAGER_FACE_FEATURE_ALREADY_EXIST = 0x80000000 | 1305,
        /// <summary>
        /// target angle over thresholds
        /// 目标角度超过配置阈值
        /// </summary>
        NET_ERROR_FACEMANAGER_FACE_ANGLE_OVER_THRESHOLDS = 0x80000000 | 1307,
        /// <summary>
        /// target radio exceeds range
        /// 目标占比超出范围，算法建议占比:不要超过2/3; 不要小于1/3
        /// </summary>
        NET_ERROR_FACEMANAGER_FACE_RADIO_EXCEEDS_RANGE = 0x80000000 | 1308,
        /// <summary>
        /// target over exposed
        /// 目标过爆
        /// </summary>
        NET_ERROR_FACEMANAGER_FACE_OVER_EXPOSED = 0x80000000 | 1309,
        /// <summary>
        /// target under exposed
        /// 目标欠爆
        /// </summary>
        NET_ERROR_FACEMANAGER_FACE_UNDER_EXPOSED = 0x80000000 | 1310,
        /// <summary>
        /// target brightness imbalance
        /// 目标亮度不均衡 ,用于判断阴阳脸
        /// </summary>
        NET_ERROR_FACEMANAGER_BRIGHTNESS_IMBALANCE = 0x80000000 | 1311,
        /// <summary>
        /// target lower confidence level
        /// 目标的置信度低
        /// </summary>
        NET_ERROR_FACEMANAGER_FACE_LOWER_CONFIDENCE = 0x80000000 | 1312,
        /// <summary>
        /// target low align score
        /// 目标对齐分数低
        /// </summary>
        NET_ERROR_FACEMANAGER_FACE_LOW_ALIGN = 0x80000000 | 1313,
        /// <summary>
        /// Fragmentary target detected
        /// 目标存在遮挡、残缺不全
        /// </summary>
        NET_ERROR_FACEMANAGER_FRAGMENTARY_FACE_DETECTED = 0x80000000 | 1314,
        /// <summary>
        /// Pupil distance in the photo is not enough
        /// 目标瞳距小于阈值
        /// </summary>
        NET_ERROR_FACEMANAGER_PUPIL_DISTANCE_NOT_ENOUGH = 0x80000000 | 1315,
        /// <summary>
        /// target download failed
        /// 目标数据下载失败
        /// </summary>
        NET_ERROR_FACEMANAGER_FACE_DATA_DOWNLOAD_FAILED = 0x80000000 | 1316,
        /// <summary>
        /// Ordinary users do not support delivery
        /// 普通用户不支持下发
        /// </summary>
        NET_ERROR_NORMAL_USER_NOTSUPPORT = 0x80000000 | 1320,
        /// <summary>
        /// ID is already exist
        /// 证件号已存在
        /// </summary>
        NET_ERROR_CITIZENID_EXIST = 0x80000000 | 1323,
        /// <summary>
        /// The target can be detected, but the feature value extraction fails (algorithm scene)
        /// 目标可检测，但特征值提取失败（算法场景）
        /// </summary>
        NET_ERROR_FACEMANAGER_FACE_FFE_FAILED = 0x80000000 | 1324,
        /// <summary>
        /// The feature value extracted from the target photo is incorrect due to the inconsistency of target attributes such as masks, hats, sunglasses, etc.
        /// 目标照片因口罩，帽子，墨镜等目标属性不符合而提取特征值错误
        /// </summary>
        NET_ERROR_FACEMANAGER_PHOTO_FEATURE_FAILED_FOR_FA = 0x80000000 | 1325,
        /// <summary>
        /// Incomplete target photo
        /// 目标照片不完整
        /// </summary>
        NET_ERROR_FACEMANAGER_FACE_DATA_PHOTO_INCOMPLETE = 0x80000000 | 1326,
        /// <summary>
        /// invaild channel
        /// 无效的通道
        /// </summary>
        ERR_INTERNAL_INVALID_CHANNEL = 0x90001002,
        /// <summary>
        /// reopen channel failed
        /// 重新打开通道失败
        /// </summary>
        ERR_INTERNAL_REOPEN_CHANNEL = 0x90001003,
        /// <summary>
        /// send data failed
        /// 发送数据失败
        /// </summary>
        ERR_INTERNAL_SEND_DATA = 0x90002008,
        /// <summary>
        /// creat socket failed
        /// 创建套接字失败
        /// </summary>
        ERR_INTERNAL_CREATE_SOCKET = 0x90002003,
        ERR_INTERNAL_LISTEN_FAILED = 0x90010010,
    }

    /// <summary>
    /// device information structure
    /// 设备信息结构体
    /// </summary>
    public struct NET_DEVICEINFO_Ex
    {
        /// <summary>
        /// serial number
        /// 序列号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string sSerialNumber;
        /// <summary>
        /// count of alarm input
        /// 报警输入个数
        /// </summary>
        public int nAlarmInPortNum;
        /// <summary>
        /// count of alarm output
        /// 报警输出个数
        /// </summary>
        public int nAlarmOutPortNum;
        /// <summary>
        /// number of disk
        /// 硬盘个数
        /// </summary>
        public int nDiskNum;
        /// <summary>
        /// device type, refer to EM_NET_DEVICE_TYPE
        /// 设备类型,见枚举NET_DEVICE_TYPE
        /// </summary>
        public EM_NET_DEVICE_TYPE nDVRType;
        /// <summary>
        /// number of channel
        /// 通道个数
        /// </summary>
        public int nChanNum;
        /// <summary>
        /// Online Timeout, Not Limited Access to 0, not 0 Minutes Limit Said
        /// 在线超时时间,为0表示不限制登陆,非0表示限制的分钟数
        /// </summary>
        public byte byLimitLoginTime;
        /// <summary>
        /// When login failed due to password error, notice user by this parameter.This parameter is invalid when remaining login times is zero
        /// 当登陆失败原因为密码错误时,通过此参数通知用户,剩余登陆次数,为0时表示此参数无效
        /// </summary>
        public byte byLeftLogTimes;
        /// <summary>
        /// keep bytes for aligned
        /// 保留字节,字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// when log in failed,the left time for users to unlock (seconds), -1 indicate the device haven't set the parameter
        /// 当登陆失败,用户解锁剩余时间（秒数）, -1表示设备未设置该参数
        /// </summary>
        public int nLockLeftTime;
        /// <summary>
        /// reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public byte[] Reserved;
    }

    /// <summary>
    /// device type enumeration
    /// 设备类型枚举
    /// </summary>
    public enum EM_NET_DEVICE_TYPE
    {
        /// <summary>
        /// Unknow
        //  未知
        /// </summary>
        NET_PRODUCT_NONE = 0,
        /// <summary>
        /// Non real-time MACE
        /// 非实时MACE
        /// </summary>
        NET_DVR_NONREALTIME_MACE,
        /// <summary>
        /// Non real-time
        /// 非实时
        /// </summary>
        NET_DVR_NONREALTIME,
        /// <summary>
        /// Network video server
        /// 网络视频服务器
        /// </summary>
        NET_NVS_MPEG1,
        /// <summary>
        /// MPEG1 2-ch DVR
        /// MPEG1二路录像机
        /// </summary>
        NET_DVR_MPEG1_2,
        /// <summary>
        /// MPEG1 8-ch DVR
        /// MPEG1八路录像机
        /// </summary>
        NET_DVR_MPEG1_8,
        /// <summary>
        /// MPEG4 8-ch DVR
        /// MPEG4八路录像机
        /// </summary>
        NET_DVR_MPEG4_8,
        /// <summary>
        /// MPEG4 16-ch DVR
        /// MPEG4 十六路录像机
        /// </summary>
        NET_DVR_MPEG4_16,
        /// <summary>
        /// LB series DVR
        /// LB系列录像机
        /// </summary>
        NET_DVR_MPEG4_SX2,
        /// <summary>
        /// GB  series DVR
        /// GB系列录像机
        /// </summary>
        NET_DVR_MEPG4_ST2,
        /// <summary>
        /// HB  series DVR
        /// HB系列录像机
        /// </summary>
        NET_DVR_MEPG4_SH2,
        /// <summary>
        /// GBE  series DVR
        /// GBE系列录像机
        /// </summary>
        NET_DVR_MPEG4_GBE,
        /// <summary>
        /// II network video server
        /// II代网络视频服务器
        /// </summary>
        NET_DVR_MPEG4_NVSII,
        /// <summary>
        /// New standard configuration protocol
        /// 新标准配置协议
        /// </summary>
        NET_DVR_STD_NEW,
        /// <summary>
        /// DDNS server
        /// DDNS服务器
        /// </summary>
        NET_DVR_DDNS,
        /// <summary>
        /// ATM series
        /// ATM机
        /// </summary>
        NET_DVR_ATM,
        /// <summary>
        /// 2nd non real-time NB series DVR
        /// 二代非实时NB系列机器
        /// </summary>
        NET_NB_SERIAL,
        /// <summary>
        /// LN  series
        /// LN系列产品
        /// </summary>
        NET_LN_SERIAL,
        /// <summary>
        /// BAV series
        /// BAV系列产品
        /// </summary>
        NET_BAV_SERIAL,
        /// <summary>
        /// SDIP series
        /// SDIP系列产品
        /// </summary>
        NET_SDIP_SERIAL,
        /// <summary>
        /// IPC series
        /// IPC系列产品
        /// </summary>
        NET_IPC_SERIAL,
        /// <summary>
        /// NVS B series
        /// NVS B系列
        /// </summary>
        NET_NVS_B,
        /// <summary>
        /// NVS H series
        /// NVS H系列
        /// </summary>
        NET_NVS_C,
        /// <summary>
        /// NVS S series
        /// NVS S系列
        /// </summary>
        NET_NVS_S,
        /// <summary>
        /// NVS E series
        /// NVS E系列
        /// </summary>
        NET_NVS_E,
        /// <summary>
        /// Search device type from QueryDevState. it is in string format
        /// 从QueryDevState中查询设备类型,以字符串格式
        /// </summary>
        NET_DVR_NEW_PROTOCOL,
        /// <summary>
        /// NVD
        /// 解码器
        /// </summary>
        NET_NVD_SERIAL,
        /// <summary>
        /// N5
        /// N5
        /// </summary>
        NET_DVR_N5,
        /// <summary>
        /// HDVR
        /// 混合DVR
        /// </summary>
        NET_DVR_MIX_DVR,
        /// <summary>
        /// SVR series
        /// SVR系列
        /// </summary>
        NET_SVR_SERIAL,
        /// <summary>
        /// SVR-BS
        /// SVR-BS
        /// </summary>
        NET_SVR_BS,
        /// <summary>
        /// NVR series
        /// NVR系列
        /// </summary>
        NET_NVR_SERIAL,
        /// <summary>
        /// N51
        /// N51
        /// </summary>
        NET_DVR_N51,
        /// <summary>
        /// ITSE Intelligent Analysis Box
        /// ITSE 智能分析盒
        /// </summary>
        NET_ITSE_SERIAL,
        /// <summary>
        /// Intelligent traffic camera equipment
        /// 智能交通像机设备
        /// </summary>
        NET_ITC_SERIAL,
        /// <summary>
        /// radar speedometer HWS
        /// 雷达测速仪HWS
        /// </summary>
        NET_HWS_SERIAL,
        /// <summary>
        /// portable video record
        /// 便携式音视频录像机
        /// </summary>
        NET_PVR_SERIAL,
        /// <summary>
        /// IVS(intelligent video server series)
        /// IVS（智能视频服务器系列）
        /// </summary>
        NET_IVS_SERIAL,
        /// <summary>
        /// universal intelligent detect video server series 
        /// 通用智能视频侦测服务器
        /// </summary>
        NET_IVS_B,
        /// <summary>
        /// target recognisation server
        /// 目标识别服务器
        /// </summary>
        NET_IVS_F,
        /// <summary>
        /// video quality diagnosis server
        /// 视频质量诊断服务器
        /// </summary>
        NET_IVS_V,
        /// <summary>
        /// matrix
        /// 矩阵
        /// </summary>
        NET_MATRIX_SERIAL,
        /// <summary>
        /// N52
        /// N52
        /// </summary>
        NET_DVR_N52,
        /// <summary>
        /// N56
        /// N56
        /// </summary>
        NET_DVR_N56,
        /// <summary>
        /// ESS
        /// ESS
        /// </summary>
        NET_ESS_SERIAL,
        /// <summary>
        /// 人数统计服务器
        /// </summary>
        NET_IVS_PC,
        /// <summary>
        /// pc-nvr
        /// pc-nvr
        /// </summary>
        NET_PC_NVR,
        /// <summary>
        /// screen controller
        /// 大屏控制器
        /// </summary>
        NET_DSCON,
        /// <summary>
        /// network video storage server
        /// 网络视频存储服务器
        /// </summary>
        NET_EVS,
        /// <summary>
        /// an embedded intelligent video analysis system
        /// 嵌入式智能分析视频系统
        /// </summary>
        NET_EIVS,
        /// <summary>
        /// DVR-N6
        /// DVR-N6
        /// </summary>
        NET_DVR_N6,
        /// <summary>
        /// K-Lite Codec Pack
        /// 万能解码器
        /// </summary>
        NET_UDS,
        /// <summary>
        /// Bank alarm host
        /// 银行报警主机
        /// </summary>
        NET_AF6016,
        /// <summary>
        /// Video network alarm host
        /// 视频网络报警主机
        /// </summary>
        NET_AS5008,
        /// <summary>
        /// Network alarm host
        /// 网络报警主机
        /// </summary>
        NET_AH2008,
        /// <summary>
        /// Alarm host series
        /// 报警主机系列
        /// </summary>
        NET_A_SERIAL,
        /// <summary>
        /// Access control series of products
        /// 门禁系列产品
        /// </summary>
        NET_BSC_SERIAL,
        /// <summary>
        /// NVS series product
        /// NVS系列产品
        /// </summary>
        NET_NVS_SERIAL,
        /// <summary>
        /// VTO series product
        /// VTO系列产品
        /// </summary>                           
        NET_VTO_SERIAL,
        /// <summary>
        /// VTNC series product
        /// VTNC系列产品
        /// </summary>
        NET_VTNC_SERIAL,
        /// <summary>
        /// TPC series product, it is the thermal device 
        /// TPC系列产品, 即热成像设备
        /// </summary>
        NET_TPC_SERIAL,
        /// <summary>
        /// ASM series product
        /// 无线中继设备
        /// </summary>
        NET_ASM_SERIAL,
        /// <summary>
        /// VTS series product
        /// 管理机
        /// </summary>
        NET_VTS_SERIAL,
        /// <summary>
        /// Alarm host-ARC2016C
        /// 报警主机ARC2016C
        /// </summary>
        NET_ARC2016C,
        /// <summary>
        /// ASA Attendance machine
        /// 考勤机
        /// </summary>
        NET_ASA,
        /// <summary>
        /// Industry terminal walkie-talkie
        /// 行业对讲终端
        /// </summary>
        NET_VTT_SERIAL,
        /// <summary>
        /// Alarm column
        /// 报警柱
        /// </summary>
        NET_VTA_SERIAL,
        /// <summary>
        /// SIP Server
        /// SIP服务器
        /// </summary>
        NET_VTNS_SERIAL,
        /// <summary>
        /// Indoor unit
        /// 室内机
        /// </summary>
        NET_VTH_SERIAL,
    }

    /// <summary>
    /// login device mode enumeration
    /// 登陆设备方式枚举
    /// </summary>
    public enum EM_LOGIN_SPAC_CAP_TYPE
    {
        /// <summary>
        /// TCP login, default
        /// TCP登陆, 默认方式
        /// </summary>
        TCP = 0,
        /// <summary>
        /// No criteria login
        /// 无条件登陆
        /// </summary>
        ANY = 1,
        /// <summary>
        /// auto sign up login
        /// 主动注册的登入
        /// </summary>
        SERVER_CONN = 2,
        /// <summary>
        /// multicast login, default
        /// 组播登陆
        /// </summary>
        MULTICAST = 3,
        /// <summary>
        /// UDP method login
        /// UDP方式下的登入
        /// </summary>
        UDP = 4,
        /// <summary>
        /// only main connection login
        /// 只建主连接下的登入
        /// </summary>
        MAIN_CONN_ONLY = 6,
        /// <summary>
        /// SSL encryption login
        /// SSL加密方式登陆
        /// </summary>
        SSL = 7,
        /// <summary>
        /// login IVS box remote device
        /// 登录智能盒远程设备
        /// </summary>
        INTELLIGENT_BOX = 9,
        /// <summary>
        /// login device do not config
        /// 登录设备后不做取配置操作
        /// </summary>
        NO_CONFIG = 10,
        /// <summary>
        /// USB key device login
        /// 用U盾设备的登入
        /// </summary>
        U_LOGIN = 11,
        /// <summary>
        /// LDAP login
        /// LDAP方式登录
        /// </summary>
        LDAP = 12,
        /// <summary>
        /// AD login
        /// AD（ActiveDirectory）登录方式
        /// </summary>
        AD = 13,
        /// <summary>
        /// Radius  login 
        /// Radius 登录方式
        /// </summary>
        RADIUS = 14,
        /// <summary>
        /// Socks5 login
        /// Socks5登陆方式
        /// </summary>
        SOCKET_5 = 15,
        /// <summary>
        /// cloud login
        /// 云登陆方式
        /// </summary>
        CLOUD = 16,
        /// <summary>
        /// dual authentication loin
        /// 二次鉴权登陆方式
        /// </summary>
        AUTH_TWICE = 17,
        /// <summary>
        /// TS stream client login
        /// TS码流客户端登陆方式
        /// </summary>
        TS = 18,
        /// <summary>
        /// web private login
        /// 为P2P登陆方式
        /// </summary>
        P2P = 19,
        /// <summary>
        /// mobile client login
        /// 手机客户端登陆
        /// </summary>
        MOBILE = 20,
        /// <summary>
        /// invalid login
        /// 无效的登陆方式
        /// </summary>          
        INVALID = 21,
    }

    /// <summary>
    /// the corresponding parameter when setting log in structure
    /// 设置登入时的相关参数
    /// </summary>
    public struct NET_PARAM
    {
        /// <summary>
        /// Waiting time(unit is ms), 0:default 5000ms.
        /// 等待超时时间(毫秒为单位),为0默认5000ms
        /// </summary>
        public int nWaittime;
        /// <summary>
        /// Connection timeout value(Unit is ms), 0:default 1500ms.
        /// 连接超时时间(毫秒为单位),为0默认1500ms
        /// </summary>
        public int nConnectTime;
        /// <summary>
        /// Connection trial times, 0:default 1.
        /// 连接尝试次数,为0默认1次
        /// </summary>
        public int nConnectTryNum;
        /// <summary>
        /// Sub-connection waiting time(Unit is ms), 0:default 10ms.
        /// 子连接之间的等待时间(毫秒为单位),为0默认10ms
        /// </summary>
        public int nSubConnectSpaceTime;
        /// <summary>
        /// Access to device information timeout, 0:default 1000ms.
        /// 获取设备信息超时时间,为0默认1000ms
        /// </summary>
        public int nGetDevInfoTime;
        /// <summary>
        /// Each connected to receive data buffer size(Bytes), 0:default 250*1024
        /// 每个连接接收数据缓冲大小(字节为单位),为0默认250*1024
        /// </summary>
        public int nConnectBufSize;
        /// <summary>
        /// Access to sub-connect information timeout(Unit is ms), 0:default 1000ms.
        /// 获取子连接信息超时时间(毫秒为单位),为0默认1000ms
        /// </summary>
        public int nGetConnInfoTime;
        /// <summary>
        /// Timeout value of search video (unit ms), default 3000ms
        /// 按时间查询录像文件的超时时间(毫秒为单位),为0默认为3000ms
        /// </summary>
        public int nSearchRecordTime;
        /// <summary>
        /// dislink disconnect time,0:default 60000ms
        /// 检测子链接断线等待时间(毫秒为单位),为0默认为60000ms
        /// </summary>
        public int nsubDisconnetTime;
        /// <summary>
        /// net type, 0-LAN, 1-WAN
        /// 网络类型, 0-LAN, 1-WAN
        /// </summary>
        public byte byNetType;
        /// <summary>
        /// playback data from the receive buffer size(m),when value = 0,default 4M
        /// 回放数据接收缓冲大小（M为单位）,为0默认为4M
        /// </summary>
        public byte byPlaybackBufSize;
        /// <summary>
        /// Pulse detect offline time(second) .When it is 0, the default setup is 60s, and the min time is 2s 
        /// 心跳检测断线时间(单位为秒),为0默认为60s,最小时间为2s
        /// </summary>
        public byte bDetectDisconnTime;
        /// <summary>
        /// Pulse send out interval(second). When it is 0, the default setup is 10s, the min internal is 2s.
        /// 心跳包发送间隔(单位为秒),为0默认为10s,最小间隔为2s
        /// </summary>
        public byte bKeepLifeInterval;
        /// <summary>
        /// actual pictures of the receive buffer size(byte)when value = 0,default 2*1024*1024
        /// 实时图片接收缓冲大小（字节为单位）,为0默认为2*1024*1024
        /// </summary>
        public int nPicBufSize;
        /// <summary>
        /// reserved
        /// 保留
        /// </summary>    
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved;
    }

    /// <summary>
    /// snapshot parameter structure
    /// 抓图参数结构体
    /// </summary>
    public struct NET_SNAP_PARAMS
    {
        /// <summary>
        /// Snapshot channel
        /// 抓图的通道
        /// </summary>
        public uint Channel;
        /// <summary>
        /// Image quality:level 1 to level 6
        /// 画质；1~6
        /// </summary>
        public uint Quality;
        /// <summary>
        /// Video size;0:QCIF,1:CIF,2:D1
        /// 画面大小；0：QCIF,1：CIF,2：D1
        /// </summary>
        public uint ImageSize;
        /// <summary>
        /// Snapshot mode;0:request one frame,1:send out requestion regularly,2: Request consecutively
        /// 抓图模式；0xFFFFFFFF:表示停止抓图, 0：表示请求一帧, 1：表示定时发送请求, 2：表示连续请求
        /// </summary>
        public uint mode;
        /// <summary>
        /// Time unit is second.If mode=1, it means send out requestion regularly. The time is valid.
        /// 时间单位秒；若mode=1表示定时发送请求时只有部分特殊设备(如：车载设备)支持通过该字段实现定时抓图时间间隔的配置建议通过 CFG_CMD_ENCODE 配置的stuSnapFormat[nSnapMode].stuVideoFormat.nFrameRate字段实现相关功能
        /// </summary>
        public uint InterSnap;
        /// <summary>
        /// Request serial number
        /// 请求序列号，有效值范围 0~65535，超过范围会被截断为 unsigned short
        /// </summary>
        public uint CmdSerial;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public uint[] Reserved;
    }

    /// <summary>
    /// real data flag, corresponding param dwFlag in SetRealDataCallBack.supports '|' operator, like dwFlag = EM_REALDATA_FLAG.RAW_DATA | EM_REALDATA_FLAG.YUV_DATA
    /// 实时预览的实时数据标志, 对应 SetRealDataCallBack 中的 dwFlag 参数,支持 '|' 运算符, 如 dwFlag = EM_REALDATA_FLAG.RAW_DATA | EM_REALDATA_FLAG.YUV_DATA
    /// </summary>
    [Flags]
    public enum EM_REALDATA_FLAG
    {
        /// <summary>
        /// raw data flag,		corresponding param dwDataType in fRealDataCallBackEx / fRealDataCallBackEx2 is 0, 0x01 = 0x01 << 0
        /// 原始数据标志,			对应fRealDataCallBack(Ex/Ex2)回调函数中 dwDataType 为0, 0x01 = 0x01 << 0
        /// </summary>
        RAW_DATA = 0x01,
        /// <summary>
        /// data with frame info flag,	corresponding param dwDataType in fRealDataCallBackEx / fRealDataCallBackEx2 is 1, 0x02 = 0x01 << 1
        /// 带有帧信息的数据标志,	对应fRealDataCallBack(Ex/Ex2)回调函数中 dwDataType 为1, 0x02 = 0x01 << 1
        /// </summary>
        DATA_WITH_FRAME_INFO = 0x02,
        /// <summary>
        /// YUV data flag,		corresponding param dwDataType in fRealDataCallBackEx / fRealDataCallBackEx2 is 2, 0x04 = 0x01 << 2
        /// YUV 数据标志,			对应fRealDataCallBack(Ex/Ex2)回调函数中 dwDataType 为2, 0x04 = 0x01 << 2
        /// </summary>
        YUV_DATA = 0x04,
        /// <summary>
        /// PCM audio data flag,	corresponding param dwDataType in fRealDataCallBackEx / fRealDataCallBackEx2 is 3, 0x08 = 0x01 << 3
        /// PCM 音频数据标志,		对应fRealDataCallBack(Ex/Ex2)回调函数中 dwDataType 为3, 0x08 = 0x01 << 3
        /// </summary>
        PCM_AUDIO_DATA = 0x08,
    }

    /// <summary>
    /// SnapPictureToFile function input parameter
    /// SnapPictureToFile函数输入参数
    /// </summary>
    public struct NET_IN_SNAP_PIC_TO_FILE_PARAM
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// snapshot parameter, mode field is only snapshot for once, fail to support timed or continuous snapshot; except mobile DVR, other devices only support snapshot frequency of one snapshot per second
        /// 抓图参数, 其中mode字段仅一次性抓图, 不支持定时或持续抓图; 除了车载DVR, 其他设备仅支持每秒一张的抓图频率
        /// </summary>
        public NET_SNAP_PARAMS stuParam;
        /// <summary>
        /// write in file address
        /// 写入文件的地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;
    }

    /// <summary>
    /// SnapPictureToFile function output parameter 
    /// SnapPictureToFile函数输出参数
    /// </summary>
    public struct NET_OUT_SNAP_PIC_TO_FILE_PARAM
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// picture content, user memory allocation, memory size is dwPicBufLen
        /// 图片内容,用户分配内存,大小为dwPicBufLen
        /// </summary>
        public IntPtr szPicBuf;
        /// <summary>
        /// picture content memory size, unit: byte
        /// 图片内容内存大小, 单位:字节
        /// </summary>
        public uint dwPicBufLen;
        /// <summary>
        /// returned picture size, unit:byte
        /// 返回的图片大小, 单位:字节
        /// </summary>
        public uint dwPicBufRetLen;
    }

    /// <summary>
    /// realplay type
    /// 预览类型
    /// </summary>
    public enum EM_RealPlayType
    {
        /// <summary>
        /// 实时预览
        /// Real-time preview
        /// </summary>
        EM_A_RType_Realplay = 0,
        /// <summary>
        /// 多画面预览
        /// Multiple-channel preview
        /// </summary>
        EM_A_RType_Multiplay,
        /// <summary>
        /// 实时预览-主码流,等同于RType_Realplay
        /// Real-time monitor-main stream. It is the same as RType_Realplay
        /// </summary>
        EM_A_RType_Realplay_0,
        /// <summary>
        /// 实时预览-从码流1
        /// 1 Real-time monitor -- extra stream 1
        /// </summary>
        EM_A_RType_Realplay_1,
        /// <summary>
        /// 实时预览-从码流2
        /// 2 Real-time monitor -- extra stream 2
        /// </summary>
        EM_A_RType_Realplay_2,
        /// <summary>
        /// 实时预览-从码流3
        /// 3 Real-time monitor -- extra stream 3
        /// </summary>
        EM_A_RType_Realplay_3,
        /// <summary>
        /// 多画面预览－1画面
        /// Multiple-channel preview--1-window
        /// </summary>
        EM_A_RType_Multiplay_1,
        /// <summary>
        /// 多画面预览－4画面
        /// Multiple-channel preview--4-window
        /// </summary>
        EM_A_RType_Multiplay_4,
        /// <summary>
        /// 多画面预览－8画面
        /// Multiple-channel preview--8-window
        /// </summary>
        EM_A_RType_Multiplay_8,
        /// <summary>
        /// 多画面预览－9画面
        /// Multiple-channel preview--9-window
        /// </summary>
        EM_A_RType_Multiplay_9,
        /// <summary>
        /// 多画面预览－16画面
        /// Multiple-channel preview--16-window
        /// </summary>
        EM_A_RType_Multiplay_16,
        /// <summary>
        /// 多画面预览－6画面
        /// Multiple-channel preview--6-window
        /// </summary>
        EM_A_RType_Multiplay_6,
        /// <summary>
        /// 多画面预览－12画面
        /// Multiple-channel preview--12-window
        /// </summary>
        EM_A_RType_Multiplay_12,
        /// <summary>
        /// 多画面预览－25画面
        /// Multi-window tour--25-windows
        /// </summary>
        EM_A_RType_Multiplay_25,
        /// <summary>
        /// 多画面预览－36画面
        /// Multi-window preview--36-windows
        /// </summary>
        EM_A_RType_Multiplay_36,
        /// <summary>
        /// 多画面预览－64画面
        /// Multi-window preview--64-windows
        /// </summary>
        EM_A_RType_Multiplay_64,
        /// <summary>
        /// 不修改当前预览通道数
        /// Do not modify the current preview channel number
        /// </summary>
        EM_A_RType_Multiplay_255,
        /// <summary>
        /// 只拉音频, 非通用
        /// Only Audio, custom
        /// </summary>
        EM_A_RType_Realplay_Audio,
        /// <summary>
        /// 带宽测试码流
        /// test stream
        /// </summary>
        EM_A_RType_Realplay_Test = 255,
    }

    /// <summary>
    /// realplay disconnnect event
    /// 预览断线类型
    /// </summary>
    public enum EM_REALPLAY_DISCONNECT_EVENT_TYPE
    {
        /// <summary>
        /// resources is taked by advanced user
        /// 表示高级用户抢占低级用户资源
        /// </summary>
        REAVE,
        /// <summary>
        /// forbidden
        /// 禁止入网
        /// </summary>
        NETFORBID,
        /// <summary>
        /// sublink disconnect
        /// 子链接断线
        /// </summary>
        SUBCONNECT,
    }

    /// <summary>
    /// absolute control PTZ corresponding structure
    /// 绝对控制云台对应结构
    /// </summary>
    public struct NET_PTZ_CONTROL_ABSOLUTELY
    {
        /// <summary>
        /// PTZ Absolute Speed
        /// 云台绝对移动位置
        /// </summary>
        public NET_PTZ_SPACE_UNIT stuPosition;
        /// <summary>
        /// PTZ Operation Speed
        /// 云台运行速度
        /// </summary>
        public NET_PTZ_SPEED_UNIT stuSpeed;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szReserve;
    }

    /// <summary>
    /// continuous control PTZ corresponding structure
    /// 云台控制坐标单元
    /// </summary>
    public struct NET_PTZ_SPEED_UNIT
    {
        /// <summary>
        /// PTZ horizontal speed, normalized to -1~1
        /// 云台水平方向速率,归一化到-1~1
        /// </summary>
        public float fPositionX;
        /// <summary>
        /// PTZ vertical speed, normalized to -1~1 
        /// 云台垂直方向速率,归一化到-1~1
        /// </summary>
        public float fPositionY;
        /// <summary>
        /// PTZ aperture magnification, normalized to 0~1 
        /// 云台光圈放大倍率,归一化到 0~1
        /// </summary>
        public float fZoom;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szReserve;
    }

    /// <summary>
    /// PTZ control coordinate unit structure
    /// 云台控制坐标单元
    /// </summary>
    public struct NET_PTZ_SPACE_UNIT
    {
        /// <summary>
        /// PTZ horizontal motion position, effective range[0,3600]
        /// 云台水平运动位置,有效范围：[0,3600]
        /// </summary>
        public int nPositionX;
        /// <summary>
        /// PTZ vertical motion position, effective range[-1800,1800]
        /// 云台垂直运动位置,有效范围：[-1800,1800]
        /// </summary>
        public int nPositionY;
        /// <summary>
        /// PTZ aperture change position, the effective range[0,128]
        /// 云台光圈变动位置,有效范围：[0,128]
        /// </summary>
        public int nZoom;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szReserve;
    }

    /// <summary>
    /// continuous control PTZ corresponding structure
    /// 持续控制云台对应结构
    /// </summary>
    public struct NET_PTZ_CONTROL_CONTINUOUSLY
    {
        /// <summary>
        /// PTZ speed
        /// 云台运行速度
        /// </summary>
        public NET_PTZ_SPEED_UNIT stuSpeed;
        /// <summary>
        /// Continuous motion timeout, the unit is in seconds 
        /// 连续移动超时时间,单位为秒
        /// </summary>
        public int nTimeOut;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szReserve;
    }

    /// <summary>
    /// with speed rotation site PTZ control corresponding to the preset structure
    /// 带速度转动到预置位点云台控制对应结构
    /// </summary>
    public struct NET_PTZ_CONTROL_GOTOPRESET
    {
        /// <summary>
        /// Preset BIT Index 
        /// 预置位索引
        /// </summary>
        public int nPresetIndex;
        /// <summary>
        /// PTZ Operation Speed
        /// 云台运行速度
        /// </summary>
        public NET_PTZ_SPEED_UNIT stuSpeed;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szReserve;
    }

    /// <summary>
    /// set the PTZ vision information structure
    /// 设置云台可视域信息
    /// </summary>
    public struct NET_PTZ_VIEW_RANGE_INFO
    {
        /// <summary>
        /// current struct size
        /// 结构体大小
        /// </summary>
        public int nStructSize;
        /// <summary>
        /// Horizontal azimuth Angle, 0~3600, unit: degrees 
        /// 水平方位角度, 0~3600, 单位:度
        /// </summary>
        public int nAzimuthH;
    }

    /// <summary>
    /// PTZ absolute focus corresponding structure
    /// 云台绝对聚焦对应结构体
    /// </summary>
    public struct NET_PTZ_FOCUS_ABSOLUTELY
    {
        /// <summary>
        /// PTZ Focused On Location, range (0~8191)
        /// 云台聚焦位置,取值范围(0~8191)
        /// </summary>
        public uint dwValue;
        /// <summary>
        /// PTZ Focused On Speed, the scope (0~7)
        /// 云台聚焦速度,取值范围(0~7)
        /// </summary>
        public uint dwSpeed;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szReserve;
    }

    /// <summary>
    /// PTZ control - fan and corresponding structure
    /// 云台控制-扇扫对应结构
    /// </summary>
    public struct NET_PTZ_CONTROL_SECTORSCAN
    {
        /// <summary>
        /// Staring Angle,Range:[-180,180]
        /// 起始角度,范围:[-180,180]
        /// </summary>
        public int nBeginAngle;
        /// <summary>
        /// Ending Angle,Range:[-180,180]
        /// 结束角度,范围:[-180,180]
        /// </summary>
        public int nEndAngle;
        /// <summary>
        /// Speed,Range:[0,255]
        /// 速度,范围:[0,255]
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szReserve;
    }

    /// <summary>
    /// control Fish eye E-PTZ information structure 
    /// 控制鱼眼电子云台信息
    /// </summary>
    public struct NET_PTZ_CONTROL_SET_FISHEYE_EPTZ
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// EPtz control window no
        /// 进行EPtz控制的窗口编号
        /// </summary>
        public uint dwWindowID;
        /// <summary>
        /// E-PTZ command
        /// 电子云台命令
        /// </summary>
        public uint dwCommand;
        /// <summary>
        /// command corresponding to parameter 1
        /// 命令对应参数1
        /// </summary>
        public uint dwParam1;
        /// <summary>
        /// command corresponding to  parameter 2
        /// 命令对应参数2
        /// </summary>
        public uint dwParam2;
        /// <summary>
        /// command corresponding to  parameter 3
        /// 命令对应参数3
        /// </summary>
        public uint dwParam3;
        /// <summary>
        /// command corresponding to  parameter 4
        /// 命令对应参数4
        /// </summary>
        public uint dwParam4;
    }

    /// <summary>
    /// track control command enumeration
    /// 轨道机控制命令
    /// </summary>
    public enum EM_NET_TRACK_CONTROL_CMD
    {
        /// <summary>
        /// Move up, dwParam1 means step length range 1-8
        /// 向上移动,dwParam1表示步长,范围1～8
        /// </summary>
        UP,
        /// <summary>
        /// Move down, dwParam1 means step length  range 1-8
        /// 向下移动,dwParam1表示步长,范围1～8
        /// </summary>
        DOWN,
        /// <summary>
        /// Move left, dwParam1 means step length  range 1-8
        /// 向左移动,dwParam1表示步长,范围1～8
        /// </summary>
        LEFT,
        /// <summary>
        /// Move right, dwParam1 means step length  range 1-8
        /// 向右移动,dwParam1表示步长,范围1～8
        /// </summary>
        RIGHT,
        /// <summary>
        /// Set preset，dwParam1 means preset value
        /// 设置预置点,dwParam1表示预置点值
        /// </summary>
        SETPRESET,
        /// <summary>
        /// Clear preset，dwParam1 means preset value
        /// 清除预置点,dwParam1表示预置点值
        /// </summary>
        CLEARPRESET,
        /// <summary>
        /// Goto preset，dwParam1 means preset value
        /// 转至预置点,dwParam1表示预置点值
        /// </summary>
        GOTOPRESET,
    }

    /// <summary>
    /// track control information structure
    /// 轨道机控制信息
    /// </summary>
    public struct NET_PTZ_CONTROL_SET_TRACK_CONTROL
    {
        /// <summary>
        /// dwSize need to be assigned sizeof(NET_PTZ_CONTROL_SET_TRACK_CONTROL)
        /// 用户使用该结构体时,dwSize 需赋值为 sizeof(NET_PTZ_CONTROL_SET_TRACK_CONTROL)
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel number
        /// 通道号
        /// </summary>
        public uint dwChannelID;
        /// <summary>
        /// Control command，corresponding to enum EM_NET_TRACK_CONTROL_CMD
        /// 电子云台命令,对应枚举EM_NET_TRACK_CONTROL_CMD
        /// </summary>
        public uint dwCommand;
        /// <summary>
        /// command corresponding to parameter 1
        /// 命令对应参数1
        /// </summary>
        public uint dwParam1;
        /// <summary>
        /// command corresponding to parameter 2
        /// 命令对应参数2
        /// </summary>
        public uint dwParam2;
        /// <summary>
        /// command corresponding to parameter 3
        /// 命令对应参数3
        /// </summary>
        public uint dwParam3;
    }

    /// <summary>
    /// 通用云台控制命令
    /// General PTZ control command
    /// </summary>
    public enum EM_A_PTZ_ControlType
    {
        /// <summary>
        /// 上 速度对应parma2(1-8)
        /// Up
        /// </summary>
        EM_A_PTZ_UP_CONTROL = 0,
        /// <summary>
        /// 下 速度对应parma2(1-8)
        /// Down
        /// </summary>
        EM_A_PTZ_DOWN_CONTROL,
        /// <summary>
        /// 左 速度对应parma2(1-8)
        /// Left
        /// </summary>
        EM_A_PTZ_LEFT_CONTROL,
        /// <summary>
        /// 右 速度对应parma2(1-8)
        /// Right
        /// </summary>
        EM_A_PTZ_RIGHT_CONTROL,
        /// <summary>
        /// 变倍+ 对应param2
        /// + Zoom in
        /// </summary>
        EM_A_PTZ_ZOOM_ADD_CONTROL,
        /// <summary>
        /// 变倍- 对应param2
        /// - Zoom out
        /// </summary>
        EM_A_PTZ_ZOOM_DEC_CONTROL,
        /// <summary>
        /// 调焦- 对应param2
        /// - Zoom in
        /// </summary>
        EM_A_PTZ_FOCUS_ADD_CONTROL,
        /// <summary>
        /// 调焦+ 对应param2
        /// + Zoom out
        /// </summary>
        EM_A_PTZ_FOCUS_DEC_CONTROL,
        /// <summary>
        /// 光圈+ 对应param2
        /// + Aperture
        /// </summary>
        EM_A_PTZ_APERTURE_ADD_CONTROL,
        /// <summary>
        /// 光圈- 对应param2
        /// - Aperture
        /// </summary>
        EM_A_PTZ_APERTURE_DEC_CONTROL,
        /// <summary>
        /// 转至预置点 param2为预置点序号
        /// Go to preset
        /// </summary>
        EM_A_PTZ_POINT_MOVE_CONTROL,
        /// <summary>
        /// 设置 param2为预置点序号，最大序号可以从云台能力集中获取 param4可以传预置点名称，预置点名称最大有效值为63字节。param3需传入个bool类型，当param3为ture时，预置点名称最大为255字符。
        /// Set
        /// </summary>
        EM_A_PTZ_POINT_SET_CONTROL,
        /// <summary>
        /// 删除 param2为预置点序号
        /// Delete
        /// </summary>
        EM_A_PTZ_POINT_DEL_CONTROL,
        /// <summary>
        /// 点间巡航 param1为巡航线路
        /// Tour
        /// </summary>
        EM_A_PTZ_POINT_LOOP_CONTROL,
        /// <summary>
        /// 灯光雨刷 对应param1(1-开启,0-关闭)
        /// Light and wiper
        /// </summary>
        EM_A_PTZ_LAMP_CONTROL,
    }

    /// <summary>
    /// 云台控制扩展命令
    /// PTZ control extensive command
    /// </summary>
    public enum EM_A_EXTPTZ_ControlType
    {
        /// <summary>
        /// 左上
        /// Upper left
        /// </summary>
        EM_A_EXTPTZ_LEFTTOP = 32,
        /// <summary>
        /// 右上
        /// Upper right
        /// </summary>
        EM_A_EXTPTZ_RIGHTTOP,
        /// <summary>
        /// 左下
        /// Down left
        /// </summary>
        EM_A_EXTPTZ_LEFTDOWN,
        /// <summary>
        /// 右下
        /// Down right
        /// </summary>
        EM_A_EXTPTZ_RIGHTDOWN,
        /// <summary>
        /// 加入预置点到巡航 巡航线路 预置点值
        /// Add preset to tour tour preset value
        /// </summary>
        EM_A_EXTPTZ_ADDTOLOOP,
        /// <summary>
        /// 删除巡航中预置点 巡航线路 预置点值
        /// Delete preset in tour tour preset value
        /// </summary>
        EM_A_EXTPTZ_DELFROMLOOP,
        /// <summary>
        /// 清除巡航 巡航线路
        /// Delete tour tour
        /// </summary>
        EM_A_EXTPTZ_CLOSELOOP,
        /// <summary>
        /// 开始水平旋转
        /// Begin pan rotation
        /// </summary>
        EM_A_EXTPTZ_STARTPANCRUISE,
        /// <summary>
        /// 停止水平旋转
        /// Stop pan rotation
        /// </summary>
        EM_A_EXTPTZ_STOPPANCRUISE,
        /// <summary>
        /// 设置左边界
        /// Set left limit
        /// </summary>
        EM_A_EXTPTZ_SETLEFTBORDER,
        /// <summary>
        /// 设置右边界
        /// Set right limit
        /// </summary>
        EM_A_EXTPTZ_SETRIGHTBORDER,
        /// <summary>
        /// 开始线扫
        /// Begin scanning
        /// </summary>
        EM_A_EXTPTZ_STARTLINESCAN,
        /// <summary>
        /// 停止线扫
        /// Stop scanning
        /// </summary>
        EM_A_EXTPTZ_CLOSELINESCAN,
        /// <summary>
        /// 设置模式开始 模式线路
        /// Start mode mode line
        /// </summary>
        EM_A_EXTPTZ_SETMODESTART,
        /// <summary>
        /// 设置模式结束 模式线路
        /// Stop mode mode line
        /// </summary>
        EM_A_EXTPTZ_SETMODESTOP,
        /// <summary>
        /// 运行模式 模式线路
        /// Enable mode Mode line
        /// </summary>
        EM_A_EXTPTZ_RUNMODE,
        /// <summary>
        /// 停止模式 模式线路
        /// Unable mode Mode line
        /// </summary>
        EM_A_EXTPTZ_STOPMODE,
        /// <summary>
        /// 清除模式 模式线路
        /// Delete mode Mode line
        /// </summary>
        EM_A_EXTPTZ_DELETEMODE,
        /// <summary>
        /// 翻转命令
        /// Flip
        /// </summary>
        EM_A_EXTPTZ_REVERSECOMM,
        /// <summary>
        /// 快速定位 水平坐标(-8191~8191) 垂直坐标(-8191~8191) 变倍(-16~16)
        /// 3D position X address(-8191~8191) Y address(-8191~8191) zoom(-16~16)
        /// </summary>
        EM_A_EXTPTZ_FASTGOTO,
        /// <summary>
        /// 辅助开关开 辅助点(param4对应 PTZ_CONTROL_AUXILIARY,param1、param2、param3无效,dwStop设置为FALSE)
        /// auxiliary open Auxiliary point
        /// </summary>
        EM_A_EXTPTZ_AUXIOPEN,
        /// <summary>
        /// 辅助开关关 辅助点(param4对应 PTZ_CONTROL_AUXILIARY,param1、param2、param3无效,dwStop设置为FALSE)
        /// Auxiliary close Auxiliary point
        /// </summary>
        EM_A_EXTPTZ_AUXICLOSE,
        /// <summary>
        /// 打开球机菜单
        /// Open dome menu
        /// </summary>
        EM_A_EXTPTZ_OPENMENU = 54,
        /// <summary>
        /// 关闭菜单
        /// Close menu
        /// </summary>
        EM_A_EXTPTZ_CLOSEMENU,
        /// <summary>
        /// 菜单确定
        /// Confirm menu
        /// </summary>
        EM_A_EXTPTZ_MENUOK,
        /// <summary>
        /// 菜单取消
        /// Cancel menu
        /// </summary>
        EM_A_EXTPTZ_MENUCANCEL,
        /// <summary>
        /// 菜单上
        /// menu up
        /// </summary>
        EM_A_EXTPTZ_MENUUP,
        /// <summary>
        /// 菜单下
        /// menu down
        /// </summary>
        EM_A_EXTPTZ_MENUDOWN,
        /// <summary>
        /// 菜单左
        /// menu left
        /// </summary>
        EM_A_EXTPTZ_MENULEFT,
        /// <summary>
        /// 菜单右
        /// Menu right
        /// </summary>
        EM_A_EXTPTZ_MENURIGHT,
        /// <summary>
        /// 报警联动云台 parm1：报警输入通道；parm2：报警联动类型1-预置点2-线扫3-巡航；parm3：联动值,如预置点号
        /// Alarm activate PTZ param1:Alarm input channel; param2:Alarm activation type 1-preset 2-scan 3-tour; param 3:activation value,such as preset value.
        /// </summary>
        EM_A_EXTPTZ_ALARMHANDLE = 64,
        /// <summary>
        /// 矩阵切换 parm1：预览器号(视频输出号)；parm2：视频输入号；parm3：矩阵号
        /// Matrix switch param1:monitor number(video output number);param2:video input number;param3:matrix number
        /// </summary>
        EM_A_EXTPTZ_MATRIXSWITCH = 65,
        /// <summary>
        /// 灯光控制器
        /// Light controller
        /// </summary>
        EM_A_EXTPTZ_LIGHTCONTROL,
        /// <summary>
        /// 三维精确定位 parm1：水平角度(0~3600)；parm2：垂直坐标(-1800-1800)；parm3：变倍(1~128),变倍为档位,并非实际变倍倍数
        /// 3D accurately positioning param1:Pan degree(0~3600); param2: tilt coordinates(-1800-1800); param3:zoom(1~128)
        /// </summary>
        EM_A_EXTPTZ_EXACTGOTO,
        /// <summary>
        /// 三维定位重设零位
        /// Reset 3D positioning as zero
        /// </summary>
        EM_A_EXTPTZ_RESETZERO,
        /// <summary>
        /// 绝对移动控制命令,param4对应结构 PTZ_CONTROL_ABSOLUTELY
        /// Absolute motion control commands, param4 corresponding struct PTZ_CONTROL_ABSOLUTELY
        /// </summary>
        EM_A_EXTPTZ_MOVE_ABSOLUTELY,
        /// <summary>
        /// 持续移动控制命令,param4对应结构 PTZ_CONTROL_CONTINUOUSLY
        /// Continuous motion control commands, param4 corresponding struct PTZ_CONTROL_CONTINUOUSLY
        /// </summary>
        EM_A_EXTPTZ_MOVE_CONTINUOUSLY,
        /// <summary>
        /// 云台控制命令,以一定速度转到预置位点,parm4对应结构PTZ_CONTROL_GOTOPRESET
        /// PTZ control command, at a certain speed to preset locus, param4 corresponding struct PTZ_CONTROL_GOTOPRESET
        /// </summary>
        EM_A_EXTPTZ_GOTOPRESET,
        /// <summary>
        /// 设置可视域(param4对应结构 PTZ_VIEW_RANGE_INFO)
        /// Set to horizon(param4 corresponding struct PTZ_VIEW_RANGE_INFO)
        /// </summary>
        EM_A_EXTPTZ_SET_VIEW_RANGE = 73,
        /// <summary>
        /// 绝对聚焦(param4对应结构PTZ_FOCUS_ABSOLUTELY)
        /// Absolute focus(param4 corresponding struct PTZ_FOCUS_ABSOLUTELY)
        /// </summary>
        EM_A_EXTPTZ_FOCUS_ABSOLUTELY = 74,
        /// <summary>
        /// 水平扇扫(param4对应PTZ_CONTROL_SECTORSCAN,param1、param2、param3无效)
        /// Level fan sweep(param4 corresponding PTZ_CONTROL_SECTORSCAN,param1,param2,param3 is invalid)
        /// </summary>
        EM_A_EXTPTZ_HORSECTORSCAN = 75,
        /// <summary>
        /// 垂直扇扫(param4对应PTZ_CONTROL_SECTORSCAN,param1、param2、param3无效)
        /// Vertical sweep fan(param4correspondingPTZ_CONTROL_SECTORSCAN,param1,param2,param3 is invalid)
        /// </summary>
        EM_A_EXTPTZ_VERSECTORSCAN = 76,
        /// <summary>
        /// 设定绝对焦距、聚焦值,param1为焦距,范围:[0,255],param2为聚焦,范围:[0,255],param3、param4无效
        /// Set absolute focus, focus on value, param1 for focal length, range: [0-255], param2 as the focus, scope: [0-255], param3, param4 is invalid
        /// </summary>
        EM_A_EXTPTZ_SET_ABS_ZOOMFOCUS = 77,
        /// <summary>
        /// 控制鱼眼电子云台,param4对应结构 PTZ_CONTROL_SET_FISHEYE_EPTZ
        /// Control fish eye PTZ, param4corresponding to structure PTZ_CONTROL_SET_FISHEYE_EPTZ
        /// </summary>
        EM_A_EXTPTZ_SET_FISHEYE_EPTZ = 78,
        /// <summary>
        /// 轨道机开始控制(param4对应结构体为 PTZ_CONTROL_SET_TRACK_CONTROL,dwStop传FALSE, param1、param2、param3无效)
        /// Track start control(param4 corresponding to structure PTZ_CONTROL_SET_TRACK_CONTROL,dwStop set as FALSE, param1, param2, param3 is invalid)
        /// </summary>
        EM_A_EXTPTZ_SET_TRACK_START = 79,
        /// <summary>
        /// 轨道机停止控制(param4对应结构体为 PTZ_CONTROL_SET_TRACK_CONTROL,dwStop传FALSE,param1、param2、param3无效)
        /// Track stop control (param4 corresponding to structure PTZ_CONTROL_SET_TRACK_CONTROL,dwStop set as FALSE, param1, param2, param3 is invalid)
        /// </summary>
        EM_A_EXTPTZ_SET_TRACK_STOP = 80,
        /// <summary>
        /// 云台重启命令(param1、param2、param3 param4 均无效,dwStop设置为FALSE)
        /// To restart the PTZ(param1,param2,param3,param4 are all invalid ,dwStop set to FALSE )
        /// </summary>
        EM_A_EXTPTZ_RESTART = 81,
        /// <summary>
        /// 云台连续移动,枪球联动专用,param4对应结构 PTZ_CONTROL_INTELLI_TRACKMOVE
        /// Continuous motion control commands,track move,param4 corresponding struct PTZ_CONTROL_INTELLI_TRACKMOVE
        /// </summary>
        EM_A_EXTPTZ_INTELLI_TRACKMOVE = 82,
        /// <summary>
        /// 设置区域聚焦参数(param4对应结构体为PTZ_CONTROL_SET_FOCUS_REGION,dwStop传FALSE,param1、param2、param3无效)
        /// set the focus region(param4 corresponding to PTZ_CONTROL_SET_FOCUS_REGION,dwStop set to FALSE,param1,param2,param3 are all invalid)
        /// </summary>
        EM_A_EXTPTZ_SET_FOCUS_REGION = 83,
        /// <summary>
        /// 暂停线扫(param1、param2、param3param4均无效，dwStop设置为FALSE)
        /// Pause Scan(param1,param2,param3,param4 are all invalid ,dwStop set to FALSE)
        /// </summary>
        EM_A_EXTPTZ_PAUSELINESCAN = 84,
        /// <summary>
        /// 目标跟踪时设置聚焦模式(param4对应结构体为PTZ_CONTROL_INTELLI_SETLENSWISDOMSTATE,dwStop传FALSE,param1、param2、param3无效)
        /// Set focus mode when tracking target(param4 corresponding to PTZ_CONTROL_INTELLI_SETLENSWISDOMSTATE, dwStop set to FALSE,param1,param2,param3 are all invalid)
        /// </summary>
        EM_A_EXTPTZ_INTELLI_SETLENSWISDOMSTATE = 85,
        /// <summary>
        /// 设置聚焦区域(param4对应结构体为PTZ_CONTROL_INTELLI_SETFOCUSAREA,dwStop传FALSE,param1、param2、param3无效)
        /// 注：目标跟踪若不需设置聚焦区域，因聚焦区域会沿袭上次主动设置状态，故需主动调用此接口取消设置聚焦区域
        /// Set focus area when tracking target(param4 corresponding to PTZ_CONTROL_INTELLI_SETFOCUSAREA, dwStop set to FALSE,param1,param2,param3 are all invalid)
        /// Note: if target tracking do not need set focus area,user need to set cancel by this interface
        /// </summary>
        EM_A_EXTPTZ_INTELLI_SETFOCUSAREA = 86,
        /// <summary>
        /// 上 + TELE param1=速度(1-8),下同
        /// Up + TELE param1=speed (1-8)
        /// </summary>
        EM_A_EXTPTZ_UP_TELE = 112,
        /// <summary>
        /// 下 + TELE
        /// Down + TELE
        /// </summary>
        EM_A_EXTPTZ_DOWN_TELE,
        /// <summary>
        /// 左 + TELE
        /// Left + TELE
        /// </summary>
        EM_A_EXTPTZ_LEFT_TELE,
        /// <summary>
        /// 右 + TELE
        /// Right + TELE
        /// </summary>
        EM_A_EXTPTZ_RIGHT_TELE,
        /// <summary>
        /// 左上 + TELE
        /// Upper left + TELE
        /// </summary>
        EM_A_EXTPTZ_LEFTUP_TELE,
        /// <summary>
        /// 左下 + TELE
        /// Down left + TELE
        /// </summary>
        EM_A_EXTPTZ_LEFTDOWN_TELE,
        /// <summary>
        /// 右上 + TELE
        /// Upper right + TELE
        /// </summary>
        EM_A_EXTPTZ_TIGHTUP_TELE,
        /// <summary>
        /// 右下 + TELE
        /// Down right + TELE
        /// </summary>
        EM_A_EXTPTZ_RIGHTDOWN_TELE,
        /// <summary>
        /// 上 + WIDE param1=速度(1-8),下同
        /// Up + WIDE param1=speed (1-8)
        /// </summary>
        EM_A_EXTPTZ_UP_WIDE,
        /// <summary>
        /// 下 + WIDE
        /// Down + WIDE
        /// </summary>
        EM_A_EXTPTZ_DOWN_WIDE,
        /// <summary>
        /// 左 + WIDE
        /// Left + WIDE
        /// </summary>
        EM_A_EXTPTZ_LEFT_WIDE,
        /// <summary>
        /// 右 + WIDE
        /// Right + WIDE
        /// </summary>
        EM_A_EXTPTZ_RIGHT_WIDE,
        /// <summary>
        /// 左上 + WIDE
        /// Upper left + WIDE
        /// </summary>
        EM_A_EXTPTZ_LEFTUP_WIDE,
        /// <summary>
        /// 左下 + WIDE
        /// Down left+ WIDE
        /// </summary>
        EM_A_EXTPTZ_LEFTDOWN_WIDE,
        /// <summary>
        /// 右上 + WIDE
        /// Upper right + WIDE
        /// </summary>
        EM_A_EXTPTZ_TIGHTUP_WIDE,
        /// <summary>
        /// 右下 + WIDE
        /// Down right + WIDE
        /// </summary>
        EM_A_EXTPTZ_RIGHTDOWN_WIDE,
        /// <summary>
        /// 转至预置点并抓图
        /// goto preset and snap
        /// </summary>
        EM_A_EXTPTZ_GOTOPRESETSNAP = 128,
        /// <summary>
        /// 校准云台方向（双方向校准）
        /// calibtate direction(two direction)
        /// </summary>
        EM_A_EXTPTZ_DIRECTIONCALIBRATION = 130,
        /// <summary>
        /// 校准云台方向（单防线校准）,param4对应结构 NET_IN_CALIBRATE_SINGLEDIRECTION
        /// calibtate direction(single direction),param4 corresponding to structure NET_IN_CALIBRATE_SINGLEDIRECTION
        /// </summary>
        EM_A_EXTPTZ_SINGLEDIRECTIONCALIBRATION = 131,
        /// <summary>
        /// 云台相对定位,param4对应结构 NET_IN_MOVERELATIVELY_INFO
        /// move Relatively, param4 corresponding to structure NET_IN_MOVERELATIVELY_INFO
        /// </summary>
        EM_A_EXTPTZ_MOVE_RELATIVELY = 132,
        /// <summary>
        /// 设置云台方向, param4对应结构 NET_IN_SET_DIRECTION_INFO
        /// set PTZ Direction, param4 corresponding to NET_IN_SET_DIRECTION_INFO
        /// </summary>
        EM_A_EXTPTZ_SET_DIRECTION = 133,
        /// <summary>
        /// 精准绝对移动控制命令, param4对应结构 NET_IN_PTZBASE_MOVEABSOLUTELY_INFO（通过 CFG_CAP_CMD_PTZ 命令获取云台能力集( CFG_PTZ_PROTOCOL_CAPS_INFO )，若bSupportReal为TRUE则设备支持该操作）
        /// Absolute motion control commands,param4 corresponding to NET_IN_PTZBASE_MOVEABSOLUTELY_INFO
        /// </summary>
        EM_A_EXTPTZ_BASE_MOVE_ABSOLUTELY = 134,
        /// <summary>
        /// 云台连续移动控制命令, param4 对应结构 NET_IN_PTZBASE_MOVE_CONTINUOUSLY_INFO. 通过 CFG_CAP_CMD_PTZ 命令获取云台能力集
        /// 若 CFG_PTZ_PROTOCOL_CAPS_INFO 中 stuMoveContinuously 字段的 stuType.bSupportExtra 为 TRUE, 表示设备支持该操作
        /// Continuously motion control commands, param4 corresponding to NET_IN_PTZBASE_MOVE_CONTINUOUSLY_INFO. Through CFG_CAP_CMD_PTZ to get PTZ Caps
        /// If CFG_PTZ_PROTOCOL_CAPS_INFO::stuMoveContinuously::stuType.bSupportExtra is TRUE, means the device supports this command
        /// </summary>
        EM_A_EXTPTZ_BASE_MOVE_CONTINUOUSLY,
        /// <summary>
        /// 设置当前位置聚焦值, param4对应结构体 NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO
        /// Set focus map value, param4 corresponding to NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO
        /// </summary>
        EM_A_EXTPTZ_BASE_SET_FOCUS_MAP_VALUE,
        /// <summary>
        /// 绝对定位独立控制PT并能以度/秒为单位的速度控制, param4对应结构 NET_IN_PTZBASE_MOVEABSOLUTELY_ONLYPT_INFO
        /// Absolute pt motion control commands,param4 corresponding to NET_IN_PTZBASE_MOVEABSOLUTELY_ONLYPT_INFO
        /// </summary>
        EM_A_EXTPTZ_BASE_MOVE_ABSOLUTELY_ONLYPT,
        /// <summary>
        /// 绝对定位独立控制zoom，并能控制变倍速度, param4对应结构 NET_IN_PTZBASE_MOVEABSOLUTELY_ONLYZOOM_INFO
        /// Absolute zoom motion control commands,param4 corresponding to NET_IN_PTZBASE_MOVEABSOLUTELY_ONLYZOOM_INFO
        /// </summary>
        EM_A_EXTPTZ_BASE_MOVE_ABSOLUTELY_ONLYZOOM,
        /// <summary>
        /// 云台移动停止,同时也停止巡航模式,param4对应结构体 NET_IN_STOP_MOVE_INFO
        /// The movement of the gimbal stops, and the cruise mode is also stopped at the same time, param4 corresponds to the structure NET_IN_STOP_MOVE_INFO
        /// </summary>
        EM_A_EXTPTZ_STOP_MOVE,
        /// <summary>
        /// 开始云台控制,param4对应结构体 NET_IN_PTZ_START_INFO
        /// Start PTZ control,param4 corresponds to the structure NET_IN_PTZ_START_INFO
        /// </summary>
        EM_A_EXTPTZ_START,
        /// <summary>
        /// 结束云台控制,param4对应结构体 NET_IN_PTZ_STOP_INFO
        /// Stop PTZ control,param4 corresponds to the structure NET_IN_PTZ_STOP_INFO
        /// </summary>
        EM_A_EXTPTZ_STOP,
        /// <summary>
        /// 开始模式记录,param4对应结构体 NET_IN_START_PATTERN_RECORD_INFO
        /// Start mode recording,param4 corresponds to the structure NET_IN_START_PATTERN_RECORD_INFO
        /// </summary>
        EM_A_EXTPTZ_START_PATTERN_RECORD,
        /// <summary>
        /// 停止模式记录,param4对应结构体 NET_IN_STOP_PATTERN_RECORD_INFO
        /// Stop mode recording,param4 corresponds to the structure NET_IN_STOP_PATTERN_RECORD_INFO
        /// </summary>
        EM_A_EXTPTZ_STOP_PATTERN_RECORD,
        /// <summary>
        /// 开始模式回放,param4对应结构体 NET_IN_START_PATTERN_REPLAY_INFO
        /// Start Mode Playback,param4 corresponds to the structure NET_IN_START_PATTERN_REPLAY_INFO
        /// </summary>
        EM_A_EXTPTZ_START_PATTERN_REPLAY,
        /// <summary>
        /// 停止模式回放,param4对应结构体 NET_IN_STOP_PATTERN_REPLAY_INFO
        /// Stop Mode Playback,param4 corresponds to the structure NET_IN_STOP_PATTERN_REPLAY_INFO
        /// </summary>
        EM_A_EXTPTZ_STOP_PATTERN_REPLAY,
        /// <summary>
        /// 云台三维定位, param4对应结构体 NET_IN_MOVE_DIRECTLY_INFO
        /// Move Directly, param4 corresponds to the structure NET_IN_MOVE_DIRECTLY_INFO
        /// </summary>
        EM_A_EXTPTZ_MOVE_DIRECTLY,
        /// <summary>
        /// 最大命令值
        /// max command value
        /// </summary>
        EM_A_EXTPTZ_TOTAL,
    }

    /// <summary>
    /// frame parameter structure of Callback video data frame
    /// 回调视频数据帧的帧参数结构体
    /// </summary>
    public struct NET_VideoFrameParam
    {
        /// <summary>
        /// Encode type 
        /// 编码类型
        /// </summary>
        public byte encode;
        /// <summary>
        /// I = 0, P = 1, B = 2...
        /// I = 0, P = 1, B = 2...
        /// </summary>
        public byte frametype;
        /// <summary>
        /// PAL - 0, NTSC - 1
        /// PAL - 0, NTSC - 1
        /// </summary>
        public byte format;
        /// <summary>
        /// CIF - 0, HD1 - 1, 2CIF - 2, D1 - 3, VGA - 4, QCIF - 5, QVGA - 6 ,SVCD - 7,QQVGA - 8, SVGA - 9, XVGA - 10,WXGA - 11,SXGA - 12,WSXGA - 13,UXGA - 14,WUXGA - 15,LFT - 16, 720 - 17, 1080 - 18,1_3M-19, 2M-20, 5M-21;when size equal to 255, width and height valid
        /// CIF - 0, HD1 - 1, 2CIF - 2, D1 - 3, VGA - 4, QCIF - 5, QVGA - 6 ,SVCD - 7,QQVGA - 8, SVGA - 9, XVGA - 10,WXGA - 11,SXGA - 12,WSXGA - 13,UXGA - 14,WUXGA - 15,LFT - 16, 720 - 17, 1080 - 18 ,1_3M-19,2M-20, 5M-21;当size=255时，成员变量width,height 有效
        /// </summary>
        public byte size;
        /// <summary>
        /// If it is H264 encode it is always 0,Fill in FOURCC('X','V','I','D') in MPEG 4
        /// 如果是H264编码则总为0，否则值为*( DWORD*)"DIVX"，即0x58564944
        /// </summary>
        public uint fourcc;
        /// <summary>
        /// width pixel, valid when struct member "size"  equal to 255
        /// 宽，单位是像素，当size=255时有效
        /// </summary>
        public ushort width;
        /// <summary>
        /// height pixel, valid when struct member "size"  equal to 255
        /// 高，单位是像素，当size=255时有效
        /// </summary>
        public ushort height;
        /// <summary>
        /// Time information
        /// 时间信息
        /// </summary>
        public NET_TIME struTime;
        /// <summary>
        /// / 帧序号
        /// / Frame number
        /// </summary>
        public int sequence;
        /// <summary>
        /// / 绝对时间毫秒
        /// / Absolute time milliseconds
        /// </summary>
        public int millisecond;
    }

    /// <summary>
    /// frame parameter structure of audio data callback 
    /// 回调音频数据帧的帧参数结构体
    /// </summary>
    public struct NET_CBPCMDataParam
    {
        /// <summary>
        /// Track amount
        /// 声道数
        /// </summary>
        public byte channels;
        /// <summary>
        /// sample 0 - 8000, 1 - 11025, 2 - 16000, 3 - 22050, 4 - 32000, 5 - 44100, 6 - 48000
        /// 采样 0 - 8000, 1 - 11025, 2 - 16000, 3 - 22050, 4 - 32000, 5 - 44100, 6 - 48000
        /// </summary>
        public byte samples;
        /// <summary>
        /// Sampling depth. Value:8/16 show directly
        /// 采样深度 取值8或者16等。直接表示
        /// </summary>
        public byte depth;
        /// <summary>
        /// 0 - indication no symbol,1-indication with symbol
        /// 0 - 指示无符号,1-指示有符号
        /// </summary>
        public byte param1;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        public uint reserved;
    }

    /// <summary>
    /// Time structure
    /// 时间结构体
    /// </summary>
    public struct NET_TIME
    {
        /// <summary>
        /// Year
        /// 年
        /// </summary>
        public uint dwYear;
        /// <summary>
        /// Month
        /// 月
        /// </summary>
        public uint dwMonth;
        /// <summary>
        /// Day
        /// 天
        /// </summary>
        public uint dwDay;
        /// <summary>
        /// Hour
        /// 小时
        /// </summary>
        public uint dwHour;
        /// <summary>
        /// Minute
        /// 分
        /// </summary>
        public uint dwMinute;
        /// <summary>
        /// Second
        /// 秒
        /// </summary>
        public uint dwSecond;
        /// <summary>
        /// DateTime change to NET_TIME static funtion.
        /// DateTime转为NET_TIME静态函数
        /// </summary>
        /// <param name="dateTime">datetime</param>
        /// <returns>NET_TIME</returns>
        public static NET_TIME FromDateTime(DateTime dateTime)
        {
            try
            {
                NET_TIME net_time = new NET_TIME();
                net_time.dwYear = (uint)dateTime.Year;
                net_time.dwMonth = (uint)dateTime.Month;
                net_time.dwDay = (uint)dateTime.Day;
                net_time.dwHour = (uint)dateTime.Hour;
                net_time.dwMinute = (uint)dateTime.Minute;
                net_time.dwSecond = (uint)dateTime.Second;
                return net_time;
            }
            catch
            {
                return new NET_TIME();
            }
        }
        /// <summary>
        /// change NET_TIME to DateTime
        /// NET_TIME 转为 DateTime
        /// </summary>
        /// <returns>DateTime</returns>
        public DateTime ToDateTime()
        {
            try
            {
                return new DateTime((int)dwYear, (int)dwMonth, (int)dwDay, (int)dwHour, (int)dwMinute, (int)dwSecond);
            }
            catch
            {
                return DateTime.Now;
            }
        }
        /// <summary>
        /// oveeride toString function
        /// 重写toString函数
        /// </summary>
        /// <returns>return time string</returns>
        public override string ToString()
        {
            return string.Format("{0}-{1}-{2} {3}:{4}:{5}", dwYear.ToString("D4"), dwMonth.ToString("D2"), dwDay.ToString("D2"), dwHour.ToString("D2"), dwMinute.ToString("D2"), dwSecond.ToString("D2"));
        }
    }

    /// <summary>
    /// control playback type
    /// 回放控制类型
    /// </summary>
    public enum PlayBackType
    {
        /// <summary>
        /// play
        /// 播发
        /// </summary>
        Play,
        /// <summary>
        /// pause
        /// 暂停
        /// </summary>
        Pause,
        /// <summary>
        /// stop
        /// 停止
        /// </summary>
        Stop,
        /// <summary>
        /// fast
        /// 快放
        /// </summary>
        Fast,
        /// <summary>
        /// slow
        /// 慢放
        /// </summary>
        Slow,
        /// <summary>
        /// normal
        /// 正常播放
        /// </summary>
        Normal,
    }

    /// <summary>
    /// user work mode enumeration
    /// 用户设置工作模式枚举
    /// </summary>
    public enum EM_USEDEV_MODE
    {
        /// <summary>
        /// Set client-end mode to begin audio talk 
        /// 设置客户端方式进行语音对讲
        /// </summary>
        TALK_CLIENT_MODE,
        /// <summary>
        /// Set server mode to begin audio talk 
        /// 设置服务器方式进行语音对讲
        /// </summary>
        TALK_SERVER_MODE,
        /// <summary>
        /// Set encode format for audio talk,corresponding structure NET_DEV_TALKDECODE_INFO
        /// 设置语音对讲编码格式(对应NET_DEV_TALKDECODE_INFO)
        /// </summary>
        TALK_ENCODE_TYPE,
        /// <summary>
        /// Set alarm subscribe way
        /// 设置报警订阅方式
        /// </summary>
        ALARM_LISTEN_MODE,
        /// <summary>
        /// Set user right to realize configuration management
        /// 设置通过权限进行配置管理
        /// </summary>
        CONFIG_AUTHORITY_MODE,
        /// <summary>
        /// set talking channel(0~MaxChannel-1)
        /// 设置对讲通道(0~MaxChannel-1)
        /// </summary>
        TALK_TALK_CHANNEL,
        /// <summary>
        /// set the stream type of the record for query(0-both main and extra stream,1-only main stream,2-only extra stream)
        /// 设置待查询及按时间回放的录像码流类型(0-主辅码流,1-主码流,2-辅码流)
        /// </summary>
        RECORD_STREAM_TYPE,
        /// <summary>
        /// set speaking parameter,corresponding structure NET_SPEAK_PARAM
        /// 设置语音对讲喊话参数,对应结构体 NET_SPEAK_PARAM
        /// </summary>
        TALK_SPEAK_PARAM,
        /// <summary>
        /// Set by time video playback and download the video file TYPE,see to EM_RECORD_TYPE
        /// 设置按时间录像回放及下载的录像文件类型(详见EM_RECORD_TYPE)
        /// </summary>
        RECORD_TYPE,
        /// <summary>
        /// Set voice intercom parameters of three generations of equipment and the corresponding structure NET_TALK_EX
        /// 设置三代设备的语音对讲参数, 对应结构体 NET_TALK_EX
        /// </summary>
        TALK_MODE3,
        /// <summary>
        /// set real time playback function(0-off,1-on)
        /// 设置实时回放功能(0-关闭,1开启)
        /// </summary>
        PLAYBACK_REALTIME_MODE,
        /// <summary>
        /// judge the voice intercom if it was a forwarding mode, (corresponding to  NET_TALK_TRANSFER_PARAM)
        /// 设置语音对讲是否为转发模式, 对应结构体 NET_TALK_TRANSFER_PARAM
        /// </summary>
        TALK_TRANSFER_MODE,
        /// <summary>
        /// set VT parameters,corresponding structure NET_VT_TALK_PARAM
        /// 设置VT对讲参数, 对应结构体 NET_VT_TALK_PARAM
        /// </summary>
        TALK_VT_PARAM,
        /// <summary>
        /// set target device identifier for searching system capacity information, (not zero - locate device forwards the information)
        /// 设置目标设备标示符, 用以查询新系统能力(非0-转发系统能力消息)
        /// </summary>
        TARGET_DEV_ID,
        /// <summary>
        /// 设置录音缓存, 对应为一个int
        /// </summary>
        AUDIO_RECORD_LENGTH = 15
    }

    /// <summary>
    /// audio encode information structure
    /// 语音编码信息
    /// </summary>
    public struct NET_DEV_TALKDECODE_INFO
    {
        /// <summary>
        /// Encode type
        /// 编码类型
        /// </summary>
        public EM_TALK_CODING_TYPE encodeType;
        /// <summary>
        /// Bit:8/16
        /// 位数,如8或16, 目前只能是16
        /// </summary>
        public int nAudioBit;
        /// <summary>
        /// Sampling rate such as 8000 or 16000
        /// 采样率,如8000或16000
        /// </summary>
        public uint dwSampleRate;
        /// <summary>
        /// Pack Period,Unit ms
        /// 打包周期, 单位ms
        /// </summary>
        public int nPacketPeriod;
        /// <summary>
        /// resrved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 60)]
        public byte[] reserved;
    }

    /// <summary>
    /// audio encode type enumeration
    /// 语音编码类型
    /// </summary>
    public enum EM_TALK_CODING_TYPE
    {
        /// <summary>
        /// No-head PCM
        /// 无头PCM
        /// </summary>
        DEFAULT = 0,
        /// <summary>
        /// With head PCM
        /// 带头PCM
        /// </summary>
        PCM = 1,
        /// <summary>
        /// G711a
        /// G711a
        /// </summary>
        G711a,
        /// <summary>
        /// AMR
        /// AMR
        /// </summary>
        AMR,
        /// <summary>
        /// G711u
        /// G711u
        /// </summary>
        G711u,
        /// <summary>
        /// G726
        /// G726
        /// </summary>
        G726,
        /// <summary>
        /// G723_53
        /// G723_53
        /// </summary>
        G723_53,
        /// <summary>
        /// G723_63
        /// G723_63
        /// </summary>
        G723_63,
        /// <summary>
        /// AAC
        /// AAC
        /// </summary>
        AAC,
        /// <summary>
        /// OGG
        /// OGG
        /// </summary>
        OGG,
        /// <summary>
        /// G729
        /// G729
        /// </summary>
        G729 = 10,
        /// <summary>
        /// MPEG2
        /// MPEG2
        /// </summary>
        MPEG2,
        /// <summary>
        /// MPEG2-Layer2
        /// MPEG2-Layer2
        /// </summary>
        MPEG2_Layer2,
        /// <summary>
        /// G.722.1
        /// G.722.1
        /// </summary>
        G722_1,
        /// <summary>
        /// ADPCM
        /// ADPCM
        /// </summary>
        ADPCM = 21,
        /// <summary>
        /// MP3
        /// MP3
        /// </summary>
        MP3 = 22,
    }

    /// <summary>
    /// speak information structure
    /// 对讲信息结构体
    /// </summary>
    public struct NET_SPEAK_PARAM
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 0：对讲（默认模式）,1：喊话；从喊话切换到对讲要重新设置
        /// / 2: 单向监听，若切换到其他模式要重新设置
        /// / 3: IPSpeaker喊话  该取值废弃
        /// 0:talk back(default), 1: propaganda,from propaganda ro talk back,need afresh to configure
        /// 2:unidirectional monitoring, if want to set other mode, need afresh to configure
        /// 3:IPSpeaker broadcasting message  DEPRECATED: This value is no longer used
        /// </summary>
        public int nMode;
        /// <summary>
        /// / 对讲时代表对讲通道号，喊话时代表扬声器通道号
        /// reproducer channel
        /// </summary>
        public int nSpeakerChannel;
        /// <summary>
        /// / 开启对讲时是否等待设备的响应,默认不等待.TRUE:等待;FALSE:不等待
        /// / 超时时间由CLIENT_SetNetworkParam设置,对应NET_PARAM的nWaittime字段
        /// Wait for device to responding or not when enable bidirectional talk. Default setup is no.TRUE:wait ;FALSE:no
        /// </summary>
        public bool bEnableWait;
        /// <summary>
        /// / 对讲设备类型 0: 默认 ,1: IP speaker  废弃字段
        /// Intercom device type 0: Default, 1: IP speaker DEPRECATED: This field is no longer used
        /// </summary>
        public int nTalkDeviceMode;
        /// <summary>
        /// / IPSpeaker喊话通道数量  废弃字段
        /// Number of IP speaker broadcasting channels DEPRECATED: This field is no longer used
        /// </summary>
        public int nIPSpeakerChannelCount;
        /// <summary>
        /// / IPSpeaker喊话通道   废弃字段
        /// IP speaker broadcasting channels DEPRECATED: This field is no longer used
        /// </summary>
        public IntPtr nIPSpeakerChannel;
        /// <summary>
        /// / 0:默认， 1：非windows的场景下，支持本地录音对讲
        /// 0: Default, 1: Supported for local recording and intercom in non-Windows scenarios.
        /// </summary>
        public int bEnableRender;
        /// <summary>
        /// 设备个数
        /// Device Count
        /// </summary>
        public int nCount;
        /// <summary>
        /// 设备信息列表
        /// Device ID List
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_DEVICEID_String[] szDeviceIDs;
    }

    /// <summary>
    /// record file type
    /// 录像文件类型
    /// </summary>
    public enum EM_RECORD_TYPE
    {
        /// <summary>
        /// All the video
        /// 所有录像
        /// </summary>
        ALL,
        /// <summary>
        /// normal  video
        /// 普通录像
        /// </summary>
        NORMAL,
        /// <summary>
        /// External alarm video
        /// 外部报警录像
        /// </summary>
        ALARM,
        /// <summary>
        /// motion alarm video
        /// 动检报警录像
        /// </summary>
        MOTION,
    }

    /// <summary>
    /// extend talk information for EM_USEDEV_MODE.TALK_MODE3
    /// 对讲扩展结构体
    /// </summary>
    public struct NET_TALK_EX
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel number
        /// 通道号
        /// </summary>
        public int nChannel;
        /// <summary>
        /// Audio transmission listener ports
        /// 音频传输侦听端口
        /// </summary>
        public int nAudioPort;
        /// <summary>
        /// Ms wait time, unit, use the default value is 0
        /// 等待时间, 单位ms,为0则使用默认值
        /// </summary>
        public int nWaitTime;
        /// <summary>
        /// Visual talk video window
        /// 可视对讲视频显示窗口
        /// </summary>
        public IntPtr hVideoWnd;
        /// <summary>
        /// Video encode format
        /// 视频编码格式
        /// </summary>
        public NET_TALK_VIDEO_FORMAT stuVideoFmt;
        /// <summary>
        /// Multicast address
        /// 组播地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
        public byte[] szMulticastAddr;
        /// <summary>
        /// Multicast local port
        /// 组播本地端口
        /// </summary>
        public ushort wMulticastLocalPort;
        /// <summary>
        /// Multicast remote port
        /// 组播远程端口
        /// </summary>
        public ushort wMulticastRemotePort;
    }

    /// <summary>
    /// video format information
    /// 视频格式信息结构体
    /// </summary>
    public struct NET_TALK_VIDEO_FORMAT
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Video compression format
        /// 视频压缩格式
        /// </summary>
        public uint dwCompression;
        /// <summary>
        /// Video sampling frequency
        /// 视频采样频率
        /// </summary>
        public int nFrequency;
    }

    /// <summary>
    /// open the forwarding mode of intercom or not 
    /// 是否开启语音对讲的转发模式
    /// </summary>
    public struct NET_TALK_TRANSFER_PARAM
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Open the forwarding mode of intercom or not, TRUE: yes, FALSE: no
        /// 是否开启语音对讲转发模式, TRUE: 开启转发, FALSE: 关闭转发
        /// </summary>
        public bool bTransfer;
    }

    /// <summary>
    /// talk about VT information
    /// VT对讲参数
    /// </summary>
    public struct NET_VT_TALK_PARAM
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// identity filed is valid by bitwise.see EM_VT_PARAM_VALID
        /// 按位标识后面的字段是否有效, EM_VT_PARAM_VALID的组合
        /// </summary>
        public int nValidFlag;
        /// <summary>
        /// event call back, EM_VT_PARAM_VALID.EVENT_CB is valid
        /// 事件回调函数, EM_VT_PARAM_VALID.EVENT_CB
        /// </summary>
        public fVtEventCallBack pfEventCb;
        /// <summary>
        /// call back user data, EM_VT_PARAM_VALID.USER_DATA is valid
        /// 事件回调函数自定义数据, EM_VT_PARAM_VALID.USER_DATA
        /// </summary>
        public IntPtr dwUser;
        /// <summary>
        /// Mid-number(the called number), 8byte, EM_VT_PARAM_VALID.MID_NUM is valid
        /// 被叫中号, 8位, EM_VT_PARAM_VALID.MID_NUM
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szPeerMidNum;
        /// <summary>
        /// call operation, 0:no-operation, 1:repulse, 2:accept, EM_VT_PARAM_VALID.ACTION is valid
        /// 对呼叫的操作, 0:无操作, 1:拒接, 2:接入, EM_VT_PARAM_VALID_ACTION
        /// </summary>
        public EM_NEWCALL_ACTION emAction;
        /// <summary>
        /// waitting time(ms), EM_VT_PARAM_VALID.WAITTIME is valid
        /// 超时时间, 单位ms, EM_VT_PARAM_VALID.WAITTIME
        /// </summary>
        public int nWaitTime;
        /// <summary>
        /// handle for show video, EM_VT_PARAM_VALID.VIDEOWND is valid
        /// 可视对讲视频显示窗口, EM_VT_PARAM_VALID.VIDEOWND
        /// </summary>
        public IntPtr hVideoWnd;
        /// <summary>
        /// talk mode, true:client, false:server, EM_VT_PARAM_VALID.CSMODE is valid
        /// 客户端/服务器模式, TRUE:客户端, FALSE:服务器, EM_VT_PARAM_VALID.CSMODE
        /// </summary>
        public bool bClient;
        /// <summary>
        /// talk decode information.
        /// 语音编码信息, EM_VT_PARAM_VALID.AUDIO_ENCODE
        /// </summary>
        public NET_DEV_TALKDECODE_INFO stAudioEncode;
    }

    /// <summary>
    /// call operation  for VT 
    /// 呼叫事件处理动作
    /// </summary>
    public enum EM_NEWCALL_ACTION
    {
        /// <summary>
        /// no-operation
        /// 无操作
        /// </summary>                                                     
        UNKNOWN,
        /// <summary>                                                      
        /// repulse                                                        
        /// 拒接                                                               
        /// </summary>                                                     
        REFUSE,
        /// <summary>                                                      
        /// accept                                                         
        /// 接入                                                               
        /// </summary>                                                     
        ACCEPT,
    }

    /// <summary>
    /// valid paramter for VT
    /// VT有效参数类型
    /// </summary>
    public enum EM_VT_PARAM_VALID
    {
        /// <summary>
        /// event call back
        /// 事件回调
        /// </summary>
        EVENT_CB = 0x0001,
        /// <summary>
        /// user data
        /// 用户数据
        /// </summary>
        USER_DATA = 0x0002,
        /// <summary>
        /// Mid-number
        /// 中号
        /// </summary>
        MID_NUM = 0x0004,
        /// <summary>
        /// call operation
        /// 呼叫操作
        /// </summary>
        ACTION = 0x0008,
        /// <summary>
        /// waitting time
        /// 等待
        /// </summary>
        WAITTIME = 0x0010,
        /// <summary>
        /// handle for show video
        /// 显示视频
        /// </summary>
        VIDEOWND = 0x0020,
        /// <summary>
        /// talk mode
        /// 对讲模式
        /// </summary>
        CSMODE = 0x0040,
        /// <summary>
        /// audio encode
        /// 音频编码
        /// </summary>
        AUDIO_ENCODE = 0x0080,
        /// <summary>
        /// local ip
        /// 本地IP
        /// </summary>
        LOCAL_IP = 0x0100,
    }

    /// <summary>
    /// event type
    /// 事件类型
    /// </summary>
    public enum EM_AUDIO_CB_FLAG
    {
        /// <summary>
        /// unknow
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// new call
        /// 有呼叫进来
        /// </summary>
        NEWCALL,
        /// <summary>
        /// hangup
        /// 对方挂断
        /// </summary>
        REMOTE_HANGUP,
        /// <summary>
        /// disconncet
        /// 断线
        /// </summary>
        DISCONNECT,
        /// <summary>
        /// ring
        /// 对端响铃
        /// </summary>
        RING,
    }

    /// <summary>
    /// 从设备类型
    /// subclass id type
    /// </summary>
    public enum EM_SUBCLASSID_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_SUBCLASSID_UNKNOWN,
        /// <summary>
        /// 辅助设备 (ITSE使用)
        /// AssistDevice for ITSE
        /// </summary>
        EM_SUBCLASSID_ASSISTDEVICE,
    }

    /// <summary>
    /// 录像回放入参信息
    /// record play back parameter in
    /// </summary>
    public struct NET_IN_PLAY_BACK_BY_TIME_INFO
    {
        /// <summary>
        /// 开始时间
        /// Begin time
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// 结束时间
        /// End time
        /// </summary>
        public NET_TIME stStopTime;
        /// <summary>
        /// 播放窗格, 可为NULL
        /// Play window
        /// </summary>
        public IntPtr hWnd;
        /// <summary>
        /// 进度回调
        /// Download pos callback
        /// </summary>
        public fDownLoadPosCallBack cbDownLoadPos;
        /// <summary>
        /// 进度回调用户信息
        /// Pos user
        /// </summary>
        public IntPtr dwPosUser;
        /// <summary>
        /// 数据回调
        /// Download data callback
        /// </summary>
        public fDataCallBack fDownLoadDataCallBack;
        /// <summary>
        /// 数据回调用户信息
        /// Data user
        /// </summary>
        public IntPtr dwDataUser;
        /// <summary>
        /// 播放方向, 0:正放; 1:倒放;
        /// Playback direction
        /// </summary>
        public int nPlayDirection;
        /// <summary>
        /// 接口超时时间, 目前倒放使用
        /// Watiting time
        /// </summary>
        public int nWaittime;
        /// <summary>
        /// 事件信息，用户分配内存，不用时赋值为NULL
        /// Event info, user allocate memory
        /// </summary>
        public IntPtr pstuEventInfo;
        /// <summary>
        /// pstuEventInfo 个数，最大为 16
        /// pstuEventInfo's count, max num is 16
        /// </summary>
        public uint nEventInfoCount;
        /// <summary>
        /// 从设备类型
        /// subclass ID
        /// </summary>
        public EM_SUBCLASSID_TYPE emSubClass;
        /// <summary>
        /// VK信息回调
        /// VK message callback
        /// </summary>
        public fVKInfoCallBack pVKInfoCallBack;
        /// <summary>
        /// VK信息回调用户信息
        /// VK message Callback user information
        /// </summary>
        public IntPtr dwVKInfoUser;
        /// <summary>
        /// 原始数据回调
        /// original data callback
        /// </summary>
        public fOriDataCallBack pOriDataCallBack;
        /// <summary>
        /// 原始数据回调用户信息
        /// original data callback user information
        /// </summary>
        public IntPtr dwOriDataUser;
        /// <summary>
        /// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stStopTime), 为FALSE表示仅下发stStartTime, stStopTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
        /// TRUE means only send stuStartTimeRealUTC and stuEndTimeRealUTC (do not send stStartTime, stStopTime), if FALSE means only send stStartTime, stStopTime (do not send stuStartTimeRealUTC and stuEndTimeRealUTC)
        /// </summary>
        public bool bOnlySupportRealUTC;
        /// <summary>
        /// 录像的起始UTC时间(标准UTC时间)
        /// Recording start UTC time (standard UTC time)
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// 录像的结束UTC时间(标准UTC时间)
        /// end UTC time of recording (standard UTC time)
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 940 - 2 * 8)]
        public byte[] bReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 940 - 2 * 4)]
        public byte[] bReserved;
#endif
    }

    /// <summary>
    /// record play back parameter out
    /// 录像回放出参信息
    /// </summary>
    public struct NET_OUT_PLAY_BACK_BY_TIME_INFO
    {
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// record file information
    /// 录像文件信息
    /// </summary>
    public struct NET_RECORDFILE_INFO
    {
        /// <summary>
        /// Channel number
        /// 通道号
        /// </summary>
        public uint ch;
        /// <summary>
        /// File name
        /// 文件名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 124)]
        public string filename;
        /// <summary>
        /// the total number of file frames
        /// 文件总帧数
        /// </summary>
        public uint framenum;
        /// <summary>
        /// File length 
        /// 文件长度, 单位为Kbyte
        /// </summary>
        public uint size;
        /// <summary>
        /// Start time 
        /// 开始时间
        /// </summary>
        public NET_TIME starttime;
        /// <summary>
        /// End time 
        /// 结束时间
        /// </summary>
        public NET_TIME endtime;
        /// <summary>
        /// HDD number, 0－127 is the local record. 128-network record
        /// 磁盘号(区分网络录像和本地录像的类型,0－127表示本地录像,其中64表示光盘1,128表示网络录像)
        /// </summary>
        public uint driveno;
        /// <summary>
        /// Start cluster number 
        /// 起始簇号
        /// </summary>
        public uint startcluster;
        /// <summary>
        /// Recorded file type  0:general record;1:alarm record ;2:motion detection;3:card number record ;4:image ;255:all
        /// 录象文件类型  0：普通录象；1：报警录象；2：移动检测；3：卡号录象；4：图片, 5: 智能录像, 19: POS录像, 255:所有录像
        /// </summary>
        public byte nRecordFileType;
        /// <summary>
        /// 0:general record 1:Important record
        /// 0:普通录像 1:重要录像
        /// </summary>
        public byte bImportantRecID;
        /// <summary>
        /// Document Indexing
        /// 文件定位索引(nRecordFileType==4<图片>时,bImportantRecID<<8 +bHint ,组成图片定位索引 )
        /// </summary>
        public byte bHint;
        /// <summary>
        /// 0-main stream record 1-sub1 stream record 2-sub2 stream record 3-sub3 stream record
        /// 0-主码流录像 1-辅码流1录像 2-辅码流2 3-辅码流3录像
        /// </summary>
        public byte bRecType;
    }

    /// <summary>
    /// type of video search
    /// 录像查询类型
    /// </summary>
    public enum EM_QUERY_RECORD_TYPE
    {
        /// <summary>
        /// All the recorded video  
        /// 所有录像
        /// </summary>
        ALL = 0,
        /// <summary>
        /// The video of external alarm
        /// 外部报警录像
        /// </summary>
        ALARM = 1,
        /// <summary>
        /// The video of dynamic detection alarm
        /// 动态检测报警录像
        /// </summary>
        MOTION_DETECT = 2,
        /// <summary>
        /// All the alarmed video
        /// 所有报警录像
        /// </summary>
        ALARM_ALL = 3,
        /// <summary>
        /// query by the card number
        /// 卡号查询
        /// </summary>
        CARD = 4,
        /// <summary>
        /// query by condition
        /// 按条件查询
        /// </summary>
        CONDITION = 5,
        /// <summary>
        /// combination query 
        /// 组合查询
        /// </summary>
        JOIN = 6,
        /// <summary>
        /// query pictures by the card number, used by HB-U and NVS
        /// 按卡号查询图片,HB-U、NVS等使用
        /// </summary>
        CARD_PICTURE = 8,
        /// <summary>
        /// query pictures, used by HB-U and NVS
        /// 查询图片,HB-U、NVS等使用
        /// </summary>
        PICTURE = 9,
        /// <summary>
        /// query by field
        /// 按字段查询
        /// </summary>
        FIELD = 10,
        /// <summary>
        /// Smart record search 
        /// 智能录像查询
        /// </summary>
        INTELLI_VIDEO = 11,
        /// <summary>
        /// query network data, used by Jinqiao Internet Bar
        /// 查询网络数据,金桥网吧等使用
        /// </summary>
        NET_DATA = 15,
        /// <summary>
        /// query the video of serial data
        /// 查询透明串口数据录像
        /// </summary>
        TRANS_DATA = 16,
        /// <summary>
        /// query the important video
        /// 查询重要录像
        /// </summary>
        IMPORTANT = 17,
        /// <summary>
        /// query the talk file
        /// 查询录音文件
        /// </summary>
        TALK_DATA = 18,
        /// <summary>
        /// invalid query type
        /// POS录像
        /// </summary>
        INVALID = 256,
    }

    /// <summary>
    /// alarm type,used in fMessCallBackEx
    /// 报警类型
    /// </summary>
    public enum EM_ALARM_TYPE
    {
        /// <summary>
        /// External alarm ,data's length(byte) is same to device's alarm channels' count, 1 means alarm, 0 means Non alarm.
        /// 外部报警，数据字节数与设备报警通道个数相同，每个字节表示一个报警通道的报警状态，1为有报警，0为无报警
        /// </summary>
        ALARM_ALARM_EX = 0x2101,
        /// <summary>
        /// Motion detection alarm 
        /// 动态检测报警，数据字节数与设备视频通道个数相同，每个字节表示一个视频通道的动态检测报警状态，1为有报警，0为无报警
        /// </summary>
        MOTION_ALARM_EX = 0x2102,
        /// <summary>
        /// Video loss alarm 
        /// 视频丢失报警，数据字节数与设备视频通道个数相同，每个字节表示一个视频通道的视频丢失报警状态，1为有报警，0为无报警
        /// </summary>
        VIDEOLOST_ALARM_EX = 0x2103,
        /// <summary>
        /// Camera masking alarm 
        /// 视频遮挡报警，数据字节数与设备视频通道个数相同，每个字节表示一个视频通道的遮挡(黑屏)报警状态，1为有报警，0为无报警
        /// </summary>
        SHELTER_ALARM_EX = 0x2104,
        /// <summary>
        /// Audio detection alarm 
        /// 音频检测报警，数据为16个字节，每个字节表示一个视频通道的音频检测报警状态，1为有报警，0为无报警
        /// </summary>
        SOUND_DETECT_ALARM_EX = 0x2105,
        /// <summary>
        /// HDD full alarm 
        /// 硬盘满报警，数据为1个字节，1为有硬盘满报警，0为无报警
        /// </summary>
        DISKFULL_ALARM_EX = 0x2106,
        /// <summary>
        /// HDD error alarm
        /// 坏硬盘报警，数据为32个字节，每个字节表示一个硬盘的故障报警状态，1为有报警，0为无报警
        /// </summary>
        DISKERROR_ALARM_EX = 0x2107,
        /// <summary>
        /// Encoder alarm
        /// 编码器报警，数据为16个字节，每个字节表示一个通道编码器状态，1为有报警，0为无报警
        /// </summary>
        ENCODER_ALARM_EX = 0x210A,
        /// <summary>
        /// Emergency alarm 
        /// 紧急报警，数据为16个字节，每个字节表示一个通道编码器状态，1为有报警，0为无报警
        /// </summary>
        URGENCY_ALARM_EX = 0x210B,
        /// <summary>
        /// Wireless alarm
        /// 无线报警，数据为16个字节，每个字节表示一个通道编码器状态，1为有报警，0为无报警
        /// </summary>
        WIRELESS_ALARM_EX = 0x210C,
        /// <summary>
        /// New auido detection alarm. Please refer to NET_NEW_SOUND_ALARM_STATE for alarm information structure
        /// 新音频检测报警,报警信息的结构体见NET_NEW_SOUND_ALARM_STATE
        /// </summary>
        NEW_SOUND_DETECT_ALARM_EX = 0x210D,
        /// <summary>
        /// Alarm decoder alarm
        /// 报警解码器报警，报警信息的结构体见 NET_ALARM_DECODER_ALARM
        /// </summary>
        ALARM_DECODER_ALARM_EX = 0x210E,
        /// <summary>
        /// NVD:Decoding capacity
        /// 解码器：解码能力报警，数据为一个字节，0：能正常解码 1：表示超出解码能力
        /// </summary>
        DECODER_DECODE_ABILITY = 0x210F,
        /// <summary>
        /// Fiber encoder alarm
        /// 光纤编码器状态报警，报警信息的结构体见 NET_ALARM_FDDI_ALARM
        /// </summary>
        FDDI_DECODER_ABILITY = 0x2110,
        /// <summary>
        /// Panorama switch alarm
        /// 切换场景报警，数据为16个字节，每个字节表示一个通道编码器状态，1为有报警，0为无报警
        /// </summary>
        PANORAMA_SWITCH_ALARM_EX = 0x2111,
        /// <summary>
        /// Lost focus alarm
        /// 失去焦点报警，数据为16个字节，每个字节表示一个通道编码器状态，1为有报警，0为无报警
        /// </summary>
        LOSTFOCUS_ALARM_EX = 0x2112,
        /// <summary>
        /// oem state
        /// oem报停状态，数据为 1 BYTE
        /// </summary>
        OEMSTATE_EX = 0x2113,
        /// <summary>
        /// DSP alarm
        /// DSP报警，报警信息的结构体见 NET_DSP_ALARM
        /// </summary>
        DSP_ALARM_EX = 0x2114,
        /// <summary>
        /// atm and pos disconnection alarm, 0:disconnection 1:connection
        /// atm和pos机断开报警, 数据为 1 BYTE，0：连接断开 1：连接正常
        /// </summary>
        ATMPOS_BROKEN_EX = 0x2115,
        /// <summary>
        /// Record state changed alarm
        /// 录像状态变化报警，报警信息为 NET_ALARM_RECORDING_CHANGED 数组
        /// </summary>
        RECORD_CHANGED_EX = 0x2116,
        /// <summary>
        /// Device config changed alarm
        /// 配置发生变化报警，数据 无
        /// </summary>
        CONFIG_CHANGED_EX = 0x2117,
        /// <summary>
        /// Device rebooting alarm
        /// 设备重启报警，数据 无
        /// </summary>
        DEVICE_REBOOT_EX = 0x2118,
        /// <summary>
        /// CoilFault alarm
        /// 线圈/车检器故障报警(对应结构体 NET_ALARM_WINGDING_INFO)
        /// </summary>
        WINGDING_ALARM_EX = 0x2119,
        /// <summary>
        /// traffic congestion alarm
        /// 交通阻塞报警(车辆出现异常停止或者排队)(对应结构体 NET_ALARM_TRAF_CONGESTION_INFO)
        /// </summary>
        TRAF_CONGESTION_ALARM_EX = 0x211A,
        /// <summary>
        /// traffic exception alarm
        /// 交通异常报警(交通流量趋于0或异常空闲)(对应结构体 NET_ALARM_TRAF_EXCEPTION_INFO)
        /// </summary>
        TRAF_EXCEPTION_ALARM_EX = 0x211B,
        /// <summary>
        /// FlashFault alarm
        /// 补光设备故障报警(对应结构体 NET_ALARM_EQUIPMENT_FILL_INFO)
        /// </summary>
        EQUIPMENT_FILL_ALARM_EX = 0x211C,
        /// <summary>
        /// alarm arm disarm 
        /// 报警布撤防状态(对应结构体 NET_ALARM_EQUIPMENT_FILL_INFO)
        /// </summary>
        ALARM_ARM_DISARM_STATE = 0x211D,
        /// <summary>
        /// ACC power off alarm
        /// ACC断电报警，数据为 DWORD 0：ACC通电 1：ACC断电
        /// </summary>
        ALARM_ACC_POWEROFF = 0x211E,
        /// <summary>
        /// Alarm of 3G flow exceed(see struct NET_DEV_3GFLOW_EXCEED_STATE_INFO)
        /// 3G流量超出阈值报警(对应结构体 NET_DEV_3GFLOW_EXCEED_STATE_INFO)
        /// </summary>
        ALARM_3GFLOW_EXCEED = 0x211F,
        /// <summary>
        /// Speed limit alarm 
        /// 限速报警(对应结构体 NET_ALARM_SPEED_LIMIT)
        /// </summary>
        ALARM_SPEED_LIMIT = 0x2120,
        /// <summary>
        /// Vehicle information uploading
        /// 车载自定义信息上传 (对应结构体 NET_ALARM_VEHICLE_INFO_UPLOAD)
        /// </summary>
        ALARM_VEHICLE_INFO_UPLOAD = 0x2121,
        /// <summary>
        /// Static detection alarm
        /// 静态检测报警，数据字节数与设备视频通道个数相同，每个字节表示一个视频通道的静态检测报警状态，1为有报警，0为无报警
        /// </summary>
        STATIC_ALARM_EX = 0x2122,
        /// <summary>
        /// ptz location info
        /// 云台定位信息(对应结构体 NET_PTZ_LOCATION_INFO)
        /// </summary>
        PTZ_LOCATION_EX = 0x2123,
        /// <summary>
        /// card record info(struct NET_ALARM_CARD_RECORD_INFO_UPLOAD)
        /// 卡号录像信息上传(对应结构体 NET_ALARM_CARD_RECORD_INFO_UPLOAD)
        /// </summary>
        ALARM_CARD_RECORD_UPLOAD = 0x2124,
        /// <summary>
        /// ATM trade info(struct NET_ALARM_ATM_INFO_UPLOAD)
        /// ATM交易信息上传(对应结构体 ALARM_ATM_INFO_UPLOAD)
        /// </summary>
        ALARM_ATM_INFO_UPLOAD = 0x2125,
        /// <summary>
        /// enclosure alarm(struct NET_A_ALARM_ENCLOSURE_INFO)
        /// 电子围栏报警(对应结构体 NET_A_ALARM_ENCLOSURE_INFO)
        /// </summary>
        ALARM_ENCLOSURE = 0x2126,
        /// <summary>
        /// SIP state alarm(struct NET_ALARM_SIP_STATE)
        /// SIP状态报警(对应结构体 NET_ALARM_SIP_STATE)
        /// </summary>
        ALARM_SIP_STATE = 0x2127,
        /// <summary>
        /// RAID state alarm(struct NET_ALARM_RAID_INFO)
        /// RAID异常报警(对应结构体 NET_ALARM_RAID_INFO)
        /// </summary>
        ALARM_RAID_STATE = 0x2128,
        /// <summary>
        /// crossing speed limit alarm(struct NET_ALARM_SPEED_LIMIT)
        /// 路口限速报警(对应结构体 NET_ALARM_SPEED_LIMIT)
        /// </summary>
        ALARM_CROSSING_SPEED_LIMIT = 0x2129,
        /// <summary>
        /// over loading alarm(struct NET_ALARM_OVER_LOADING)
        /// 超载报警(对应结构体NET_ALARM_OVER_LOADING)
        /// </summary>
        ALARM_OVER_LOADING = 0x212A,
        /// <summary>
        /// hard brake alarm(struct NET_ALARM_HARD_BRAKING)
        /// 急刹车报警(对应机构体NET_ALARM_HARD_BRAKING)
        /// </summary>
        ALARM_HARD_BRAKING = 0x212B,
        /// <summary>
        /// smoke sensor alarm(struct NET_ALARM_SMOKE_SENSOR)
        /// 烟感报警(对应结构体NET_ALARM_SMOKE_SENSOR)
        /// </summary>
        ALARM_SMOKE_SENSOR = 0x212C,
        /// <summary>
        /// traffic light fault alarm(struct NET_ALARM_TRAFFIC_LIGHT_FAULT) 
        /// 交通灯故障报警(对应结构体NET_ALARM_TRAFFIC_LIGHT_FAULT)
        /// </summary>
        ALARM_TRAFFIC_LIGHT_FAULT = 0x212D,
        /// <summary>
        /// traffic flux alarm(struct NET_ALARM_TRAFFIC_FLUX_LANE_INFO)
        /// 交通流量统计报警(对应结构体NET_ALARM_TRAFFIC_FLUX_LANE_INFO)
        /// </summary>
        ALARM_TRAFFIC_FLUX_STAT = 0x212E,
        /// <summary>
        /// camera move alarm(struct NET_ALARM_CAMERA_MOVE_INFO)
        /// 摄像机移位报警事件(对应结构体NET_ALARM_CAMERA_MOVE_INFO)
        /// </summary>
        ALARM_CAMERA_MOVE = 0x212F,
        /// <summary>
        /// detailed motion alarm(struct NET_ALARM_DETAILEDMOTION_CHNL_INFO)
        /// 详细动检报警上报信息(对应结构体NET_ALARM_DETAILEDMOTION_CHNL_INFO)
        /// </summary>
        ALARM_DETAILEDMOTION = 0x2130,
        /// <summary>
        /// storage failure alarm(struct NET_ALARM_STORAGE_FAILURE)
        /// 存储异常报警(对应结构体 NET_ALARM_STORAGE_FAILURE 数组)
        /// </summary>
        ALARM_STORAGE_FAILURE = 0x2131,
        /// <summary>
        /// front IPC disconnect alarm(struct NET_ALARM_FRONTDISCONNET_INFO)
        /// 前端IPC断网报警(对应结构体NET_ALARM_FRONTDISCONNET_INFO)
        /// </summary>
        ALARM_FRONTDISCONNECT = 0x2132,
        /// <summary>
        /// remote external alarm
        /// 远程外部报警(对应结构体 NET_ALARM_REMOTE_ALARM_INFO)
        /// </summary>
        ALARM_ALARM_EX_REMOTE = 0x2133,
        /// <summary>
        /// battery low power alarm(struct NET_A_ALARM_BATTERYLOWPOWER_INFO)
        /// 电池电量低报警(对应结构体 NET_A_ALARM_BATTERYLOWPOWER_INFO)
        /// </summary>
        ALARM_BATTERYLOWPOWER = 0x2134,
        /// <summary>
        ///  alarm(struct NET_ALARM_TEMPERATURE_INFO)
        /// 温度过高报警(对应结构体 NET_ALARM_TEMPERATURE_INFO)
        /// </summary>
        ALARM_TEMPERATURE = 0x2135,
        /// <summary>
        /// tired drive alarm(struct NET_ALARM_TIREDDRIVE_INFO)
        /// 疲劳驾驶报警(对应结构体NET_ALARM_TIREDDRIVE_INFO)
        /// </summary>
        ALARM_TIREDDRIVE = 0x2136,
        /// <summary>
        /// Alarm of record loss (corresponding structure NET_ALARM_LOST_RECORD)
        /// 丢录像事件报警(对应结构体NET_ALARM_LOST_RECORD)
        /// </summary>
        ALARM_LOST_RECORD = 0x2137,
        /// <summary>
        /// Alarm of High CPU Occupancy rate (corresponding structure NET_ALARM_HIGH_CPU) 
        /// CPU占用率过高事件报警(对应结构体 NET_ALARM_HIGH_CPU)
        /// </summary>
        ALARM_HIGH_CPU = 0x2138,
        /// <summary>
        /// Alarm of net package loss (corresponding structure NET_ALARM_LOST_NETPACKET)
        /// 网络发送数据丢包事件报警(对应结构体 NET_ALARM_LOST_NETPACKET)
        /// </summary>
        ALARM_LOST_NETPACKET = 0x2139,
        /// <summary>
        /// Alarm of high memory occupancy rate(corresponding structure NET_ALARM_HIGH_MEMORY)
        /// 内存占用率过高事件报警(对应结构体NET_ALARM_HIGH_MEMORY)
        /// </summary>
        ALARM_HIGH_MEMORY = 0x213A,
        /// <summary>
        /// WEB user have no operation for long time (no extended info)
        /// WEB用户长时间无操作事件（无扩展信息）
        /// </summary>
        LONG_TIME_NO_OPERATION = 0x213B,
        /// <summary>
        /// prohibit snap(corresponding to NET_BL_SNAP_INFO)  
        /// 禁止名单车辆抓拍事件(对应结构体NET_BL_SNAP_INFO)  
        /// </summary>
        BLACKLIST_SNAP = 0x213C,
        /// <summary>
        /// alarm of disk(corresponding to NET_ALARM_DISK_INFO)
        /// 硬盘报警(对应 NET_ALARM_DISK_INFO 数组)
        /// </summary>
        ALARM_DISK = 0x213E,
        /// <summary>
        /// alarm of file systemcorresponding to NET_ALARM_FILE_SYSTEM_INFO)
        /// 文件系统报警(对应NET_ALARM_FILE_SYSTEM_INFO数组)
        /// </summary>
        ALARM_FILE_SYSTEM = 0x213F,
        /// <summary>
        /// alarm of ivs(corresponding to NET_ALARM_IVS_INFO)
        /// 智能报警事件(对应结构体NET_ALARM_IVS_INFO)
        /// </summary>
        ALARM_IVS = 0x2140,
        /// <summary>
        /// goods weight (corresponding to NET_ALARM_GOODS_WEIGHT_UPLOAD_INFO)
        /// 货重信息上报(对应NET_ALARM_GOODS_WEIGHT_UPLOAD_INFO)
        /// </summary>
        ALARM_GOODS_WEIGHT_UPLOAD = 0x2141,
        /// <summary>
        /// alarm of goods weight(corresponding to NET_ALARM_GOODS_WEIGHT_INFO)
        /// 货重信息报警(对应NET_ALARM_GOODS_WEIGHT_INFO)
        /// </summary>
        ALARM_GOODS_WEIGHT = 0x2142,
        /// <summary>
        /// GPS orientation info(corresponding to NET_GPS_STATUS_INFO)
        /// GPS定位信息(对应 NET_GPS_STATUS_INFO)
        /// </summary>
        GPS_STATUS = 0x2143,
        /// <summary>
        /// alarm disk burned full(corresponding to NET_ALARM_DISKBURNED_FULL_INFO)
        /// 硬盘刻录满报警(对应 NET_ALARM_DISKBURNED_FULL_INFO)
        /// </summary>
        ALARM_DISKBURNED_FULL = 0x2144,
        /// <summary>
        /// storage low space(corresponding to NET_ALARM_STORAGE_LOW_SPACE_INFO)
        /// 存储容量不足事件(对应NET_ALARM_STORAGE_LOW_SPACE_INFO)
        /// </summary>
        ALARM_STORAGE_LOW_SPACE = 0x2145,
        /// <summary>
        /// disk flux abnormal(corresponding to NET_ALARM_DISK_FLUX)
        /// 硬盘数据异常事件(对应 NET_ALARM_DISK_FLUX)
        /// </summary>
        ALARM_DISK_FLUX = 0x2160,
        /// <summary>
        /// net flux abnormal(corresponding to NET_ALARM_NET_FLUX)
        /// 网络数据异常事件(对应 NET_ALARM_NET_FLUX)
        /// </summary>
        ALARM_NET_FLUX = 0x2161,
        /// <summary>
        /// fan speed abnormal(corresponding to NET_ALARM_FAN_SPEED)
        /// 风扇转速异常事件(对应 NET_ALARM_FAN_SPEED)
        /// </summary>
        ALARM_FAN_SPEED = 0x2162,
        /// <summary>
        /// storage mistake(corresponding to NET_ALARM_STORAGE_FAILURE_EX)
        /// 存储错误报警(对应结构体NET_ALARM_STORAGE_FAILURE_EX)
        /// </summary>
        ALARM_STORAGE_FAILURE_EX = 0x2163,
        /// <summary>
        /// record abnormal(corresponding to NET_ALARM_RECORD_FAILED_INFO)
        /// 录像异常报警(对应结构体NET_ALARM_RECORD_FAILED_INFO)
        /// </summary>
        ALARM_RECORD_FAILED = 0x2164,
        /// <summary>
        /// storage break down(corresponding to NET_ALARM_STORAGE_BREAK_DOWN_INFO)
        /// 存储崩溃事件(对应结构体 NET_ALARM_STORAGE_BREAK_DOWN_INFO)
        /// </summary>
        ALARM_STORAGE_BREAK_DOWN = 0x2165,
        /// <summary>
        /// NET_ALARM_VIDEO_ININVALID_INFO
        /// 视频输入通道失效事件（例：配置的视频输入通道码流,超出设备处理能力）NET_ALARM_VIDEO_ININVALID_INFO
        /// </summary>
        ALARM_VIDEO_ININVALID = 0x2166,
        /// <summary>
        /// vehicle turnover arm event(struct NET_ALARM_VEHICEL_TURNOVER_EVENT_INFO)
        /// 车辆侧翻报警事件(对应结构体NET_ALARM_VEHICEL_TURNOVER_EVENT_INFO)
        /// </summary>
        ALARM_VEHICLE_TURNOVER = 0x2167,
        /// <summary>
        /// vehicle collision event(struct NET_ALARM_VEHICEL_COLLISION_EVENT_INFO)
        /// 车辆撞车报警事件(对应结构体NET_ALARM_VEHICEL_COLLISION_EVENT_INFO)
        /// </summary>
        ALARM_VEHICLE_COLLISION = 0x2168,
        /// <summary>
        /// vehicle confirm information event(struct NET_ALARM_VEHICEL_CONFIRM_INFO)
        /// 车辆上传信息事件(对应结构体NET_ALARM_VEHICEL_CONFIRM_INFO)
        /// </summary>
        ALARM_VEHICLE_CONFIRM = 0x2169,
        /// <summary>
        /// vehicle camero large angle event(struct NET_ALARM_VEHICEL_LARGE_ANGLE)
        /// 车载摄像头大角度扭转事件(对应结构体NET_ALARM_VEHICEL_LARGE_ANGLE)
        /// </summary>
        ALARM_VEHICLE_LARGE_ANGLE = 0x2170,
        /// <summary>
        /// device talking invite event (struct NET_ALARM_TALKING_INVITE_INFO)
        /// 设备请求对方发起对讲事件(对应结构体NET_ALARM_TALKING_INVITE_INFO)
        /// </summary>
        ALARM_TALKING_INVITE = 0x2171,
        /// <summary>
        /// local alarm event (struct NET_ALARM_ALARM_INFO_EX2)
        /// 本地报警事件(对应结构体 NET_ALARM_ALARM_INFO_EX2)
        /// </summary>
        ALARM_ALARM_EX2 = 0x2175,
        /// <summary>
        /// video timing detecting event(struct NET_ALARM_VIDEO_TIMING)
        /// 视频定时检测事件(对应结构体NET_ALARM_VIDEO_TIMING)
        /// </summary>
        ALARM_VIDEO_TIMING = 0x2176,
        /// <summary>
        /// COM event(struct NET_ALARM_COMM_PORT_EVENT_INFO)
        /// 串口事件(对应结构体NET_ALARM_COMM_PORT_EVENT_INFO)
        /// </summary>
        ALARM_COMM_PORT = 0x2177,
        /// <summary>
        /// audio anomaly event(struct NET_ALARM_AUDIO_ANOMALY)
        /// 音频异常事件(对应结构体NET_ALARM_AUDIO_ANOMALY)
        /// </summary>
        ALARM_AUDIO_ANOMALY = 0x2178,
        /// <summary>
        /// audio mutation event(struct NET_ALARM_AUDIO_MUTATION)
        /// 声强突变事件(对应结构体NET_ALARM_AUDIO_MUTATION)
        /// </summary>
        ALARM_AUDIO_MUTATION = 0x2179,
        /// <summary>
        /// Tyre information report event (struct NET_EVENT_TYRE_INFO)
        /// 轮胎信息上报事件(对应结构体NET_EVENT_TYRE_INFO)
        /// </summary>
        EVENT_TYREINFO = 0x2180,
        /// <summary>
        /// Redundant power supplies abnormal alarm(struct NET_ALARM_POWER_ABNORMAL_INFO)
        /// 冗余电源异常报警(对应结构体NET_ALARM_POWER_ABNORMAL_INFO)
        /// </summary>
        ALARM_POWER_ABNORMAL = 0X2181,
        /// <summary>
        /// On-board equipment active offline events(struct  NET_EVENT_REGISTER_OFF_INFO)
        /// 车载设备主动下线事件(对应结构体 NET_EVENT_REGISTER_OFF_INFO)
        /// </summary>
        EVENT_REGISTER_OFF = 0x2182,
        /// <summary>
        /// No hard disk alarm(struct NET_ALARM_NO_DISK_INFO)
        /// 无硬盘报警(对应结构体NET_ALARM_NO_DISK_INFO)
        /// </summary>
        ALARM_NO_DISK = 0x2183,
        /// <summary>
        /// The fall alarm(struct NET_ALARM_FALLING_INFO)
        /// 跌落事件报警(对应结构体NET_ALARM_FALLING_INFO)
        /// </summary>
        ALARM_FALLING = 0x2184,
        /// <summary>
        /// Protective capsule event(corresponding structure NET_ALARM_PROTECTIVE_CAPSULE_INFO)
        /// 防护舱事件(对应结构体NET_ALARM_PROTECTIVE_CAPSULE_INFO)
        /// </summary>
        ALARM_PROTECTIVE_CAPSULE = 0x2185,
        /// <summary>
        /// Call Non-response alarm(corresponding to NET_ALARM_NO_RESPONSE_INFO)
        /// 呼叫未应答警报(对应结构体NET_ALARM_NO_RESPONSE_INFO)
        /// </summary>
        ALARM_NO_RESPONSE = 0x2186,
        /// <summary>
        /// Config enable to change reported event(corresponding to structure  NET_ALARM_CONFIG_ENABLE_CHANGE_INFO)
        /// 配置使能改变上报事件(对应结构体 NET_ALARM_CONFIG_ENABLE_CHANGE_INFO)
        /// </summary>
        ALARM_CONFIG_ENABLE_CHANGE = 0x2187,
        /// <summary>
        /// Cross warning line event( Corresponding to structure NET_ALARM_EVENT_CROSSLINE_INFO )
        /// 拌线入侵事件( 对应结构体 NET_ALARM_EVENT_CROSSLINE_INFO )
        /// </summary>
        EVENT_CROSSLINE_DETECTION = 0x2188,
        /// <summary>
        /// Warning zone event(Corresponding to structure NET_ALARM_EVENT_CROSSREGION_INFO )
        /// 区域入侵事件( 对应结构体 NET_ALARM_EVENT_CROSSREGION_INFO )
        /// </summary>
        EVENT_CROSSREGION_DETECTION = 0x2189,
        /// <summary>
        /// Abandoned object event(Corresponding to structure NET_ALARM_EVENT_LEFT_INFO )
        /// 物品遗留事件( 对应结构体 NET_ALARM_EVENT_LEFT_INFO )
        /// </summary>
        EVENT_LEFT_DETECTION = 0x218a,
        /// <summary>
        /// Human targer detect event(Corresponding to structure NET_A_ALARM_EVENT_FACE_INFO ) 
        /// 目标检测事件( 对应结构体 NET_A_ALARM_EVENT_FACE_INFO )
        /// </summary>
        EVENT_FACE_DETECTION = 0x218b,
        /// <summary>
        /// IPC alarm,IPC upload local alarm via DVR or NVR(Corresponding to structure NET_ALARM_IPC_INFO)
        /// IPC报警,IPC通过DVR或NVR上报的本地报警(对应结构体 NET_ALARM_IPC_INFO)
        /// </summary>
        ALARM_IPC = 0x218c,
        /// <summary>
        /// Missing object event(Corresponding to structure NET_ALARM_TAKENAWAY_DETECTION_INFO)
        /// 物品搬移事件(对应结构体 NET_ALARM_TAKENAWAY_DETECTION_INFO)
        /// </summary>
        EVENT_TAKENAWAYDETECTION = 0x218d,
        /// <summary>
        /// Video abnormal event(Corresponding to structure NET_ALARM_VIDEOABNORMAL_DETECTION_INFO)
        /// 视频异常事件(对应结构体 NET_ALARM_VIDEOABNORMAL_DETECTION_INFO)
        /// </summary>
        EVENT_VIDEOABNORMALDETECTION = 0x218e,
        /// <summary>
        /// Video motion detect event  (Corresponding to structure NET_ALARM_MOTIONDETECT_INFO)
        /// 视频移动侦测事件(对应结构体 NET_ALARM_MOTIONDETECT_INFO)
        /// </summary>
        EVENT_MOTIONDETECT = 0x218f,
        /// <summary>
        /// PIR alarm (Corresponding to BYTE*, pBuf length dwBufLen)
        /// PIR警报(对应BYTE*, pBuf长度dwBufLen)
        /// </summary>
        ALARM_PIR = 0x2190,
        /// <summary>
        /// Storage hot swap event(Corresponding to structure NET_ALARM_STORAGE_HOT_PLUG_INFO)
        /// 存储热插拔事件(对应结构体 NET_ALARM_STORAGE_HOT_PLUG_INFO)
        /// </summary>
        ALARM_STORAGE_HOT_PLUG = 0x2191,
        /// <summary>
        /// the event of rate of flow(Corresponding to structure NET_ALARM_FLOW_RATE_INFO)
        /// 流量使用情况事件(对应结构体 NET_ALARM_FLOW_RATE_INFO)
        /// </summary>
        ALARM_FLOW_RATE = 0x2192,
        /// <summary>
        /// Move detection event(Corresponding to structure NET_ALARM_MOVE_DETECTION_INFO)
        /// 移动事件(对应NET_ALARM_MOVE_DETECTION_INFO)
        /// </summary>
        ALARM_MOVEDETECTION = 0x2193,
        /// <summary>
        /// WanderDetection event(Corresponding to structure NET_ALARM_WANDERDETECTION_INFO)
        /// 徘徊事件(对应NET_ALARM_WANDERDETECTION_INFO)
        /// </summary>
        ALARM_WANDERDETECTION = 0x2194,
        /// <summary>
        /// cross fence(Corresponding to NET_ALARM_CROSSFENCEDETECTION_INFO)
        /// 翻越围栏事件(对应NET_ALARM_CROSSFENCEDETECTION_INFO)
        /// </summary>
        ALARM_CROSSFENCEDETECTION = 0x2195,
        /// <summary>
        /// parking detection event(Corresponding to NET_ALARM_PARKINGDETECTION_INFO)
        /// 非法停车事件(对应NET_ALARM_PARKINGDETECTION_INFO)
        /// </summary>
        ALARM_PARKINGDETECTION = 0x2196,
        /// <summary>
        /// Rioter detection event(Corresponding to NET_ALARM_RIOTERDETECTION_INFO)
        /// 人员聚集事件(对应NET_ALARM_RIOTERDETECTION_INFO)
        /// </summary>
        ALARM_RIOTERDETECTION = 0x2197,
        /// <summary>
        /// front IPC disconnect alarm(V3)(struct NET_ALARM_FRONTDISCONNET_V3_INFO)
        /// 前端IPC断网报警，三代报警(对应NET_ALARM_FRONTDISCONNET_V3_INFO)
        /// </summary>
        FRONTDISCONNECT_V3 = 0x2198,
        /// <summary>
        /// Keyboard lock event(Corresponding to NET_A_ALARM_KEYPAD_LOCK_INFO)
        /// 键盘锁定事件(对应结构体 NET_A_ALARM_KEYPAD_LOCK_INFO)
        /// </summary>
        ALARM_KEYPAD_LOCK = 0x219E,
        ALARM_ELEVATOR_WORK = 0x21AC,
        /// </summary>	
        /// 上报电梯运行数据报警(对应结构体 NET_ALARM_ELEVATOR_WORK_INFO)
        /// <summary>
        /// A storage group does not exist(struct NET_ALARM_STORAGE_NOT_EXIST_INFO)
        /// 存储组不存在事件(对应结构体 NET_ALARM_STORAGE_NOT_EXIST_INFO)
        /// </summary>
        ALARM_STORAGE_NOT_EXIST = 0x3167,
        /// <summary>
        /// Network fault event(struct NET_ALARM_NETABORT_INFO)
        /// 网络故障事件(对应结构体 NET_ALARM_NETABORT_INFO)
        /// </summary>
        ALARM_NET_ABORT = 0x3169,
        /// <summary>
        /// IP conflict event(struct NET_ALARM_IP_CONFLICT_INFO)
        /// IP冲突事件(对应结构体 NET_ALARM_IP_CONFLICT_INFO)
        /// </summary>
        ALARM_IP_CONFLICT = 0x3170,
        /// <summary>
        /// MAC conflict event(struct NET_ALARM_MAC_CONFLICT_INFO)
        /// MAC冲突事件(对应结构体 NET_ALARM_MAC_CONFLICT_INFO)
        /// </summary>
        ALARM_MAC_CONFLICT = 0x3171,
        /// <summary>
        /// power fault event(struct NET_A_ALARM_POWERFAULT_INFO)
        /// 电源故障事件(对应结构体 NET_A_ALARM_POWERFAULT_INFO)
        /// </summary>
        ALARM_POWERFAULT = 0x3172,
        /// <summary>
        /// Chassis intrusion, tamper alarm events(struct NET_ALARM_CHASSISINTRUDED_INFO)
        /// 机箱入侵(防拆)报警事件(对应结构体 NET_ALARM_CHASSISINTRUDED_INFO)
        /// </summary>
        ALARM_CHASSISINTRUDED = 0x3173,
        /// <summary>
        /// Native extension alarm events(struct NET_ALARM_ALARMEXTENDED_INFO)
        /// 本地扩展报警事件(对应结构体 NET_ALARM_ALARMEXTENDED_INFO)
        /// </summary>
        ALARM_ALARMEXTENDED = 0x3174,
        /// <summary>
        /// Cloth removal state change events(struct NET_ALARM_ARMMODE_CHANGE_INFO)
        /// 布撤防状态变化事件(对应结构体NET_ALARM_ARMMODE_CHANGE_INFO)
        /// </summary>
        ALARM_ARMMODE_CHANGE_EVENT = 0x3175,
        /// <summary>
        /// The bypass state change events(struct NET_ALARM_BYPASSMODE_CHANGE_INFO)
        /// 旁路状态变化事件(对应结构体NET_ALARM_BYPASSMODE_CHANGE_INFO)
        /// </summary>
        ALARM_BYPASSMODE_CHANGE_EVENT = 0x3176,
        /// <summary>
        /// Entrance guard did not close events(struct NET_ALARM_ACCESS_CTL_NOT_CLOSE_INFO)
        /// 门禁未关事件(对应结构体NET_ALARM_ACCESS_CTL_NOT_CLOSE_INFO)
        /// </summary>
        ALARM_ACCESS_CTL_NOT_CLOSE = 0x3177,
        /// <summary>
        /// break-in event(struct NET_ALARM_ACCESS_CTL_BREAK_IN_INFO)
        /// 闯入事件(对应结构体NET_ALARM_ACCESS_CTL_BREAK_IN_INFO)
        /// </summary>
        ALARM_ACCESS_CTL_BREAK_IN = 0x3178,
        /// <summary>
        /// access Again and again event(struct NET_ALARM_ACCESS_CTL_REPEAT_ENTER_INFO)
        /// 反复进入事件(对应结构体NET_ALARM_ACCESS_CTL_REPEAT_ENTER_INFO)
        /// </summary>
        ALARM_ACCESS_CTL_REPEAT_ENTER = 0x3179,
        /// <summary>
        /// Stress CARDS event(struct NET_ALARM_ACCESS_CTL_DURESS_INFO)
        /// 胁迫卡刷卡事件(对应结构体NET_ALARM_ACCESS_CTL_DURESS_INFO)
        /// </summary>
        ALARM_ACCESS_CTL_DURESS = 0x3180,
        /// <summary>
        /// Access event(struct NET_ALARM_ACCESS_CTL_EVENT_INFO)
        /// 门禁事件(对应结构体 NET_ALARM_ACCESS_CTL_EVENT_INFO)
        /// </summary>
        ALARM_ACCESS_CTL_EVENT = 0x3181,
        /// <summary>
        /// Emergency ALARM EX2(struct NET_A_ALARM_URGENCY_ALARM_EX2), Artificially triggered emergency, general processing is linked external communication function requests for help
        /// 紧急报警EX2(对应结构体 NET_A_ALARM_URGENCY_ALARM_EX2), 人为触发的紧急事件, 一般处理是联动外部通讯功能请求帮助
        /// </summary>
        URGENCY_ALARM_EX2 = 0x3182,
        /// <summary>
        /// Alarm input source signal events (as long as there is input will generate the event, whether to play the current mode, unable to block, struct NET_ALARM_INPUT_SOURCE_SIGNAL_INFO)
        /// 报警输入源信号事件(只要有输入就会产生该事件, 不论防区当前的模式,无法屏蔽, 对应 NET_ALARM_INPUT_SOURCE_SIGNAL_INFO )
        /// </summary>
        ALARM_INPUT_SOURCE_SIGNAL = 0x3183,
        /// <summary>
        /// analog alarm(struct NET_ALARM_ANALOGALARM_EVENT_INFO)
        /// 模拟量报警输入通道事件(对应结构体NET_ALARM_ANALOGALARM_EVENT_INFO)
        /// </summary>
        ALARM_ANALOGALARM_EVENT = 0x3184,
        /// <summary>
        /// Access control status event(corresponding structure NET_ALARM_ACCESS_CTL_STATUS_INFO)
        /// 门禁状态事件(对应结构体NET_ALARM_ACCESS_CTL_STATUS_INFO)
        /// </summary>
        ALARM_ACCESS_CTL_STATUS = 0x3185,
        /// <summary>
        /// Access control snapshot event(corresponding to NET_ALARM_ACCESS_SNAP_INFO)
        /// 门禁抓图事件(对应结构体NET_ALARM_ACCESS_SNAP_INFO)
        /// </summary>
        ALARM_ACCESS_SNAP = 0x3186,
        /// <summary>
        /// Cancel alarm(corresponding to structure NET_ALARM_ALARMCLEAR_INFO)
        /// 消警事件(对应结构体NET_ALARM_ALARMCLEAR_INFO)
        /// </summary>
        ALARM_ALARMCLEAR = 0x3187,
        /// <summary>
        /// CID event(corresponding to structure NET_ALARM_CIDEVENT_INFO)
        /// CID事件(对应结构体 NET_ALARM_CIDEVENT_INFO)
        /// </summary>
        ALARM_CIDEVENT = 0x3188,
        /// <summary>
        /// Device hand up evnt(corresponding to structure NET_ALARM_TALKING_HANGUP_INFO)
        /// 设备主动挂断对讲事件(对应结构体NET_ALARM_TALKING_HANGUP_INFO)
        /// </summary>
        ALARM_TALKING_HANGUP = 0x3189,
        /// <summary>
        /// Bank card evnt(corresponding to structure NET_ALARM_BANKCARDINSERT_INFO)
        /// 银行卡插卡事件(对应结构体NET_ALARM_BANKCARDINSERT_INFO)
        /// </summary>
        ALARM_BANKCARDINSERT = 0x318a,
        /// <summary>
        /// Emergency call alarm event(corresponding to structure NET_A_ALARM_RCEMERGENCY_CALL_INFO)
        /// 紧急呼叫报警事件(对应结构体 NET_A_ALARM_RCEMERGENCY_CALL_INFO)
        /// </summary>
        ALARM_RCEMERGENCY_CALL = 0x318b,
        /// <summary>
        /// Multi-people group unlock event(corresponding to  structure NET_ALARM_OPEN_DOOR_GROUP_INFO)
        /// 多人组合开门事件(对应结构体NET_ALARM_OPEN_DOOR_GROUP_INFO)
        /// </summary>
        ALARM_OPENDOORGROUP = 0x318c,
        /// <summary>
        /// get event(corresponding to  structure NET_ALARM_CAPTURE_FINGER_PRINT_INFO)
        /// 获取事件(对应结构体NET_ALARM_CAPTURE_FINGER_PRINT_INFO)
        /// </summary>
        ALARM_FINGER_PRINT = 0x318d,
        /// <summary>
        /// card no. record event(corresponding to  structure  NET_ALARM_CARD_RECORD_INFO)
        /// 卡号录像事件(对应结构体 NET_ALARM_CARD_RECORD_INFO)
        /// </summary>
        ALARM_CARD_RECORD = 0x318e,
        /// <summary>
        /// sub system status change event(corresponding to  structure NET_ALARM_SUBSYSTEM_STATE_CHANGE_INFO)
        /// 子系统状态改变事件(对应结构体NET_ALARM_SUBSYSTEM_STATE_CHANGE_INFO)
        /// </summary>
        ALARM_SUBSYSTEM_STATE_CHANGE = 0x318f,
        /// <summary>
        /// battery scheduled warning event(corresponding to  structure NET_ALARM_BATTERYPOWER_INFO)
        /// 电池电量定时通知事件(对应结构体NET_ALARM_BATTERYPOWER_INFO)
        /// </summary>
        ALARM_BATTERYPOWER_EVENT = 0x3190,
        /// <summary>
        /// bell status event(corresponding to  structure NET_ALARM_BELLSTATUS_INFO)
        /// 警号状态事件(对应结构体NET_ALARM_BELLSTATUS_INFO)
        /// </summary>
        ALARM_BELLSTATUS_EVENT = 0x3191,
        /// <summary>
        /// zone status change event(corresponding to  structure NET_ALARM_DEFENCE_STATUS_CHANGE_INFO) change event, bypass event status have different definitions,The status CLIENT_QueryDevState function NET_DEVSTATE_DEFENCE_STATE command get
        /// 防区状态变化事件(对应结构体ALARM_DEFENCE_STATUS_CHANGE_INFO),和布防撤防变化事件、旁路状态变化事件中的状态定义不同,该状态通过CLIENT_QueryDevState()接口的NET_DEVSTATE_DEFENCE_STATE命令获取
        /// </summary>
        ALARM_DEFENCE_STATE_CHANGE_EVENT = 0x3192,
        /// <summary>
        /// ticket statistics info event(corresponding to  structure  NET_ALARM_TICKET_STATISTIC)
        /// 车票统计信息事件(对应结构体 NET_ALARM_TICKET_STATISTIC)
        /// </summary>
        ALARM_TICKET_STATISTIC = 0x3193,
        /// <summary>
        /// login failed event(corresponding to  structure NET_ALARM_LOGIN_FAILIUR_INFO)
        /// 登陆失败事件(对应结构体NET_ALARM_LOGIN_FAILIUR_INFO)
        /// </summary>
        ALARM_LOGIN_FAILIUR = 0x3194,
        /// <summary>
        /// expansion module offline event(corresponding to  structure  NET_A_ALARM_MODULE_LOST_INFO)
        /// 扩展模块掉线事件(对应结构体 NET_A_ALARM_MODULE_LOST_INFO)
        /// </summary>
        ALARM_MODULE_LOST = 0x3195,
        /// <summary>
        /// PSTN offline event(corresponding to  structure NET_ALARM_PSTN_BREAK_LINE_INFO)
        /// PSTN掉线事件(对应结构体NET_ALARM_PSTN_BREAK_LINE_INFO)
        /// </summary>
        ALARM_PSTN_BREAK_LINE = 0x3196,
        /// <summary>
        /// analog alarm evnet(instant event), specific sensor  trigger(corresponding to  structure NET_ALARM_ANALOGPULSE_INFO)
        /// 模拟量报警事件(瞬时型事件), 特定传感器类型时才触发(对应结构体NET_ALARM_ANALOGPULSE_INFO)
        /// </summary>
        ALARM_ANALOG_PULSE = 0x3197,
        /// <summary>
        /// task confirmation event(corresponding to  structure  NET_ALARM_MISSION_CONFIRM_INFO)
        /// 任务确认事件(对应结构体 任务确认事件(对应结构体 NET_ALARM_MISSION_CONFIRM_INFO))
        /// </summary>
        ALARM_MISSION_CONFIRM = 0x3198,
        /// <summary>
        /// device to platform notice event?t(corresponding to  structure  NET_ALARM_DEVICE_MSG_NOTIFY_INFO)
        /// 设备向平台发通知的事件(对应结构体 NET_ALARM_DEVICE_MSG_NOTIFY_INFO)
        /// </summary>
        ALARM_DEVICE_MSG_NOTIFY = 0x3199,
        /// <summary>
        /// parking timeout event(corresponding to  structure  NET_ALARM_VEHICLE_STANDING_OVER_TIME_INFO)
        /// 停车超时报警(对应结构体 NET_ALARM_VEHICLE_STANDING_OVER_TIME_INFO)
        /// </summary>
        ALARM_VEHICLE_STANDING_OVER_TIME = 0x319A,
        /// <summary>
        /// e-fence event(corresponding to  structure  NET_ALARM_ENCLOSURE_ALARM_INFO)
        /// 电子围栏事件(对应结构体 NET_ALARM_ENCLOSURE_ALARM_INFO)
        /// </summary>
        ALARM_ENCLOSURE_ALARM = 0x319B,
        /// <summary>
        /// station detection event, one in station first report the start event and last on in station report stop event before leave (corresponding to  structure NET_ALARM_GUARD_DETECT_INFO)
        /// 岗亭检测事件,此事件岗亭有第一个人时上报start事件,岗亭最后一个人离开时上报stop 事件(对应结构体NET_ALARM_GUARD_DETECT_INFO)
        /// </summary>
        ALARM_GUARD_DETECT = 0x319C,
        /// <summary>
        /// station info update event￡?report if people in station(corresponding to  structure NET_ALARM_GUARD_UPDATE_INFO)
        /// 岗亭信息更新事件,只要岗亭有人员出入就上报(对应结构体NET_ALARM_GUARD_UPDATE_INFO)  
        /// </summary>
        ALARM_GUARD_INFO_UPDATE = 0x319D,
        /// <summary>
        /// Node activation event (corresponding to structure NET_ALARM_NODE_ACTIVE_INFO)
        /// 节点激活事件(对应结构体NET_ALARM_NODE_ACTIVE_INFO)
        /// </summary>
        ALARM_NODE_ACTIVE = 0x319E,
        /// <summary>
        /// Video static detection event (corresponding to structure NET_ALARM_VIDEO_STATIC_INFO)
        /// 视频静态检测事件(对应结构体 NET_ALARM_VIDEO_STATIC_INFO)
        /// </summary>
        ALARM_VIDEO_STATIC = 0x319F,
        /// <summary>
        /// Active registration device re-login event (corresponding to structure NET_ALARM_REGISTER_REONLINE_INFO)
        /// 主动注册设备重新登陆事件(对应结构体NET_ALARM_REGISTER_REONLINE_INFO)
        /// </summary>
        ALARM_REGISTER_REONLINE = 0x31a0,
        /// <summary>
        /// ISCSI alarm event (corresponding to structure NET_ALARM_ISCSI_STATUS_INFO)
        /// ISCSI告警事件(对应结构体 NET_ALARM_ISCSI_STATUS_INFO)
        /// </summary>
        ALARM_ISCSI_STATUS = 0x31a1,
        /// <summary>
        /// detection collection device alarm event (corresponding to structure NET_ALARM_SCADA_DEV_INFO)
        /// 检测采集设备报警事件(对应结构体 NET_ALARM_SCADA_DEV_INFO)
        /// </summary>
        ALARM_SCADA_DEV_ALARM = 0x31a2,
        /// <summary>
        /// Sub device status(corresponding structure NET_ALARM_AUXILIARY_DEV_STATE)
        /// 辅助设备状态(对应结构体NET_ALARM_AUXILIARY_DEV_STATE)
        /// </summary>
        ALARM_AUXILIARY_DEV_STATE = 0x31a3,
        /// <summary>
        /// Parking swipe card event(corresponding structure NET_ALARM_PARKING_CARD)
        /// 停车刷卡事件(对应结构体NET_ALARM_PARKING_CARD)
        /// </summary>
        ALARM_PARKING_CARD = 0x31a4,
        /// <summary>
        /// Alarm transmit event(corresponding structure NET_ALARM_PROFILE_ALARM_TRANSMIT_INFO)
        /// 报警传输事件(对应结构体NET_ALARM_PROFILE_ALARM_TRANSMIT_INFO)
        /// </summary>
        ALARM_PROFILE_ALARM_TRANSMIT = 0x31a5,
        /// <summary>
        /// Vehicle acc event(corresponding structure NET_ALARM_VEHICLE_ACC_INFO)
        /// 车辆ACC报警事件(对应结构体 NET_ALARM_VEHICLE_ACC_INFO)
        /// </summary>
        ALARM_VEHICLE_ACC = 0x31a6,
        /// <summary>
        /// suspiciouscar event(corresponding structure NET_ALARM_TRAFFIC_SUSPICIOUSCAR_INFO)
        /// 嫌疑车辆上报事件(对应结构体 NET_ALARM_TRAFFIC_SUSPICIOUSCAR_INFO)
        /// </summary>
        ALARM_TRAFFIC_SUSPICIOUSCAR = 0x31a7,
        /// <summary>
        /// the event of latch state (corresponding structure  NET_ALARM_ACCESS_LOCK_STATUS_INFO)
        /// 门锁状态事件(对应结构体 NET_ALARM_ACCESS_LOCK_STATUS_INFO)
        /// </summary>
        ALARM_ACCESS_LOCK_STATUS = 0x31a8,
        /// <summary>
        /// Finace scheme event(corresponding structure NET_ALARM_FINACE_SCHEME_INFO)
        /// 理财经办事件(对应结构体 NET_ALARM_FINACE_SCHEME_INFO)
        /// </summary>
        ALARM_FINACE_SCHEME = 0x31a9,
        /// <summary>
        /// Thermal  abnormal event alarm(Corresponding to structure NET_ALARM_HEATIMG_TEMPER_INFO)
        /// 热成像测温点温度异常报警事件(对应结构体 NET_ALARM_HEATIMG_TEMPER_INFO)
        /// </summary>
        ALARM_HEATIMG_TEMPER = 0x31aa,
        /// <summary>
        /// Device cancel bidirectional talk query event(Corresponding to structure NET_ALARM_TALKING_IGNORE_INVITE_INFO)
        /// 设备取消对讲请求事件(对应结构体NET_ALARM_TALKING_IGNORE_INVITE_INFO)
        /// </summary>
        ALARM_TALKING_IGNORE_INVITE = 0x31ab,
        /// <summary>
        /// Vehicle Abrupt-turn event(Corresponding to structure NET_A_ALARM_BUS_SHARP_TURN_INFO )
        /// 车辆急转事件(对应结构体 NET_A_ALARM_BUS_SHARP_TURN_INFO )
        /// </summary>
        ALARM_BUS_SHARP_TURN = 0x31ac,
        /// <summary>
        /// vehicle abrupt stop event(Corresponding to structure NET_ALARM_BUS_SCRAM_INFO)
        /// 车辆急停事件(对应结构体NET_ALARM_BUS_SCRAM_INFO)
        /// </summary>
        ALARM_BUS_SCRAM = 0x31ad,
        /// <summary>
        /// Vehicle abrupt speed up event(Corresponding to structure NET_ALARM_BUS_SHARP_ACCELERATE_INFO)
        /// 车辆急加速事件(对应结构体NET_ALARM_BUS_SHARP_ACCELERATE_INFO)
        /// </summary>
        ALARM_BUS_SHARP_ACCELERATE = 0x31ae,
        /// <summary>
        /// Vehicle abrupt slow down event (Corresponding to structure NET_ALARM_BUS_SHARP_DECELERATE_INFO)
        /// 车辆急减速事件(对应结构体NET_ALARM_BUS_SHARP_DECELERATE_INFO)
        /// </summary>
        ALARM_BUS_SHARP_DECELERATE = 0x31af,
        /// <summary>
        /// A&C data operation event (Corresponding to structure NET_ALARM_ACCESS_CARD_OPERATE_INFO)
        /// 门禁卡数据操作事件(对应结构体NET_ALARM_ACCESS_CARD_OPERATE_INFO)
        /// </summary>
        ALARM_ACCESS_CARD_OPERATE = 0x31b0,
        /// <summary>
        /// Policeman check in event(Corresponding to structure NET_ALARM_POLICE_CHECK_INFO)
        /// 警员签到事件(对应结构体NET_ALARM_POLICE_CHECK_INFO)
        /// </summary>
        ALARM_POLICE_CHECK = 0x31b1,
        /// <summary>
        /// Network alarm event(Corresponding to structure NET_ALARM_NET_INFO)
        /// 网络报警事件(对应结构体 NET_ALARM_NET_INFO)
        /// </summary>
        ALARM_NET = 0x31b2,
        /// <summary>
        /// New file event(Corresponding to structure NET_ALARM_NEW_FILE_INFO)
        /// 新文件事件(对应结构体NET_ALARM_NEW_FILE_INFO)
        /// </summary>
        ALARM_NEW_FILE = 0x31b3,
        /// <summary>
        /// Thermal fire position (Corresponding to structure NET_ALARM_FIREWARNING_INFO)
        /// 热成像着火点事件 (对应结构体 NET_ALARM_FIREWARNING_INFO)
        /// </summary>
        ALARM_FIREWARNING = 0x31b5,
        /// <summary>
        /// Record loss event: the HDD is OK, delete results from misoperation.  (Corresponding to structure NET_ALARM_RECORD_LOSS_INFO)
        /// 录像丢失事件,指硬盘完好的情况下,发生误删等原因引起(对应结构体NET_ALARM_RECORD_LOSS_INFO)
        /// </summary>
        ALARM_RECORD_LOSS = 0x31b6,
        /// <summary>
        /// Frame loss event，it results from poor network environment or insufficient encode capability (Corresponding to structure NET_ALARM_VIDEO_FRAME_LOSS_INFO)
        /// 视频丢帧事件,比如网络不好或编码能力不足引起的丢帧(对应结构体NET_ALARM_VIDEO_FRAME_LOSS_INFO)
        /// </summary>
        ALARM_VIDEO_FRAME_LOSS = 0x31b7,
        /// <summary>
        /// Abnormal record results from HDD volume(Corresponding to structure NET_ALARM_RECORD_VOLUME_FAILURE_INFO)
        /// 由保存录像的磁盘卷发生异常,引起的录像异常(对应结构体 NET_ALARM_RECORD_VOLUME_FAILURE_INFO)
        /// </summary>
        ALARM_RECORD_VOLUME_FAILURE = 0x31b8,
        /// <summary>
        /// Image upload completion event(Corresponding to structure NET_EVENT_SNAP_UPLOAD_INFO)
        /// 图上传完成事件(对应结构体NET_EVENT_SNAP_UPLOAD_INFO)
        /// </summary>
        EVENT_SNAP_UPLOAD = 0X31b9,
        /// <summary>
        /// Audio detect event(Corresponding to structure NET_ALARM_AUDIO_DETECT )
        /// 音频检测事件(对应结构体 NET_ALARM_AUDIO_DETECT )
        /// </summary>
        ALARM_AUDIO_DETECT = 0x31ba,
        /// <summary>
        /// Failure data amount during the image upload process （Corresponding to structure NET_ALARM_UPLOADPIC_FAILCOUNT_INFO）
        /// 上传中盟失败数据个数（对应结构体NET_ALARM_UPLOADPIC_FAILCOUNT_INFO）
        /// </summary>
        ALARM_UPLOADPIC_FAILCOUNT = 0x31bb,
        /// <summary>
        /// POS management event(Corresponding to NET_ALARM_POS_MANAGE_INFO )
        /// POS管理事件事件(对应结构体 NET_ALARM_POS_MANAGE_INFO )
        /// </summary>
        ALARM_POS_MANAGE = 0x31bc,
        /// <summary>
        /// remote control status(Corresponding to NET_ALARM_REMOTE_CTRL_STATUS )
        /// 无线遥控器状态事件(对应结构体 NET_ALARM_REMOTE_CTRL_STATUS )
        /// </summary>
        ALARM_REMOTE_CTRL_STATUS = 0x31bd,
        /// <summary>
        /// desuetude, passenger card check(Corresponding to structure NET_A_ALARM_PASSENGER_CARD_CHECK )
        /// 废弃, 乘客刷卡事件(对应结构体 NET_A_ALARM_PASSENGER_CARD_CHECK )
        /// </summary>
        ALARM_PASSENGER_CARD_CHECK = 0x31be,
        /// <summary>
        /// Sound event(Corresponding to NET_ALARM_SOUND )
        /// 声音事件(对应结构体 NET_ALARM_SOUND )
        /// </summary>
        ALARM_SOUND = 0x31bf,
        /// <summary>
        /// Lock break event(Corresponding to NET_ALARM_LOCK_BREAK_INFO )
        /// 撬锁事件(对应结构体 NET_ALARM_LOCK_BREAK_INFO )
        /// </summary>
        ALARM_LOCK_BREAK = 0x31c0,
        /// <summary>
        /// Human Inside event((Corresponding to structure NET_ALARM_HUMAN_INSIDE_INFO)
        /// 舱内有人事件(对应结构体NET_ALARM_HUMAN_INSIDE_INFO)
        /// </summary>
        ALARM_HUMAN_INSIDE = 0x31c1,
        /// <summary>
        /// Human tumble Inside(Corresponding to structure NET_ALARM_HUMAN_TUMBLE_INSIDE_INFO)
        /// 舱内有人摔倒事件(对应结构体NET_ALARM_HUMAN_TUMBLE_INSIDE_INFO)
        /// </summary>
        ALARM_HUMAN_TUMBLE_INSIDE = 0x31c2,
        /// <summary>
        /// Lock entry trigger event(Corresponding to structure NET_ALARM_DISABLE_LOCKIN_INFO)
        /// 闭锁进门按钮触发事件(对应NET_ALARM_DISABLE_LOCKIN_INFO)
        /// </summary>
        ALARM_DISABLE_LOCKIN = 0x31c3,
        /// <summary>
        /// Lock go out trigger(Corresponding to structure NET_ALARM_DISABLE_LOCKOUT_INFO)
        /// 闭锁出门按钮触发事件(对应结构体NET_ALARM_DISABLE_LOCKOUT_INFO)
        /// </summary>
        ALARM_DISABLE_LOCKOUT = 0x31c4,
        /// <summary>
        /// break rules data upload failed (Corresponding to NET_ALARM_UPLOAD_PIC_FAILED_INFO )
        /// 违章数据上传失败事件(对应结构体 NET_ALARM_UPLOAD_PIC_FAILED_INFO )
        /// </summary>
        ALARM_UPLOAD_PIC_FAILED = 0x31c5,
        /// <summary>
        /// flow meter info event (NET_ALARM_FLOW_METER_INFO)
        /// 水流量统计信息上报事件(对应结构体 NET_ALARM_FLOW_METER_INFO)
        /// </summary>
        ALARM_FLOW_METER = 0x31c6,
        /// <summary>
        /// search around wifi device(Corresponding to NET_ALARM_WIFI_SEARCH_INFO)
        /// 获取到周围环境中WIFI设备上报事件(对应结构体 NET_ALARM_WIFI_SEARCH_INFO)
        /// </summary>
        ALARM_WIFI_SEARCH = 0x31c7,
        /// <summary>
        /// lowpower of wirelessdevice(NET_A_ALARM_WIRELESSDEV_LOWPOWER_INFO)
        /// 获取无线设备低电量上报事件(对应结构体 NET_A_ALARM_WIRELESSDEV_LOWPOWER_INFO)
        /// </summary>
        ALARM_WIRELESSDEV_LOWPOWER = 0X31C8,
        /// <summary>
        /// Ptz Diagnoses event(Corresponding to NET_ALARM_PTZ_DIAGNOSES_INFO)
        /// 云台诊断事件(对应结构体NET_ALARM_PTZ_DIAGNOSES_INFO)
        /// </summary>
        ALARM_PTZ_DIAGNOSES = 0x31c9,
        /// <summary>
        /// flash light fault event (Corresponding to NET_ALARM_FLASH_LIGHT_FAULT_INFO)
        /// 爆闪灯(闪光灯)报警事件 (对应结构体 NET_ALARM_FLASH_LIGHT_FAULT_INFO)
        /// </summary>
        ALARM_FLASH_LIGHT_FAULT = 0x31ca,
        /// <summary>
        /// stroboscopic light fault event (Corresponding to NET_ALARM_STROBOSCOPIC_LIGTHT_FAULT_INFO)
        /// 频闪灯报警事件 (对应结构体 NET_ALARM_STROBOSCOPIC_LIGTHT_FAULT_INFO)
        /// </summary>
        ALARM_STROBOSCOPIC_LIGTHT_FAULT = 0x31cb,
        /// <summary>
        /// NumberStat event (Corresponding to NET_ALARM_HUMAN_NUMBER_STATISTIC_INFO)
        /// 人数量/客流量统计事件 (对应结构体 NET_ALARM_HUMAN_NUMBER_STATISTIC_INFO)
        /// </summary>
        ALARM_HUMAM_NUMBER_STATISTIC = 0x31cc,
        /// <summary>
        /// Video unfocus (Corresponding NET_ALARM_VIDEOUNFOCUS_INFO)
        /// 视频虚焦报警(对应结构体 NET_ALARM_VIDEOUNFOCUS_INFO)
        /// </summary>
        ALARM_VIDEOUNFOCUS = 0x31ce,
        /// <summary>
        /// Video recond buffer drop frame event(Corresponding to NET_ALARM_BUF_DROP_FRAME_INFO)
        /// 录像缓冲区丢帧事件(对应结构体 NET_ALARM_BUF_DROP_FRAME_INFO)
        /// </summary>
        ALARM_BUF_DROP_FRAME = 0x31cd,
        /// <summary>
        /// Abnormal event when ZYH broad'version and FYH broad'version different  (Corresponding to NET_ALARM_DOUBLE_DEV_VERSION_ABNORMAL_INFO)
        /// 双控设备主板与备板之间版本信息不一致异常事件 (对应结构体 NET_ALARM_DOUBLE_DEV_VERSION_ABNORMAL_INFO)
        /// </summary>
        ALARM_DOUBLE_DEV_VERSION_ABNORMAL = 0x31cf,
        /// <summary>
        /// Switch with ZYH and FYH(Corresponding to NET_ALARM_DCSSWITCH_INFO)
        /// 主备切换事件 集群切换报警 (对应结构体 NET_ALARM_DCSSWITCH_INFO)
        /// </summary>
        ALARM_DCSSWITCH = 0x31d0,
        /// <summary>
        /// Radar connect state(Corresponding to NET_ALARM_RADAR_CONNECT_STATE_INFO)
        /// 雷达状态事件(对应结构体 NET_ALARM_RADAR_CONNECT_STATE_INFO)
        /// </summary>
        ALARM_RADAR_CONNECT_STATE = 0x31d1,
        /// <summary>
        /// Defence arming status change(Corresponding to NET_ALARM_DEFENCE_ARMMODECHANGE_INFO)
        /// 防区布撤防状态改变事件(对应结构体 NET_ALARM_DEFENCE_ARMMODECHANGE_INFO)
        /// </summary>
        ALARM_DEFENCE_ARMMODE_CHANGE = 0x31d2,
        /// <summary>
        /// Subsystem arming status change(Corresponding to NET_ALARM_SUBSYSTEM_ARMMODECHANGE_INFO)
        /// 子系统布撤防状态改变事件(对应结构体 NET_ALARM_SUBSYSTEM_ARMMODECHANGE_INFO)
        /// </summary>
        ALARM_SUBSYSTEM_ARMMODE_CHANGE = 0x31d3,
        /// <summary>
        /// infrared detection information event (Corresponding NET_ALARM_RFID_INFO)
        /// 红外线检测信息事件(对应结构体 NET_ALARM_RFID_INFO)
        /// </summary>
        ALARM_RFID_INFO = 0x31d4,
        /// <summary>
        /// smoke detection(Corresponding NET_ALARM_SMOKE_DETECTION_INFO)
        /// 烟雾报警事件(对应结构体 NET_ALARM_SMOKE_DETECTION_INFO)
        /// </summary>
        ALARM_SMOKE_DETECTION = 0x31d5,
        /// <summary>
        /// Difference Between Rule (Corresponding NET_ALARM_BETWEENRULE_DIFFTEMPER_INFO)
        /// 热成像规则间温差异常报警(对应结构体 NET_ALARM_BETWEENRULE_DIFFTEMPER_INFO)
        /// </summary>
        ALARM_BETWEENRULE_TEMP_DIFF = 0x31d6,
        /// <summary>
        /// Traffic picture analyse(Corresponding NET_ALARM_PIC_ANALYSE_INFO)
        /// 图片二次分析事件(对应 NET_ALARM_PIC_ANALYSE_INFO)
        /// </summary>
        ALARM_TRAFFIC_PIC_ANALYSE = 0x31d7,
        /// <summary>
        /// Hotspot warning(Corresponding NET_ALARM_HOTSPOT_WARNING_INFO)
        /// 热成像热点异常报警(对应结构体 NET_ALARM_HOTSPOT_WARNING_INFO)
        /// </summary>
        ALARM_HOTSPOT_WARNING = 0x31d8,
        /// <summary>
        /// coldspot warning(Corresponding NET_ALARM_COLDSPOT_WARNING_INFO)
        /// 热成像冷点异常报警(对应结构体 NET_ALARM_COLDSPOT_WARNING_INFO)
        /// </summary>
        ALARM_COLDSPOT_WARNING = 0x31d9,
        /// <summary>
        /// firewarning (Corresponding NET_ALARM_FIREWARNING_INFO_DETAIL)
        /// 热成像火情事件信息上报(对应结构体 NET_ALARM_FIREWARNING_INFO_DETAIL)
        /// </summary>
        ALARM_FIREWARNING_INFO = 0x31da,
        /// <summary>
        /// face fashao(Corresponding NET_ALARM_FACE_OVERHEATING_INFO)
        /// 热成像人体FS预警(对应结构体 NET_ALARM_FACE_OVERHEATING_INFO)
        /// </summary>
        ALARM_FACE_OVERHEATING = 0x31db,
        /// <summary>
        /// Sensor abnormal(Corresponding NET_A_ALARM_SENSOR_ABNORMAL_INFO)
        /// 探测器异常报警(对应结构体 NET_A_ALARM_SENSOR_ABNORMAL_INFO)
        /// </summary>
        ALARM_SENSOR_ABNORMAL = 0X31dc,
        /// <summary>
        /// patient detection(Corresponding NET_ALARM_PATIENTDETECTION_INFO)
        /// 监控病人活动状态报警事件(对应结构体 NET_ALARM_PATIENTDETECTION_INFO)
        /// </summary>
        ALARM_PATIENTDETECTION = 0x31de,
        /// <summary>
        /// radar high speed detection(Corresponding to NET_ALARM_RADAR_HIGH_SPEED_INFO)
        /// 雷达监测超速报警事件 智能楼宇专用 (对应结构体 NET_ALARM_RADAR_HIGH_SPEED_INFO)
        /// </summary>
        ALARM_RADAR_HIGH_SPEED = 0x31df,
        /// <summary>
        /// Polling Alarm (Corresponding to NET_ALARM_POLLING_ALARM_INFO)
        /// 设备巡检报警事件 智能楼宇专用 (对应结构体 NET_ALARM_POLLING_ALARM_INFO)
        /// </summary>
        ALARM_POLLING_ALARM = 0x31e0,
        /// <summary>
        /// the alarm event for ITC_HWS000 (Corresponding NET_ALARM_ITC_HWS000)
        /// 虚点测速仪设备事件与报警(对应结构体 NET_ALARM_ITC_HWS000)
        /// </summary>
        ALARM_ITC_HWS000 = 0x31e1,
        /// <summary>
        /// Traffic Strobe State(Corresponding to NET_A_ALARM_TRAFFICSTROBESTATE_INFO)
        /// 道闸栏状态事件(对应结构体 NET_A_ALARM_TRAFFICSTROBESTATE_INFO)
        /// </summary>
        ALARM_TRAFFICSTROBESTATE = 0x31e2,
        /// <summary>
        /// telephone number check event(Corresponding to NET_ALARM_TELEPHONE_CHECK_INFO)
        /// 手机号码上报事件(对应结构体 NET_ALARM_TELEPHONE_CHECK_INFO)
        /// </summary>
        ALARM_TELEPHONE_CHECK = 0x31e3,
        /// <summary>
        /// Paste Detection(Corresponding to NET_ALARM_PASTE_DETECTION_INFO )
        /// 贴条事件(对应结构体 NET_ALARM_PASTE_DETECTION_INFO )
        /// </summary>
        ALARM_PASTE_DETECTION = 0x31e4,
        /// <summary>
        /// the alarm event for Shooting (Corresponding to NET_ALARM_PIC_SHOOTINGSCORERECOGNITION_INFO)
        /// 打靶像机事件(对应结构体 NET_ALARM_PIC_SHOOTINGSCORERECOGNITION_INFO)
        /// </summary>
        ALARM_SHOOTINGSCORERECOGNITION = 0x31e5,
        /// <summary>
        /// the alarm event for swipe overtime(Corresponding to NET_ALARM_SWIPE_OVERTIME_INFO)
        /// 超时未刷卡事件(对应结构体 NET_ALARM_SWIPE_OVERTIME_INFO)
        /// </summary>
        ALARM_SWIPEOVERTIME = 0x31e6,
        /// <summary>
        /// the alarm event for driving without card(Corresponding to NET_ALARM_DRIVING_WITHOUTCARD_INFO)
        /// 无卡驾驶事件(对应结构体 NET_ALARM_DRIVING_WITHOUTCARD_INFO)
        /// </summary>
        ALARM_DRIVING_WITHOUTCARD = 0x31e7,
        /// <summary>
        /// red light event (Corresponding to NET_ALARM_TRAFFIC_PEDESTRIAN_RUN_REDLIGHT_DETECTION_INFO)
        /// 闯红灯事件(对应结构体 NET_ALARM_TRAFFIC_PEDESTRIAN_RUN_REDLIGHT_DETECTION_INFO ) 
        /// </summary>
        ALARM_TRAFFIC_PEDESTRIAN_RUN_REDLIGHT_DETECTION = 0x31e8,
        /// <summary>
        /// the alarm event for fight detection(Corresponding to NET_ALARM_FIGHTDETECTION)
        /// 斗殴事件(对应结构体 NET_ALARM_FIGHTDETECTION)
        /// </summary>
        ALARM_FIGHTDETECTION = 0x31e9,
        ALARM_OIL_4G_OVERFLOW = 0x31ea,      //the alarm event for fushan oil 4G over flow threshold(Corresponding to NET_ALARM_OIL_4G_OVERFLOW_INFO)
        ALARM_ACCESSIDENTIFY = 0x31eb,      //VTO access identify(Corresponding to NET_ALARM_ACCESSIDENTIFY_INFO)
        ALARM_POWER_SWITCHER_ALARM = 0x31ec,      // the alarm event for Abnormal power switcher (Corresponding to DEV_ALRAM_POWERSWITCHER_INFO)
        ALARM_SCENNE_CHANGE_ALARM = 0x31ed,      // the alarm event for scene change (Corresponding to NET_ALARM_PIC_SCENECHANGE_INFO)
        ALARM_WIFI_VIRTUALINFO_SEARCH = 0x31ef,      // the alarm event for WIFI virtual information(Corresponding to ALARM_WIFI_VIRTUALINFO_SEARCH_INFO)
        ALARM_TRAFFIC_OVERSPEED = 0x31f0,      // traffic overspeed event(Corresponding to event  ALARM_TRAFFIC_OVERSPEED_INFO)
        ALARM_TRAFFIC_UNDERSPEED = 0x31f1,      // traffic underspeed event(Corresponding to event  ALARM_TRAFFIC_NDERSPEED_INFO)
        ALARM_TRAFFIC_PEDESTRAIN = 0x31f2,      // traffic pedestrain event(Corresponding to event  ALARM_TRAFFIC_PEDESTRAIN_INFO)
        ALARM_TRAFFIC_JAM = 0x31f3,      // traffic jam event(Corresponding to event  ALARM_TRAFFIC_JAM_INFO)
        ALARM_TRAFFIC_PARKING = 0x31f4,      // traffic parking event(Corresponding to event  ALARM_TRAFFIC_PARKING_INFO)
        ALARM_TRAFFIC_THROW = 0x31f5,      // traffic throw event(Corresponding to event  ALARM_TRAFFIC_THROW_INFO)
        ALARM_TRAFFIC_RETROGRADE = 0x31f6,      // traffic retrograde event(Corresponding to event  ALARM_TRAFFIC_RETROGRADE_INFO)
        ALARM_VTSTATE_UPDATE = 0x31f7,      // VTS state update(Corresponding to ALARM_VTSTATE_UPDATE_INFO)
        ALARM_CALL_NO_ANSWERED = 0x31f8,      // the alarm event for call no answer, under directly connected(Corresponding to NET_ALARM_CALL_NO_ANSWERED_INFO)
        ALARM_USER_LOCK_EVENT = 0x31f9,      // User Lock Alarm Event
        ALARM_RETROGRADE_DETECTION = 0x31fa,      // retrogade dection event(Corresponding to ALARM_RETROGRADE_DETECTION_INFO)
        ALARM_AIO_APP_CONFIG_EVENT = 0x31fb,      // AIO App config event(Corresponding to NET_ALARM_AIO_APP_CONFIG_EVENT)
        ALARM_RAID_STATE_EX = 0x31fc,      // RAID state alarm(Corresponding to struct NET_ALARM_RAID_INFO_EX)
        ALARM_STORAGE_IPC_FAILURE = 0x31fd,      // IPC storage failure alarm(IPC SD Card Abnormal Alarm)(Corresponding to struct ALARM_STORAGE_IPC_FAILURE_INFO)
        ALARM_DEVICE_STAY = 0x31fe,      // Still amarm, if the device coordinates are not changed in the specified time, the still alarm information is triggered(Corresponding to struct ALARM_DEVICE_STAY_INFO)    
        ALARM_SUB_WAY_DOOR_STATE = 0x31ff,      // the door state of subway(Corresponding to ALARM_SUB_WAY_DOOR_STATE_INFO)
        ALARM_SUB_WAY_PECE_SWITCH = 0x3200,      // the PECE switch state of subway(Corresponding to ALARM_SUB_WAY_PECE_SWITCH_INFO)
        ALARM_SUB_WAY_FIRE_ALARM = 0x3201,      // the fire alarm of subway(Corresponding to ALARM_SUB_WAY_FIRE_ALARM_INFO)
        ALARM_SUB_WAY_EMER_HANDLE = 0x3202,      // the emer handle state(Corresponding to ALARM_SUB_WAY_EMER_HANDLE_INFO)
        ALARM_SUB_WAY_CAB_COVER = 0x3203,      // the cab cover state(Corresponding to ALARM_SUB_WAY_CAB_COVER_INFO)
        ALARM_SUB_WAY_DERA_OBST = 0x3204,      // the dera or obst of subway(Corresponding to ALARM_SUB_WAY_DERA_OBST_INFO)
        ALARM_SUB_WAY_PECU_CALL = 0x3205,      // the PECU call state(Corresponding to ALARM_SUB_WAY_PECU_CALL_INFO)
        ALARM_BOX = 0x3206,      // the Alarm Box(Corresponding to ALARM_BOX_INFO)
        ALARM_DOOR_CLOSEDMANUALLY = 0x3207,      // door closed manually(Corresponding to  ALARM_DOOR_CLOSEDMANUALLY_INFO)
        ALARM_DOOR_NOTCLOSED_LONGTIME = 0x3208,      // door not closed long time(Corresponding to ALARM_DOOR_NOTCLOSED_LONGTIME_INFO)
        ALARM_UNDER_VOLTAGE = 0x3209,      // the under voltage alarm ( Corresponding to ALARM_UNDER_VOLTAGE_INFO )
        ALARM_OVER_VOLTAGE = 0x320a,      // the over voltage alarm  ( Corresponding to ALARM_OVER_VOLTAGE_INFO )
        ALARM_CUT_LINE = 0x320b,      // the cut line alarm(Corresponding to ALARM_CUT_LINE_INFO)
        ALARM_VIDEOMOTION_EVENT = 0x320c,      // video motion event(Corresponding to ALARM_VIDEOMOTION_EVENT_INFO)
        ALARM_WIDE_VIEW_REGION_EVENT = 0x320d,      // WideViewRegions event(Corresponding to ALARM_WIDE_VIEW_REGION_EVENT_INFO)
        ALARM_FIBRE_OPTIC_ABORT = 0x320e,      // the fibre optic abort alarm(Corresponding to ALARM_FIBRE_OPTIC_ABORT)
        ALARM_TAIL_DETECTION = 0x320f,      // tail detection(Corresponding ALARM_TAIL_DETECTION_INFO)
        ALARM_BITRATES_OVERLIMIT = 0x3210,      // alarm when camera bitrate is over channel decoding specification(Corresponding to ALARM_BITRATES_OVERLIMIT_INFO)
        ALARM_RECORD_CHANGED_EX = 0x3211,      // Record state changed alarm(Corresponding to NET_ALARM_RECORD_CHANGED_INFO_EX)
        ALARM_HIGH_DECIBEL = 0x3212,      // High decibel alarm(Corresponding to NET_ALARM_HIGH_DECIBEL_INFO)
        ALARM_SHAKE_DETECTION = 0x3213,      // Shake detection alarm(Corresponding to ALARM_SHAKE_DETECTION_INFO)
        ALARM_TUMBLE_DETECTION = 0x3214,      // tumble detection alarm(Corresponding to ALARM_TUMBLE_DETECTION_INFO)
        ALARM_ACCESS_CTL_MALICIOUS = 0x3215,      // Open door with malice(Corresponding to ALARM_ACCESS_CTL_MALICIOUS)
        ALARM_ACCESS_CTL_USERID_REGISTER = 0x3216,      // UserID Register(Corresponding to ALARM_ACCESS_CTL_USERID_REGISTER)
        ALARM_ACCESS_CTL_REVERSELOCK = 0x3217,      // ReverseLock alarm(Corresponding to ALARM_ACCESS_CTL_REVERSELOCK)
        ALARM_ACCESS_CTL_USERID_DELETE = 0x3218,      // UserID delete(Corresponding to ALARM_ACCESS_CTL_USERID_DELETE)
        ALARM_ACCESS_DOOR_BELL = 0x3219,      // Door bell (Corresponding to ALARM_ACCESS_DOOR_BELL_INFO)
        ALARM_ACCESS_FACTORY_RESET = 0x321a,      // Wireless Dev Facroty Reset (Corresponding to ALARM_ACCESS_FACTORY_RESET_INFO)
        ALARM_POLICE_RECORD_PROGRESS = 0x321b,        // MPT record file transfer progress(Corresponding to ALARM_POLICE_RECORD_PROGRESS_INFO)
        ALARM_POLICE_PLUGIN = 0x321c,        // MPT plugin in or out event(Corresponding to ALARM_POLICE_PLUGIN_INFO)
        ALARM_GPS_NOT_ALIGNED = 0x321d,        // GPS not aligned alarm (Corresponding to NET_ALARM_GPS_NOT_ALIGNED_INFO)
        ALARM_WIRELESS_NOT_CONNECTED = 0x321e,        // WireLess(include wifi, 3G/4G) not connected alarm (Corresponding to ALARM_WIRELESS_NOT_CONNECTED_INFO)
        ALARM_CABINET = 0x321f,        // Cloud Cabinet event(Corresponding to ALARM_CABINET_INFO)
        SWITCH_SCREEN = 0x3220,        // Switch screen event.
        ALARM_NEAR_DISTANCE_DETECTION = 0x3221,        // alarm of near distance detection (Corresponding to ALARM_NEAR_DISTANCE_INFO)
        ALARM_MAN_STAND_DETECTION = 0x3222,        // alarm of stereo standing (Corresponding to ALARM_MAN_STAND_INFO)
        ALARM_MAN_NUM_DETECTION = 0x3223,        // alarm of regional population statistics  (Corresponding to ALARM_MAN_NUM_INFO)
        MCS_GENERAL_CAPACITY_LOW = 0x3224,        // MCS general capacity low event(Corresponding to ALARM_MCS_GENERAL_CAPACITY_LOW_INFO)
        MCS_DATA_NODE_OFFLINE = 0x3225,        // MCS data node offline event(Corresponding to ALARM_MCS_DATA_NODE_OFFLINE_INFO)
        MCS_DISK_OFFLINE = 0x3226,        // MCS disk offline event(Corresponding to ALARM_MCS_DISK_OFFLINE_INFO)
        MCS_DISK_SLOW = 0x3227,        // MCS disk slow event(Corresponding to ALARM_MCS_DISK_SLOW_INFO)
        MCS_DISK_BROKEN = 0x3228,        // MCS disk broken event(Corresponding to ALARM_MCS_DISK_BROKEN_INFO)
        MCS_DISK_UNKNOW_ERROR = 0x3229,        // MCS disk unknown error event(Corresponding to ALARM_MCS_DISK_UNKNOW_ERROR_INFO)
        MCS_METADATA_SERVER_ABNORMAL = 0x322a,        // MCS metadata server abnormal event(Corresponding to ALARM_MCS_METADATA_SERVER_ABNORMAL_INFO)
        MCS_CATALOG_SERVER_ABNORMAL = 0x322b,        // MCS catalog server abnormal event(Corresponding to ALARM_MCS_CATALOG_SERVER_ABNORMAL_INFO)
        MCS_GENERAL_CAPACITY_RESUME = 0x322c,        // MCS general capacity resume event(Corresponding to ALARM_MCS_GENERAL_CAPACITY_RESUME_INFO)
        MCS_DATA_NODE_ONLINE = 0x322d,        // MCS data node online event(Corresponding to ALARM_MCS_DATA_NODE_ONLINE_INFO)
        MCS_DISK_ONLINE = 0x322e,        // MCS disk online event(Corresponding to ALARM_MCS_DISK_ONLINE_INFO)
        MCS_METADATA_SLAVE_ONLINE = 0x322f,        // MCS metadata FYH online event(Corresponding to ALARM_MCS_METADATA_C_ONLINE_INFO)
        MCS_CATALOG_SERVER_ONLINE = 0x3230,        // MCS catalog server online event(Corresponding to ALARM_MCS_CATALOG_SERVER_ONLINE_INFO)
        ALARM_OFFLINE_LOGSYNC = 0x3231,        // alarm of off Line logsync(Corresponding to ALARM_OFFLINE_LOGSYNC_INFO)
        ALARM_UPGRADE_STATE = 0x3232,        // event of device upgrade(Corresponding to ALARM_UPGRADE_STATE)
        ALARM_LABELINFO = 0x3233,        // IPC added new(2017.4),RFID tag information acquisition event (Corresponding to DH_ALARM_LABELINFO)
        ALARM_TIRED_PHYSIOLOGICAL = 0x3234,        // alarm of Tired Physiological(Corresponding to ALARM_TIRED_PHYSIOLOGICAL)
        ALARM_CALLING_WHEN_DRIVING = 0x3235,        // alarm of Calling When Driving(Corresponding to ALARM_CALLING_WHEN_DRIVING)
        ALARM_TRAFFIC_DRIVER_SMOKING = 0x3236,        // alarm of Traffic Driver Smoking(Corresponding to ALARM_TRAFFIC_DRIVER_SMOKING)
        ALARM_TRAFFIC_DRIVER_LOWER_HEAD = 0x3237,        // alarm of Traffic Driver Lower Head(Corresponding to ALARM_TRAFFIC_DRIVER_LOWER_HEAD)
        ALARM_TRAFFIC_DRIVER_LOOK_AROUND = 0x3238,        // alarm of Traffic Driver Look Around(Corresponding to ALARM_TRAFFIC_DRIVER_LOOK_AROUND)
        ALARM_TRAFFIC_DRIVER_LEAVE_POST = 0x3239,        // alarm of Traffic Driver Leave Post(Corresponding to ALARM_TRAFFIC_DRIVER_LEAVE_POST)
        ALARM_TRAFFIC_DRIVER_YAWN = 0x323a,        // alarm of Traffic Driver Yawn(Corresponding to ALARM_TRAFFIC_DRIVER_YAWN)
        ALARM_AUTO_INSPECTION = 0x323b,        // Device auto inspection(Corresponding to ALARM_AUTO_INSPECTION) 
        ALARM_TRAFFIC_VEHICLE_POSITION = 0x323c,        // Vehicle Position Event(Corresponding to ALARM_TRAFFIC_VEHICLE_POSITION)
        ALARM_FACE_VERIFICATION_ACCESS_SNAP = 0x323d, // alarm of face verification access snap(Corresponding to ALARM_FACE_VERIFICATION_ACCESS_SNAP_INFO)
        ALARM_VIDEOBLIND = 0x323e,        // alarm of video blind(Corresponding to ALARM_VIDEO_BLIND_INFO)
        ALARM_DRIVER_NOTCONFIRM = 0x323f,        // alarm of driver not confirm(Corresponding to NET_ALARM_DRIVER_NOTCONFIRM_INFO)
        /// <summary>
        /// 人脸信息录入事件(对应NET_ALARM_FACEINFO_COLLECT_INFO)
        /// </summary>
        FACEINFO_COLLECT = 0x3240,
        ALARM_HIGH_SPEED = 0x3241,			// alarm of high speed(Corresponding to NET_ALARM_HIGH_SPEED_INFO)
        ALARM_VIDEO_LOSS = 0x3242,			// alarm of video loss(Corresponding to ALARM_VIDEO_LOSS_INFO)
        ALARM_MPTBASE_CONNECT = 0x3243,          // alarm of the connection status between device ant base(Corresponding to ALARM_MPTBASE_CONNECT) 
        ALARM_LATEST_SHUTDOWN = 0x3244,          // alarm of the latest status of shut down (Corresponding to ALARM_LATEST_SHUTDOWN)    
        ALARM_ROBOT_COLLISION = 0x3245,			// alarm of robot collision(Corresponding to ALARM_ROBOT_COLLISION)
        ALARM_ROBOT_FALLENDOWN = 0x3246,			// alarm of robot fallendown(Corresponding to ALARM_ROBOT_FALLENDOWN)
        ALARM_ROBOT_UNRECOGNIZED2DCODE = 0x3247,			// alarm of robot unrecognized 2DCODE(Corresponding to ALARM_ROBOT_UNRECOGNIZED2DCODE) 
        ALARM_ROBOT_WRONG2DCODE = 0x3248,			// alarm of wrong 2DCODE(Corresponding to ALARM_ROBOT_WRONG2DCODE)
        ALARM_ROBOT_ROADBLOCKED = 0x3249,		    // alarm of robot roadblocked(Corresponding to ALARM_ROBOT_ROADBLOCKED) 
        ALARM_ROBOT_FAULT = 0x324a,			// alarm of robot fault(Corresponding to ALARM_ROBOT_FAULT)
        ALARM_ROBOT_OVERLOAD = 0x324b,			// alarm of robot overload(Corresponding to ALARM_ROBOT_OVERLOAD)
        ALARM_ROBOT_YAWEXCEPTION = 0x324c,			// alarm of robot yawexception(Corresponding to ALARM_ROBOT_YAWEXCEPTION)
        ALARM_ROBOT_LOADTIMEOUT = 0x324e,			// alarm of robot LoadTimeout(Corresponding to ALARM_ROBOT_LOADTIMEOUT)
        ALARM_ROBOT_UNLOADTIMEOUT = 0x324f,			// alarm of robot UnLoadTimeout(Corresponding to ALARM_ROBOT_UNLOADTIMEOUT)
        ALARM_ROBOT_MAPUPDATE = 0x3250,			// alarm of robot MapUpdate(Corresponding to ALARM_ROBOT_MAPUPDATE)
        ALARM_ROBOT_BRAKE = 0x3252,			// alarm of robot brake(Corresponding to ALARM_ROBOT_BRAKE)
        ALARM_ROBOT_MANUAL_INTERVENTION = 0x3253,			// alarm of robot manual intervention(Corresponding to ALARM_ROBOT_MANUAL_INTERVENTION)
        ALARM_VIDEO_TALK_PATH = 0x324d,			// alarm of the video talk path(Corresponding to ALARM_VIDEO_TALK_PATH_INFO)
        ALARM_CGIRECORD = 0x3251,          // cgi triggered manual video recording(Corresponding to ALARM_CGIRECORD)
        ALARM_BATTERY_TEMPERATURE = 0x3254,			// alarm of battery (corresponding to ALARM_BATTERY_TEMPERATURE_INFO)
        ALARM_TIRE_PRESSURE = 0x3255,			// alarm of tire pressure(corresponding to ALARM_TIRE_PRESSURE_INFO )
        ALARM_VTH_CONFLICT = 0x3256,			// alarm of VTH Conflict(corresponding to ALARM_VTH_CONFLICT_INFO)
        ALARM_ACCESS_CTL_BLACKLIST = 0x3257,          // alarm of access event form prohibit(corresponding to ALARM_ACCESS_CTL_BL)
        ALARM_ROBOT_EMERGENCY_STOP = 0x3258,			// alarm of robot emergency stop(corresponding to ALARM_ROBOT_EMERFEBCY_STOP)
        ALARM_ROBOT_PATH_PLAN_FAILED = 0x3259,			// alarm of robot path plan failed(corresponding to ALARM_ROBOT_PATH_PLAN_FAILED)
        ALARM_ROBOT_LOCAL_MAP_UPLOAD = 0x325a,			// alarm of robot local map upload(corresponding to ALARM_ROBOT_LOCAL_MAP_UPLOAD)
        ALARM_ROBOT_SHELF_ERROR = 0x325b,			// alarm of robot shelf error(corresponding to ALARM_ROBOT_SHELF_ERROR)
        ALARM_ROBOT_SENSOR_ERROR = 0x325c,			// alarm of robot sensor error(corresponding to ALARM_ROBOT_SENSOR_ERROR)
        ALARM_ROBOT_DERAILMENT = 0x325d,          // alarm of robot derailment(corresponding to ALARM_ROBOT_DERAILMENT)
        ALARM_ROBOT_MOTOR_UNINIT = 0x325e,          // alarm of robot motor lock the gate(corresponding to ALARM_ROBOT_MOTOR_UNINIT)
        ALARM_ROBOT_PREVENT_FALLING = 0x325f,          // alarm of Robot prevent falling(corresponding to ALARM_ROBOT_PREVENT_FALLING)
        ALARM_ROBOT_LOCATION_EXCEPTION = 0x3260,			// alarm of robot location exception(Corresponding to ALARM_ROBOT_LOCATION_EXCEPTION )
        ALARM_ROBOT_UPGRADER_FAIL = 0x3261,          // alarm of Robot upgrader fail(corresponding to ALARM_ROBOT_UPGRADER_FAIL)
        ALARM_ROBOT_CHARGING_ERROR = 0x3262,          // alarm of robot charging error(Corresponding to ALARM_ROBOT_CHARGING_ERROR)
        ALARM_ROBOT_STATIONCHARGING_ERROR = 0x3263,   // alarm of robot station charging error(Corresponding ALARM_ROBOT_STATIONCHARGING_ERROR)
        ALARM_USERLOCK = 0x3300,		// alarm of user lock(corresponding to ALARM_USERLOCK_INFO)
        ALARM_DOWNLOAD_REMOTE_FILE = 0x3301,		// alarm of download remote file(corresponding to ALARM_DOWNLOAD_REMOTE_FILE_INFO)
        ALARM_NASFILE_STATUS = 0x3302,         // alarm of NAS file status (Corresponding to ALARM_NASFILE_STATUS_INFO)
        ALARM_TALKING_CANCELCALL = 0x3303,         // alarm of Cancel talking call(Corresponding to ALARM_TALKING_CANCELCALL_INFO)
        ALARM_ACCESS_CTL_UNAUTHORIZED_MALICIOUSWIP = 0x3304, // alarm of unauthorized maliciouswip(Corresponding to ALARM_ACCESS_CTL_UNAUTHORIZED_MALICIOUSWIP) 
        ALARM_CROWD_DETECTION = 0x3305,			// alarm of crowd detection(Corresponding to ALARM_CROWD_DETECTION_INFO)
        ALARM_FACE_FEATURE_ABSTRACT = 0x3306,			// alarm of face feature abstract(Corresponding to ALARM_FACE_FEATURE_ABSTRACT_INFO)
        ALARM_RECORD_SCHEDULE_CHANGE = 0x3307,			// alarm of record schedule change (Corresponding to NET_ALARM_RECORD_SCHEDULE_CHANGE_INFO)
        ALARM_NTP_CHANGE = 0x3308,          // alarm of NTP change (Corresponding to NET_ALARM_NTP_CHANGE_INFO) 
        ALARM_QR_CODE_CHECK = 0x335a,               // 二维码上报事件(对应结构体 NET_ALARM_QR_CODE_CHECK_INFO)

        /// <summary>
        /// 区域防区模式改变(对应结构体 NET_A_ALARM_AREAARM_MODECHANGE_INFO)
        /// Zone mode change < NET_A_ALARM_AREAARM_MODECHANGE_INFO >
        /// </summary>
        ALARM_AREAARM_MODECHANGE = 0x330e,
        /// <summary>
        /// 区域报警(对应结构体 NET_A_ALARM_AREAALARM_INFO)
        /// Zone Alarm < NET_A_ALARM_AREAALARM_INFO >
        /// </summary>
        ALARM_AREAALARM = 0x3310,
        /// <summary>
        /// 火警事件(对应结构体 NET_ALARM_FIRE_DETECTION_INFO)
        /// alarm of fire detection (Corresponding to NET_ALARM_FIRE_DETECTION_INFO)
        /// </summary>
        ALARM_FIRE_DETECTION = 0x343d,
        /// <summary>
        /// 漂浮物检测事件(对应结构体 ALARM_FLOATINGOBJECT_DETECTION_INFO)
        /// </summary>
        ALARM_FLOATINGOBJECT_DETECTION = 0x3442,
        /// <summary>
        /// 水位检测事件(对应结构体 ALARM_WATER_LEVEL_DETECTION_INFO)
        /// </summary>
        ALARM_WATER_LEVEL_DETECTION = 0x3443,

        ALARM_ANATOMY_TEMP_DETECT = 0x3454,		    // 人体温智能检测事件(对应结构体 ALARM_ANATOMY_TEMP_DETECT_INFO)
        ALARM_REGULATOR_ABNORMAL = 0x3455,          // 标准黑体源异常报警事件(对应结构体 ALARM_REGULATOR_ABNORMAL_INFO)

        /// <summary>
        /// 雷达区域检测事件(对应结构体 NET_ALARM_RADAR_REGIONDETECTION_INFO)
        /// alarm of radar region detection(Corresponding to NET_ALARM_RADAR_REGIONDETECTION_INFO)
        /// </summary>
        ALARM_RADAR_REGIONDETECTION = 0x3370,

        BREED_DETECTION = 0x347C,			    // 智慧养殖检测事件(对应结构体 ALARM_BREED_DETECTION_INFO)

        /// <summary>
        /// Gesture detection event(corresponding to the structure ALARM_GESTURE_DETECTION_INFO)
        /// 手势检测事件(对应结构体 ALARM_GESTURE_DETECTION_INFO)
        /// </summary>
        ALARM_GESTURE_DETECTION = 0x3492,
        /// <summary>
        /// Defense change event(corresponding to the structure ALARM_DEFENSE_CHANGE_INFO)
        /// 撤布防事件(对应结构体 ALARM_DEFENSE_CHANGE_INFO)
        /// </summary>
        ALARM_DEFENSE_CHANGE = 0x3493,
        /// <summary>
        /// Detector main power loss event (corresponding to the structure NET_A_ALARM_WIRELESSDEV_POWERLESS_INFO)
        /// 探测器主电丢失事件 (对应结构体 NET_A_ALARM_WIRELESSDEV_POWERLESS_INFO)
        /// </summary>
        ALARM_WIRELESSDEV_POWERLESS = 0x3498,
        /// <summary>
        /// RF interference event(corresponding to the structure NET_ALARM_RF_JAMMING_INFO)
        /// RF干扰事件(对应结构体 NET_ALARM_RF_JAMMING_INFO)
        /// </summary>
        ALARM_RF_JAMMING = 0x34C0,
        /// <summary>
        /// Deployment failure event(corresponding to the structure NET_ALARM_ARMING_FAILURE_INFO)
        /// 布防失败事件(对应结构体 NET_ALARM_ARMING_FAILURE_INFO)
        /// </summary>
        ALARM_ARMING_FAILURE = 0x34C1,
        /// <summary>
        /// User information is modified event(corresponding to the structure NET_ALARM_USER_MODIFIED_INFO)
        /// 用户信息被修改(增加、删除、修改)事件(对应结构体 NET_ALARM_USER_MODIFIED_INFO)
        /// </summary>
        ALARM_USER_MODIFIED = 0x34C2,
        /// <summary>
        /// Manual test events(corresponding to the structure NET_ALARM_MANUAL_TEST_INFO)
        /// 手动测试事件(对应结构体 NET_ALARM_MANUAL_TEST_INFO)
        /// </summary>
        ALARM_MANUAL_TEST = 0x34C3,
        /// <summary>
        /// Modification of equipment settings (corresponding to the structure NET_ALARM_DEVICE_MODIFIED_INFO)
        /// 设备设息修改(增加、删除、修改)事件(对应结构体 NET_ALARM_DEVICE_MODIFIED_INFO)
        /// </summary>
        ALARM_DEVICE_MODIFIED = 0x34C4,
        /// <summary>
        /// Manual alarm transmission system fault event(corresponding to the structure NET_ALARM_ATS_FAULT_INFO)
        /// 手报警传输系统故障事件(对应结构体 NET_ALARM_ATS_FAULT_INFO)
        /// </summary>
        ALARM_ATS_FAULT = 0x34C5,
        /// <summary>
        /// Alarm receiving center offline event (corresponding to the structure NET_ALARM_ARC_OFFLINE_INFO)
        /// 报警接收中心离线事件(对应结构体 NET_ALARM_ARC_OFFLINE_INFO)
        /// </summary>
        ALARM_ARC_OFFLINE = 0x34C6,
        /// <summary>
        /// WiFi failure event (corresponding to the structure NET_ALARM_WIFI_FAILURE_INFO)
        /// wifi故障事件(对应结构体 NET_ALARM_WIFI_FAILURE_INFO)
        /// </summary>
        ALARM_WIFI_FAILURE = 0x34C7,
        /// <summary>
        ///  alarm event (corresponding to the structure NET_ALARM_OVER_TEMPERATURE_INFO)
        /// 报警事件(对应结构体 NET_ALARM_OVER_TEMPERATURE_INFO)
        /// </summary>
        ALARM_OVER_TEMPERATURE = 0x34C8,
        /// <summary>
        /// Door State Detection event(corresponding to NET_ALARM_DOOR_STATE_DETECTION_INFO)
        /// 开关门检测事件(对应 NET_ALARM_DOOR_STATE_DETECTION_INFO)
        /// <summary>
        ALARM_DOOR_STATE_DETECTION = 0x34E0,
        /// <summary>
        /// Trapped In Lift Detection event(corresponding to NET_ALARM_TRAPPED_IN_LIFT_DETECTION_INFO)
        /// 电梯困人检测(对应 NET_ALARM_TRAPPED_IN_LIFT_DETECTION_INFO)
        /// <summary>
        ALARM_TRAPPED_IN_LIFT_DETECTION = 0x34E3,
        /// <summary>
        /// Repeated door opening and closing events(corresponding to NET_ALARM_OPEN_CLOSE_DOOR_DETECTION_INFO)
        /// 反复开关门事件(对应结构体 NET_ALARM_OPEN_CLOSE_DOOR_DETECTION_INFO)
        /// </summary>
        ALARM_OPEN_CLOSE_DOOR_DETECTION = 0x34F0,
        /// <summary>
        /// Elevator abnormal alarm event(corresponding to NET_ALARM_ELEVATOR_ALARM_INFO)
        /// 电梯异常报警事件(对应结构体 NET_ALARM_ELEVATOR_ALARM_INFO)
        /// </summary>
        ALARM_ELEVATOR_ALARM = 0x34F1,
        /// <summary>
        /// Human Trait alarm(corresponding to NET_ALARM_HUMAN_TRAIT_INFO)
        /// 人员信息事件(对应结构体 NET_ALARM_HUMAN_TRAIT_INFO)
        /// </summary>
        ALARM_HUMAN_TRAIT = 0x34F6,
        /// <summary>
        /// Traffic Car Passing Alarm(corresponding to NET_ALARM_TRAFFIC_CAR_PASSING_INFO)
        /// 车辆进出虚拟线圈状态事件(对应结构体 NET_ALARM_TRAFFIC_CAR_PASSING_INFO)
        /// </summary>
        ALARM_TRAFFIC_CAR_PASSING = 0x34A5,
        /// <summary>
        /// Fire contol offline fault(corresponding to NET_ALARM_HY_FIRE_CONTROL_OFFLINE_FAULT_INFO)
        /// 消防离线故障事件(对应NET_ALARM_HY_FIRE_CONTROL_OFFLINE_FAULT_INFO)
        /// </summary>
        ALARM_HY_FIRE_CONTROL_OFFLINE_FAULT = 0x6006,
    }

    /// <summary>
    /// intelligent event type,used in RealLoadPicture or fAnalyzerDataCallBack
    /// 智能事件类型
    /// </summary>
    public enum EM_EVENT_IVS_TYPE
    {
        /// <summary>
        /// subscription all event
        /// 订阅所有事件
        /// </summary>
        ALL = 0x00000001,
        /// <summary>
        /// cross line event(Corresponding to NET_DEV_EVENT_CROSSLINE_INFO)
        /// 拌线入侵事件(对应 NET_DEV_EVENT_CROSSLINE_INFO)
        /// </summary>
        CROSSLINEDETECTION = 0x00000002,
        /// <summary>
        /// cross region event(Corresponding to NET_DEV_EVENT_CROSSREGION_INFO)
        /// 区域入侵事件(对应 NET_DEV_EVENT_CROSSREGION_INFO)
        /// </summary>
        CROSSREGIONDETECTION = 0x00000003,
        /// <summary>
        /// past event(Corresponding to NET_DEV_EVENT_PASTE_INFO)
        /// 贴条事件(对应 NET_DEV_EVENT_PASTE_INFO)
        /// </summary>
        PASTEDETECTION = 0x00000004,
        /// <summary>
        /// left event(Corresponding to NET_DEV_EVENT_LEFT_INFO)
        /// 物品遗留事件(对应 NET_DEV_EVENT_LEFT_INFO)
        /// </summary>
        LEFTDETECTION = 0x00000005,
        /// <summary>
        /// stay event(Corresponding to NET_DEV_EVENT_STAY_INFO)
        /// 停留事件(对应 NET_DEV_EVENT_STAY_INFO)
        /// </summary>
        STAYDETECTION = 0x00000006,
        /// <summary>
        /// wander event(Corresponding to NET_DEV_EVENT_WANDER_INFO)
        /// 徘徊事件(对应 NET_DEV_EVENT_WANDER_INFO)
        /// </summary>
        WANDERDETECTION = 0x00000007,
        /// <summary>
        /// reservation event(Corresponding to NET_DEV_EVENT_PRESERVATION_INFO) 
        /// 物品保全事件(对应 NET_DEV_EVENT_PRESERVATION_INFO)
        /// </summary>
        PRESERVATION = 0x00000008,
        /// <summary>
        /// move event(Corresponding to NET_A_DEV_EVENT_MOVE_INFO)
        /// 移动事件(对应 NET_A_DEV_EVENT_MOVE_INFO)
        /// </summary>
        MOVEDETECTION = 0x00000009,
        /// <summary>
        /// tail event(Corresponding to NET_DEV_EVENT_TAIL_INFO)
        /// 尾随事件(对应 NET_DEV_EVENT_TAIL_INFO)
        /// </summary>
        TAILDETECTION = 0x0000000A,
        /// <summary>
        /// rioter event(Corresponding to NET_DEV_EVENT_RIOTERL_INFO)
        /// 聚众事件(对应 NET_DEV_EVENT_RIOTERL_INFO)
        /// </summary>
        RIOTERDETECTION = 0x0000000B,
        /// <summary>
        /// fire event(Corresponding to NET_DEV_EVENT_FIRE_INFO)
        /// 火警事件(对应 NET_DEV_EVENT_FIRE_INFO)
        /// </summary>
        FIREDETECTION = 0x0000000C,
        /// <summary>
        /// smoke event(Corresponding to NET_DEV_EVENT_SMOKE_INFO)
        /// 烟雾报警事件(对应 NET_DEV_EVENT_SMOKE_INFO)
        /// </summary>
        SMOKEDETECTION = 0x0000000D,
        /// <summary>
        /// fight event(Corresponding to NET_DEV_EVENT_FIGHT_INFO)
        /// 斗殴事件(对应 NET_DEV_EVENT_FIGHT_INFO)
        /// </summary>
        FIGHTDETECTION = 0x0000000E,
        /// <summary>
        /// flow stat event(Corresponding to NET_DEV_EVENT_FLOWSTAT_INFO)
        /// 流量统计事件(对应 NET_DEV_EVENT_FLOWSTAT_INFO)
        /// </summary>
        FLOWSTAT = 0x0000000F,
        /// <summary>
        /// number stat event(Corresponding to NET_A_DEV_EVENT_NUMBERSTAT_INFO)
        /// 数量统计事件(对应 NET_A_DEV_EVENT_NUMBERSTAT_INFO)
        /// </summary>
        NUMBERSTAT = 0x00000010,
        /// <summary>
        /// camera cover event
        /// 摄像头覆盖事件(保留)
        /// </summary>
        CAMERACOVERDDETECTION = 0x00000011,
        /// <summary>
        /// camera move event
        /// 摄像头移动事件(保留)
        /// </summary>
        CAMERAMOVEDDETECTION = 0x00000012,
        /// <summary>
        /// video abnormal event(Corresponding to NET_DEV_EVENT_VIDEOABNORMALDETECTION_INFO)
        /// 视频异常事件(对应 NET_DEV_EVENT_VIDEOABNORMALDETECTION_INFO)
        /// </summary>
        VIDEOABNORMALDETECTION = 0x00000013,
        /// <summary>
        /// video bad event
        /// 视频损坏事件(保留)
        /// </summary>
        VIDEOBADDETECTION = 0x00000014,
        /// <summary>
        /// traffic control event(Corresponding to NET_DEV_EVENT_TRAFFICCONTROL_INFO)
        /// 交通GZ事件(对应 NET_DEV_EVENT_TRAFFICCONTROL_INFO)
        /// </summary>
        TRAFFICCONTROL = 0x00000015,
        /// <summary>
        /// traffic accident event(Corresponding to NET_A_DEV_EVENT_TRAFFICACCIDENT_INFO)
        /// 交通事故事件(对应 NET_A_DEV_EVENT_TRAFFICACCIDENT_INFO)
        /// </summary>
        TRAFFICACCIDENT = 0x00000016,
        /// <summary>
        /// traffic junction event(Corresponding to NET_DEV_EVENT_TRAFFICJUNCTION_INFO)
        /// 交通路口事件----老规则(对应 NET_DEV_EVENT_TRAFFICJUNCTION_INFO)
        /// </summary>
        TRAFFICJUNCTION = 0x00000017,
        /// <summary>
        /// traffic gate event(Corresponding to NET_DEV_EVENT_TRAFFICGATE_INFO)
        /// 交通卡口事件----老规则(对应 NET_DEV_EVENT_TRAFFICGATE_INFO)
        /// </summary>
        TRAFFICGATE = 0x00000018,
        /// <summary>
        /// traffic snapshot(Corresponding to NET_DEV_EVENT_TRAFFICSNAPSHOT_INFO)
        /// 交通抓拍事件(对应 NET_DEV_EVENT_TRAFFICSNAPSHOT_INFO)
        /// </summary>
        TRAFFICSNAPSHOT = 0x00000019,
        /// <summary>
        /// targer detection(Corresponding to NET_DEV_EVENT_FACEDETECT_INFO)
        /// 目标检测事件 (对应 NET_DEV_EVENT_FACEDETECT_INFO)
        /// </summary>
        FACEDETECT = 0x0000001A,
        /// <summary>
        /// traffic-Jam(Corresponding to NET_A_DEV_EVENT_TRAFFICJAM_INFO)
        /// 交通拥堵事件(对应 NET_A_DEV_EVENT_TRAFFICJAM_INFO)
        /// </summary>
        TRAFFICJAM = 0x0000001B,
        /// <summary>
        /// traffic-RunRedLight(Corresponding to NET_DEV_EVENT_TRAFFIC_RUNREDLIGHT_INFO)
        /// 交通违章-闯红灯事件(对应 NET_DEV_EVENT_TRAFFIC_RUNREDLIGHT_INFO)
        /// </summary>
        TRAFFIC_RUNREDLIGHT = 0x00000100,
        /// <summary>
        /// traffic-Overline(Corresponding to NET_DEV_EVENT_TRAFFIC_OVERLINE_INFO)
        /// 交通违章-压车道线事件(对应 NET_DEV_EVENT_TRAFFIC_OVERLINE_INFO)
        /// </summary>
        TRAFFIC_OVERLINE = 0x00000101,
        /// <summary>
        /// traffic-Retrograde(Corresponding to NET_DEV_EVENT_TRAFFIC_RETROGRADE_INFO)
        /// 交通违章-逆行事件(对应 NET_DEV_EVENT_TRAFFIC_RETROGRADE_INFO)
        /// </summary>
        TRAFFIC_RETROGRADE = 0x00000102,
        /// <summary>
        /// traffic-TurnLeft(Corresponding to NET_DEV_EVENT_TRAFFIC_TURNLEFT_INFO)
        /// 交通违章-违章左转(对应 NET_DEV_EVENT_TRAFFIC_TURNLEFT_INFO)
        /// </summary>
        TRAFFIC_TURNLEFT = 0x00000103,
        /// <summary>
        /// traffic-TurnRight(Corresponding to NET_DEV_EVENT_TRAFFIC_TURNRIGHT_INFO)	
        /// 交通违章-违章右转(对应 NET_DEV_EVENT_TRAFFIC_TURNRIGHT_INFO)
        /// </summary>
        TRAFFIC_TURNRIGHT = 0x00000104,
        /// <summary>
        /// traffic-Uturn(Corresponding to NET_DEV_EVENT_TRAFFIC_UTURN_INFO)
        /// 交通违章-违章掉头(对应 NET_DEV_EVENT_TRAFFIC_UTURN_INFO)
        /// </summary>
        TRAFFIC_UTURN = 0x00000105,
        /// <summary>
        /// traffic-Overspeed(Corresponding to NET_DEV_EVENT_TRAFFIC_OVERSPEED_INFO)
        /// 交通违章-超速(对应 NET_DEV_EVENT_TRAFFIC_OVERSPEED_INFO)
        /// </summary>
        TRAFFIC_OVERSPEED = 0x00000106,
        /// <summary>
        /// traffic-Underspeed(Corresponding to NET_DEV_EVENT_TRAFFIC_UNDERSPEED_INFO)
        /// 交通违章-低速(对应 NET_DEV_EVENT_TRAFFIC_UNDERSPEED_INFO)
        /// </summary>
        TRAFFIC_UNDERSPEED = 0x00000107,
        /// <summary>
        /// traffic-Parking(Corresponding to NET_DEV_EVENT_TRAFFIC_PARKING_INFO)
        /// 交通违章-违章停车(对应 NET_DEV_EVENT_TRAFFIC_PARKING_INFO)
        /// </summary>
        TRAFFIC_PARKING = 0x00000108,
        /// <summary>
        /// traffic-WrongRoute(Corresponding to NET_DEV_EVENT_TRAFFIC_WRONGROUTE_INFO)
        /// 交通违章-不按车道行驶(对应 NET_DEV_EVENT_TRAFFIC_WRONGROUTE_INFO)
        /// </summary>
        TRAFFIC_WRONGROUTE = 0x00000109,
        /// <summary>
        /// traffic-CrossLane(Corresponding to NET_DEV_EVENT_TRAFFIC_CROSSLANE_INFO)
        /// 交通违章-违章变道(对应 NET_DEV_EVENT_TRAFFIC_CROSSLANE_INFO)
        /// </summary>
        TRAFFIC_CROSSLANE = 0x0000010A,
        /// <summary>
        /// traffic-OverYellowLine(Corresponding to NET_DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO)
        /// 交通违章-压黄线 (对应 NET_DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO)
        /// </summary>
        TRAFFIC_OVERYELLOWLINE = 0x0000010B,
        /// <summary>
        /// traffic-DrivingOnShoulder(Corresponding to NET_DEV_EVENT_TRAFFIC_DRIVINGONSHOULDER_INFO)
        /// 交通违章-路肩行驶事件(对应 NET_DEV_EVENT_TRAFFIC_DRIVINGONSHOULDER_INFO)  
        /// </summary>
        TRAFFIC_DRIVINGONSHOULDER = 0x0000010C,
        /// <summary>
        /// traffic-YellowPlateInLane(Corresponding to NET_DEV_EVENT_TRAFFIC_YELLOWPLATEINLANE_INFO)
        /// 交通违章-黄牌车占道事件(对应 NET_DEV_EVENT_TRAFFIC_YELLOWPLATEINLANE_INFO)
        /// </summary>
        TRAFFIC_YELLOWPLATEINLANE = 0x0000010E,
        /// <summary>
        /// Traffic offense-Pedestral has higher priority at the  crosswalk(Corresponding to NET_DEV_EVENT_TRAFFIC_PEDESTRAINPRIORITY_INFO)
        /// 交通违章-斑马线行人优先事件(对应 NET_DEV_EVENT_TRAFFIC_PEDESTRAINPRIORITY_INFO)
        /// </summary>
        TRAFFIC_PEDESTRAINPRIORITY = 0x0000010F,
        /// <summary>
        /// cross fence(Corresponding to NET_DEV_EVENT_CROSSFENCEDETECTION_INFO)
        /// 翻越围栏事件(对应 NET_DEV_EVENT_CROSSFENCEDETECTION_INFO)
        /// </summary>
        CROSSFENCEDETECTION = 0x0000011F,
        /// <summary>
        /// ElectroSpark event(Corresponding to NET_DEV_EVENT_ELECTROSPARK_INFO) 
        /// 电火花事件(对应 NET_DEV_EVENT_ELECTROSPARK_INFO)
        /// </summary>
        ELECTROSPARKDETECTION = 0X00000110,
        /// <summary>
        /// no passing(Corresponding to NET_DEV_EVENT_TRAFFIC_NOPASSING_INFO)
        /// 交通违章-禁止通行事件(对应 NET_DEV_EVENT_TRAFFIC_NOPASSING_INFO)
        /// </summary>
        TRAFFIC_NOPASSING = 0x00000111,
        /// <summary>
        /// abnormal run(Corresponding to NET_A_DEV_EVENT_ABNORMALRUNDETECTION_INFO)
        /// 异常奔跑事件(对应 NET_A_DEV_EVENT_ABNORMALRUNDETECTION_INFO)
        /// </summary>
        ABNORMALRUNDETECTION = 0x00000112,
        /// <summary>
        /// retrograde(Corresponding to NET_A_DEV_EVENT_RETROGRADEDETECTION_INFO)
        /// 人员逆行事件(对应 NET_A_DEV_EVENT_RETROGRADEDETECTION_INFO)
        /// </summary>
        RETROGRADEDETECTION = 0x00000113,
        /// <summary>
        /// in region detection(Corresponding to NET_DEV_EVENT_INREGIONDETECTION_INFO)
        /// 区域内检测事件(对应 NET_DEV_EVENT_INREGIONDETECTION_INFO)
        /// </summary>
        INREGIONDETECTION = 0x00000114,
        /// <summary>
        /// taking away things(Corresponding to NET_DEV_EVENT_TAKENAWAYDETECTION_INFO)
        /// 物品搬移事件(对应 NET_DEV_EVENT_TAKENAWAYDETECTION_INFO)
        /// </summary>
        TAKENAWAYDETECTION = 0x00000115,
        /// <summary>
        /// parking(Corresponding to NET_DEV_EVENT_PARKINGDETECTION_INFO)
        /// 非法停车事件(对应 NET_DEV_EVENT_PARKINGDETECTION_INFO)
        /// </summary>
        PARKINGDETECTION = 0x00000116,
        /// <summary>
        /// Target recognition(Corresponding to NET_DEV_EVENT_FACERECOGNITION_INFO)
        /// 目标识别事件(对应 NET_DEV_EVENT_FACERECOGNITION_INFO)
        /// </summary>
        FACERECOGNITION = 0x00000117,
        /// <summary>
        /// manual snap(Corresponding to NET_DEV_EVENT_TRAFFIC_MANUALSNAP_INFO)
        /// 交通手动抓拍事件(对应 NET_DEV_EVENT_TRAFFIC_MANUALSNAP_INFO)
        /// </summary>
        TRAFFIC_MANUALSNAP = 0x00000118,
        /// <summary>
        /// traffic flow state(Corresponding to NET_DEV_EVENT_TRAFFIC_FLOW_STATE)
        /// 交通流量统计事件(对应 NET_DEV_EVENT_TRAFFIC_FLOW_STATE)
        /// </summary>
        TRAFFIC_FLOWSTATE = 0x00000119,
        /// <summary>
        /// traffic stay(Corresponding to NET_DEV_EVENT_TRAFFIC_STAY_INFO)
        /// 交通滞留事件(对应 NET_DEV_EVENT_TRAFFIC_STAY_INFO)
        /// </summary>
        TRAFFIC_STAY = 0x0000011A,
        /// <summary>
        /// traffic vehicle route(Corresponding to NET_DEV_EVENT_TRAFFIC_VEHICLEINROUTE_INFO)
        /// 有车占道事件(对应 NET_DEV_EVENT_TRAFFIC_VEHICLEINROUTE_INFO)
        /// </summary>
        TRAFFIC_VEHICLEINROUTE = 0x0000011B,
        /// <summary>
        /// motion detect(Corresponding to NET_DEV_EVENT_ALARM_INFO)
        /// 视频移动侦测事件(对应 NET_DEV_EVENT_ALARM_INFO)
        /// </summary>
        ALARM_MOTIONDETECT = 0x0000011C,
        /// <summary>
        /// local alarm(Corresponding to NET_DEV_EVENT_ALARM_INFO)
        /// 外部报警事件(对应 NET_DEV_EVENT_ALARM_INFO)
        /// </summary>
        ALARM_LOCALALARM = 0x0000011D,
        /// <summary>
        /// (Corresponding to NET_DEV_EVENT_PSRISEDETECTION_INFO)
        /// (对应 NET_DEV_EVENT_PSRISEDETECTION_INFO)
        /// </summary>
        EVENT_IVS_PSRISEDETECTION = 0x0000011E,
        /// <summary>
        /// traffic tollgate(Corresponding to NET_DEV_EVENT_TRAFFICJUNCTION_INFO)
        /// 交通违章-卡口事件----新规则(对应 NET_DEV_EVENT_TRAFFICJUNCTION_INFO)
        /// </summary>
        TRAFFIC_TOLLGATE = 0x00000120,
        /// <summary>
        /// density detection of persons(Corresponding to NET_DEV_EVENT_DENSITYDETECTION_INFO)
        /// 人员密集度检测(对应 NET_DEV_EVENT_DENSITYDETECTION_INFO)
        /// </summary>
        DENSITYDETECTION = 0x00000121,
        /// <summary>
        /// video diagnosis result(Corresponding to NET_VIDEODIAGNOSIS_COMMON_INFO and NET_REAL_DIAGNOSIS_RESULT)
        /// 视频诊断结果事件(对应 NET_VIDEODIAGNOSIS_COMMON_INFO 和 NET_REAL_DIAGNOSIS_RESULT)
        /// </summary>
        VIDEODIAGNOSIS = 0x00000122,
        /// <summary>
        /// queue detection(Corresponding to NET_A_DEV_EVENT_QUEUEDETECTION_INFO)
        /// 排队检测报警事件(对应 NET_A_DEV_EVENT_QUEUEDETECTION_INFO)
        /// </summary>
        QUEUEDETECTION = 0x00000123,
        /// <summary>
        /// take up in bus route(Corresponding to NET_DEV_EVENT_TRAFFIC_VEHICLEINBUSROUTE_INFO)
        /// 占用公交车道事件(对应 NET_DEV_EVENT_TRAFFIC_VEHICLEINBUSROUTE_INFO)
        /// </summary>
        TRAFFIC_VEHICLEINBUSROUTE = 0x00000124,
        /// <summary>
        /// illegal astern(Corresponding to NET_DEV_EVENT_IVS_TRAFFIC_BACKING_INFO) 
        /// 违章倒车事件(对应 NET_DEV_EVENT_IVS_TRAFFIC_BACKING_INFO)
        /// </summary>
        TRAFFIC_BACKING = 0x00000125,
        /// <summary>
        /// audio abnormity(Corresponding to NET_A_DEV_EVENT_IVS_AUDIO_ABNORMALDETECTION_INFO)
        /// 声音异常检测(对应 NET_A_DEV_EVENT_IVS_AUDIO_ABNORMALDETECTION_INFO)
        /// </summary>
        AUDIO_ABNORMALDETECTION = 0x00000126,
        /// <summary>
        /// run yellow light(Corresponding to NET_DEV_EVENT_TRAFFIC_RUNYELLOWLIGHT_INFO)
        /// 交通违章-闯黄灯事件(对应 NET_DEV_EVENT_TRAFFIC_RUNYELLOWLIGHT_INFO)
        /// </summary>
        TRAFFIC_RUNYELLOWLIGHT = 0x00000127,
        /// <summary>
        /// climb detection(Corresponding to NET_DEV_EVENT_IVS_CLIMB_INFO) 
        /// 攀高检测事件(对应 NET_DEV_EVENT_IVS_CLIMB_INFO)
        /// </summary>
        CLIMBDETECTION = 0x00000128,
        /// <summary>
        /// leave detection(Corresponding to NET_DEV_EVENT_IVS_LEAVE_INFO)
        /// 离岗检测事件(对应 NET_DEV_EVENT_IVS_LEAVE_INFO)
        /// </summary>
        LEAVEDETECTION = 0x00000129,
        /// <summary>
        /// parking on yellow box(Corresponding to NET_DEV_EVENT_TRAFFIC_PARKINGONYELLOWBOX_INFO)
        /// 黄网格线抓拍事件(对应 NET_DEV_EVENT_TRAFFIC_PARKINGONYELLOWBOX_INFO)
        /// </summary>
        TRAFFIC_PARKINGONYELLOWBOX = 0x0000012A,
        /// <summary>
        /// parking space parking(Corresponding to NET_DEV_EVENT_TRAFFIC_PARKINGSPACEPARKING_INFO)
        /// 车位有车事件(对应 NET_DEV_EVENT_TRAFFIC_PARKINGSPACEPARKING_INFO)
        /// </summary>
        TRAFFIC_PARKINGSPACEPARKING = 0x0000012B,
        /// <summary>
        /// parking space no parking(Corresponding to NET_DEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_INFO)
        /// 车位无车事件(对应 NET_DEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_INFO)   
        /// </summary>
        TRAFFIC_PARKINGSPACENOPARKING = 0x0000012C,
        /// <summary>
        /// passerby(Corresponding to NET_A_DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO)
        /// 交通行人事件(对应 NET_A_DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO)
        /// </summary>
        TRAFFIC_PEDESTRAIN = 0x0000012D,
        /// <summary>
        /// throw(Corresponding to NET_DEV_EVENT_TRAFFIC_THROW_INFO)
        /// 交通抛洒物品事件(对应 NET_DEV_EVENT_TRAFFIC_THROW_INFO)
        /// </summary>
        TRAFFIC_THROW = 0x0000012E,
        /// <summary>
        /// idle(Corresponding to NET_DEV_EVENT_TRAFFIC_IDLE_INFO)
        /// 交通空闲事件(对应 NET_DEV_EVENT_TRAFFIC_IDLE_INFO)
        /// </summary>
        TRAFFIC_IDLE = 0x0000012F,
        /// <summary>
        /// Vehicle ACC power outage alarm events(Corresponding to NET_DEV_EVENT_ALARM_VEHICLEACC_INFO)
        /// 车载ACC断电报警事件(对应 NET_DEV_EVENT_ALARM_VEHICLEACC_INFO)
        /// </summary>
        ALARM_VEHICLEACC = 0x00000130,
        /// <summary>
        /// Vehicle rollover alarm events(Corresponding to NET_DEV_EVENT_VEHICEL_ALARM_INFO)
        /// 车辆侧翻报警事件(对应 NET_DEV_EVENT_VEHICEL_ALARM_INFO)
        /// </summary>
        ALARM_VEHICLE_TURNOVER = 0x00000131,
        /// <summary>
        /// Vehicle crash alarm events(Corresponding to NET_DEV_EVENT_VEHICEL_ALARM_INFO)
        /// 车辆撞车报警事件(对应 NET_DEV_EVENT_VEHICEL_ALARM_INFO)
        /// </summary>
        ALARM_VEHICLE_COLLISION = 0x00000132,
        /// <summary>
        /// On-board camera large Angle turn events
        /// 车载摄像头大角度扭转事件
        /// </summary>
        ALARM_VEHICLE_LARGE_ANGLE = 0x00000133,
        /// <summary>
        /// Parking line pressing events(Corresponding to NET_DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO)
        /// 车位压线事件(对应 NET_DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO)
        /// </summary>
        TRAFFIC_PARKINGSPACEOVERLINE = 0x00000134,
        /// <summary>
        /// Many scenes switching events(Corresponding to NET_DEV_EVENT_IVS_MULTI_SCENE_SWICH_INFO)
        /// 多场景切换事件(对应 NET_DEV_EVENT_IVS_MULTI_SCENE_SWICH_INFO)
        /// </summary>
        MULTISCENESWITCH = 0x00000135,
        /// <summary>
        /// Limited license plate event(Corresponding to NET_DEV_EVENT_TRAFFIC_RESTRICTED_PLATE)
        /// 受限车牌事件(对应 NET_DEV_EVENT_TRAFFIC_RESTRICTED_PLATE)
        /// </summary>
        TRAFFIC_RESTRICTED_PLATE = 0X00000136,
        /// <summary>
        /// Cross stop line event(Corresponding to NET_DEV_EVENT_TRAFFIC_OVERSTOPLINE)
        /// 压停止线事件(对应 NET_DEV_EVENT_TRAFFIC_OVERSTOPLINE)
        /// </summary>
        TRAFFIC_OVERSTOPLINE = 0X00000137,
        /// <summary>
        /// Traffic unfasten seat belt event(Corresponding to NET_DEV_EVENT_TRAFFIC_WITHOUT_SAFEBELT) 
        /// 交通未系安全带事件(对应 NET_DEV_EVENT_TRAFFIC_WITHOUT_SAFEBELT)
        /// </summary>
        TRAFFIC_WITHOUT_SAFEBELT = 0x00000138,
        /// <summary>
        /// Driver smoking event(Corresponding to NET_DEV_EVENT_TRAFFIC_DRIVER_SMOKING) 
        /// 驾驶员抽烟事件(对应 NET_DEV_EVENT_TRAFFIC_DRIVER_SMOKING)
        /// </summary>
        TRAFFIC_DRIVER_SMOKING = 0x00000139,
        /// <summary>
        /// Driver call event(Corresponding to NET_DEV_EVENT_TRAFFIC_DRIVER_CALLING) 
        /// 驾驶员打电话事件(对应 NET_DEV_EVENT_TRAFFIC_DRIVER_CALLING)
        /// </summary>
        TRAFFIC_DRIVER_CALLING = 0x0000013A,
        /// <summary>
        /// Pedestrain red light(Corresponding to NET_DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO)
        /// 行人闯红灯事件(对应 NET_DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO)
        /// </summary>
        TRAFFIC_PEDESTRAINRUNREDLIGHT = 0x0000013B,
        /// <summary>
        /// Pass not in order(corresponding NET_DEV_EVENT_TRAFFIC_PASSNOTINORDER_INFO)
        /// 未按规定依次通行(对应 NET_DEV_EVENT_TRAFFIC_PASSNOTINORDER_INFO)
        /// </summary>
        TRAFFIC_PASSNOTINORDER = 0x0000013C,
        /// <summary>
        /// Object feature detection event(Corresponding to NET_DEV_EVENT_TRAFFIC_OBJECT_DETECTION) 
        /// 物体特征检测事件 NET_DEV_EVENT_TRAFFIC_OBJECT_DETECTION
        /// </summary>
        OBJECT_DETECTION = 0x00000141,
        /// <summary>
        /// Analog alarm channel?ˉs alarm event(corresponding NET_DEV_EVENT_ALARM_ANALOGALRM_INFO)
        /// 模拟量报警通道的报警事件(对应NET_DEV_EVENT_ALARM_ANALOGALRM_INFO)
        /// </summary>
        ALARM_ANALOGALARM = 0x00000150,
        /// <summary>
        /// Warning lineexpansion event(Corresponding to NET_A_DEV_EVENT_CROSSLINE_INFO_EX) 
        /// 拌线入侵扩展事件 NET_A_DEV_EVENT_CROSSLINE_INFO_EX
        /// </summary>
        CROSSLINEDETECTION_EX = 0x00000151,
        /// <summary>
        /// Normal Record
        /// 普通录像
        /// </summary>
        ALARM_COMMON = 0x00000152,
        /// <summary>
        /// Video tampering event(Corresponding to NET_A_DEV_EVENT_ALARM_VIDEOBLIND)
        /// 视频遮挡事件(对应 NET_A_DEV_EVENT_ALARM_VIDEOBLIND)
        /// </summary>
        ALARM_VIDEOBLIND = 0x00000153,
        /// <summary>
        /// Video loss event
        /// 视频丢失事件
        /// </summary>
        ALARM_VIDEOLOSS = 0x00000154,
        /// <summary>
        /// Event of getting out bed detection(Corresponding to NET_DEV_EVENT_GETOUTBED_INFO)
        /// 下床事件(对应 NET_DEV_EVENT_GETOUTBED_INFO)
        /// </summary>
        GETOUTBEDDETECTION = 0x00000155,
        /// <summary>
        /// Event of patrol detection(Corresponding to NET_DEV_EVENT_PATROL_INFO)
        /// 巡逻检测事件(对应 NET_DEV_EVENT_PATROL_INFO)
        /// </summary>
        PATROLDETECTION = 0x00000156,
        /// <summary>
        /// Event of on duty detection(Corresponding to NET_DEV_EVENT_ONDUTY_INFO)
        /// 站岗检测事件(对应 NET_DEV_EVENT_ONDUTY_INFO)
        /// </summary>
        ONDUTYDETECTION = 0x00000157,
        /// <summary>
        /// Event of VTO do not answer calling request
        /// 门口机呼叫未响应事件
        /// </summary>
        NOANSWERCALL = 0x00000158,
        /// <summary>
        /// Event of storage do not exist
        /// 存储组不存在事件
        /// </summary>
        STORAGENOTEXIST = 0x00000159,
        /// <summary>
        /// Event of storage space low
        /// 硬盘空间低报警事件
        /// </summary>
        STORAGELOWSPACE = 0x0000015A,
        /// <summary>
        /// Event of storage failure
        /// 存储错误事件
        /// </summary>
        STORAGEFAILURE = 0x0000015B,
        /// <summary>
        /// Event of profile alarm transmit
        /// 报警传输事件
        /// </summary>
        PROFILEALARMTRANSMIT = 0x0000015C,
        /// <summary>
        /// Event of static video detect(corresponding NET_DEV_EVENT_ALARM_VIDEOSTATIC_INFO)
        /// 视频静态检测事件(对应 NET_DEV_EVENT_ALARM_VIDEOSTATIC_INFO)
        /// </summary>
        VIDEOSTATIC = 0x0000015D,
        /// <summary>
        /// Event of video timing detect(corresponding NET_DEV_EVENT_ALARM_VIDEOTIMING_INFO)
        /// 视频定时检测事件(对应 NET_DEV_EVENT_ALARM_VIDEOTIMING_INFO)
        /// </summary>
        VIDEOTIMING = 0x0000015E,
        /// <summary>
        /// Heat map 
        /// 热度图
        /// </summary>
        HEATMAP = 0x0000015F,
        /// <summary>
        /// reading event (Corresponding to NET_DEV_EVENT_ALARM_CITIZENIDCARD_INFO)
        /// 读取事件(对应 NET_DEV_EVENT_ALARM_CITIZENIDCARD_INFO)
        /// </summary>
        CITIZENIDCARD = 0x00000160,
        /// <summary>
        /// Image info event(Corresponding to NET_DEV_EVENT_ALARM_PIC_INFO)
        /// 图片信息事件(对应 NET_DEV_EVENT_ALARM_PIC_INFO)
        /// </summary>
        PICINFO = 0x00000161,
        /// <summary>
        /// NetPlayCheck event(corresponding NET_DEV_EVENT_ALARM_NETPLAYCHECK_INFO)
        /// 上网登记事件(对应 NET_DEV_EVENT_ALARM_NETPLAYCHECK_INFO)
        /// </summary>
        NETPLAYCHECK = 0x00000162,
        /// <summary>
        /// Jam Forbid into  event(corresponding NET_DEV_EVENT_ALARM_JAMFORBIDINTO_INFO)
        /// 车辆拥堵禁入事件(对应 NET_DEV_EVENT_ALARM_JAMFORBIDINTO_INFO)
        /// </summary>
        TRAFFIC_JAM_FORBID_INTO = 0x00000163,
        /// <summary>
        /// Snap by time event(corresponding NET_DEV_EVENT_SNAPBYTIME)
        /// 定时抓图事件(对应NET_DEV_EVENT_SNAPBYTIME)
        /// </summary>
        SNAPBYTIME = 0x00000164,
        /// <summary>
        /// PTZ turn to preset event(corresponding to NET_DEV_EVENT_ALARM_PTZ_PRESET_INFO)
        /// 云台转动到预置点事件(对应 NET_DEV_EVENT_ALARM_PTZ_PRESET_INFO)
        /// </summary>
        PTZ_PRESET = 0x00000165,
        /// <summary>
        /// Event of infrared detect info(corresponding to NET_DEV_EVENT_ALARM_RFID_INFO)
        /// 红外线检测信息事件(对应 NET_DEV_EVENT_ALARM_RFID_INFO)
        /// </summary>
        RFID_INFO = 0x00000166,
        /// <summary>
        /// Event of standing up detection
        /// 人起立检测事件
        /// </summary>
        STANDUPDETECTION = 0X00000167,
        /// <summary>
        /// Event of QSYTrafficCarWeight (corresponding to NET_DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO)
        /// 交通卡口称重事件(对应 NET_DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO)
        /// </summary>
        QSYTRAFFICCARWEIGHT = 0x00000168,
        /// <summary>
        /// Event of compare plate(corresponding to NET_DEV_EVENT_TRAFFIC_COMPAREPLATE_INFO)
        /// 卡口前后车牌合成事件(对应NET_DEV_EVENT_TRAFFIC_COMPAREPLATE_INFO)
        /// </summary>
        TRAFFIC_COMPAREPLATE = 0x00000169,
        /// <summary>
        /// Event of shooting score recognition(corresponding to NET_CFG_IVS_SHOOTINGSCORERECOGNITION_INFO)
        /// 打靶像机事件(对应 NET_CFG_IVS_SHOOTINGSCORERECOGNITION_INFO)
        /// </summary>
        SHOOTINGSCORERECOGNITION = 0x0000016A,
        /// <summary>
        /// 场景变更事件(对应 NET_DEV_ALRAM_SCENECHANGE_INFO,CFG_VIDEOABNORMALDETECTION_INFO)
        /// </summary>
        SCENE_CHANGE = 0x0000016D,
        /// <summary>
        /// Event of presnap analyse(corresponding to NET_DEV_EVENT_TRAFFIC_ANALYSE_PRESNAP_INFO)
        /// 预分析抓拍图片事件(对应 NET_DEV_EVENT_TRAFFIC_ANALYSE_PRESNAP_INFO)
        /// </summary>
        TRAFFIC_ANALYSE_PRESNAP = 0x00000170,
        /// <summary>
        /// Event of Close contact events (corresponding to DEV_EVENT_NEAR_DISTANCE_DETECTION_INFO)
        /// 近距离接触事件(对应 DEV_EVENT_NEAR_DISTANCE_DETECTION_INFO)
        /// </summary>
        EVENT_IVS_NEAR_DISTANCE_DETECTION = 0x00000174,
        /// <summary>
        /// 倒地报警事件(对应 NET_DEV_EVENT_TUMBLE_DETECTION_INFO)
        /// </summary>
        TUMBLE_DETECTION = 0x00000177,
        /// <summary>
        /// All event start with [TRAFFIC](EVENT_IVS_TRAFFICCONTROL to EVENT_TRAFFICSNAPSHOT,EVENT_IVS_TRAFFIC_RUNREDLIGHT to EVENT_IVS_TRAFFIC_UNDERSPEED)
        /// 所有以traffic开头的事件目前指的是EVENT_IVS_TRAFFICCONTROL 到 EVENT_TRAFFICSNAPSHOT,EVENT_IVS_TRAFFIC_RUNREDLIGHT 到 EVENT_IVS_TRAFFIC_UNDERSPEED
        /// </summary>                    
        TRAFFIC_ALL = 0x000001FF,
        /// <summary>
        /// All IVS events 
        /// 所有智能分析事件
        /// </summary>
        VIDEOANALYSE = 0x00000200,
        /// <summary>
        /// LinkSD events(Corresponding to NET_DEV_EVENT_LINK_SD)
        /// LinkSD事件(对应 NET_DEV_EVENT_LINK_SD)
        /// </summary>
        LINKSD = 0x00000201,
        /// <summary>
        /// Vehicle Analyse (Corresponding to NET_DEV_EVENT_VEHICLEANALYSE)
        /// 车辆特征检测分析(对应 NET_DEV_EVENT_VEHICLEANALYSE)
        /// </summary>
        VEHICLEANALYSE = 0x00000202,
        /// <summary>
        /// Flow rate events(Corresponding to NET_DEV_EVENT_FLOWRATE_INFO)
        /// 流量使用情况事件(对应 NET_DEV_EVENT_FLOWRATE_INFO)
        /// </summary>
        FLOWRATE = 0x00000203,
        /// <summary>
        /// 门禁事件 (对应 NET_DEV_EVENT_ACCESS_CTL_INFO)
        /// </summary>
        ACCESS_CTL = 0x00000204,
        /// <summary>
        /// SnapManual事件(对应 NET_DEV_EVENT_SNAPMANUAL)
        /// </summary>
        SNAPMANUAL = 0x00000205,
        /// <summary>
        /// RFID电子车牌标签事件(对应 NET_DEV_EVENT_TRAFFIC_ELETAGINFO_INFO)
        /// </summary>
        TRAFFIC_ELETAGINFO = 0x00000206,
        /// <summary>
        /// 生理疲劳驾驶事件(对应 NET_DEV_EVENT_TIREDPHYSIOLOGICAL_INFO)
        /// </summary>
        TRAFFIC_TIREDPHYSIOLOGICAL = 0x00000207,
        /// <summary>
        /// 车辆急转报警事件(对应 NET_DEV_EVENT_BUSSHARPTURN_INFO)
        /// </summary>
        TRAFFIC_BUSSHARPTURN = 0x00000208,
        /// <summary>
        /// 人证比对事件(对应 NET_DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO)
        /// </summary>
        CITIZEN_PICTURE_COMPARE = 0x00000209,
        /// <summary>
        /// 立体视觉站立事件(对应 NET_DEV_EVENT_MANSTAND_DETECTION_INFO)
        /// </summary>
        MAN_STAND_DETECTION = 0x0000020D,
        /// <summary>
        /// 立体视觉区域内人数统计事件(对应 NET_DEV_EVENT_MANNUM_DETECTION_INFO)
        /// </summary>
        MAN_NUM_DETECTION = 0x0000020E,
        /// <summary>
        /// 人体特征事件(对应 NET_DEV_EVENT_HUMANTRAIT_INFO)
        /// </summary>
        HUMANTRAIT = 0x00000215,
        /// <summary>
        /// 人脸分析事件 (暂未有具体事件)
        /// </summary>
        FACEANALYSIS = 0x00000217,
        /// <summary>
        /// 左转不礼让直行事件
        /// </summary>
        TRAFFIC_TURNLEFTAFTERSTRAIGHT = 0x00000218,
        /// <summary>
        /// 大弯小转事件
        /// </summary>
        TRAFFIC_BIGBENDSMALLTURN = 0x00000219,
        /// <summary>
        /// 车辆加塞事件
        /// </summary>
        TRAFFIC_QUEUEJUMP = 0x0000021C,
        /// <summary>
        /// 右转不礼让直行事件
        /// </summary>
        TRAFFIC_TURNRIGHTAFTERSTRAIGHT = 0x0000021E,
        /// <summary>
        /// 右转不礼让直行行人
        /// </summary>
        TRAFFIC_TURNRIGHTAFTERPEOPLE = 0x0000021F,
        /// <summary>
        /// X光检测事件 (对应 NET_DEV_EVENT_XRAY_DETECTION_INFO)
        /// </summary>
        XRAY_DETECTION = 0x00000223,
        /// <summary>
        /// 远光灯违章事件
        /// </summary>
        TRAFFIC_HIGH_BEAM = 0x00000228,
        /// <summary>
        /// 禁止货车事件(对应 NET_DEV_EVENT_TRAFFICTRUCKFORBID_INFO)
        /// </summary>
        TRAFFIC_TRUCKFORBID = 0x00000229,
        /// <summary>
        /// 人群密度检测事件,对应结构体 NET_DEV_EVENT_CROWD_DETECTION_INFO
        /// </summary>
        CROWDDETECTION = 0x0000022C,
        /// <summary>
        /// Alarm event of too small spacing ( DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO )
        /// 车间距过小报警事件(对应 DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO)
        /// </summary>
        EVENT_IVS_TRAFFIC_CARDISTANCESHORT = 0x0000022D,
        /// <summary>
        /// 车牌对比事件(对应 NET_DEV_EVENT_VEHICLE_RECOGNITION_INFO)
        /// </summary>
        VEHICLE_RECOGNITION = 0x00000231,
        /// <summary>
        /// 违章进入待行区
        /// </summary>
        TRAFFIC_WAITINGAREA = 0x00000234,
        /// <summary>
        /// Stereoscopic Behavior Analysis Fighting/Severe Exercise Detection Rules ( EVENT_IVS_FIGHTDETECTION )
        /// 立体行为分析打架/剧烈运动检测规则(仅用于规则配置，对应事件 EVENT_IVS_FIGHTDETECTION)
        /// </summary>
        EVENT_IVS_STEREO_FIGHTDETECTION = 0x00000237,
        /// <summary>
        /// Stereoscopic Behavior Analysis Fighting/Severe Exercise Detection Rules ( EVENT_IVS_FIGHTDETECTION )
        /// 立体行为分析人员滞留检测规则(仅用于规则配置，对应事件 EVENT_IVS_STAYDETECTION)
        /// </summary>
        EVENT_IVS_STEREO_STAYDETECTION = 0x0000023A,
        /// <summary>
        /// Abnormal operation events of escalator ( NET_A_DEV_EVENT_ELEVATOR_ABNORMAL_INFO )
        /// 电动扶梯运行异常事件 (对应 NET_A_DEV_EVENT_ELEVATOR_ABNORMAL_INFO)
        /// </summary>
        EVENT_IVS_ELEVATOR_ABNORMAL = 0x0000023D,
        /// <summary>
        /// 非机动车检测 (对应结构体 DEV_EVENT_NONMOTORDETECT_INFO)
        /// </summary>
        NONMOTORDETECT = 0x0000023E,
        /// <summary>
        /// 机动车检测 (只用于规则配置，事件采用EVENT_IVS_TRAFFICJUNCTION)
        /// </summary>
        VEHICLEDETECT = 0x0000023F,
        /// <summary>
        /// IVSS目标检测事件 (暂未有具体事件)
        /// </summary>
        FACEATTRIBUTE = 0x00000243,
        /// <summary>
        /// IVSS目标识别事件 (暂未有具体事件)
        /// </summary>
        FACECOMPARE = 0x00000244,
        /// <summary>
        /// 火警事件(对应 NET_DEV_EVENT_FIREWARNING_INFO)
        /// </summary>
        FIREWARNING = 0x00000245,
        /// <summary>
        /// 商铺占道经营事件(对应 NET_DEV_EVENT_SHOPPRESENCE_INFO)
        /// </summary>
        SHOPPRESENCE = 0x00000246,
        /// <summary>
        /// 立体行为分析人数异常检测(仅用于规则配置，对应 EVENT_IVS_MAN_NUM_DETECTION)
        /// </summary>
        STEREO_MANNUM_DETECTION = 0x00000249,
        /// <summary>
        /// 异常间距事件 (对应 DEV_EVENT_DISTANCE_DETECTION_INFO)
        /// </summary>
        DISTANCE_DETECTION = 0x0000024A,
        /// <summary>
        /// 非机动车超载事件 (对应 NET_A_DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO)
        /// </summary>
        EVENT_IVS_TRAFFIC_NONMOTOR_OVERLOAD = 0x0000024B,
        /// <summary>
        /// 非机动车未戴安全帽事件 (对应 NET_A_DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO)
        /// </summary>
        EVENT_IVS_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT = 0x0000024C,
        /// <summary>
        /// 流动摊贩事件 (对应 DEV_EVENT_FLOWBUSINESS_INFO)
        /// </summary>
        FLOWBUSINESS = 0x0000024E,
        /// <summary>
        /// 城市机动车违停事件 (对应 DEV_EVENT_CITY_MOTORPARKING_INFO)
        /// </summary>
        CITY_MOTORPARKING = 0x0000024F,
        /// <summary>
        /// 城市机非动车违停事件 (对应 DEV_EVENT_CITY_NONMOTORPARKING_INFO)
        /// </summary>
        CITY_NONMOTORPARKING = 0x00000250,
        /// <summary>
        /// 非机动车装载伞具(对应 DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO)
        /// </summary>
        NONMOTOR_HOLDUMBRELLA = 0x00000254,
        /// <summary>
        /// Event of FloatingObject detection (Corresponding to DEV_EVENT_FLOATINGOBJECT_DETECTION_INFO)
        /// 漂浮物检测事件 (对应 NET_A_DEV_EVENT_FLOATINGOBJECT_DETECTION_INFO)
        /// </summary>
        FLOATINGOBJECT_DETECTION = 0x00000257,
        /// Event of phone call detect(Corresponding to NET_DEV_EVENT_PHONECALL_DETECT_INFO)
        /// 打电话检测事件(对应 NET_DEV_EVENT_PHONECALL_DETECT_INFO)
        /// </summary>
        PHONECALL_DETECT = 0x0000025A,
        /// <summary>
        /// Event of Smoking Detection(Corresponding to NET_DEV_EVENT_SMOKING_DETECT_INFO)
        /// 吸烟检测事件(对应 NET_DEV_EVENT_SMOKING_DETECT_INFO)
        /// </summary>
        SMOKING_DETECT = 0x0000025B,
        /// <summary>
        /// Water level detection event(Corresponding to NET_A_DEV_EVENT_WATER_LEVEL_DETECTION_INFO)
        /// 水位检测事件 (对应 NET_A_DEV_EVENT_WATER_LEVEL_DETECTION_INFO)
        /// </summary>
        WATER_LEVEL_DETECTION = 0x0000025D,
        /// <summary>
        /// 违规撑伞检测事件 (对应 DEV_EVENT_HOLD_UMBRELLA_INFO)
        /// </summary>
        HOLD_UMBRELLA = 0x0000025E,
        /// <summary>
        /// 垃圾暴露检测事件 (对应 DEV_EVENT_GARBAGE_EXPOSURE_INFO)
        /// </summary>
        GARBAGE_EXPOSURE = 0x0000025F,
        /// <summary>
        /// 垃圾桶满溢检测事件 (对应 DEV_EVENT_DUSTBIN_OVER_FLOW_INFO)
        /// </summary>
        DUSTBIN_OVER_FLOW = 0x00000260,
        /// <summary>
        /// 门前脏乱检测事件 (对应 DEV_EVENT_DOOR_FRONT_DIRTY_INFO)
        /// </summary>
        DOOR_FRONT_DIRTY = 0x00000261,
        /// <summary>
        /// 排队滞留时间报警事件 (对应 NET_DEV_EVENT_QUEUESTAY_DETECTION_INFO)
        /// Event of Queue Stay Detection (Corresponding to NET_DEV_EVENT_QUEUESTAY_DETECTION_INFO)
        /// </summary>
        QUEUESTAY_DETECTION = 0x00000262,
        /// <summary>
        /// 排队人数异常报警事件（对应 NET_DEV_EVENT_QUEUENUM_DETECTION_INFO）
        /// Event of Queue Num Detection(Corresponding to NET_DEV_EVENT_QUEUENUM_DETECTION_INFO)
        /// </summary>
        QUEUENUM_DETECTION = 0x00000263,
        /// <summary>
        /// 热点异常报警事件(对应 NET_A_DEV_EVENT_HOTSPOT_WARNING_INFO)
        /// </summary>
        EVENT_IVS_HOTSPOT_WARNING = 0x00000268,
        /// <summary>
        /// 课堂行为分析事件(对应 DEV_EVENT_CLASSROOM_BEHAVIOR_INFO)
        /// </summary>
        CLASSROOM_BEHAVIOR = 0x0000026A,
        /// <summary>
        /// 工装(安全帽/工作服等)检测事件(对应 NET_DEV_EVENT_WORKCLOTHES_DETECT_INFO)
        /// </summary>
        WORKCLOTHES_DETECT = 0x0000026E,
        /// <summary>
        /// 安检门人员报警事件(对应 NET_A_DEV_EVENT_SECURITYGATE_PERSONALARM_INFO)
        /// </summary>
        SECURITYGATE_PERSONALARM = 0x0000026F,
        /// <summary>
        /// Event of stay alone detection (Corresponding to NET_DEV_EVENT_STAY_ALONE_DETECTION_INFO)
        /// 单人独处事件(对应 NET_DEV_EVENT_STAY_ALONE_DETECTION_INFO)
        /// </summary>
        STAY_ALONE_DETECTION = 0x00000270,
        /// <summary>
        /// Traffic barrier detection event (Corresponding to NET_A_DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO)
        /// 交通路障检测事件(对应 NET_A_DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO)
        /// </summary>
        EVENT_IVS_TRAFFIC_ROAD_BLOCK = 0x00000271,
        /// <summary>
        /// Traffic road construction detection events (Corresponding to NET_A_DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO)
        /// 交通道路施工检测事件(对应 NET_A_DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO)
        /// </summary>
        EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION = 0x00000272,
        /// <summary>
        /// X光按物体检测规则配置, 对应事件 XRAY_DETECTION
        /// </summary>
        XRAY_DETECT_BYOBJECT = 0x00000273,
        /// <summary>
        /// Job statistics event (Corresponding to NET_A_DEV_EVENT_WORKSTATDETECTION_INFO)
        /// 作业统计事件(对应 NET_A_DEV_EVENT_WORKSTATDETECTION_INFO)
        /// </summary>
        EVENT_IVS_WORKSTATDETECTION = 0x00000274,
        /// <summary>
        /// Vehicle entry and exit status event (corresponding to NET_DEV_EVENT_CAR_DRIVING_IN_OUT_INFO)
        /// 车辆驶入驶出状态事件 (对应 NET_DEV_EVENT_CAR_DRIVING_IN_OUT_INFO)
        /// </summary>
        CAR_DRIVING_IN_OUT = 0x0000027B,
        /// <summary>
        /// Parking space status event (corresponding to NET_DEV_EVENT_PARKINGSPACE_STATUS_INFO)
        /// 停车位状态事件 (对应 NET_DEV_EVENT_PARKINGSPACE_STATUS_INFO)
        /// </summary>
        PARKINGSPACE_STATUS = 0x0000027C,
        /// <summary>
        /// 加油站车辆检测事件 (对应 DEV_EVENT_GASSTATION_VEHICLE_DETECT_INFO)
        /// </summary>
        GASSTATION_VEHICLE_DETECT = 0x00000283,
        /// <summary>
        /// 高空抛物检测(对应 DEV_EVENT_HIGH_TOSS_DETECT_INFO)
        /// </summary>
        HIGH_TOSS_DETECT = 0x0000028D,
        /// <summary>
        /// Event of congestion detection(Corresponding to DEV_EVENT_CONGESTION_DETECTION_INFO)
        /// 道路场景车辆拥堵报警事件（对应 DEV_EVENT_CONGESTION_DETECTION_INFO）
        /// </summary>
        CONGESTION_DETECTION = 0x00000284,
        /// <summary>
        /// Event of animal testing detection(Corresponding to NET_DEV_EVENT_ANIMAL_DETECTION_INFO)
        /// 动物检测事件,(对应 NET_DEV_EVENT_ANIMAL_DETECTION_INFO)
        /// </summary>
        ANIMAL_DETECTION = 0x00000286,
        /// <summary>
        /// Power safety belt detection event(Corresponding to NET_A_DEV_EVENT_ELECTRIC_BELT_DETECT_INFO)
        /// 电力检测安全带检测事件(对应 NET_A_DEV_EVENT_ELECTRIC_BELT_DETECT_INFO)
        /// </summary>
        EVENT_IVS_ELECTRIC_BELT_DETECT = 0x00000293,
        /// <summary>
        /// Event of radar line detection(Corresponding to DEV_EVENT_RADAR_LINE_DETECTION_INFO)
        /// 雷达拌线入侵/绊线检测(对应DEV_EVENT_RADAR_LINE_DETECTION_INFO)
        /// </summary>
        RADAR_LINE_DETECTION = 0x00000294,
        /// <summary>
        /// Event of radar region detection(Corresponding to DEV_EVENT_RADAR_REGION_DETECTION_INFO)
        /// 雷达区域入侵检测事件(对应DEV_EVENT_RADAR_REGION_DETECTION_INFO)
        /// </summary>
        RADAR_REGION_DETECTION = 0x00000295,
        /// <summary>
        /// Detection event of uncovered loading of muck truck(Corresponding to NET_A_DEV_EVENT_DREGS_UNCOVERED_INFO)
        /// 渣土车未遮盖载货检测事件(对应 NET_A_DEV_EVENT_DREGS_UNCOVERED_INFO)
        /// </summary>
        EVENT_IVS_DREGS_UNCOVERED = 0x00000299,
        /// <summary>
        /// Event of smart kitchen wear detectior detection(Corresponding to NET_DEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO)
        /// 智慧厨房穿着检测事件（对不戴口罩、厨师帽以及颜色不符合规定的厨师服进行报警）（对应 NET_DEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO）
        /// </summary>
        SMART_KITCHEN_CLOTHES_DETECTION = 0x0000029D,
        /// <summary>
        /// Sleep detection event(Corresponding to NET_A_DEV_EVENT_SLEEP_DETECT_INFO)
        /// 睡觉检测事件(对应 NET_A_DEV_EVENT_SLEEP_DETECT_INFO)
        /// </summary>
        EVENT_IVS_SLEEP_DETECT = 0x0000029E,
        /// <summary>
        /// Play cell phone event(Corresponding to NET_A_DEV_EVENT_PLAY_MOBILEPHONE_INFO)
        /// 玩手机事件(对应 NET_A_DEV_EVENT_PLAY_MOBILEPHONE_INFO)
        /// </summary>
        EVENT_IVS_PLAY_MOBILEPHONE = 0x00000300,
        /// <summary>
        /// 人体温智能检测事件(对应 DEV_EVENT_ANATOMY_TEMP_DETECT_INFO)
        /// </summary>
        ANATOMY_TEMP_DETECT = 0x00000303,
        /// <summary>
        /// Fog detection event ( Corresponding to NET_A_DEV_EVENT_FOG_DETECTION )
        /// 起雾检测事件(对应 NET_A_DEV_EVENT_FOG_DETECTION)
        /// </summary>
        EVENT_IVS_FOG_DETECTION = 0x00000308,
        /// <summary>
        /// Event of nonmotor entrying( Corresponding to NET_DEV_EVENT_NONMOTOR_ENTRYING_INFO )
        /// 非机动车进入电梯事件(对应 NET_DEV_EVENT_NONMOTOR_ENTRYING_INFO )
        /// </summary>
        NONMOTOR_ENTRYING = 0x0000030C,
        /// <summary>
        /// Event of vehicle in emergency lane ( Corresponding to NET_DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO )
        /// 占用应急车道事件(对应 NET_DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO )
        /// </summary>
        TRAFFIC_VEHICLE_IN_EMERGENCY_LANE = 0x00000311,
        /// <summary>
        /// Event of Traffic checkpoint  (vehicle length, width, height, weight, etc.) (Corresponding to DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO)
        /// 交通卡口测量(车辆长、宽、高度、重量等)事件 (对应 DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO)
        /// </summary>
        TRAFFIC_CAR_MEASUREMENT = 0x00000320,
        /// <summary>
        /// Fire lane occupation detection event (Corresponding to NET_A_DEV_EVENT_FIRE_LANE_DETECTION_INFO)
        /// 消防占道检测事件（对应 NET_A_DEV_EVENT_FIRE_LANE_DETECTION_INFO）
        /// </summary>
        EVENT_IVS_FIRE_LANE_DETECTION = 0x00000324,
        /// <summary>
        /// Special vehicle detection (Corresponding to NET_A_DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO)
        /// 特殊车辆检测 (对应 NET_A_DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO )
        /// </summary>
        EVENT_IVS_TRAFFIC_SPECIAL_VEHICLE_DETECT = 0x00000333,
        /// <summary>
        /// Traffic non motor vehicle incident detection, intelligent server use （Corresponding to NET_A_DEV_EVENT_TRAFFIC_NONMOTOR_INFO ）
        /// 交通非机动车事件检测, 智能服务器使用 ( NET_A_DEV_EVENT_TRAFFIC_NONMOTOR_INFO )
        /// </summary>
        EVENT_IVS_TRAFFIC_NONMOTOR = 0x00000335,
        /// <summary>
        /// Detection of illegal boarding and alighting events （Corresponding to NET_A_DEV_EVENT_TRAFFIC_BOARD_INFO ）
        /// 交通违章上下客事件检测 (对应 NET_A_DEV_EVENT_TRAFFIC_BOARD_INFO )
        /// </summary>
        EVENT_IVS_TRAFFIC_BOARD = 0x00000336,
        /// <summary>
        /// Traffic visibility event detection （Corresponding to NET_A_DEV_EVENT_TRAFFIC_VISIBILITY_INFO ）
        /// 交通能见度事件检测 (对应 NET_A_DEV_EVENT_TRAFFIC_VISIBILITY_INFO )
        /// </summary>
        EVENT_IVS_TRAFFIC_VISIBILITY = 0x00000337,
        /// <summary>
        /// Traffic vehicle cleanliness detection event detection （Corresponding to NET_A_DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO ）
        /// 交通车辆清洁度检测事件检测 (对应 NET_A_DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO)
        /// </summary>
        EVENT_IVS_TRAFFIC_VEHICLE_CLEANLINESS = 0x00000338,
        /// <summary>
        /// Event of Conveyor obstruction alarm （Corresponding to NET_DEV_EVENT_CONVEYORBLOCK_DETECTION_INFO ）
        /// 传送带阻塞报警事件 （对应 NET_DEV_EVENT_CONVEYORBLOCK_DETECTION_INFO ）
        /// </summary>
        CONVEYORBLOCK_DETECTION = 0x0000033E,
        /// <summary>
        /// All object type detection event （Corresponding to NET_A_DEV_EVENT_ANYTHING_DETECT_INFO ）
        /// 全物体类型检测事件 ( 对应 NET_A_DEV_EVENT_ANYTHING_DETECT_INFO )
        /// </summary>
        EVENT_IVS_ANYTHING_DETECT = 0x0000033F,
        /// <summary>
        /// Event of Object abnormal( Corresponding to DEV_EVENT_OBJECT_ABNORMAL_INFO )
        /// 目标异常事件(对应 DEV_EVENT_OBJECT_ABNORMAL_INFO )
        /// </summary>
        OBJECT_ABNORMAL = 0x00000340,
        /// <summary>
        /// Distress detection event( Corresponding to NET_A_DEV_EVENT_DISTRESS_DETECTION_INFO )
        /// 求救检测事件 ( 对应 NET_A_DEV_EVENT_DISTRESS_DETECTION_INFO )
        /// </summary>
        EVENT_IVS_DISTRESS_DETECTION = 0x0000034C,
        /// <summary>
        /// Traffic speed change detection event (NET_A_DEV_EVENT_TRAFFIC_SPEED_CHANGE_DETECTION_INFO)
        /// 交通变速检测事件(对应 NET_A_DEV_EVENT_TRAFFIC_SPEED_CHANGE_DETECTION_INFO )
        /// </summary>
        EVENT_IVS_TRAFFIC_SPEED_CHANGE_DETECTION = 0x0000034E,
        /// <summary>
        /// EVENT_IVS_CONVEYER_BELT_DETECT(Conveyer belt detect)corresponding rule configuration structure
        /// 传送带检测, 仅用于规则配置, 对应规则结构体NET_CONVEYER_BELT_DETECT_RULE_INFO
        /// </summary>
        CONVEYER_BELT_DETECT = 0x00000350,
        /// <summary>
        /// Large foreign body detection event of conveyer belt(Corresponding to NET_DEV_EVENT_CONVEYER_BELT_BULK_INFO )
        /// 传送带大块异物检测事件(对应 NET_DEV_EVENT_CONVEYER_BELT_BULK_INFO )
        /// </summary>
        CONVEYER_BELT_BULK = 0x00000351,
        /// <summary>
        /// Non load detection event of conveyer belt(Corresponding to NET_DEV_EVENT_CONVEYER_BELT_NONLOAD_INFO ) 
        /// 传送带空载检测事件(对应 NET_DEV_EVENT_CONVEYER_BELT_NONLOAD_INFO )
        /// </summary>
        CONVEYER_BELT_NONLOAD = 0x00000352,
        /// <summary>
        /// Run off detection event of conveyer belt(Corresponding to NET_DEV_EVENT_CONVEYER_BELT_RUNOFF_INFO )
        /// 传送带跑偏检测事件(对应 NET_DEV_EVENT_CONVEYER_BELT_RUNOFF_INFO )
        /// </summary>
        CONVEYER_BELT_RUNOFF = 0x00000353,
        /// <summary>
        /// Conveyor belt coal detection(Corresponding to DEV_EVENT_CONVEYER_BELT_COAL_RATIO_INFO )
        /// 传送带煤量检测(对应 DEV_EVENT_CONVEYER_BELT_COAL_RATIO_INFO )
        /// </summary>
        CONVEYER_BELT_COAL_RATIO = 0x00000354,
        /// <summary>
        /// Event to Parking statistics（Corresponding to NET_EVENT_TRAFFIC_PARKING_STATISTICS_INFO）
        /// 车位统计事件（对应 NET_EVENT_TRAFFIC_PARKING_STATISTICS_INFO）
        /// </summary>
        TRAFFIC_PARKING_STATISTICS = 0x0000035B,
        /// <summary>
        /// Thermal imaging  point temperature abnormal alarm event（Corresponding to NET_A_DEV_EVENT_HEAT_IMAGING_TEMPER_INFO）
        /// 热成像测温点温度异常报警事件(对应结构体 NET_A_DEV_EVENT_HEAT_IMAGING_TEMPER_INFO)
        /// </summary>
        EVENT_IVS_HEAT_IMAGING_TEMPER = 0x0000035C,
        /// <summary>
        /// Video normal event: when the video diagnosis and detection cycle ends, the diagnostic items that do not report errors are reported as normal events（Corresponding to NET_A_DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO）
        /// 视频正常事件,在视频诊断检测周期结束时,将未报错的诊断项上报正常事件 NET_A_DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO
        /// </summary>
        EVENT_IVS_VIDEO_NORMAL_DETECTION = 0x00000365,
        /// <summary>
        /// Object placement detection event(corresponding to NET_A_DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO
        /// 物品放置检测事件(对应NET_A_DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO)
        /// </summary>
        OBJECT_PLACEMENT_DETECTION = 0x00000369,
        /// <summary>
        /// Fire extinguisher detection event(Corresponding to NET_A_DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO)
        /// 灭火器检测事件(对应NET_A_DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO)
        /// </summary>
        EVENT_IVS_FIRE_EXTINGUISHER_DETECTION = 0x0000036C,
        /// <summary>
        /// Dialrecognition event（Corresponding to NET_A_DEV_EVENT_DIALRECOGNITION_INFO）
        /// 仪表检测事件(对应 NET_A_DEV_EVENT_DIALRECOGNITION_INFO)
        /// </summary>
        EVENT_IVS_DIALRECOGNITION = 0x00000371,
        /// <summary>
        /// Electricfault event（Corresponding to NET_A_DEV_EVENT_ELECTRICFAULTDETECT_INFO）
        /// 仪表类缺陷检测事件(对应 NET_A_DEV_EVENT_ELECTRICFAULTDETECT_INFO)
        /// </summary>
        EVENT_IVS_ELECTRICFAULT_DETECT = 0x00000372,
        /// <summary>
        /// Event of reversing and leaving at the entrance and exit（Corresponding to NET_A_DEV_EVENT_TRAFFIC_PARKING_BACKING_INFO ）
        /// 出入口倒车驶离事件(对应 NET_A_DEV_EVENT_TRAFFIC_PARKING_BACKING_INFO )
        /// </summary>
        EVENT_IVS_TRAFFIC_PARKING_BACKING = 0x0000037C,
        /// <summary>
        /// Illegal manned incidents（Corresponding to NET_A_DEV_EVENT_TRAFFIC_MOTOR_STRICTLY_PROHIBIT_MANNED_INFO ）
        /// 违法载人事件(对应 NET_A_DEV_EVENT_TRAFFIC_MOTOR_STRICTLY_PROHIBIT_MANNED_INFO)
        /// </summary>
        TRAFFIC_MOTOR_STRICTLY_PROHIBIT_MANNED = 0x0000037F,
        /// <summary>
        /// Touching the electrostatic sphere event（Corresponding to NET_A_DEV_EVENT_TOUCH_ELECTROSTATIC_BALL_INFO）
        /// 触摸静电球事件(对应 NET_A_DEV_EVENT_TOUCH_ELECTROSTATIC_BALL_INFO)
        /// </summary>
        EVENT_IVS_TOUCH_ELECTROSTATIC_BALL = 0x00000382,
        /// <summary>
        /// Attitude detection event（Corresponding to NET_A_DEV_EVENT_GENERAL_ATTITUDE_DETECTION_INFO）
        /// 姿态检测事件(对应 NET_A_DEV_EVENT_GENERAL_ATTITUDE_DETECTION_INFO)
        /// </summary>
        EVENT_IVS_GENERAL_ATTITUDE_DETECTION = 0x00000385,
        /// <summary>
        /// Fishing Detection Event（Corresponding to NET_A_DEV_EVENT_FISHING_DETECTION_INFO）
        /// 钓鱼检测事件(对应 NET_A_DEV_EVENT_FISHING_DETECTION_INFO)
        /// </summary>
        FISHING_DETECTION = 0x00000390,
        /// <summary>
        /// General posture behavior events（Corresponding to NET_A_DEV_EVENT_GENEAL_ATTITUDE_INFO）
        /// 通用姿态行为事件(对应 NET_A_DEV_EVENT_GENEAL_ATTITUDE_INFO)
        /// </summary>
        EVENT_IVS_GENEAL_ATTITUDE = 0x0000038C,
        /// <summary>
        /// Congestion detection event（Corresponding to NET_A_DEV_EVENT_CROWD_LEVEL_DETECTION_INFO）
        /// 拥挤程度检测事件(对应 NET_A_DEV_EVENT_CROWD_LEVEL_DETECTION_INFO)
        /// </summary>
        EVENT_IVS_CROWD_LEVEL_DETECTION = 0x00000395,
        /// <summary>
        /// OCR detection event（Corresponding to NET_A_DEV_EVENT_OCR_DETECTION_INFO）
        /// OCR检测事件(对应 NET_A_DEV_EVENT_OCR_DETECTION_INFO)
        /// </summary>
        EVENT_IVS_OCR_DETECTION = 0x00000399,
        /// <summary>
        /// Count events within the region（Corresponding to NET_A_DEV_EVENT_OBJECT_NUM_DETECTION_INFO）
        /// 区域内计数事件(对应 NET_A_DEV_EVENT_OBJECT_NUM_DETECTION_INFO, 注意该事件不支持单独使用，仅作为“开放智能事件(EVENT_IVS_OPEN_INTELLI)”中的一种规则)
        /// </summary>
        EVENT_IVS_OBJECT_NUM_DETECTION = 0x0000039C,
        /// <summary>
        /// Open intelligence event（Corresponding to NET_A_DEV_EVENT_OPEN_INTELLI_INFO）
        /// 开放智能事件(对应 NET_A_DEV_EVENT_OPEN_INTELLI_INFO)
        /// </summary>
        EVENT_IVS_OPEN_INTELLI = 0x0000039D,
        /// <summary>
        /// Motorcycle ride detection event (Corresponding to NET_A_DEV_EVENT_RIDING_MOTOR_CYCLE_INFO)
        /// 摩托车骑跨检测事件(对应 NET_A_DEV_EVENT_RIDING_MOTOR_CYCLE_INFO )
        /// </summary>
        EVENT_IVS_RIDING_MOTOR_CYCLE = 0x00000401,
        /// <summary>
        /// Gesture detection event(Corresponding to NET_EVENT_GESTURE_DETECTION_INFO)
        /// 手势检测事件(对应 NET_EVENT_GESTURE_DETECTION_INFO)
        /// </summary>
        GESTURE_DETECTION = 0x00000405,
        /// <summary>
        /// Cart occupation event ( Corresponding to NET_A_DEV_EVENT_TRAFFIC_TRUCK_OCCUPIED_INFO )
        /// 大车占道事件(对应 NET_A_DEV_EVENT_TRAFFIC_TRUCK_OCCUPIED_INFO)
        /// </summary>
        EVENT_IVS_TRAFFIC_TRUCK_OCCUPIED = 0x0000040B,
        /// <summary>
        /// Person trans detection event(Corresponding to NET_EVENT_IVS_PERSON_TRANS_DETECTION_INFO)
        /// 人员传输检测事件(对应 NET_EVENT_IVS_PERSON_TRANS_DETECTION_INFO)
        /// </summary>
        PERSON_TRANS_DETECTION = 0x00000410,
        /// <summary>
        /// Difference detection event (Corresponding to NET_DEV_EVENT_CHANGE_DETECTION_INFO)
        /// 差异检测事件(对应 NET_DEV_EVENT_CHANGE_DETECTION_INFO)
        /// </summary>
        EVENT_IVS_CHANGE_DETECTION = 0x00000420,
        /// <summary>
        /// Methane alarm event (Corresponding to NET_DEV_EVENT_METHANE_ALARM_INFO)
        /// 甲烷报警事件(对应结构体 NET_DEV_EVENT_METHANE_ALARM_INFO)
        /// </summary>
        EVENT_IVS_ALARM_METHANE_ALARM = 0x00000431,
		/// <summary>
        /// Barrier transmission incident (Corresponding to NET_DEV_EVENT_RAILING_PASS_DETECTION_INFO)
        /// 隔栏传物事件(对应结构体 NET_DEV_EVENT_RAILING_PASS_DETECTION_INFO)
        /// </summary>
		EVENT_IVS_RAILING_PASS_DETECTION = 0x0000043E,
        /// <summary>
        /// Methane alarm event (Corresponding to NET_DEV_EVENT_METHANE_ALARM_INFO)
        /// 问会见室人数报警事件(对应 NET_DEV_EVENT_MULTI_MAN_NUM_DETECTION_INFO)
        /// </summary>
        EVENT_IVS_MULTI_MAN_NUM_DETECTION = 0x0000043F,
		/// <summary>
        /// Target type and quantity detection alarm events (Corresponding to NET_DEV_EVENT_OBJECT_QUANTITY_DETECTION_INFO)
        /// 目标类型和数量检测报警事件(对应 NET_DEV_EVENT_OBJECT_QUANTITY_DETECTION_INFO)
        /// </summary>
		EVENT_IVS_OBJECT_QUANTITY_DETECTION	 = 0x00000440,
        /// <summary>
        /// UserInfo upload event(Corresponding to NET_DEV_EVENT_USERMANAGER_FOR_TWSDK_INFO)
        /// 用户信息上报事件,(对应 NET_DEV_EVENT_USERMANAGER_FOR_TWSDK_INFO )
        /// </summary>
        EVENT_IVS_USERMANAGER_FOR_TWSDK = 0x00000441,
        /// <summary>
        /// Trip wire counting event(Corresponding to NET_DEV_EVENT_CROSSLINE_STAT_INFO)
        /// 绊线计数事件(对应 NET_DEV_EVENT_CROSSLINE_STAT_INFO),(注意该事件暂时不支持单独使用，仅作为“开放智能事件(EVENT_IVS_OPEN_INTELLI)”中的一种规则))
        /// </summary>
        EVENT_IVS_CROSSLINE_STAT = 0x00000443,
        /// <summary>
        /// Count events within the domain (Corresponding to NET_DEV_EVENT_REGIONNUM_STAT_INFO)
        /// 域内计数事件(对应 NET_DEV_EVENT_REGIONNUM_STAT_INFO),(注意该事件暂时不支持单独使用，仅作为“开放智能事件(EVENT_IVS_OPEN_INTELLI)”中的一种规则))
        /// </summary>
        EVENT_IVS_REGIONNUM_STAT = 0x00000444,
        /// <summary>
        /// Time Change upload event(Corresponding to NET_DEV_EVENT_TIMECHANGE_FOR_TWSDK_INFO)
        /// 系统时间被修改报警事件()(对应 NET_DEV_EVENT_TIMECHANGE_FOR_TWSDK_INFO)
        /// </summary>
        EVENT_IVS_TIMECHANGE_FOR_TWSDK = 0x0000044F,
		/// <summary>
        /// Shooting behavior detection event(Corresponding to NET_DEV_EVENT_PHOTOGRAPH_DETECTION_INFO)
        /// 拍摄行为检测事件(对应 NET_DEV_EVENT_PHOTOGRAPH_DETECTION_INFO)
        /// </summary>
		EVENT_IVS_PHOTOGRAPH_DETECTION = 0x0000045C,
        /// <summary>
        /// Sound intensity mutation event(Corresponding to NET_DEV_EVENT_AUDIO_MUTATION_INFO)
        /// 声强突变事件(对应 NET_DEV_EVENT_AUDIO_MUTATION_INFO),(注意该事件暂时不支持单独使用，仅作为“开放智能事件(EVENT_IVS_OPEN_INTELLI)”中的一种规则))
        /// </summary>
        EVENT_IVS_AUDIO_MUTATION = 0x0000045E,
        /// <summary>
        /// Target occurrence event(Corresponding to NET_DEV_EVENT_OBJECT_APPEAR_DETECTION_INFO)
        /// 目标出现事件(对应 NET_DEV_EVENT_OBJECT_APPEAR_DETECTION_INFO)
        /// </summary>
        EVENT_IVS_OBJECT_APPEAR_DETECTION = 0x0000045F,
        /// <summary>
        /// Target disappearance event(Corresponding to NET_DEV_EVENT_OBJECT_DISAPPEAR_DETECTION_INFO)
        /// 目标消失事件(对应 NET_DEV_EVENT_OBJECT_DISAPPEAR_DETECTION_INFO)
        /// </summary>
        EVENT_IVS_OBJECT_DISAPPEAR_DETECTION = 0x00000460,
        /// <summary>
        /// Trace object detection events (corresponding NET_DEV_EVENT_SAME_OBJECT_SEARCH_DETECT_INFO)
        /// 按图索骥物品检测事件(对应 NET_DEV_EVENT_SAME_OBJECT_SEARCH_DETECT_INFO)
        /// </summary>
        EVENT_IVS_SAME_OBJECT_SEARCH_DETECT = 0x00000472,
        /// <summary>
        /// Thermal temperature abnormal event alarm info(corresponding NET_DEV_EVENT_HEAT_IMAGING_TEMPER_INFO_DETAIL)
        /// 热成像测温点温度信息异常报警(对应 NET_DEV_EVENT_HEAT_IMAGING_TEMPER_INFO_DETAIL)
        /// </summary>
        EVENT_IVS_HEAT_IMAGING_TEMPER_INFO = 0x000004A0,
        /// <summary>
        /// Ladle hanging detection event(corresponding to NET_DEV_EVENT_LADLE_HANGING_DETECTION_INFO)
        /// 挂耳检测事件(对应 NET_DEV_EVENT_LADLE_HANGING_DETECTION_INFO)
        /// </summary>
        LADLE_HANGING_DETECTION = 0x000004A8,
        /// <summary>
        /// Thermal imaging temperature monitoring Point temperature warning(corresponding NET_DEV_EVENT_PRE_HEAT_IMAGING_TEMPER_INFO)
        /// 热成像测温点温度预报警(对应 NET_DEV_EVENT_PRE_HEAT_IMAGING_TEMPER_INFO)
        /// </summary>
        EVENT_IVS_PRE_HEAT_IMAGING_TEMPER = 0x000004AF,
        /// <summary>
        /// Between Rules Temperature Difference event(corresponding to NET_DEV_EVENT_BETWEEN_RULES_TEMPERDIFF_ALARM_INFO)
        /// 温差报警事件(对应 NET_DEV_EVENT_BETWEEN_RULES_TEMPERDIFF_ALARM_INFO)
        /// </summary>
        EVENT_IVS_BETWEEN_RULES_TEMPERDIFF_ALARM = 0x000004BB,
        /// <summary>
        /// IVS equipment front-end channel status abnormal event(corresponding to NET_DEV_EVENT_IVS_CHANNEL_ABNORMAL_INFO)
        /// IVS设备前端通道状态异常事件(对应结构体 NET_DEV_EVENT_IVS_CHANNEL_ABNORMAL_INFO)
        /// </summary>
        IVS_CHANNEL_ABNORMAL = 0x000004CF,
        /// <summary>
        /// Quantitative indicator abnormal mutation alarm event(corresponding to NET_DEV_EVENT_IVS_QUANTIFY_MUTATION_INFO)
        /// 量化指标异常突变报警事件(对应结构体 NET_DEV_EVENT_QUANTIFY_MUTATION_INFO)
        /// </summary>
        QUANTIFY_MUTATION = 0x000004D1,
        /// <summary>
        /// IQuantitative indicator abnormal trend alarm event(corresponding to NET_DEV_EVENT_IVS_QUANTIFY_TREND_INFO)
        /// 量化指标异常趋势报警事件(对应结构体 NET_DEV_EVENT_QUANTIFY_TREND_INFO)
        /// </summary>
        QUANTIFY_TREND = 0x000004D2,
    }

    /// <summary>
    /// NETClient.StartService
    /// 报警上传功能的报警类型,对应CLIENT_StartService接口
    /// </summary>
    public enum EM_UPLOAD_TYPE
    {
        /// <summary>
        /// Alarm transmission event, corresponding to ALARM_UPLOAD_PROFILE_ALARM_TRANSMIT_INFO
        /// 报警传输事件, 对应结构体 ALARM_UPLOAD_PROFILE_ALARM_TRANSMIT_INFO
        /// </summary>
        UPLOAD_PROFILE_ALARM_TRANSMIT = 0x402D,
        /// <summary>
        /// User Login Lock Event, corresponding to NET_A_ALARM_UPLOAD_USER_LOCK_INFO
        /// 用户登录锁定事件, 对应结构体 NET_A_ALARM_UPLOAD_USER_LOCK_INFO
        /// </summary>
        UPLOAD_USER_LOCK = 0x402E,
        /// <summary>
        /// 目标识别事件, 对应结构体 NET_ALARM_UPLOAD_FS_RECOGNITION_INFO
        /// arget recognition event, corresponding to NET_ALARM_UPLOAD_FS_RECOGNITION_INFO
        /// </summary>
        UPLOAD_FS_RECOGNITION = 0x402F,
    }

    // 触发类型
    public enum EM_TRIGGER_TYPE
    {
        UNKNOWN = -1,          // 未知类型
        CAR_INSPECTION_DEV,    // 车检器
        DADAR,                 // 雷达
        VIDEO,                 // 视频
    }

    // 抓拍过程结束类型
    public enum EM_CAPTURE_PROCESS_END_TYPE
    {
        UNKNOWN = -1,           // 未知
        ABNORMAL,               // 异常
        NORMAL,                 // 正常
    }

    /// <summary>
    /// 人群密度检测事件(对应事件 DH_ALARM_CROWD_DETECTION)
    /// </summary>
    public struct NET_ALARM_CROWD_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Time stamp (Unit:ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occurrence time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,1 means continues event start,2 means continuous event stop
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// 报警业务类型
        /// Alarm Type
        /// </summary>
        public EM_ALARM_TYPE emAlarmType;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 返回的全局拥挤人群密度列表个数
        /// Crowd list num
        /// </summary>
        public int nCrowdListNum;
        /// <summary>
        /// 返回的人数超限的报警区域ID列表个数
        /// Region list num
        /// </summary>
        public int nRegionListNum;
        /// <summary>
        /// 全局拥挤人群密度列表信息
        /// Crowd list info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public NET_CROWD_LIST_INFO[] stuCrowdList;
        /// <summary>
        /// 人数超限的报警区域ID列表信息
        /// Region list info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_REGION_LIST_INFO[] stuRegionList;
        /// <summary>
        /// 扩展信息
        /// Extension info
        /// </summary>
        public NET_EXTENSION_INFO stuExtensionInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留扩展字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 896)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 人群密度检测事件,对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_CROWD_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel Id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// 报警业务类型
        /// </summary>
        public EM_ALARM_TYPE emAlarmType;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 返回的全局拥挤人群密度列表个数 （圆形描述）
        /// </summary>
        public int nCrowdListNum;
        /// <summary>
        /// 返回的人数超限的报警区域ID列表个数 
        /// </summary>
        public int nRegionListNum;
        /// <summary>
        /// 全局拥挤人群密度列表信息（圆形描述）
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public NET_CROWD_LIST_INFO[] stuCrowdList;
        /// <summary>
        /// 人数超限的报警区域ID列表信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_REGION_LIST_INFO[] stuRegionList;
        /// <summary>
        /// 扩展信息
        /// </summary>
        public NET_EXTENSION_INFO stuExtensionInfo;
        /// <summary>
        /// 返回的全局拥挤人群密度列表个数 (矩形描述)
        /// </summary>
        public int nCrowdRectListNum;
        /// <summary>
        /// 全局拥挤人群密度列表信息(矩形描述)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public NET_CROWD_RECT_LIST_INFO[] stuCrowdRectList;
        /// <summary>
        /// 检测区全局总人数
        /// </summary>
        public int nGlobalPeopleNum;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留扩展字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 680)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 全局拥挤人群密度列表(圆形)信息,对应结构体NET_CROWD_LIST_INFO
    /// </summary>
    public struct NET_CROWD_LIST_INFO
    {
        /// <summary>
        /// 中心点坐标,8192坐标系
        /// </summary>
        public NET_POINT stuCenterPoint;
        /// <summary>
        /// 半径像素点个数
        /// </summary>
        public uint nRadiusNum;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 人数超限的报警区域ID列表信息
    /// </summary>
    public struct NET_REGION_LIST_INFO
    {
        /// <summary>
        /// 配置的区域下标
        /// </summary>
        public uint nRegionID;
        /// <summary>
        /// 区域内人数统计值
        /// </summary>
        public uint nPeopleNum;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 全局拥挤人群密度列表(矩形)信息
    /// </summary>
    public struct NET_CROWD_RECT_LIST_INFO
    {
        /// <summary>
        /// 矩形的左上角点与右下角点,8192坐标系，表示矩形的人群密度矩形框
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_POINT[] stuRectPoint;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// GPS信息
    /// GPS info
    /// </summary>
    public struct NET_GPS_INFO_EX
    {
        /// <summary>
        /// 经度(单位是百万分之一度)
        /// 西经：0 - 180000000 实际值应为: 180*1000000 – dwLongitude
        /// 东经：180000000 - 360000000 实际值应为: dwLongitude – 180*1000000
        /// 如: 300168866应为（300168866 - 180*1000000）/1000000 即东经120.168866度
        /// Longitude(Unit: one millionth of a degree)
        /// </summary>
        public int nLongitude;
        /// <summary>
        /// 纬度(单位是百万分之一度)
        /// 南纬：0 - 90000000 实际值应为: 90*1000000 – dwLatidude
        /// 北纬：90000000 – 180000000 实际值应为: dwLatidude – 90*1000000
        /// 如: 120186268应为 (120186268 - 90*1000000)/1000000 即北纬30. 186268度
        /// Latidude(Unit: one millionth of a degree)
        /// </summary>
        public int nLatidude;
        /// <summary>
        /// 高度,单位为米
        /// Altitude, unit : meters
        /// </summary>
        public double nAltitude;
        /// <summary>
        /// 保留字段
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szReserved;
    }

    /// <summary>
    /// 烟雾颜色类型
    /// smoke color type
    /// </summary>
    public enum EM_SMOKE_COLOR
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_SMOKE_COLOR_UNKNOWN,
        /// <summary>
        /// White
        /// White
        /// </summary>
        EM_SMOKE_COLOR_WHITE,
        /// <summary>
        /// black
        /// black
        /// </summary>
        EM_SMOKE_COLOR_BLACK,
        /// <summary>
        /// red
        /// red
        /// </summary>
        EM_SMOKE_COLOR_RED,
        /// <summary>
        /// yellow
        /// yellow
        /// </summary>
        EM_SMOKE_COLOR_YELLOW,
    }

    /// <summary>
    /// (烟雾报警事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_SMOKE_INFO
    {
        /// <summary>
        /// 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 规则编号,用于标示哪个规则触发的事件，缺省时默认为0
        /// Rule ID, used to indicate which rule triggers the event. The default value is 0
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件触发累计次数
        /// event trigger accumilated times
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 云台的坐标和放大倍数
        /// ptz coordinate and zoom
        /// </summary>
        public NET_PTZ_SPACE_UNIT stuPtzPosition;
        /// <summary>
        /// stuSceneImage 是否有效
        /// Whether stuSceneImage is valid
        /// </summary>
        public bool bSceneImage;
        /// <summary>
        /// 全景广角图
        /// Global scene iamge
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 车身信息
        /// vehicle info
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// 触发类型
        /// Trigger type
        /// </summary>
        public EM_TRIGGER_TYPE emTriggerType;
        /// <summary>
        /// 标记抓拍帧
        /// Used to mark capture frames
        /// </summary>
        public int nMark;
        /// <summary>
        /// 视频分析的数据源地址
        /// Data source address of the video analysis
        /// </summary>
        public int nSource;
        /// <summary>
        /// 视频分析帧序号
        /// Video analysis frame number
        /// </summary>
        public int nFrameSequence;
        /// <summary>
        /// 交通车辆信息
        /// Traffic vehicle info
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// 公共信息
        /// public info
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// 抓拍过程
        /// Capture process
        /// </summary>
        public EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess;
        /// <summary>
        /// 当前报警通道的横向视场角,单位：度，实际角度乘以100
        /// The lateral field of view angle of the current alarm channel, unit: degree, the actual angle is multiplied by 100
        /// </summary>
        public uint nCurChannelHFOV;
        /// <summary>
        /// 当前报警通道的垂直视场角,单位：度，实际角度乘以100
        /// The vertical field of view angle of the current alarm channel, unit: degree, the actual angle is multiplied by 100
        /// </summary>
        public uint nCurChannelVFOV;
        /// <summary>
        /// 设备的GPS坐标
        /// GPS Info
        /// </summary>
        public NET_GPS_INFO_EX stuGPS;
        /// <summary>
        /// 烟雾检测点个数
        /// Number of smoke detection points
        /// </summary>
        public int nObjectCount;
        /// <summary>
        /// 烟雾检测点信息
        /// Smoke detection point information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_A_MSG_OBJECT_EX2[] stuObjects;
        /// <summary>
        /// 烟雾颜色
        /// smoke color
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_SMOKE_COLOR[] emSmokeColor;
        /// <summary>
        /// 烟雾颜色有效个数
        /// smoke color number
        /// </summary>
        public int nSmokeColorNum;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字段
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 944)]
        public string szReserved;
    }

    // 事件扩展信息
    public struct NET_EXTENSION_INFO
    {
        /// <summary>
        /// 国标事件ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 52)]
        public string szEventID;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 80)]
        public byte[] byReserved;
    }

    // 卡号数组信息
    public struct NET_CARDNOARRAY_INFO
    {
        public int nCardNum;               // 卡号个数
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5 * 64)]
        public string szCardInfo;       // 卡号信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;      // 保留字节
    }

    // 数组信息
    public struct NET_FINGERPRINT_INFO
    {
        public int nFingerNum;             // 个数
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 2048)]
        public string szFingerInfo; // 信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;      // 保留字节
    }

    /// <summary>
    /// 卡类型
    /// Card Type
    /// </summary>
    public enum EM_CARD_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_CARD_TYPE_UNKNOWN,
        /// <summary>
        /// 普通卡
        /// Normal Crd
        /// </summary>
        EM_CARD_TYPE_NORMAL,
        /// <summary>
        /// ID卡
        /// ID Card
        /// </summary>
        EM_CARD_TYPE_ID,
        /// <summary>
        /// CPU卡
        /// CPU Card
        /// </summary>
        EM_CARD_TYPE_CPU,
        /// <summary>
        /// 
        /// ID
        /// </summary>
        EM_CARD_TYPE_IDENTITY,
        /// <summary>
        /// 加密IC卡
        /// Encrypted IC card
        /// </summary>
        EM_CARD_TYPE_ENCRYPTION_IC,
    }

    /// <summary>
    /// 人证比对事件，用实时拍摄的人脸照片，和该人持有的照片进行比对，并上报检测结果
    /// 对应事件类型为 EVENT_IVS_CITIZEN_PICTURE_COMPARE
    /// </summary>
    public struct NET_DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO
    {
        /// 公共字段
        /// <summary>
        /// 通道号,从0开始
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作, 0表示脉冲, -1表示未知
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件ID
        /// </summary>
        public int nEventID;

        //事件对应字段
        /// <summary>
        /// 人证比对结果,相似度大于等于阈值认为比对成功,true表示成功,false表示失败
        /// </summary>
        [MarshalAs(UnmanagedType.I1)]
        public bool bCompareResult;
        /// <summary>
        /// 两张图片的相似度,单位百分比,范围[1,100]
        /// </summary>
        public byte nSimilarity;
        /// <summary>
        /// 检测阈值,范围[1,100]
        /// </summary>
        public byte nThreshold;
        /// <summary>
        /// 性别
        /// </summary>
        public EM_CITIZENIDCARD_SEX_TYPE emSex;
        /// <summary>
        /// 0 无效数据
        /// 1 汉族
        /// 2 蒙古族
        /// 3 回族
        /// 4 藏族
        /// 5 维吾尔族
        /// 6 苗族
        /// 7 彝族
        /// 8 壮族
        /// 9 布依族
        /// 10 朝鲜族
        /// 11 满族
        /// 12 侗族
        /// 13 瑶族
        /// 14 白族
        /// 15 土家族
        /// 16 哈尼族
        /// 17 哈萨克族
        /// 18 傣族
        /// 19 黎族
        /// 20 傈僳族
        /// 21 佤族
        /// 22 畲族
        /// 23 高山族
        /// 24 拉祜族
        /// 25 水族
        /// 26 东乡族
        /// 27 纳西族
        /// 28 景颇族
        /// 29 柯尔克孜族
        /// 30 土族
        /// 31 达斡尔族
        /// 32 仫佬族
        /// 33 羌族
        /// 34 布朗族
        /// 35 撒拉族
        /// 36 毛南族
        /// 37 仡佬族
        /// 38 锡伯族
        /// 39 阿昌族
        /// 40 普米族
        /// 41 塔吉克族
        /// 42 怒族
        /// 43 乌孜别克族
        /// 44 俄罗斯族
        /// 45 鄂温克族
        /// 46 德昂族
        /// 47 保安族
        /// 48 裕固族
        /// 49 京族
        /// 50 塔塔尔族
        /// 51 独龙族
        /// 52 鄂伦春族
        /// 53 赫哲族
        /// 54 门巴族
        /// 55 珞巴族
        /// 56 基诺族
        /// </summary>
        public int nECType;

        /// <summary>
        /// 居民姓名    
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCitizen;
        /// <summary>
        /// 住址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szAddress;
        /// <summary>
        /// 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNumber;
        /// <summary>
        /// 签发机关
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szAuthority;
        /// <summary>
        /// 出生日期(年月日)
        /// </summary>
        public NET_TIME stuBirth;
        /// <summary>
        /// 有效期限起始日期(年月日)
        /// </summary>
        public NET_TIME stuValidityStart;
        /// <summary>
        /// 该值为 TRUE, 截止日期 表示长期有效,此时 stuValidityEnd 值无意义;该值为 FALSE, 此时 截止日期 查看 stuValidityEnd 值
        /// </summary>
        public bool bLongTimeValidFlag;
        /// <summary>
        /// 有效期限结束日期(年月日)
        /// </summary>
        public NET_TIME stuValidityEnd;
        /// <summary>
        /// 图片信息，第一张为拍摄照片，第二张为照片
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public CITIZEN_PICTURE_COMPARE_IMAGE_INFO[] stuImageInfo;
        /// <summary>
        /// IC卡号
        /// 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;
        /// <summary>
        /// 手机号（比对时先输入手机号）
        /// 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szCellPhone;
        /// <summary>
        /// 扩展信息
        /// 
        /// </summary>
        public NET_EXTENSION_INFO stuExtensionInfo;
        /// <summary>
        /// 扩展图片信息
        /// 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public CITIZEN_PICTURE_COMPARE_IMAGE_INFO_EX[] stuImageInfoEx;
        /// <summary>
        /// 呼叫号码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szCallNumber;
        /// <summary>
        /// 开门方式（人证照片或者人证
        /// </summary>
        public EM_ACCESS_DOOROPEN_METHOD emDoorOpenMethod;
        /// <summary>
        /// 事件ID,用于不同事件进行关联
        /// </summary>
	    public uint nEventGroupID;
        /// <summary>
        /// 事件类型：0：人证比对结果	1：人证人脸采集 2：访客登记 3：人脸权限下发 4：人证人脸底库查询
        /// </summary>
	    public uint nEventType;
        /// <summary>
        /// 人证人脸采集时人员ID
        /// </summary>
	    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// 楼号
        /// </summary>
	    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szBuildingNo;
        /// <summary>
        /// 单元号
        /// </summary>
	    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szBuildingUnitNo;
        /// <summary>
        /// 房间号
        /// </summary>
	    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szBuildingRoomNo;
        /// <summary>
        /// 人脸序号
        /// </summary>
	    public uint nFaceIndex;
        /// <summary>
        /// 口罩状态
        /// </summary>
	    public EM_MASK_STATE_TYPE emMask;
        public bool bManTemperature;           // 人员温度信息是否有效
        public NET_MAN_TEMPERATURE_INFO stuManTemperatureInfo;     // 人员温度信息,  为TRUE 时有效
        public double dbBulkOilQuantity;           // 散装油量 
        public int nScore;                             // 人脸质量评分
        public IntPtr pstuCardNoArray;                  // 卡号数组信息,参考NET_CARDNOARRAY_INFO
        public IntPtr pstuFingerPrint;                  // 数组信息,参考NET_CARDNOARRAY_INFO
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szIDPhysicalNumber;				// 物理证号（证序列号）
        /// <summary>
        /// 卡类型
        /// Card type
        /// </summary>
        public EM_CARD_TYPE emCardType;
        /// <summary>
        /// 卡类型数组个数
        /// Number of card type arrays
        /// </summary>
        public int nCardTypeNum;
        /// <summary>
        /// 卡类型数组
        /// Card type array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public EM_CARD_TYPE[] arrCardTypeArray;
        /// <summary>
        /// 访客人数
        /// Visitor Number
        /// </summary>
        public uint nVisitorNumber;
        /// <summary>
        /// 访客车牌
        /// Traffic Plate
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szTrafficPlate;
        /// <summary>
        /// 被访者者姓名，人证登记场景使用
        /// Respondents Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRespondentsName;
        /// <summary>
        /// 用于记录学生学号默认”FFFFFF”,若为学工号上报，则填对应学工号信息
        /// It is used to record the default student ID "FFFFFF". If the student ID is reported by the student ID, fill in the corresponding student ID information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szStudentNum;
    }

    /// <summary>
    /// 人证对比图片信息
    /// </summary>
    public struct CITIZEN_PICTURE_COMPARE_IMAGE_INFO
    {
        /// <summary>
        /// 文件在二进制数据块中的偏移位置, 单位:字节
        /// </summary>
        public uint dwOffSet;
        /// <summary>
        /// 文件大小, 单位:字节
        /// </summary>
        public uint dwFileLenth;
        /// <summary>
        /// 图片宽度, 单位:像素
        /// </summary>
        public ushort wWidth;
        /// <summary>
        /// 图片高度, 单位:像素
        /// </summary>
        public ushort wHeight;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 人脸图类型
    /// 
    /// </summary>
    public enum NET_EM_CITIZEN_PICTURE_COMPARE_TYPE
    {
        /// <summary>
        /// 未知
        /// 
        /// </summary>
        UNKNOWN = -1,
        /// <summary>
        /// 本地人脸库图
        /// 
        /// </summary>
        LOCAL,
        /// <summary>
        /// 人脸抠图
        /// 
        /// </summary>
        FACEMAP,
    }
    /// <summary>
    /// 人证对比扩展图片信息
    /// 
    /// </summary>
    public struct CITIZEN_PICTURE_COMPARE_IMAGE_INFO_EX
    {
        /// <summary>
        /// 人脸图类型
        /// 
        /// </summary>
        public NET_EM_CITIZEN_PICTURE_COMPARE_TYPE emType;
        /// <summary>
        /// 文件在二进制数据块中的偏移位置, 单位:字节
        /// 
        /// </summary>
        public uint dwOffSet;
        /// <summary>
        /// 文件大小, 单位:字节
        /// 
        /// </summary>
        public uint dwFileLenth;
        /// <summary>
        /// 图片宽度, 单位:像素
        /// 
        /// </summary>
        public ushort wWidth;
        /// <summary>
        /// 图片高度, 单位:像素
        /// 
        /// </summary>
        public ushort wHeight;
        /// <summary>
        /// 保留字节
        /// 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] byReserved;
    }

    public enum EM_CITIZENIDCARD_SEX_TYPE
    {
        UNKNOWN,          // 未知
        MALE,             // 男
        FEMALE,           // 女
        UNTOLD,           // 未说明   
    }

    /// <summary>
    /// human image info
    /// 人体图片信息
    /// </summary>
    public struct NET_HUMAN_IMAGE_INFO
    {
        /// <summary>
        /// offset
        /// 偏移
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// length
        /// 图片大小,单位字节
        /// </summary>
        public uint nLength;
        /// <summary>
        /// width
        /// 图片宽度
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// height
        /// 图片高度
        /// </summary>
        public uint nHeight;
        /// <summary>
        /// image serial number
        /// 在上传图片数据中的图片序号
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// reserved byte
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 52)]
        public byte[] byReserved;
    }

    /// <summary>
    /// face image info
    /// 人脸图片信息
    /// </summary>
    public struct NET_FACE_IMAGE_INFO
    {
        /// <summary>
        /// offset
        /// 偏移
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// length
        /// 图片大小,单位字节
        /// </summary>
        public uint nLength;
        /// <summary>
        /// width
        /// 图片宽度
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// height
        /// 图片高度
        /// </summary>
        public uint nHeight;
        /// <summary>
        /// image serial number
        /// 在上传图片数据中的图片序号
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// reserved byte
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 52)]
        public byte[] byReserved;
    }

    /// <summary>
    /// scene image info
    /// 全景广角图
    /// </summary>
    public struct NET_SCENE_IMAGE_INFO
    {
        /// <summary>
        /// offset
        /// 偏移
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// length
        /// 图片大小,单位字节
        /// </summary>
        public uint nLength;
        /// <summary>
        /// width
        /// 图片宽度
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// height
        /// 图片高度
        /// </summary>
        public uint nHeight;
        /// <summary>
        /// image serial number
        /// 在上传图片数据中的图片序号
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// reserved byte
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 52)]
        public byte[] byReserved;
    }

    /// <summary>
    /// face scene image info
    /// 人脸全景图
    /// </summary>
    public struct NET_FACE_SCENE_IMAGE
    {
        /// <summary>
        /// offset
        /// 偏移
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// length
        /// 图片大小,单位字节
        /// </summary>
        public uint nLength;
        /// <summary>
        /// width
        /// 图片宽度
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// height
        /// 图片高度
        /// </summary>
        public uint nHeight;
        /// <summary>
        /// image serial number
        /// 在上传图片数据中的图片序号
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// reserved byte
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 52)]
        public byte[] byReserved;
    }

    // 图片类型
    public enum EM_IMAGE_TYPE_EX2
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_IMAGE_TYPE_UNKNOWN,
        /// <summary>
        /// 全景广角度
        /// Panoramic wide angle
        /// </summary>
        EM_IMAGE_TYPE_SCENE_IMAGE,
        /// <summary>
        /// 大图
        /// Large picture
        /// </summary>
        EM_IMAGE_TYPE_GLOBAL_SCENE,
        /// <summary>
        /// 大图（全景图）的缩略图
        /// Thumbnail of large image (panoramic image)
        /// </summary>
        EM_IMAGE_TYPE_THUM_IMAGE,
        /// <summary>
        /// 人脸全景图
        /// Panoramic image of human face
        /// </summary>
        EM_IMAGE_TYPE_FACE_SCENE_IMAGE,
        /// <summary>
        /// 人脸图
        /// face image
        /// </summary>
        EM_IMAGE_TYPE_FACE_IMAGE,
        /// <summary>
        /// 人体图
        /// Human body image
        /// </summary>
        EM_IMAGE_TYPE_HUMAN_IMAGE,
        /// <summary>
        /// 与最优人脸同画面的人体图
        /// Human body image with the same picture as the optimal face
        /// </summary>
        EM_IMAGE_TYPE_ALONG_WITH_FACE_HUMAN_IMAGE,
        /// <summary>
        /// 与最优人脸同画面人体的全景图
        /// A panoramic view of the human body in the same picture as the optimal face
        /// </summary>
        EM_IMAGE_TYPE_ALONG_WITH_FACE_HUMAN_SCENE_IMAGE,
        /// <summary>
        /// 车位抠图
        /// Parking space cutout
        /// </summary>
        EM_IMAGE_TYPE_PARKING_IMAGE,
        /// <summary>
        /// 车身特写抠图
        /// Close-up cutout of car body
        /// </summary>
        EM_IMAGE_TYPE_BINARIZED_PLATE,
        /// <summary>
        /// 格口抠图
        /// Grid cutout
        /// </summary>
        EM_IMAGE_TYPE_DEPOSIT_IMAGE_INFO,
        /// <summary>
        /// / 车牌特写抠图
        /// / Plate
        /// </summary>
        EM_IMAGE_TYPE_PLATE,
        /// <summary>
        /// / 车身特写抠图
        /// / VehicleBody
        /// </summary>
        EM_IMAGE_TYPE_VEHICLEBODY,
        /// <summary>
        /// / 代表主驾驶员人脸抠图
        /// / DriverFace
        /// </summary>
        EM_IMAGE_TYPE_DRIVERFACE,
    }

    // 图片信息
    public struct NET_IMAGE_INFO_EX2
    {
        /// <summary>
        /// 图片类型
        /// Picture type
        /// </summary>
        public EM_IMAGE_TYPE_EX2 emType;
        /// <summary>
        /// 在二进制数据块中的偏移
        /// Offset in the binary data block
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 图片大小,单位:字节
        /// Picture size, unit: byte
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 用于字节对齐
        /// for byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string byReserverd;
        /// <summary>
        /// 图片存储位置
        /// Picture storage location
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
    }

    // 检测到的人的信息
    public enum EM_DETECT_OBJECT
    {
        UNKNOWN,                   // 未知信息
        HUMAN_BODY_AND_FACE,       // 人体和人脸都有
        HUMAN_BODY,                // 仅有人体
        HUMAN_FACE,             // 仅有人脸
    }

    // 衣服颜色
    public enum EM_CLOTHES_COLOR
    {
        UNKNOWN,       // 未知
        WHITE,         // 白色
        ORANGE,        // 橙色
        PINK,          // 粉色
        BLACK,         // 黑色
        RED,           // 红色
        YELLOW,        // 黄色
        GRAY,          // 灰色
        BLUE,          // 蓝色
        GREEN,         // 绿色 
        PURPLE,        // 紫色
        BROWN,         // 棕色
        /// <summary>
        /// 深橙色
        /// Dark orange
        /// </summary>
        EM_CLOTHES_COLOR_DARKORANGE,
        /// <summary>
        /// 其他颜色(该选项设备协议已不支持, 此处为了兼容保留)
        /// Other (This option is no longer supported by device protocol. It is reserved here for compatibility)
        /// </summary>
        EM_CLOTHES_COLOR_OTHER,
        /// <summary>
        /// 银色
        /// Sliver
        /// </summary>
        EM_CLOTHES_COLOR_SILVER,
        /// <summary>
        /// 暗紫罗兰色
        /// Dark violet
        /// </summary>
        EM_CLOTHES_COLOR_DARKVIOLET,
        /// <summary>
        /// 栗色
        /// Marron
        /// </summary>
        EM_CLOTHES_COLOR_MARRON,
        /// <summary>
        /// 暗灰色
        /// Dimgray
        /// </summary>
        EM_CLOTHES_COLOR_DIMGRAY,
        /// <summary>
        /// 白烟色
        /// White smoke
        /// </summary>
        EM_CLOTHES_COLOR_WHITESMOKE,
        /// <summary>
        /// 浅玫瑰色
        /// Mistyr rose
        /// </summary>
        EM_CLOTHES_COLOR_MISTYROSE,
        /// <summary>
        /// 番茄红色
        /// Tomato
        /// </summary>
        EM_CLOTHES_COLOR_TOMATO,
        /// <summary>
        /// 橄榄色
        /// Olive
        /// </summary>
        EM_CLOTHES_COLOR_OLIVE,
        /// <summary>
        /// 金色
        /// Glod
        /// </summary>
        EM_CLOTHES_COLOR_GLOD,
        /// <summary>
        /// 暗橄榄绿色
        /// Dark lolive green
        /// </summary>
        EM_CLOTHES_COLOR_DARKOLIVEGREEN,
        /// <summary>
        /// 黄绿色
        /// Chartreuse
        /// </summary>
        EM_CLOTHES_COLOR_CHARTREUSE,
        /// <summary>
        /// 绿黄色
        /// Green yellow
        /// </summary>
        EM_CLOTHES_COLOR_GREENYELLOW,
        /// <summary>
        /// 森林绿色
        /// Forest green
        /// </summary>
        EM_CLOTHES_COLOR_FORESTGREEN,
        /// <summary>
        /// 海洋绿色
        /// Sea green
        /// </summary>
        EM_CLOTHES_COLOR_SEAGREEN,
        /// <summary>
        /// 深天蓝色
        /// Deep sky blue
        /// </summary>
        EM_CLOTHES_COLOR_DEEPSKYBLUE,
        /// <summary>
        /// 青色
        /// Cyan
        /// </summary>
        EM_CLOTHES_COLOR_CYAN,
        /// <summary>
        /// 浅绿色
        /// Light green
        /// </summary>
        EM_CLOTHES_COLOR_LIGHTGREEN,
    }

    //上衣类型
    public enum EM_COAT_TYPE
    {
        UNKNOWN,           // 未知
        LONG_SLEEVE,       // 长袖
        COTTA,             // 短袖
    }

    // 裤子类型
    public enum EM_TROUSERS_TYPE
    {
        UNKNOWN,       // 未知
        TROUSERS,      // 长裤
        SHORTS,        // 短裤
        SKIRT,         // 裙子
    }

    // 是否戴帽子
    public enum EM_HAS_HAT
    {
        UNKNOWN,             // 未知
        NO,                  // 不戴帽子
        YES,                 // 戴帽子
    }

    // 是否戴包(包括背包或拎包)
    public enum EM_HAS_BAG
    {
        UNKNOWN,             // 未知
        NO,                  // 不带包
        YES,                 // 带包
    }

    // 性别
    public enum EM_SEX_TYPE
    {
        UNKNOWN,                    //未知
        MALE,                           //男性
        FEMALE,						//女性
    }

    // 角度
    public enum EM_ANGLE_TYPE
    {
        UNKNOWN = 0,            // 未知
        FRONT,                          // 正面
        SIDE,                               // 侧面
        BACK,					        // 背面
    }

    // 是否打伞
    public enum EM_HAS_UMBRELLA
    {
        UNKNOWN,                    // 未知
        NO,                             // 未打伞
        YES,			                    // 打伞
    }

    /// <summary>
    /// 包类型
    /// bag type
    /// </summary>
    public enum EM_BAG_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_BAG_UNKNOWN,
        /// <summary>
        /// 手提包
        /// hand bag
        /// </summary>
        EM_BAG_HANDBAG,
        /// <summary>
        /// 肩包
        /// shoulder bag
        /// </summary>
        EM_BAG_SHOULDERBAG,
        /// <summary>
        /// 背包
        /// knapsack
        /// </summary>
        EM_BAG_KNAPSACK,
        /// <summary>
        /// 拉杆箱
        /// drawar box
        /// </summary>
        EM_BAG_DRAWBARBOX,
        /// <summary>
        /// 腰包
        /// waist pack
        /// </summary>
        EM_BAG_WAISTPACK,
        /// <summary>
        /// 无包
        /// no bag
        /// </summary>
        EM_BAG_NONE,
    }

    /// <summary>
    /// 衣服图案
    /// clothes pattern
    /// </summary>
    public enum EM_CLOTHES_PATTERN
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_CLOTHES_PATTERN_UNKNOWN,
        /// <summary>
        /// 纯色
        /// pure color
        /// </summary>
        EM_CLOTHES_PATTERN_PURE,
        /// <summary>
        /// 条纹
        /// Stripe
        /// </summary>
        EM_CLOTHES_PATTERN_STRIPE,
        /// <summary>
        /// 图案
        /// Pattern
        /// </summary>
        EM_CLOTHES_PATTERN_PATTERN,
        /// <summary>
        /// 缝隙
        /// Gap
        /// </summary>
        EM_CLOTHES_PATTERN_GAP,
        /// <summary>
        /// 格子
        /// Lattice
        /// </summary>
        EM_CLOTHES_PATTERN_LATTICE,
        /// <summary>
        /// 拼接
        /// split join
        /// </summary>
        EM_CLOTHES_PATTERN_SPLITJOIN,
        /// <summary>
        /// 碎花
        /// floral
        /// </summary>
        EM_CLOTHES_PATTERN_FLORAL,
    }

    /// <summary>
    /// 头发样式
    /// hair style
    /// </summary>
    public enum EM_HAIR_STYLE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_HAIR_UNKNOWN = 0,
        /// <summary>
        /// 长发
        /// long hair
        /// </summary>
        EM_HAIR_LONG_HAIR,
        /// <summary>
        /// 短发
        /// short hair
        /// </summary>
        EM_HAIR_SHORT_HAIR,
        /// <summary>
        /// 马尾
        /// ponytail
        /// </summary>
        EM_HAIR_PONYTAIL,
        /// <summary>
        /// 盘发
        /// updo
        /// </summary>
        EM_HAIR_UPDO,
        /// <summary>
        /// 头部被遮挡
        /// head blocked
        /// </summary>
        EM_HAIR_HEAD_BLOCKED,
        /// <summary>
        /// 无头发
        /// no hair
        /// </summary>
        EM_HAIR_NONE,
    }

    // 帽子类型
    public enum EM_CAP_TYPE
    {
        UNKNOWN,            // 未知
        ORDINARY,           // 普通帽子
        HELMET,             // 头盔
        SAFE,			        // 安全帽
    }

    // 人体属性信息
    public struct NET_HUMAN_ATTRIBUTES_INFO
    {
        /// <summary>
        /// 上衣颜色
        /// Coat color
        /// </summary>
        public EM_CLOTHES_COLOR emCoatColor;
        /// <summary>
        /// 上衣类型
        /// Coat type
        /// </summary>
        public EM_COAT_TYPE emCoatType;
        /// <summary>
        /// 裤子颜色
        /// Trousers color
        /// </summary>
        public EM_CLOTHES_COLOR emTrousersColor;
        /// <summary>
        /// 裤子类型
        /// Trousers type
        /// </summary>
        public EM_TROUSERS_TYPE emTrousersType;
        /// <summary>
        /// 是否戴帽子
        /// whether has hat
        /// </summary>
        public EM_HAS_HAT emHasHat;
        /// <summary>
        /// 是否带包
        /// whether has bag
        /// </summary>
        public EM_HAS_BAG emHasBag;
        /// <summary>
        /// 包围盒(8192坐标系)
        /// BoundingBox(8192 coordinates)
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 年龄
        /// Age
        /// </summary>
        public int nAge;
        /// <summary>
        /// 性别
        /// Six
        /// </summary>
        public EM_SEX_TYPE emSex;
        /// <summary>
        /// 角度
        /// Angle
        /// </summary>
        public EM_ANGLE_TYPE emAngle;
        /// <summary>
        /// 是否打伞
        /// Umbrella state
        /// </summary>
        public EM_HAS_UMBRELLA emHasUmbrella;
        /// <summary>
        /// 包类型
        /// Bag type
        /// </summary>
        public EM_BAG_TYPE emBag;
        /// <summary>
        /// 上半身衣服图案
        /// Upper Pattern
        /// </summary>
        public EM_CLOTHES_PATTERN emUpperPattern;
        /// <summary>
        /// 头发样式
        /// Hair style
        /// </summary>
        public EM_HAIR_STYLE emHairStyle;
        /// <summary>
        /// 帽类型
        /// Cap type
        /// </summary>
        public EM_CAP_TYPE emCap;
        /// <summary>
        /// 人体型心(不是包围盒中心), 0-8191相对坐标, 相对于大图
        /// Center of human(not center of bounding box), 0-8191 relative coordinates, relative to large graph
        /// </summary>
        public NET_POINT stuHumanCenter;
        /// <summary>
        /// 是否有反光背心;
        /// Is there a reflective vest
        /// </summary>
        public EM_HAS_VEST emHasVest;
        /// <summary>
        /// 是否佩戴工牌
        /// Whether to wear a badge
        /// </summary>
        public EM_HAS_BADGE emHasBadge;
        /// <summary>
        /// 是否推婴儿车
        /// Whether to push a baby carriage
        /// </summary>
        public EM_HAS_BABYCARRIAGE emHasBabyCarriage;
        /// <summary>
        /// 是否虚检（背景误检，仅头，仅下半身都会判定为虚检）
        /// Whether is error detect or not
        /// </summary>
        public EM_IS_ERRORDETECT emIsErrorDetect;
        /// <summary>
        /// 人体部位是否有头
        /// Whether has head
        /// </summary>
        public EM_HAS_HEAD emHasHead;
        /// <summary>
        /// 人体部位是否有下半身
        /// Whether has down body
        /// </summary>
        public EM_HAS_DOWNBODY emHasDownBody;
        /// <summary>
        /// 姿态置信度，质量评估总分0到100
        /// degree of confidence about Angle, range is [0,100]
        /// </summary>
        public uint nAngleConf;
        /// <summary>
        /// 上衣颜色置信度，质量评估总分0到100
        /// degree of confidence about UpColor, range is [0,100]
        /// </summary>
        public uint nUpColorConf;
        /// <summary>
        /// 下衣颜色置信度，质量评估总分0到100
        /// degree of confidence about DownColor, range is [0,100]
        /// </summary>
        public uint nDownColorConf;
        /// <summary>
        /// 性别置信度，质量评估总分0到100
        /// degree of confidence about Gender, range is [0,100]
        /// </summary>
        public uint nGenderConf;
        /// <summary>
        /// 年龄段置信度，质量评估总分0到100
        /// degree of confidence about Age, range is [0,100]
        /// </summary>
        public uint nAgeConf;
        /// <summary>
        /// 帽子类型置信度，质量评估总分0到100
        /// degree of confidence about HatType, range is [0,100]
        /// </summary>
        public uint nHatTypeConf;
        /// <summary>
        /// 上衣种类置信度，质量评估总分0到100
        /// degree of confidence about UpType, range is [0,100]
        /// </summary>
        public uint nUpTypeConf;
        /// <summary>
        /// 下衣种类置信度，质量评估总分0到100
        /// degree of confidence about DownType, range is [0,100]
        /// </summary>
        public uint nDownTypeConf;
        /// <summary>
        /// 发型种类置信度，质量评估总分0到100
        /// degree of confidence about Hair, range is [0,100]
        /// </summary>
        public uint nHairTypeConf;
        /// <summary>
        /// 人体部位是否有头的置信度，质量评估总分0到100
        /// degree of confidence about HasHead, range is [0,100]
        /// </summary>
        public uint nHasHeadConf;
        /// <summary>
        /// 人体部位是否有下半身置信度，质量评估总分0到100
        /// degree of confidence about HasDownBody, range is [0,100]
        /// </summary>
        public uint nHasDownBodyConf;
        /// <summary>
        /// 制服类型置信度，质量评估总分0到100
        /// degree of confidence about UniformStyle, range is [0,100]
        /// </summary>
        public uint nUniformStyleConf;
        /// <summary>
        /// 上衣类型，emCoatType实现和协议不一致，兼容处理，
        /// 0:未知 1:长袖 2:短袖 3:长款大衣 4:夹克及牛仔服 5:T恤；
        /// 6:运动装 7:羽绒服 8:衬衫 9:连衣裙 10:西装 11:毛衣 12:无袖 13:背心
        /// Coat type, emCoatType implementation is inconsistent with the protocol
        /// 0:Unknown 1:Long sleeve 2:Short sleeve 3:Long coat 4:Jacket and jeans 5: T-shirt
        /// 6:Sportswear 7:Down-filled coat 8:shirt 9:Dress 10:suit 11:sweater 12:Sleeveless 13:vest
        /// </summary>
        public sbyte nCoatType;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved;
    }

    // 人脸属性
    public struct NET_FACE_ATTRIBUTE
    {
        public EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex;                     // 性别
        public int nAge;                       // 年龄,-1表示该字段数据无效
        public uint nFeatureValidNum;           // 目标特征数组有效个数,与 emFeature 结合使用
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE[] emFeatures;   // 目标特征数组,与 nFeatureValidNum 结合使用
        /// <summary>
        /// Reserved
        /// 保留字节,留待扩展.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        public EM_EYE_STATE_TYPE emEye;                        // 眼睛状态
        public EM_MOUTH_STATE_TYPE emMouth;                    // 嘴巴状态
        public EM_MASK_STATE_TYPE emMask;                      // 口罩状态
        public EM_BEARD_STATE_TYPE emBeard;                    // 胡子状态
        public int nAttractive;                // 魅力值, 0未识别，识别时范围1-100,得分高魅力高
        public NET_RECT stuBoundingBox;                // 包围盒(8192坐标系)
        /// <summary>
        /// 人脸在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角
        /// 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效
        /// euler angle of face in the capture picture, nPitch:pitch of the head, nYaw: yaw of the head, nRoll:roll of the head
        /// range of the angle value is [-90,90], stuFaceCaptureAngle is invalid if the three angles are 999.
        /// </summary>
        public NET_EULER_ANGLE stuFaceCaptureAngle;
        /// <summary>
        /// 人脸抓拍质量分数,范围 0~10000
        /// The quality of face picture.The range is 0~10000
        /// </summary>
        public uint nFaceQuality;
        /// <summary>
        /// 人脸对齐得分分数,范围 0~10000,-1为无效值
        /// The score of face picture align.The range is 0~10000,-1 is invalid
        /// </summary>
        public int nFaceAlignScore;
        /// <summary>
        /// 人脸清晰度分数,范围 0~10000,-1为无效值
        /// The score of face picture clarity.The range is 0~10000,-1 is invalid
        /// </summary>
        public int nFaceClarity;
        /// <summary>
        /// 人脸型心(不是包围盒中心), 0-8191相对坐标, 相对于大图
        /// Center of face(not center of bounding box), 0-8191 relative coordinates, relative to large graph
        /// </summary>
        public NET_POINT stuFaceCenter;
        /// <summary>
        /// 是否戴眼镜
        /// Glass type
        /// </summary>
        public EM_FACEDETECT_GLASSES_TYPE emGlass;
        /// <summary>
        /// 目标检测置信度，取值0~100
        /// degree of confidence about Face, range is [0,100]
        /// </summary>
        public uint nFaceDetectConf;
        /// <summary>
        /// 算法人脸分析时的实际人脸图片尺寸, 宽高为0时无效
        /// Actual face image size during algorithm face analysis.
        /// </summary>
        public NET_FACE_ORIGINAL_SIZE stuOriginalSize;
        /// <summary>
        /// 人脸抓拍角度(Angle)状态
        /// Face capture angle status
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public int[] arrAngleStatus;
        /// <summary>
        /// 人脸光照值,范围[0,255]
        /// Face illumination value, range[0,255]
        /// </summary>
        public uint nIlluminationScore;
        /// <summary>
        /// 人脸左眼遮挡置信度,范围[0,100]
        /// Left eye occlusion confidence, range[0,100]
        /// </summary>
        public sbyte nLeftEyeCoverConf;
        /// <summary>
        /// 人脸左脸颊遮挡置信度,范围[0,100]
        /// Left cheek occlusion confidence, range[0,100]
        /// </summary>
        public sbyte nLeftCheekCoverConf;
        /// <summary>
        /// 人脸嘴巴遮挡置信度,范围[0,100]
        /// Confidence range of face occlusion [0,100]
        /// </summary>
        public sbyte nMouthCoverConf;
        /// <summary>
        /// 人脸右眼遮挡置信度,范围[0,100]
        /// Confidence range of face right eye occlusion[0,100]
        /// </summary>
        public sbyte nRightEyeCoverConf;
        /// <summary>
        /// 人脸右脸颊遮挡置信度,范围[0,100]
        /// Confidence range of face right cheek occlusion[0,100]
        /// </summary>
        public sbyte nRightCheekCoverConf;
        /// <summary>
        /// 人脸下巴遮挡置信度,范围[0,100]
        /// Confidence range of facial chin occlusion[0,100]
        /// </summary>
        public sbyte nChinCoverConf;
        /// <summary>
        /// 人脸完整度评价 人脸完整度评价，取值0和1 0为不完整（轮廓超出图像边界） 1为完整
        /// Face integrity evaluation face, 0:incomplete, 1:complete
        /// </summary>
        public sbyte nIsCompleteFace;
        /// <summary>
        /// 人脸图片饱和度评分,范围[0,100]
        /// Saturation score range of face image [0,100]
        /// </summary>
        public sbyte nSaturationScore;
        /// <summary>
        /// 人脸额头遮挡置信度,范围[0,100]
        /// Confidence range of face and forehead occlusion[0,100]
        /// </summary>
        public sbyte nBrowCoverConf;
        /// <summary>
        /// 人脸鼻子遮挡置信度,范围[0,100]
        /// Confidence range of face nose occlusion [0,100]
        /// </summary>
        public sbyte nNoseCoverConf;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved0;
        /// <summary>
        /// 年龄段
        /// Age Segmentation
        /// </summary>
        public EM_AGE_SEG emAgeSeg;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 36)]
        public byte[] bReserved;
    }

    // 当前人体特征是由什么事件产生的
    public struct NET_HUMANTRAIT_EXTENSION_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string szAdditionalCode;                           // 当前人体特征是由什么事件产生的,设备刚好返回32个字节数据，多加4个字节用于字节对齐和添加字符结束符
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;                                 // 保留字节
    }

    /// <summary>
    /// 判断是否合规的属性列表信息
    /// Attribute list information for judging compliance
    /// </summary>
    public enum EM_COMPLIANTDETAIL_TYPE
    {
        /// <summary>
        /// 未知
        /// UNKNOWN
        /// </summary>
        EM_COMPLIANTDETAIL_UNKNOWN,
        /// <summary>
        /// 面具
        /// MASK
        /// </summary>
        EM_COMPLIANTDETAIL_MASK,
        /// <summary>
        /// 头盔
        /// HELMET
        /// </summary>
        EM_COMPLIANTDETAIL_HELMET,
        /// <summary>
        /// 反光背心
        /// VEST
        /// </summary>
        EM_COMPLIANTDETAIL_VEST,
        /// <summary>
        /// 反光眼镜
        /// Reflective glasses
        /// </summary>
        EM_COMPLIANTDETAIL_GLASSESS,
        /// <summary>
        /// 上装颜色
        /// COATCOLOR
        /// </summary>
        EM_COMPLIANTDETAIL_COATCOLOR,
        /// <summary>
        /// 下装颜色
        /// TROUSESCOLOR
        /// </summary>
        EM_COMPLIANTDETAIL_TROUSESCOLOR,
    }

    /// <summary>
    /// 关联的人体消息类型
    /// The type of the Human Posture
    /// </summary>
    public enum EM_HUMAN_POSTURE_TYPE
    {
        /// <summary>
        /// 未知
        /// UNKNOWN
        /// </summary>
        EM_HUMAN_POSTURE_UNKNOWN,
        /// <summary>
        /// 与最优人脸同画面的人体
        /// ALONG WITH FACE
        /// </summary>
        EM_HUMAN_POSTURE_ALONG_WITH_FACE,
    }

    /// <summary>
    /// 图像成像光源类型
    /// Imaging light type
    /// </summary>
    public enum EM_IMAGE_LIGHT_TYPE
    {
        /// <summary>
        /// 未知
        /// UNKNOWN
        /// </summary>
        EM_IMAGE_LIGHT_TYPE_UNKNOWN = 0,
        /// <summary>
        /// 可见光成像
        /// Visible imaging
        /// </summary>
        EM_IMAGE_LIGHT_TYPE_VISIBLE,
        /// <summary>
        /// 近红外成像(灰度图)
        /// Near Infrared
        /// </summary>
        EM_IMAGE_LIGHT_TYPE_NEAR_INFRARED,
        /// <summary>
        /// 热红外成像(伪彩色)
        /// Thermal Infrared
        /// </summary>
        EM_IMAGE_LIGHT_TYPE_THERMAL_INFRARED,
    }

    /// <summary>
    /// 是否有雨披
    /// Whether has raincoat
    /// </summary>
    public enum EM_HAS_RAINCOAT
    {
        /// <summary>
        /// 未知
        /// UNKNOWN
        /// </summary>
        EM_HAS_RAINCOAT_UNKNOWN = 0,
        /// <summary>
        /// 无
        /// NO
        /// </summary>
        EM_HAS_RAINCOAT_NO,
        /// <summary>
        /// 有
        /// YES
        /// </summary>
        EM_HAS_RAINCOAT_YES,
    }

    /// <summary>
    /// 是否与其他目标关联
    /// Whether is associated with record source
    /// </summary>
    public enum EM_ASSOCIATED_RECORD_SOURCE
    {
        /// <summary>
        /// 未知
        /// UNKNOWN
        /// </summary>
        EM_ASSOCIATED_RECORD_SOURCE_UNKNOWN = -1,
        /// <summary>
        /// 未关联
        /// None
        /// </summary>
        EM_ASSOCIATED_RECORD_SOURCE_NONE,
        /// <summary>
        /// 与人体有关联成功
        /// human
        /// </summary>
        EM_ASSOCIATED_RECORD_SOURCE_HUMAN,
        /// <summary>
        /// 与机动车过车有关联
        /// motor vehicle passing
        /// </summary>
        EM_ASSOCIATED_RECORD_SOURCE_MOTOR_VEHICLE_PASSING,
        /// <summary>
        /// 与机动车违章有关联
        /// motor vehicle violation
        /// </summary>
        EM_ASSOCIATED_RECORD_SOURCE_MOTOR_VEHICLE_VIOLATION,
        /// <summary>
        /// 与结构化机动车有关联
        /// structured motor vehicle
        /// </summary>
        EM_ASSOCIATED_RECORD_SOURCE_STRUCTURED_MOTOR_VEHICLE,
        /// <summary>
        /// 与人脸有关联
        /// face
        /// </summary>
        EM_ASSOCIATED_RECORD_SOURCE_FACE,
        /// <summary>
        /// 与非机动车有关联
        /// non-motor vehicle
        /// </summary>
        EM_ASSOCIATED_RECORD_SOURCE_NON_MOTOR_VEHICLE,
    }

    /// <summary>
    /// 鞋子类型
    /// shoes type
    /// </summary>
    public enum EM_SHOES_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_SHOES_UNKNOWN,
        /// <summary>
        /// 皮鞋
        /// leather
        /// </summary>
        EM_SHOES_LEATHER,
        /// <summary>
        /// 靴子
        /// boots
        /// </summary>
        EM_SHOES_BOOTS,
        /// <summary>
        /// 休闲鞋
        /// casual
        /// </summary>
        EM_SHOES_CASUAL,
        /// <summary>
        /// 凉鞋
        /// sandals
        /// </summary>
        EM_SHOES_SANDALS,
        /// <summary>
        /// 运动鞋
        /// sneakers
        /// </summary>
        EM_SHOES_SNEAKERS,
        /// <summary>
        /// 拖鞋
        /// slipper
        /// </summary>
        EM_SHOES_SLIPPER,
        /// <summary>
        /// 其他
        /// others
        /// </summary>
        EM_SHOES_OTHERS,
        /// <summary>
        /// 鞋套
        /// shoe cover
        /// </summary>
        EM_SHOES_SHOECOVER,
    }

    /// <summary>
    /// 人体属性信息扩展(原先HUMAN_ATTRIBUTES_INFO预留字段不足，增加扩展结构体)
    /// Extension Human attributes info (Extension of the HUMAN_ATTRIBUTES_INFO)
    /// </summary>
    public struct NET_A_HUMAN_ATTRIBUTES_INFO_EX
    {
        /// <summary>
        /// 是否戴帽子
        /// Whether has raincoat
        /// </summary>
        public EM_HAS_RAINCOAT emHasRainCoat;
        /// <summary>
        /// 口罩颜色
        /// color of mask
        /// </summary>
        public EM_CLOTHES_COLOR emMaskColor;
        /// <summary>
        /// 人体优选分数
        /// Score of the Qe
        /// </summary>
        public uint nQeScore;
        /// <summary>
        /// 目标完整性，0-完整，非0-不完整，视频流时值有效。
        /// Integrality of the target,0-Integrality, other - Not Integrality
        /// </summary>
        public uint nIntegrality;
        /// <summary>
        /// 是否与其他目标关联
        /// Whether is associated with record source
        /// </summary>
        public EM_ASSOCIATED_RECORD_SOURCE emExtRecordSource;
        /// <summary>
        /// 帽子颜色
        /// cap color
        /// </summary>
        public EM_CLOTHES_COLOR emCapColor;
        /// <summary>
        /// 制服类型
        /// Uniform type
        /// </summary>
        public EM_UNIFORM_STYLE emUniformStyle;
        /// <summary>
        /// 人体清晰度分数取值范围 1~100，0为无效值
        /// The value range of human clarity score is 1 ~ 100, and 0 is invalid
        /// </summary>
        public int nHumanClarity;
        /// <summary>
        /// 人体完整度评分
        /// Human integrity score
        /// </summary>
        public int nHumanCompleteScore;
        /// <summary>
        /// 表示当前人体是否曾经关联过人脸
        /// the current human body ever been associated with a face
        /// </summary>
        public bool bIsRelatedFace;
        /// <summary>
        /// 上衣款式
        /// coat style
        /// </summary>
        public EM_COAT_TYPE emCoatStyle;
        /// <summary>
        /// 鞋子款式
        /// shoe Type
        /// </summary>
        public EM_SHOES_TYPE emShoesType;
        /// <summary>
        /// 鞋子颜色
        /// shoe color
        /// </summary>
        public EM_CLOTHES_COLOR emShoesColor;
        /// <summary>
        /// 年龄段
        /// age segmentation
        /// </summary>
        public EM_AGE_SEG emAgeSeg;
        /// <summary>
        /// 口罩状态, -1:未知, 0:未做识别, 1:不带口罩, 2:带口罩
        /// mask state, -1: Unknown, 0: unrecognized, 1: without mask, 2: with mask
        /// </summary>
        public int nMask;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 984)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_HUMANTRAIT(人体特征事件)对应的数据块描述信息 
    /// </summary>
    public struct NET_DEV_EVENT_HUMANTRAIT_INFO
    {
        public int nChannelID;                                   // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                   // 事件名称
        public int nEventID;                                     // 事件ID
        public double PTS;                                          // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                          // 事件发生的时间
        public int nAction;                                      // 1:开始 2:停止
        public EM_CLASS_TYPE emClassType;                                // 智能事件所属大类
        public int nGroupID;                                     // 事件组ID，一次检测的多个人体特征nGroupID相同
        public int nCountInGroup;                                // 一个事件组内的抓拍张数(人体个数),一次检测的多个人体特征nCountInGroup相同
        public int nIndexInGroup;                                // 一个事件组内的抓拍序号，从1开始
        public NET_HUMAN_IMAGE_INFO stuHumanImage;                               // 人体图片信息
        public NET_FACE_IMAGE_INFO stuFaceImage;                                 // 人脸图片信息
        public EM_DETECT_OBJECT emDetectObject;                                  // 检测到的人的信息
        public NET_HUMAN_ATTRIBUTES_INFO stuHumanAttributes;                         // 人体属性
        public NET_SCENE_IMAGE_INFO stuSceneImage;                                // 全景大图信息
        public NET_FACE_ATTRIBUTE stuFaceAttributes;                             // 人脸属性
        public NET_FACE_SCENE_IMAGE stuFaceSceneImage;                           // 人脸全景图
        public NET_EXTENSION_INFO stuExtensionInfo;                             // 扩展信息
        public NET_HUMANTRAIT_EXTENSION_INFO stuHumanTrait;                    // 补充事件，表示当前人体特征是由该事件产生的
        /// <summary>
        /// 人体特征值数据在二进制数据中的位置信息
        /// Position info of human feature data in binary data
        /// </summary>
        public NET_HUMAN_FEATURE_VECTOR_INFO stuHumanFeatureVectorInfo;
        /// <summary>
        /// 人体特征值版本号
        /// Human feature data version
        /// </summary>
        public EM_FEATURE_VERSION emHumanFeatureVersion;
        /// <summary>
        /// 目标特征值数据在二进制数据中的位置信息
        /// Position info of face feature data in binary data
        /// </summary>
        public NET_FACE_FEATURE_VECTOR_INFO stuFaceFeatureVectorInfo;
        /// <summary>
        /// 目标特征值版本号
        /// Face feature data version
        /// </summary>
        public EM_FEATURE_VERSION emFaceFeatureVersion;
        /// <summary>
        /// 合规标记0：不合规，1：合规,没有开启合规检测，无此字段。 此字段已废弃
        /// Compliance flag 0: non-compliant, 1: compliant, compliance check is not turned on, there is no such field. This field is obsolete
        /// </summary>
        public uint nCompliantMark;
        /// <summary>
        /// 判断是否合规的属性列表个数
        /// The number of attribute lists that determine whether they are compliant
        /// </summary>
        public int nCompliantDetailsNum;
        /// <summary>
        /// 判断是否合规的属性列表，不合规检测报不合规的属性字段，合规检测报合规的属性字段，没有开启合规检测，无此字段。
        /// A list of attributes to determine compliance, non-compliance detection reports non-compliance attribute fields, compliance detection reports compliant attribute fields, no compliance detection is enabled, no such field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_COMPLIANTDETAIL_TYPE[] emCompliantDetailType;
        /// <summary>
        /// 关联的人体消息类型列表个数
        /// The number of emHumanPostureType
        /// </summary>
        public int nHumanPostureTypeNum;
        /// <summary>
        /// 关联的人体消息类型列表
        /// A list of The type of the Human Posture
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_HUMAN_POSTURE_TYPE[] emHumanPostureType;
        /// <summary>
        /// 与最优人脸同画面的人体信息，emHumanPostureType包含EM_HUMAN_POSTURE_ALONG_WITH_FACE时有效
        /// Human body image info,when emHumanPostureType contains EM_HUMAN_POSTURE_ALONG_WITH_FACE, it is valid
        /// </summary>
        public NET_HUMAN_IMAGE_INFO stuAlongWithFaceHumanImage;
        /// <summary>
        /// 与最优人脸同画面人体的全景图，emHumanPostureType包含EM_HUMAN_POSTURE_ALONG_WITH_FACE时有效
        /// Scene image info,emHumanPostureType contains EM_HUMAN_POSTURE_ALONG_WITH_FACE, it is valid
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuAlongWithFaceHumanSceneImage;
        /// <summary>
        /// 与最优人脸同画面人体的属性，emHumanPostureType包含EM_HUMAN_POSTURE_ALONG_WITH_FACE时有效
        /// Human attributes,emHumanPostureType contains EM_HUMAN_POSTURE_ALONG_WITH_FACE, it is valid
        /// </summary>
        public NET_HUMAN_ATTRIBUTES_INFO stuAlongWithFaceHumanAttributes;
        /// <summary>
        /// 是否开启合规检测
        /// Is compliance testing enabled
        /// </summary>
        public bool bCompliantMarkEnable;
        /// <summary>
        /// 人体特征值数据在二进制数据中的位置信息
        /// Position info of human feature data in binary data
        /// </summary>
        public NET_HUMAN_FEATURE_VECTOR_INFO stuAlongWithFaceHumanVectorInfo;
        /// <summary>
        /// 人体特征值版本号
        /// Human feature data version
        /// </summary>
        public EM_FEATURE_VERSION emAlongWithFaceHumanVersion;
        /// <summary>
        /// 合规模式: 0-不合规，1-合规，没有开启合规检测，无此字段
        /// Compliance type: 0-non-compliant, 1-compliant, compliance check is not turned on, there is no such field
        /// </summary>
        public uint nCompliantMode;
        /// <summary>
        /// 1:不合规 2:合规
        /// 1: non-compliant 2: compliant
        /// </summary>
        public uint nAlarmCompliance;
        /// <summary>
        /// 目标在视频中出现时的视频帧编号。视频帧编号只能在一个通道内表示唯一，且不连续。视频流时该值有效
        /// The video Sequence When the target appears
        /// </summary>
        public uint nStartSequence;
        /// <summary>
        /// 目标在视频中消失时的视频帧编号。视频帧编号只能在一个通道内表示唯一，且不连续。视频流时该值有效。
        /// The video Sequence When the target disappears
        /// </summary>
        public uint nEndSequence;
        /// <summary>
        /// 图像成像光源类型
        /// Imaging light type
        /// </summary>
        public EM_IMAGE_LIGHT_TYPE emImageLightType;
        /// <summary>
        /// stuHumanAttributes 的扩展
        /// Extension of stuHumanAttributes
        /// </summary>
        public NET_A_HUMAN_ATTRIBUTES_INFO_EX stuHumanAttributesEx;
        /// <summary>
        /// stuAlongWithFaceHumanAttributes 的扩展
        /// Extension of stuAlongWithFaceHumanAttributes
        /// </summary>
        public NET_A_HUMAN_ATTRIBUTES_INFO_EX stuAlongWithFaceHumanAttributesEx;
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 智能物体全局唯一物体标识
        /// Global unique object identification of intelligent object
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szObjectUUID;
        /// <summary>
        /// 人体特征值版本号-字符串
        /// Human feature data version-str
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szHumanFeatureVersion;
        /// <summary>
        /// 目标特征值版本号-字符串
        /// Face feature data version-str
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFaceFeatureVersion;
        /// <summary>
        /// 人体特征值版本号-字符串
        /// Human feature data version-str
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAlongWithFaceHumanVersion;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 智能物体全局唯一物体标识
        /// 有效数据位21位，包含’\0’
        /// 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
        /// 中间14位YYYYMMDDhhmmss:年月日时分秒
        /// 后5位%u%u%u%u%u：物体ID，如00001
        /// Intelligent object global unique object identification
        /// Valid data bits are 21 bits, including '\0'
        /// Top 2 bits %d%d: 01-video clip, 02-picture, 03-file, 99-other
        /// Middle 14 bit yyyymmddhhmmss
        /// Last 5 bits %U%U%U%U%U: object ID, such as 00001
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 22)]
        public string szSerialUUID;
        /// <summary>
        /// 对齐
        /// For align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2)]
        public string szReserved;
        /// <summary>
        /// 图片信息数组 < NET_IMAGE_INFO_EX3 >
        /// Image information array < NET_IMAGE_INFO_EX3 >
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 检测物体具体包含的信息类型: 0: 只包含属性 1: 只包含特征值 2: 属性、特征值都包含 3:属性和特征值都不包含
        /// The specific type of information contained in the detected object: 0: Only contains attributes 1: Only contains feature values 2: Both attributes and feature values contain 3: Neither attributes nor feature values contain
        /// </summary>
        public uint nDetectMode;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 852 - 8)]
        public sbyte[] byReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 852 - 4)]
        public sbyte[] byReserved;
#endif
    }

    /// <summary>
    /// catch a figure type CLIENT_CapturePictureEx interface using
    /// 抓图类型
    /// </summary>
    public enum EM_NET_CAPTURE_FORMATS
    {
        /// <summary>
        /// BMP
        /// BMP
        /// </summary>
        BMP,
        /// <summary>
        /// 100% quality JPEG
        /// 100%质量的JPEG
        /// </summary>
        JPEG,
        /// <summary>
        /// 70% quality JPEG
        /// 70%质量的JPEG
        /// </summary>
        JPEG_70,
        /// <summary>
        /// 50% quality JPEG
        /// 50%质量的JPEG
        /// </summary>                       
        JPEG_50,
        /// <summary>
        /// 30% quality JPEG
        /// 30%质量的JPEG
        /// </summary>
        JPEG_30,
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFIC_RUNREDLIGHT's data
    /// 交通-闯红灯事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_RUNREDLIGHT_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// have being detected object
        /// 对像信息
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// state of traffic light 0:unknown 1:green 2:red 3:yellow
        /// 红绿灯状态 0:未知 1：绿灯 2:红灯 3:黄灯
        /// </summary>
        public int nLightState;
        /// <summary>
        /// speed,km/h
        /// 车速,km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// snap index,such as 3,2,1,1 means the last one,0 means there has eption and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留，字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// snap flags(by bit),0bit:"*",1bit:"Timing",2bit:"Manual",3bit:"Marked",4bit:"Event",5bit:"Mosaic",6bit:"Cutout"
        /// 抓图标志(按位)
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// time of red light starting
        /// 红灯开始时间
        /// </summary>
        public NET_TIME_EX stRedLightUTC;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// red light margin
        /// 红灯容许间隔时间,单位：秒
        /// </summary>
        public byte byRedLightMargin;
        /// <summary>
        /// Align string
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byAlignment;
        /// <summary>
        /// Red light period. The unit is ms. 
        /// 表示红灯周期时间,单位毫秒
        /// </summary>
        public int nRedLightPeriod;
        /// <summary>
        /// GPS info ,use in mobile DVR/NVR
        /// GPS信息
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 928)]
        public byte[] bReserved;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// public info 
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;

        public bool bHasNonMotor; // 是否有非机动车对象
        public NET_VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车对象
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }
    /// <summary>
    /// 火警事件
    /// </summary>
    public struct NET_DEV_EVENT_FIREWARNING_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 事件对应文件信息
        /// The corresponding file info of the event
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 1:开始 2:停止
        /// event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// Uint32 火情编号ID
        /// Uint32 fire status id
        /// </summary>
        public uint nFSID;
        /// <summary>
        /// 图片类型
        /// Picture type
        /// </summary>
        public EM_FIREWARNING_PIC_TYPE emPicType;
        /// <summary>
        /// 是否属于离岗火点检测(TRUE:是 FALSE:不是)
        /// Whether it belongs to off post fire point detection item (TRUE: Yes FALSE: No)
        /// </summary>
        public bool bIsLeaveFireDetect;
        /// <summary>
        /// 图片信息数组
        /// Number of picture information
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Picture information array
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1008 - 8)]
        public byte[] byReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1008 - 4)]
        public byte[] byReserved;
#endif
    }

    /// <summary>
    /// Corresponding to data block description of event type EVENT_IVS_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE
    /// 事件类型 EVENT_IVS_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE (占用应急车道事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO
    {
        /// <summary>
        /// channel id
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:pulse
        /// 0:脉冲事件
        /// </summary>
        public int nAction;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Time stamp(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public uint PTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID 
        /// </summary>
        public int nEventID;
        /// <summary>
        /// lane
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// object info
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// traffic car info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved2;
        /// <summary>
        /// non motor info
        /// 非机动车对象
        /// </summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// Sequence
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// common info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// reserved
        /// 预留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// time struct
    /// 时间信息结构体
    /// </summary>
    public struct NET_TIME_EX
    {
        /// <summary>
        /// Year
        /// 年
        /// </summary>
        public uint dwYear;
        /// <summary>
        /// Month
        /// 月
        /// </summary>
        public uint dwMonth;
        /// <summary>
        /// Day
        /// 日
        /// </summary>
        public uint dwDay;
        /// <summary>
        /// Hour
        /// 时
        /// </summary>
        public uint dwHour;
        /// <summary>
        /// Minute
        /// 分
        /// </summary>
        public uint dwMinute;
        /// <summary>
        /// Second
        /// 秒
        /// </summary>
        public uint dwSecond;
        /// <summary>
        /// Millisecond
        /// 毫秒
        /// </summary>
        public uint dwMillisecond;
        /// <summary>
        /// indicates UTC, invalid when 0
        /// utc时间(获取时0表示无效，非0有效 下发无效)
        /// </summary>
        public uint dwUTC;
        /// <summary>
        /// reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
        public uint[] dwReserved;

        /// <summary>
        /// override tostring function
        /// 重写tostring函数
        /// </summary>
        /// <returns>timer string</returns>
        public override string ToString()
        {
            return string.Format("{0}-{1}-{2} {3}:{4}:{5}.{6}", dwYear.ToString("D4"), dwMonth.ToString("D2"), dwDay.ToString("D2"), dwHour.ToString("D2"), dwMinute.ToString("D2"), dwSecond.ToString("D2"), dwMillisecond.ToString("D3"));
        }

        public string ToShortString()
        {
            return string.Format("{0}-{1}-{2} {3}:{4}:{5}", dwYear.ToString("D4"), dwMonth.ToString("D2"), dwDay.ToString("D2"), dwHour.ToString("D2"), dwMinute.ToString("D2"), dwSecond.ToString("D2"));
        }

        public DateTime ToDateTime()
        {
            try
            {
                return new DateTime((int)dwYear, (int)dwMonth, (int)dwDay, (int)dwHour, (int)dwMinute, (int)dwSecond, (int)dwMillisecond);
            }
            catch
            {
                return DateTime.Now;
            }
        }

        /// <summary>
        /// DateTime change to NET_TIME_EX static funtion.
        /// DateTime转为NET_TIME_EX静态函数
        /// </summary>
        /// <param name="dateTime">datetime</param>
        /// <returns>NET_TIME_EX</returns>
        public static NET_TIME_EX FromDateTime(DateTime dateTime)
        {
            try
            {
                NET_TIME_EX netEx_time = new NET_TIME_EX();
                netEx_time.dwYear = (uint)dateTime.Year;
                netEx_time.dwMonth = (uint)dateTime.Month;
                netEx_time.dwDay = (uint)dateTime.Day;
                netEx_time.dwHour = (uint)dateTime.Hour;
                netEx_time.dwMinute = (uint)dateTime.Minute;
                netEx_time.dwSecond = (uint)dateTime.Second;
                netEx_time.dwMillisecond = (uint)dateTime.Millisecond;
                netEx_time.dwUTC = (uint)dateTime.ToFileTime();
                return netEx_time;
            }
            catch
            {
                return new NET_TIME_EX();
            }
        }
    }

    /// <summary>
    /// Struct of object info for video analysis,4-byte alignment
    /// 物体信息结构体,强制4字节对齐
    /// </summary>
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]
    public struct NET_MSG_OBJECT
    {
        /// <summary>
        /// Object ID,each ID represent a unique object
        /// 物体ID,每个ID表示一个唯一的物体
        /// </summary>
        public int nObjectID;
        /// <summary>
        /// Object type
        /// 物体类型
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szObjectType;
        /// <summary>
        /// Confidence(0~255),a high value indicate a high confidence
        /// 置信度(0~255),值越大表示置信度越高
        /// </summary>
        public int nConfidence;
        /// <summary>
        /// Object action:1:Appear 2:Move 3:Stay 4:Remove 5:Disappear 6:Split 7:Merge 8:Rename
        /// 物体动作:1:Appear 2:Move 3:Stay 4:Remove 5:Disappear 6:Split 7:Merge 8:Rename
        /// </summary>
        public int nAction;
        /// <summary>
        /// BoundingBox
        /// 包围盒
        /// </summary>
        public NET_A_RECT_EX BoundingBox;
        /// <summary>
        /// The shape center of the object
        /// 物体型心
        /// </summary>
        public NET_POINT Center;
        /// <summary>
        /// the number of culminations for the polygon
        /// 多边形顶点个数
        /// </summary>
        public int nPolygonNum;
        /// <summary>
        /// a polygon that have a exactitude figure
        /// 较精确的轮廓多边形
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_POINT[] Contour;
        /// <summary>
        /// The main color of the object;the first byte indicate red value, as byte order as green, blue, transparence, for example:RGB(0,255,0),transparence = 0, rgbaMainColor = 0x00ff0000.
        /// 表示车牌、车身等物体主要颜色；按字节表示,分别为红、绿、蓝和透明度,例如:RGB值为(0,255,0),透明度为0时, 其值为0x00ff0000.
        /// </summary>
        public uint rgbaMainColor;
        /// <summary>
        /// the interrelated text of object,such as number plate,container number
        /// 物体上相关的带0结束符文本,比如车牌,集装箱号等等
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szText;
        /// <summary>
        /// object sub type,different object type has different sub type:Vehicle Category:"Unknown","Motor","Non-Motor","Bus","Bicycle","Motorcycle";Plate Category:"Unknown","mal","Yellow","DoubleYellow","Police","officeguard"
        /// 物体子类别,根据不同的物体类型,可以取以下子类型:Vehicle Category:"Unknown"  未知,"Motor" 机动车,"Non-Motor":非机动车,"Bus": 公交车;Plate Category："Unknown" 未知,"Normal" 蓝牌黑牌,"Yellow" 黄牌,"DoubleYellow" 双层黄尾牌,"Police" 警牌
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 62)]
        public byte[] szObjectSubType;
        /// <summary>
        /// the index of car logo
        /// 车标索引
        /// </summary>
        public ushort wColorLogoIndex;
        /// <summary>
        /// Specifies the sub-brand of vehicle,the real value can be found in a mapping table from the development manual
        /// 车辆子品牌 需要通过映射表得到真正的子品牌 映射表详见开发手册
        /// </summary>
        public ushort wSubBrand;
        /// <summary>
        /// reserved
        /// 保留，字节对齐
        /// </summary>
        public byte byReserved1;
        /// <summary>
        /// picture info enable
        /// 是否有物体对应图片文件信息
        /// </summary>
        public byte bPicEnble;
        /// <summary>
        /// picture info
        /// 物体对应图片信息
        /// </summary>
        public NET_PIC_INFO stPicInfo;
        /// <summary>
        /// is shot frame
        /// 是否是抓拍张的识别结果
        /// </summary>
        public byte bShotFrame;
        /// <summary>
        /// rgbaMainColor is enable
        /// 物体颜色(rgbaMainColor)是否可用
        /// </summary>
        public byte bColor;
        /// <summary>
        /// Reserved
        /// 保留，字节对齐
        /// </summary>
        public byte byReserved2;
        /// <summary>
        /// Time indicates the type of detailed instructions,EM_TIME_TYP
        /// 时间表示类型,详见EM_TIME_TYPE说明
        /// </summary>
        public byte byTimeType;
        /// <summary>
        /// in view of the video compression,current time(when object snap or reconfnition, the frame will be attached to the frame in a video or pictures,means the frame in the original video of the time)
        /// 针对视频浓缩,当前时间戳（物体抓拍或识别时,会将此识别智能帧附在一个视频帧或jpeg图片中,此帧所在原始视频中的出现时间）
        /// </summary>
        public NET_TIME_EX stuCurrentTime;
        /// <summary>
        /// strart time(object appearing for the first time)
        /// 开始时间戳（物体开始出现时）
        /// </summary>
        public NET_TIME_EX stuStartTime;
        /// <summary>
        /// end time(object appearing for the last time) 
        /// 结束时间戳（物体最后出现时）
        /// </summary>
        public NET_TIME_EX stuEndTime;
        /// <summary>
        /// original bounding box(absolute coordinates)
        /// 包围盒(绝对坐标)
        /// </summary>
        public NET_A_RECT_EX stuOriginalBoundingBox;
        /// <summary>
        /// sign bounding box coordinate
        /// 车标坐标包围盒
        /// </summary>
        public NET_A_RECT_EX stuSignBoundingBox;
        /// <summary>
        /// The current frame number (frames when grabbing the object)
        /// 当前帧序号（抓下这个物体时的帧）
        /// </summary>
        public uint dwCurrentSequence;
        /// <summary>
        /// Start frame number (object appeared When the frame number
        /// 开始帧序号（物体开始出现时的帧序号）
        /// </summary>
        public uint dwBeginSequence;
        /// <summary>
        /// The end of the frame number (when the object disappearing Frame number)
        /// 结束帧序号（物体消逝时的帧序号）
        /// </summary>
        public uint dwEndSequence;
        /// <summary>
        /// At the beginning of the file offset, Unit: Word Section (when objects began to appear, the video frames in the original video file offset relative to the beginning of the file
        /// 开始时文件偏移, 单位: 字节（物体开始出现时,视频帧在原始视频文件中相对于文件起始处的偏移）
        /// </summary>
        public Int64 nBeginFileOffset;
        /// <summary>
        /// At the end of the file offset, Unit: Word Section (when the object disappeared, video frames in the original video file offset relative to the beginning of the file)
        /// 结束时文件偏移, 单位: 字节（物体消逝时,视频帧在原始视频文件中相对于文件起始处的偏移）
        /// </summary>
        public Int64 nEndFileOffset;
        /// <summary>
        /// Object color similarity, the range :0-100, represents an array subscript Colors, see EM_COLOR_TYPE
        /// 物体颜色相似度,取值范围：0-100,数组下标值代表某种颜色,详见EM_COLOR_TYPE
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] byColorSimilar;
        /// <summary>
        /// When upper body color similarity (valid object type man )
        /// 上半身物体颜色相似度(物体类型为人时有效)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] byUpperBodyColorSimilar;
        /// <summary>
        /// Lower body color similarity when objects (object type human valid )
        /// 下半身物体颜色相似度(物体类型为人时有效)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] byLowerBodyColorSimilar;
        /// <summary>
        /// ID of relative object
        /// 相关物体ID
        /// </summary>
        public int nRelativeID;
        /// <summary>
        /// "ObjectType"is "Vehicle" or "Logo" means a certain brand under LOGO such as Audi A6L since there are so many brands SDK sends this field in real-time ,device filled as real.
        /// "ObjectType"为"Vehicle"或者"Logo"时,表示车标下的某一车系,比如奥迪A6L,由于车系较多,SDK实现时透传此字段,设备如实填写
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public byte[] szSubText;
        /// <summary>
        /// Specifies the model years of vehicle. the real value can be found in a mapping table from the development manual 
        /// 车辆品牌年款 需要通过映射表得到真正的年款 映射表详见开发手册
        /// </summary>
        public ushort wBrandYear;
    }

    /// <summary>
    /// enum time type
    /// 时间类型
    /// </summary>
    public enum EM_TIME_TYPE
    {
        /// <summary>
        /// absolute time 
        /// 绝对时间
        /// </summary>
        ABSLUTE,
        /// <summary>
        /// Relative time, relative to the video file header frame as the time basis points, the first frame corresponding to the UTC (0000-00-00 00:00:00)
        /// 相对时间,相对于视频文件头帧为时间基点,头帧对应于UTC(0000-00-00 00:00:00)
        /// </summary>
        RELATIVE,
    }

    /// <summary>
    /// enum color type
    /// 颜色类型
    /// </summary>
    public enum EM_COLOR_TYPE
    {
        /// <summary>
        /// red
        /// 红色
        /// </summary>
        RED,
        /// <summary>
        /// yellow
        /// 黄色
        /// </summary>
        YELLOW,
        /// <summary>
        /// green
        /// 绿色
        /// </summary>
        GREEN,
        /// <summary>
        /// cyan
        /// 青色
        /// </summary>
        CYAN,
        /// <summary>
        /// glue
        /// 蓝色
        /// </summary>
        BLUE,
        /// <summary>
        /// purple
        /// 紫色
        /// </summary>
        PURPLE,
        /// <summary>
        /// black
        /// 黑色
        /// </summary>
        BLACK,
        /// <summary>
        /// white
        /// 白色
        /// </summary>
        WHITE,
        /// <summary>
        /// max
        /// 最大值
        /// </summary>
        MAX,
    }

    /// <summary>
    /// 区域；各边距按整长8192的比例
    /// Zone;Each margin is total lenght :8192
    /// </summary>
    public struct NET_A_RECT_EX
    {
#if (LINUX_X64)
        public long left;
#else
        public int left;
#endif
#if (LINUX_X64)
        public long top;
#else
        public int top;
#endif
#if (LINUX_X64)
        public long right;
#else
        public int right;
#endif
#if (LINUX_X64)
        public long bottom;
#else
        public int bottom;
#endif
    }

    /// <summary>
    /// 区域；各边距按整长8192的比例
    /// Zone;Each margin is total lenght :8192
    /// </summary>
    public struct NET_RECT
    {
        public int left;
        public int top;
        public int right;
        public int bottom;
    }
	
	/// <summary>
    /// Zone;Each margin is total lenght :8192
    /// </summary>
    public struct NET_RECT_EX
    {
        public ushort nLeft;
        public ushort nTop;
        public ushort nRight;
        public ushort nBottom;
    }

    /// <summary>
    /// dimension point struct
    /// 坐标点
    /// </summary>
    public struct NET_POINT
    {
        /// <summary>
        /// x
        /// 坐标x
        /// </summary>
        public short nx;
        /// <summary>
        /// y
        /// 坐标y
        /// </summary>
        public short ny;
    }

    /// <summary>
    /// picture information struct
    /// 图片信息
    /// </summary>
    public struct NET_PIC_INFO
    {
        /// <summary>
        /// current picture file's offset in the binary file, byte
        /// 文件在二进制数据块中的偏移位置, 单位:字节
        /// </summary>
        public uint dwOffSet;
        /// <summary>
        /// current picture file's size, byte
        /// 文件大小, 单位:字节
        /// </summary>
        public uint dwFileLenth;
        /// <summary>
        /// picture width, pixel
        /// 图片宽度, 单位:像素
        /// </summary>
        public ushort wWidth;
        /// <summary>
        /// picture high, pixel
        /// 图片高度, 单位:像素
        /// </summary>
        public ushort wHeight;
        /// <summary>
        /// File path,User use this field need to apply for space for copy and storage
        /// 文件路径，用户使用该字段时需要自行申请空间进行拷贝保存
        /// </summary>
        public IntPtr pszFilePath;
        /// <summary>
        /// When submit to the server, the algorithm has checked the image or not 
        /// 图片是否算法检测出来的检测过的提交识别服务器时
        /// </summary>
        public byte bIsDetected;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// Quality score of face capture, range: 0-100
        /// 人脸抓拍质量分数, 0-100
        /// </summary>
        public byte byQulityScore;
        /// <summary>
        /// pszFilePath length
        /// </summary>
        public int nFilePathLen;
        /// <summary>
        /// The upper left corner of the figure is in the big picture. Absolute coordinates are used
        /// 小图左上角在大图的位置，使用绝对坐标系
        /// </summary>
        public NET_POINT stuPoint;
        /// <summary>
        /// The serial number of the picture in the uploaded picture data
        /// 在上传图片数据中的图片序号
        /// </summary>
        public uint nIndexInData;
    }

    /// <summary>
    /// event file information struct
    /// 事件对应文件信息
    /// </summary>
    public struct NET_EVENT_FILE_INFO
    {
        /// <summary>
        /// the file count in the current file's group
        /// 当前文件所在文件组中的文件总数
        /// </summary>
        public byte bCount;
        /// <summary>
        /// the index of the file in the group
        /// 当前文件在文件组中的文件编号(编号1开始)
        /// </summary>
        public byte bIndex;
        /// <summary>
        /// file tag, see the enum EM_EVENT_FILETAG
        /// 文件标签, EM_EVENT_FILETAG
        /// </summary>
        public byte bFileTag;
        /// <summary>
        /// file type,0-normal 1-compose 2-cut picture
        /// 文件类型,0-普通 1-合成 2-抠图
        /// </summary>
        public byte bFileType;
        /// <summary>
        /// file time
        /// 文件时间
        /// </summary>
        public NET_TIME_EX stuFileTime;
        /// <summary>
        /// the only id of one group file
        /// 同一组抓拍文件的唯一标识
        /// </summary>
        public uint nGroupId;
    }

    /// <summary>
    /// event file's tag type
    /// 事件文件的文件标签类型
    /// </summary>
    public enum EM_EVENT_FILETAG
    {
        /// <summary>
        /// Before ATM Paste
        /// ATM贴条前
        /// </summary>
        NET_ATMBEFOREPASTE = 1,
        /// <summary>
        /// After ATM Paste
        /// ATM贴条后
        /// </summary>
        NET_ATMAFTERPASTE,
    }

    /// <summary>
    /// picture resolution struct
    /// 图片分辨率
    /// </summary>
    public struct NET_RESOLUTION_INFO
    {
        /// <summary>
        /// width
        /// 宽
        /// </summary>
        public ushort snWidth;
        /// <summary>
        /// hight
        /// 高
        /// </summary>
        public ushort snHight;
    }


    /// <summary>
    /// traffic car move direction type
    /// 交通车辆行驶方向类型
    /// </summary>
    public enum EM_TRAFFICCAR_MOVE_DIRECTION
    {
        /// <summary>
        /// unknown
        /// 未知的
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// straight
        /// 直行
        /// </summary>
        STRAIGHT,
        /// <summary>
        /// turn left
        /// 左转
        /// </summary>
        TURN_LEFT,
        /// <summary>
        /// turn right
        /// 右转
        /// </summary>
        TURN_RIGHT,
        /// <summary>
        /// turn around
        /// 掉头
        /// </summary>
        TURN_AROUND,
    }

    /// <summary>
    /// VehicleSize
    /// 车身大小
    /// </summary>
    public enum EM_VehicleSizeType
    {
        /// <summary>
        /// UnKnow
        /// 未知
        /// </summary>
        UnKnow = -1,
        /// <summary>
        /// Light-duty
        /// 小型车
        /// </summary>
        Light_Duty = 1,
        /// <summary>
        /// Medium
        /// 中型车
        /// </summary>
        Medium = 1 << 1,
        /// <summary>
        /// Oversize
        /// 大型车
        /// </summary>
        Oversize = 1 << 2,
        /// <summary>
        /// Minisize
        /// 微型车
        /// </summary>
        Minisize = 1 << 3,
        /// <summary>
        /// Largesize
        /// 长车
        /// </summary>
        Largesize = 1 << 4,
    }

    /// <summary>
    /// Vehicle detector redundancy information
    /// 车检器冗余信息
    /// </summary>
    public struct NET_SIG_CARWAY_INFO_EX
    {
        /// <summary>
        /// The vehicle detector generates the snap signal redundancy info
        /// 由车检器产生抓拍信号冗余信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] byRedundance;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 120)]
        public byte[] bReserved;
    }

    /// <summary>
    /// color RGBA
    /// 颜色RGBA
    /// </summary>
    public struct NET_COLOR_RGBA
    {
        /// <summary>
        /// red
        /// 红
        /// </summary>
        public int nRed;
        /// <summary>
        /// green
        /// 绿
        /// </summary>
        public int nGreen;
        /// <summary>
        /// blue
        /// 蓝
        /// </summary>
        public int nBlue;
        /// <summary>
        /// transparent
        /// 透明
        /// </summary>
        public int nAlpha;
    }

    /// <summary>
    /// traffic event snap picture info
    /// 交通抓图图片信息
    /// </summary>
    public struct NET_EVENT_PIC_INFO
    {
        /// <summary>
        /// offset
        /// 原始图片偏移，单位字节
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// length of picture
        /// 原始图片长度，单位字节
        /// </summary>
        public uint nLength;
        /// <summary>
        /// The serial number of the picture in the uploaded picture data
        /// 在上传图片数据中的图片序号
        /// </summary>
        public uint nIndexInData;
    }

    /// <summary>
    /// the info of RFID electronic tag 
    /// RFID 电子车牌标签信息
    /// </summary>
    public struct NET_RFIDELETAG_INFO
    {
        /// <summary>
        /// card ID
        /// 卡号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szCardID;
        /// <summary>
        /// card type, 0:issued by transport administration offices, 1:new factory preloaded card
        /// 卡号类型, 0:交通管理机关发行卡, 1:新车出长预装卡
        /// </summary>
        public int nCardType;
        /// <summary>
        /// card privince
        /// 卡号省份
        /// </summary>
        public EM_CARD_PROVINCE emCardPrivince;
        /// <summary>
        /// plate number
        /// 车牌号码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szPlateNumber;
        /// <summary>
        /// production data
        /// 出长日期
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szProductionDate;
        /// <summary>
        /// car type
        /// 车辆类型
        /// </summary>
        public EM_CAR_TYPE emCarType;
        /// <summary>
        /// power, unit:kilowatt-hour, range:0~254, 255 means larger than maximum power value can be stored
        /// 功率,单位：千瓦时，功率值范围0~254；255表示该车功率大于可存储的最大功率值
        /// </summary>
        public int nPower;
        /// <summary>
        /// displacement, unit:100ml, range:0~254, 255 means larger than maximum displacement value can be stored
        /// 排量,单位：百毫升，排量值范围0~254；255表示该车排量大于可存储的最大排量值
        /// </summary>
        public int nDisplacement;
        /// <summary>
        /// antenna ID, range:1~4
        /// 天线ID，取值范围:1~4
        /// </summary>
        public int nAntennaID;
        /// <summary>
        /// plate type
        /// 号牌种类
        /// </summary>
        public EM_PLATE_TYPE emPlateType;
        /// <summary>
        /// validity of inspection, year-month
        /// 检验有效期，年-月
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szInspectionValidity;
        /// <summary>
        /// the flag of inspetion, 0:already inspection, 1:not inspection
        /// 逾期未年检标志, 0:已年检, 1:逾期未年检
        /// </summary>
        public uint nInspectionFlag;
        /// <summary>
        /// the years form effective inspection preiod to compulsory discarding preiod
        /// 强制报废期，从检验有效期开始，距离强制报废期的年数
        /// </summary>
        public int nMandatoryRetirement;
        /// <summary>
        /// car color
        /// 车身颜色
        /// </summary>
        public EM_CAR_COLOR_TYPE emCarColor;
        /// <summary>
        /// authorized capacity, unit:people, less than 0:incalid
        /// 核定载客量，该值 小于0 时：无效；此值表示核定载客，单位为人
        /// </summary>
        public int nApprovedCapacity;
        /// <summary>
        /// total weight, unit:100kg, range:0~0x3FF,  0x3FF1023:larger than maximum value can be stored, less than 0:invalid
        /// 此值表示总质量，单位为百千克；该值小于0时：无效；该值的有效范围为0~0x3FF，0x3FF（1023）表示数据值超过了可存储的最大值
        /// </summary>
        public int nApprovedTotalQuality;
        /// <summary>
        /// the time when the car is pass
        /// 过车时间
        /// </summary>
        public NET_TIME_EX stuThroughTime;
        /// <summary>
        /// use property
        /// 使用性质
        /// </summary>
        public EM_USE_PROPERTY_TYPE emUseProperty;
        /// <summary>
        /// Licensing code, UTF-8 encoding
        /// 发牌代号，UTF-8编码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] szPlateCode;
        /// <summary>
        /// Plate number, serial number, UTF-8 code
        /// 号牌号码序号，UTF-8编码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szPlateSN;
        /// <summary>
        /// 标签(唯一标识), UTF-8编码
        /// Label (Unique identifier), UTF-8 encoding
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szTID;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
        public byte[] bReserved;
    }

    /// <summary>
    /// card province
    /// 卡号省份
    /// </summary>
    public enum EM_CARD_PROVINCE
    {
        /// <summary>
        /// UNKNOWN
        /// 解析出错，未知省份
        /// </summary>
        UNKNOWN = 10,
        /// <summary>
        /// BeiJing
        /// 北京
        /// </summary>
        BEIJING = 11,
        /// <summary>
        /// TianJin
        /// 天津
        /// </summary>
        TIANJIN = 12,
        /// <summary>
        /// HeBei
        /// 河北
        /// </summary>
        HEBEI = 13,
        /// <summary>
        /// ShanXi, the provincial capital is TaiYuan
        /// 山西
        /// </summary>
        SHANXI_TAIYUAN = 14,
        /// <summary>
        /// NeiMengGu
        /// 内蒙古
        /// </summary>
        NEIMENGGU = 15,
        /// <summary>
        /// LiaoNing
        /// 辽宁
        /// </summary>
        LIAONING = 21,
        /// <summary>
        /// JiKin
        /// 吉林
        /// </summary>
        JILIN = 22,
        /// <summary>
        /// HeiLongJiang
        /// 黑龙江
        /// </summary>
        HEILONGJIANG = 23,
        /// <summary>
        /// ShangHai
        /// 上海
        /// </summary>
        SHANGHAI = 31,
        /// <summary>
        /// JiangSu
        /// 江苏
        /// </summary>
        JIANGSU = 32,
        /// <summary>
        /// ZheJiang
        /// 浙江
        /// </summary>
        ZHEJIANG = 33,
        /// <summary>
        /// AnHui
        /// 安徽
        /// </summary>
        ANHUI = 34,
        /// <summary>
        /// FuJian
        /// 福建
        /// </summary>
        FUJIAN = 35,
        /// <summary>
        /// JiangXi
        /// 江西
        /// </summary>
        JIANGXI = 36,
        /// <summary>
        /// ShanDong
        /// 山东
        /// </summary>
        SHANDONG = 37,
        /// <summary>
        /// HeNan
        /// 河南
        /// </summary>
        HENAN = 41,
        /// <summary>
        /// HuBei
        /// 湖北
        /// </summary>
        HUBEI = 42,
        /// <summary>
        /// HuNan
        /// 湖南
        /// </summary>
        HUNAN = 43,
        /// <summary>
        /// GuangDong
        /// 广东
        /// </summary>
        GUANGDONG = 44,
        /// <summary>
        /// GuangXi
        /// 广西
        /// </summary>
        GUANGXI = 45,
        /// <summary>
        /// HaiNan
        /// 海南
        /// </summary>
        HAINAN = 46,
        /// <summary>
        /// ChongQing
        /// 重庆
        /// </summary>
        CHONGQING = 50,
        /// <summary>
        /// SiChuan
        /// 四川
        /// </summary>
        SICHUAN = 51,
        /// <summary>
        /// GuiZhou
        /// 贵州
        /// </summary>
        GUIZHOU = 52,
        /// <summary>
        /// YunNan
        /// 云南
        /// </summary>
        YUNNAN = 53,
        /// <summary>
        /// XiZang
        /// 西藏
        /// </summary>
        XIZANG = 54,
        /// <summary>
        /// ShanXi , the provincial capital is XiAn
        /// 陕西
        /// </summary>
        SHANXI_XIAN = 61,
        /// <summary>
        /// GanSu
        /// 甘肃
        /// </summary>
        GANSU = 62,
        /// <summary>
        /// QingHai
        /// 青海
        /// </summary>
        QINGHAI = 63,
        /// <summary>
        /// NingXia
        /// 宁夏
        /// </summary>
        NINGXIA = 64,
        /// <summary>
        /// XinJiang
        /// 新疆
        /// </summary>
        XINJIANG = 65,
        /// <summary>
        /// XiangGang
        /// 香港
        /// </summary>
        XIANGGANG = 71,
        /// <summary>
        /// AoMen
        /// 澳门
        /// </summary>
        AOMEN = 82,
        /// <summary>
        /// TaiWan
        /// 台湾
        /// </summary>
        TAIWAN = 83,
    }

    /// <summary>
    /// the type of the car
    /// 车辆类型
    /// </summary>
    public enum EM_CAR_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// bus
        /// 客车
        /// </summary>
        BUS,
        /// <summary>
        /// big truck
        /// 大货车
        /// </summary>
        BIG_TRUCK,
        /// <summary>
        /// medium truck
        /// 中货车
        /// </summary>
        MEDIUM_TRUCK,
        /// <summary>
        /// car
        /// 轿车
        /// </summary>
        CAR,
        /// <summary>
        /// van
        /// 面包车
        /// </summary>
        VAN,
        /// <summary>
        /// small truck
        /// 小货车
        /// </summary>
        SMALL_TRUCK,
        /// <summary>
        /// tricycle
        /// 三轮车
        /// </summary>
        TRICYCLE,
        /// <summary>
        /// motocycle
        /// 摩托车
        /// </summary>
        MOTORCYCLE,
        /// <summary>
        /// pedestrian
        /// 行人
        /// </summary>
        PEDESTRIAN,
        /// <summary>
        /// SUV-MPV
        /// SUV-MPV
        /// </summary>
        SUVMPV,
        /// <summary>
        /// medium bus
        /// 中客车
        /// </summary>
        MEDIUM_BUS,
        /// <summary>
        /// hazardous chemical vehicles
        /// 危化品车辆
        /// </summary>
        DANGE_VEHICLE,
    }

    /// <summary>
    /// 号牌类型
    /// the tpye of the plate
    /// </summary>
    public enum EM_PLATE_TYPE
    {
        /// <summary>
        /// 其他车
        /// Other
        /// </summary>
        EM_PLATE_OTHER,
        /// <summary>
        /// 大型汽车
        /// big car
        /// </summary>
        EM_PLATE_BIG_CAR,
        /// <summary>
        /// 小型汽车
        /// small car
        /// </summary>
        EM_PLATE_SMALL_CAR,
        /// <summary>
        /// 使馆汽车
        /// embassy car
        /// </summary>
        EM_PLATE_EMBASSY_CAR,
        /// <summary>
        /// 领馆汽车
        /// consulate car
        /// </summary>
        EM_PLATE_CONSULATE_CAR,
        /// <summary>
        /// 境外汽车
        /// abroad car
        /// </summary>
        EM_PLATE_ABROAD_CAR,
        /// <summary>
        /// 外籍汽车
        /// foreign car
        /// </summary>
        EM_PLATE_FOREIGN_CAR,
        /// <summary>
        /// 低速车
        /// Low speed car
        /// </summary>
        EM_PLATE_LOW_SPEED_CAR,
        /// <summary>
        /// 教练车
        /// coach car plate
        /// </summary>
        EM_PLATE_COACH_CAR,
        /// <summary>
        /// 摩托车
        /// motorcycle plate
        /// </summary>
        EM_PLATE_MOTORCYCLE,
        /// <summary>
        /// 新能源车
        /// new power car
        /// </summary>
        EM_PLATE_NEW_POWER_CAR,
        /// <summary>
        /// 警用车
        /// police car
        /// </summary>
        EM_PLATE_POLICE_CAR,
        /// <summary>
        /// 港澳两地车
        /// GANGAO car
        /// </summary>
        EM_PLATE_HONGKONG_MACAO_CAR,
        EM_PLATE_WJPOLICE_CAR,
        EM_PLATE_OUTERGUARD_CAR,
        /// <summary>
        /// 非机动车临时牌照
        /// Temporary license for non motor vehicles
        /// </summary>
        EM_PLATE_TEMPORARY_LICENSE_FOR_NON_MOTOR_VEHICLES,
        /// <summary>
        /// 非机动车牌正式牌照
        /// Official license plate of non motor vehicle
        /// </summary>
        EM_PLATE_OFFICIAL_LICENSE_PLATE_FOR_NON_MOTOR_VEHICLE,
    }

    /// <summary>
    /// car color
    /// 车身颜色
    /// </summary>
    public enum EM_CAR_COLOR_TYPE
    {
        /// <summary>
        /// white
        /// 白色
        /// </summary>
        WHITE,
        /// <summary>
        /// black
        /// 黑色
        /// </summary>
        BLACK,
        /// <summary>
        /// red
        /// 红色
        /// </summary>
        RED,
        /// <summary>
        /// yellow
        /// 黄色
        /// </summary>
        YELLOW,
        /// <summary>
        /// gray
        /// 灰色
        /// </summary>
        GRAY,
        /// <summary>
        /// blue
        /// 蓝色
        /// </summary>
        BLUE,
        /// <summary>
        /// green
        /// 绿色
        /// </summary>
        GREEN,
        /// <summary>
        /// pink
        /// 粉色
        /// </summary>
        PINK,
        /// <summary>
        /// purple
        /// 紫色
        /// </summary>
        PURPLE,
        /// <summary>
        /// dark purple
        /// 暗紫色
        /// </summary>
        DARK_PURPLE,
        /// <summary>
        /// brown
        /// 棕色
        /// </summary>
        BROWN,
        /// <summary>
        /// marron
        /// 粟色
        /// </summary>
        MAROON,
        /// <summary>
        /// silver gray
        /// 银灰色
        /// </summary>
        SILVER_GRAY,
        /// <summary>
        /// dark gray
        /// 暗灰色
        /// </summary>
        DARK_GRAY,
        /// <summary>
        /// white smoke
        /// 白烟色
        /// </summary>
        WHITE_SMOKE,
        /// <summary>
        /// deep orange
        /// 深橙色
        /// </summary>
        DEEP_ORANGE,
        /// <summary>
        /// light rose
        /// 浅玫瑰色
        /// </summary>
        LIGHT_ROSE,
        /// <summary>
        /// tomato red
        /// 番茄红色
        /// </summary>
        TOMATO_RED,
        /// <summary>
        /// olive
        /// 橄榄色
        /// </summary>
        OLIVE,
        /// <summary>
        /// golden
        /// 金色
        /// </summary>
        GOLDEN,
        /// <summary>
        /// dark olive
        /// 暗橄榄色
        /// </summary>
        DARK_OLIVE,
        /// <summary>
        /// yellow green
        /// 黄绿色
        /// </summary>
        YELLOW_GREEN,
        /// <summary>
        /// green yellow
        /// 绿黄色
        /// </summary>
        GREEN_YELLOW,
        /// <summary>
        /// forest green
        /// 森林绿
        /// </summary>
        FOREST_GREEN,
        /// <summary>
        /// ocean blue
        /// 海洋绿
        /// </summary>
        OCEAN_BLUE,
        /// <summary>
        /// deep sky blue
        /// 深天蓝
        /// </summary>
        DEEP_SKYBLUE,
        /// <summary>
        /// cyan
        /// 青色
        /// </summary>
        CYAN,
        /// <summary>
        /// deep blue
        /// 深蓝色
        /// </summary>
        DEEP_BLUE,
        /// <summary>
        /// deep red
        /// 深红色
        /// </summary>
        DEEP_RED,
        /// <summary>
        /// deep green
        /// 深绿色
        /// </summary>
        DEEP_GREEN,
        /// <summary>
        /// deep yellow
        /// 深黄色
        /// </summary>
        DEEP_YELLOW,
        /// <summary>
        /// deep pink
        /// 深粉色
        /// </summary>
        DEEP_PINK,
        /// <summary>
        /// deep purple
        /// 深紫色
        /// </summary>
        DEEP_PURPLE,
        /// <summary>
        /// deep brown
        /// 深棕色
        /// </summary>
        DEEP_BROWN,
        /// <summary>
        /// deep cyan
        /// 深青色
        /// </summary>
        DEEP_CYAN,
        /// <summary>
        /// orange
        /// 橙色
        /// </summary>
        ORANGE,
        /// <summary>
        /// deep golden
        /// 深金色
        /// </summary>
        DEEP_GOLDEN,
        /// <summary>
        /// other
        /// 未识别、其他
        /// </summary>
        OTHER = 255,
    }

    /// <summary>
    /// use property
    /// 使用性质
    /// </summary>
    public enum EM_USE_PROPERTY_TYPE
    {
        /// <summary>
        /// other
        /// 其他
        /// </summary>
        OTHER,
        /// <summary>
        /// not operating
        /// 非营运
        /// </summary>
        NOTOPERATING,
        /// <summary>
        /// higway
        /// 公路客运
        /// </summary>
        HIGWAY,
        /// <summary>
        /// bus
        /// 公交客运
        /// </summary>
        BUS,
        /// <summary>
        /// taxi
        /// 出租客运
        /// </summary>
        TAXI,
        /// <summary>
        /// tourism
        /// 旅游客运
        /// </summary>
        TOURISM,
        /// <summary>
        /// freight
        /// 货运
        /// </summary>
        FREIGHT,
        /// <summary>
        /// lease
        /// 租赁
        /// </summary>
        LEASE,
        /// <summary>
        /// for police
        /// 警用
        /// </summary>
        POLICE,
        /// <summary>
        /// for fire police
        /// 消防
        /// </summary>
        FIRE,
        /// <summary>
        /// for rescue
        /// 救护
        /// </summary>
        RESCUE,
        /// <summary>
        /// engineering emergency
        /// 工程救险
        /// </summary>
        ENGINEERING,
        /// <summary>
        /// form operating to not operating
        /// 营转非
        /// </summary>
        OPERATION_TO_NOT,
        /// <summary>
        /// form taxi to not taxi
        /// 出租转非
        /// </summary>
        TAXI_TO_NOT,
        /// <summary>
        /// for coach
        /// 教练
        /// </summary>
        COACH,
        /// <summary>
        /// kindergarten school bus
        /// 幼儿校车
        /// </summary>
        KINDER_SCHOOLBUS,
        /// <summary>
        /// pupil school bus
        /// 小学生校车
        /// </summary>
        PUPIL_SCHOOLBUS,
        /// <summary>
        /// other school bus
        /// 其他校车
        /// </summary>
        OTHER_SCHOOLBUS,
        /// <summary>
        /// for dangerous goods transportation
        /// 危化品运输
        /// </summary>
        FOR_DANGE_VEHICLE,
    }

    /// <summary>
    /// NTP status
    /// NTP状态
    /// </summary>
    public enum EM_NTP_STATUS
    {
        /// <summary>
        /// unknow
        /// 未知
        /// </summary>
        UNKNOWN = 0,
        /// <summary>
        /// unable
        /// 禁用
        /// </summary>
        DISABLE,
        /// <summary>
        /// successful
        /// 成功
        /// </summary>
        SUCCESSFUL,
        /// <summary>
        /// failed
        /// 失败
        /// </summary>
        FAILED,
    }

    /// <summary>
    /// intrusion direction
    /// 入侵方向
    /// </summary>
    public enum EM_MSG_OBJ_PERSON_DIRECTION
    {
        /// <summary>
        /// unknown direction
        /// 未知方向
        /// </summary>
        UNKOWN,
        /// <summary>
        /// from left to right
        /// 从左向右
        /// </summary>
        LEFT_TO_RIGHT,
        /// <summary>
        /// from right ro left
        /// 从右向左
        /// </summary>
        RIGHT_TO_LEFT
    }


    /// <summary>
    /// seat type
    /// 座位类型
    /// </summary>
    public enum EM_COMMON_SEAT_TYPE
    {
        /// <summary>
        /// unknown
        /// 未识别
        /// </summary>
        UNKNOWN = 0,
        /// <summary>
        /// main seat
        /// 主驾驶
        /// </summary>
        MAIN = 1,
        /// <summary>
        /// FYH seat
        /// 副驾驶
        /// </summary>
        SLAVE = 2,
    }

    /// <summary>
    /// illegal state type of driver
    /// 违规状态
    /// </summary>
    public struct NET_EVENT_COMM_STATUS
    {
        /// <summary>
        /// smoking
        /// 是否抽烟
        /// </summary>
        public byte bySmoking;
        /// <summary>
        /// calling
        /// 是否打电话
        /// </summary>
        public byte byCalling;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 14)]
        public byte[] szReserved;
    }

    /// <summary>
    /// safebelt state
    /// 安全带状态
    /// </summary>
    public enum EM_SAFEBELT_STATE
    {
        /// <summary>
        /// Unknow
        /// 未知
        /// </summary>
        UNKNOW,
        /// <summary>
        /// WithSafeBelt
        /// 已系安全带
        /// </summary>
        WITH_SAFE_BELT,
        /// <summary>
        /// WithoutSafeBelt
        /// 未系安全带
        /// </summary>
        WITHOUT_SAFE_BELT,
    }

    /// <summary>
    /// sunshade state
    /// 遮阳板状态
    /// </summary>
    public enum EM_SUNSHADE_STATE
    {
        /// <summary>
        /// Unknow
        /// 未知
        /// </summary>
        UNKNOW_SUN_SHADE,
        /// <summary>
        /// WithSunShade
        /// 有遮阳板
        /// </summary>
        WITH_SUN_SHADE,
        /// <summary>
        /// WithoutSunShade
        /// 无遮阳板
        /// </summary>
        WITHOUT_SUN_SHADE,
    }


    /// <summary>
    /// attachment type
    /// 车辆物件类型
    /// </summary>
    public enum EM_COMM_ATTACHMENT_TYPE
    {
        /// <summary>
        /// Unknown type
        /// 未知类型
        /// </summary>
        UNKNOWN = 0,
        /// <summary>
        /// Furniture
        /// 摆件
        /// </summary>
        FURNITURE = 1,
        /// <summary>
        /// Pendant
        /// 挂件
        /// </summary>
        PENDANT = 2,
        /// <summary>
        /// TissueBox
        /// 纸巾盒
        /// </summary>
        TISSUEBOX = 3,
        /// <summary>
        /// Danger
        /// 危险品
        /// </summary>
        DANGER = 4,
        /// <summary>
        /// perfumebox
        /// 香水
        /// </summary>
        PERFUMEBOX = 5,
    }

    // 车辆姿势
    public enum EM_VEHICLE_POSTURE_TYPE
    {
        UNKNOWN,        // 未知
        VEHICLE_HEAD,   // 车头
        VEHICLE_SIDE,   // 车侧
        VEHICLE_TAIL,   // 车尾
    }

    /// <summary>
    /// perfumebox
    /// 规则区内车辆行驶方向
    /// </summary>
    public enum EM_CAR_DRIVING_DIRECTION
    {
        /// <summary>
        /// perfumebox
        /// 未知
        /// </summary>
        EM_CAR_DRIVING_DIRECTION_UNKNOWN,
        /// <summary>
        /// perfumebox
        /// 驶入区域
        /// </summary>
        EM_CAR_DRIVING_DIRECTION_DRIVE_IN_AREA,
        /// <summary>
        /// perfumebox
        /// 驶出区域
        /// </summary>
        EM_CAR_DRIVING_DIRECTION_EXIT_AREA,
    }

    // 测温信息
    public struct NET_CUSTOM_MEASURE_TEMPER
    {
        public float fLeft;                      // 车辆左侧温度值
        public float fRight;                     // 车辆右侧温度值
        public float fHead;                      // 车辆发动机位置温度值 (车头)
        public EM_TEMPERATURE_UNIT emUnit;                     // 温度单位
    }

    /// <summary>
    /// custom info
    /// 卡口事件专用上报内容
    /// </summary>
    public struct NET_EVENT_JUNCTION_CUSTOM_INFO
    {
        /// <summary>
        /// custom weight info
        /// 原始图片信息
        /// </summary>
        public NET_EVENT_CUSTOM_WEIGHT_INFO stuWeightInfo;

        public uint nCbirFeatureOffset;           // 数据偏移，单位字节 （由于结构体保留字节有限的限制,添加在此处， 下同）
        public uint nCbirFeatureLength;           // 数据大小，单位字节 
        public uint dwVehicleHeadDirection;       // 车头朝向 0:未知 1:左 2:中 3:右
        public uint nAvailableSpaceNum;         // 停车场车位余位数量 
        public NET_RADAR_FREE_STREAM stuRadarFreeStream;           // 雷达自由流信息
        public NET_CUSTOM_MEASURE_TEMPER stuMeasureTemper;             // 测温信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
        public byte[] bReserved;// 预留字节
    }

    /// <summary>
    /// weight info
    /// 称重信息
    /// </summary>
    public struct NET_EVENT_CUSTOM_WEIGHT_INFO
    {
        /// <summary>
        /// Rough Weight,unit:KG
        /// 毛重,车辆满载货物重量。单位KG
        /// </summary>
        public uint dwRoughWeight;
        /// <summary>
        /// Tare Weight,unit:KG
        /// 皮重,空车重量。单位KG
        /// </summary>
        public uint dwTareWeight;
        /// <summary>
        /// Net Weight,unit:KG
        /// 净重,载货重量。单位KG
        /// </summary>
        public uint dwNetWeight;
        /// <summary>
        /// reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 28)]
        public byte[] bReserved;
    }

    /// <summary>
    /// vehicle direction
    /// 车辆方向
    /// </summary>
    public enum EM_VEHICLE_DIRECTION
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKOWN,
        /// <summary>
        /// head
        /// 车头
        /// </summary>
        HEAD,
        /// <summary>
        /// rear
        /// 车尾
        /// </summary>
        TAIL,
    }

    /// <summary>
    /// incidents reported to carry the card information
    /// 事件上报携带卡片信息
    /// </summary>
    public struct NET_EVENT_CARD_INFO
    {
        /// <summary>
        /// Card number string
        /// 卡片序号字符串
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 36)]
        public byte[] szCardNumber;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] bReserved;
    }

    /// <summary>
    /// the describe of EVENT_TRAFFIC_TURNLEFT's data
    /// 交通-违章左转对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_TURNLEFT_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// have being detected object
        /// 车牌信息
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// snap index: such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// speed,km/h
        /// 车辆实际速度,Km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// snap flags(by bit),0bit:"*",1bit:"Timing",2bit:"Manual",3bit:"Marked",4bit:"Event",5bit:"Mosaic",6bit:"Cutout"
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// GPS info
        /// GPS信息
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 968)]
        public byte[] bReserved;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// public info 
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 非机动车信息
        /// The information of Non-motor
        /// </summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// 是否有非机动车对象
        /// whether stuNonMotor is valid
        /// </summary>
        public bool bHasNonMotor;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFIC_TURNRIGHT's data
    /// 交通-违章右转对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_TURNRIGHT_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// have being detected object
        /// 车牌信息
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// snap index: such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// speed,km/h
        /// 车辆实际速度,Km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// snap flags(by bit),0bit:"*",1bit:"Timing",2bit:"Manual",3bit:"Marked",4bit:"Event",5bit:"Mosaic",6bit:"Cutout"
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// GPS info
        /// GPS信息
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 968)]
        public byte[] bReserved;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 非机动车信息
        /// The information of Non-motor
        /// </summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// 区间测速信息
    /// Interval speed information
    /// </summary>
    public struct NET_REGION_INFO
    {
        /// <summary>
        /// 驶入时间
        /// Drive in time
        /// </summary>
        public NET_TIME stuDriveInTime;
        /// <summary>
        /// 驶出时间
        /// Drive Out time
        /// </summary>
        public NET_TIME stuDriveOutTime;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFIC_OVERSPEED's data
    /// 交通超速事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_OVERSPEED_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// have being detected object
        /// 车牌信息
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// speed,km/h
        /// 车辆实际速度,Km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// Speed Up limit Unit:km/h
        /// 速度上限 单位：km/h
        /// </summary>
        public int nSpeedUpperLimit;
        /// <summary>
        /// Speed Low limit Unit:km/h 
        /// 速度下限 单位：km/h 
        /// </summary>
        public int nSpeedLowerLimit;
        /// <summary>
        /// snap index: such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// snap flags(by bit),0bit:"*",1bit:"Timing",2bit:"Manual",3bit:"Marked",4bit:"Event",5bit:"Mosaic",6bit:"Cutout"
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// Faile path
        /// 文件路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)]
        public byte[] szFilePath;
        /// <summary>
        /// intelli comm info
        /// 智能事件公共信息
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// GPS info
        /// GPS信息
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 576)]
        public byte[] bReserved;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 区间测速信息
        /// Interval speed information
        /// </summary>
        public NET_REGION_INFO stRegionInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 非机动车信息
        /// The information of Non-motor
        /// </summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// 是否有非机动车对象
        /// whether stuNonMotor is valid
        /// </summary>
        public bool bHasNonMotor;
    }

    /// <summary>
    /// intelli event comm info
    /// 智能报警事件公共信息
    /// </summary>
    public struct NET_EVENT_INTELLI_COMM_INFO
    {
        /// <summary>
        /// class type
        /// 智能事件所属大类
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// Preset ID
        /// 该事件触发的预置点，对应该设置规则的预置点
        /// </summary>
        public int nPresetID;
        /// <summary>
        /// reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 124)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 大类业务方案
    /// calss type
    /// </summary>
    public enum EM_CLASS_TYPE
    {
        /// <summary>
        /// 未知业务
        /// </summary>
        EM_CLASS_UNKNOWN = 0,
        /// <summary>
        /// 视频浓缩
        /// </summary>
        EM_CLASS_VIDEO_SYNOPSIS = 1,
        /// <summary>
        /// 卡口
        /// </summary>
        EM_CLASS_TRAFFIV_GATE = 2,
        /// <summary>
        /// 电警
        /// </summary>
        EM_CLASS_ELECTRONIC_POLICE = 3,
        /// <summary>
        /// 单球违停
        /// </summary>
        EM_CLASS_SINGLE_PTZ_PARKING = 4,
        /// <summary>
        /// 主从违停
        /// </summary>
        EM_CLASS_PTZ_PARKINBG = 5,
        /// <summary>
        /// 交通事件"Traffic"
        /// "Traffic"
        /// </summary>
        EM_CLASS_TRAFFIC = 6,
        /// <summary>
        /// 通用行为分析"Normal"
        /// "Normal"
        /// </summary>
        EM_CLASS_NORMAL = 7,
        /// <summary>
        /// 行为分析""
        /// ""
        /// </summary>
        EM_CLASS_PS = 8,
        /// <summary>
        /// 金融行为分析"ATM"
        /// "ATM"
        /// </summary>
        EM_CLASS_ATM = 9,
        /// <summary>
        /// 地铁行为分析
        /// </summary>
        EM_CLASS_METRO = 10,
        /// <summary>
        /// 目标检测
        /// "TargetDetection"
        /// </summary>
        EM_CLASS_FACE_DETECTION = 11,
        /// <summary>
        /// 目标识别
        /// "TargetRecognition"
        /// </summary>
        EM_CLASS_FACE_RECOGNITION = 12,
        /// <summary>
        /// 人数统计"NumberStat"
        /// "NumberStat"
        /// </summary>
        EM_CLASS_NUMBER_STAT = 13,
        /// <summary>
        /// 热度图"HeatMap"
        /// "HeatMap"
        /// </summary>
        EM_CLASS_HEAT_MAP = 14,
        /// <summary>
        /// 视频诊断"VideoDiagnosis"
        /// "VideoDiagnosis"
        /// </summary>
        EM_CLASS_VIDEO_DIAGNOSIS = 15,
        /// <summary>
        /// 视频增强
        /// </summary>
        EM_CLASS_VIDEO_ENHANCE = 16,
        /// <summary>
        /// 烟火检测
        /// </summary>
        EM_CLASS_SMOKEFIRE_DETECT = 17,
        /// <summary>
        /// 车辆特征识别"VehicleAnalyse"
        /// "VehicleAnalyse"
        /// </summary>
        EM_CLASS_VEHICLE_ANALYSE = 18,
        /// <summary>
        /// 人员特征识别
        /// </summary>
        EM_CLASS_PERSON_FEATURE = 19,
        /// <summary>
        /// 多预置点目标检测"SDFaceDetect"
        /// 配置一条规则但可以在不同预置点下生效
        /// "SDFaceDetect"
        /// </summary>
        EM_CLASS_SDFACEDETECTION = 20,
        /// <summary>
        /// 球机热度图计划"HeatMapPlan"
        /// "HeatMapPlan"
        /// </summary>
        EM_CLASS_HEAT_MAP_PLAN = 21,
        /// <summary>
        /// 球机客流量统计计划 "NumberStatPlan"
        /// "NumberStatPlan"
        /// </summary>
        EM_CLASS_NUMBERSTAT_PLAN = 22,
        /// <summary>
        /// 金融目标检测，包括正常人脸、异常人脸、相邻人脸、头盔人脸等针对ATM场景特殊优化
        /// "ATMFD"
        /// </summary>
        EM_CLASS_ATMFD = 23,
        /// <summary>
        /// 高速交通事件检测"Highway"
        /// "Highway"
        /// </summary>
        EM_CLASS_HIGHWAY = 24,
        /// <summary>
        /// 城市交通事件检测 "City"
        /// "City"
        /// </summary>
        EM_CLASS_CITY = 25,
        /// <summary>
        /// 民用简易跟踪"LeTrack"
        /// "LeTrack"
        /// </summary>
        EM_CLASS_LETRACK = 26,
        /// <summary>
        /// 打靶相机"SCR"
        /// "SCR"
        /// </summary>
        EM_CLASS_SCR = 27,
        /// <summary>
        /// 立体视觉(双目)"StereoVision"
        /// "StereoVision"
        /// </summary>
        EM_CLASS_STEREO_VISION = 28,
        /// <summary>
        /// 人体检测"HumanDetect"
        /// "HumanDetect"
        /// </summary>
        EM_CLASS_HUMANDETECT = 29,
        /// <summary>
        /// 人脸分析 "FaceAnalysis"
        /// "FaceAnalysis"
        /// </summary>
        EM_CLASS_FACE_ANALYSIS = 30,
        /// <summary>
        /// X光检测 "XRayDetection"
        /// "XRayDetection"
        /// </summary>
        EM_CALSS_XRAY_DETECTION = 31,
        /// <summary>
        /// 双目相机客流量统计 "StereoNumber"
        /// "StereoNumber"
        /// </summary>
        EM_CLASS_STEREO_NUMBER = 32,
        /// <summary>
        /// 人群分布图
        /// "CrowdDistriMap"
        /// </summary>
        EM_CLASS_CROWDDISTRIMAP = 33,
        /// <summary>
        /// 目标检测
        /// "ObjectDetect"
        /// </summary>
        EM_CLASS_OBJECTDETECT = 34,
        /// <summary>
        /// IVSS目标检测 "FaceAttribute"
        /// "FaceAttribute"
        /// </summary>
        EM_CLASS_FACEATTRIBUTE = 35,
        /// <summary>
        /// IVSS目标识别 "FaceCompare"
        /// "FaceCompare"
        /// </summary>
        EM_CLASS_FACECOMPARE = 36,
        /// <summary>
        /// 立体行为分析 "StereoBehavior"
        /// "StereoBehavior"
        /// </summary>
        EM_CALSS_STEREO_BEHAVIOR = 37,
        /// <summary>
        /// 智慧城管 "IntelliCityMgr"
        /// "IntelliCityMgr"
        /// </summary>
        EM_CALSS_INTELLICITYMANAGER = 38,
        /// <summary>
        /// 防护舱（ATM舱内）"ProtectiveCabin"
        /// "ProtectiveCabin"
        /// </summary>
        EM_CALSS_PROTECTIVECABIN = 39,
        /// <summary>
        /// 飞机行为检测 "AirplaneDetect"
        /// "AirplaneDetect"
        /// </summary>
        EM_CALSS_AIRPLANEDETECT = 40,
        /// <summary>
        /// 人群态势（人群分布图服务）"CrowdPosture"
        /// "CrowdPosture"
        /// </summary>
        EM_CALSS_CROWDPOSTURE = 41,
        /// <summary>
        /// 打电话检测 "PhoneCallDetect"
        /// "PhoneCallDetect"
        /// </summary>
        EM_CLASS_PHONECALLDETECT = 42,
        /// <summary>
        /// 烟雾检测 "SmokeDetection"
        /// "SmokeDetection"
        /// </summary>
        EM_CLASS_SMOKEDETECTION = 43,
        /// <summary>
        /// 船只检测 "BoatDetection"
        /// "BoatDetection"
        /// </summary>
        EM_CLASS_BOATDETECTION = 44,
        /// <summary>
        /// 吸烟检测 "SmokingDetect"
        /// "SmokingDetect"
        /// </summary>
        EM_CLASS_SMOKINGDETECT = 45,
        /// <summary>
        /// 水利监测 "WaterMonitor"
        /// "WaterMonitor"
        /// </summary>
        EM_CLASS_WATERMONITOR = 46,
        /// <summary>
        /// 生成图规则 "GenerateGraphDetection"
        /// "GenerateGraphDetection"
        /// </summary>
        EM_CLASS_GENERATEGRAPHDETECTION = 47,
        /// <summary>
        /// 交通停车 "TrafficPark"
        /// "TrafficPark"
        /// </summary>
        EM_CLASS_TRAFFIC_PARK = 48,
        /// <summary>
        /// 作业检测 "OperateMonitor"
        /// "OperateMonitor"
        /// </summary>
        EM_CLASS_OPERATEMONITOR = 49,
        /// <summary>
        /// 智慧零售大类 "IntelliRetail"
        /// "IntelliRetail"
        /// </summary>
        EM_CLASS_INTELLI_RETAIL = 50,
        /// <summary>
        /// 教育智慧课堂"ClassroomAnalyse"
        /// ClassroomAnalyse"
        /// </summary>
        EM_CLASS_CLASSROOM_ANALYSE = 51,
        /// <summary>
        /// 特征向量提取大类 "FeatureAbstract"
        /// "FeatureAbstract"
        /// </summary>
        EM_CLASS_FEATURE_ABSTRACT = 52,
        /// <summary>
        /// 人体检测大类 "FaceBodyDetect"
        /// "FaceBodyDetect"
        /// </summary>
        EM_CLASS_FACEBODY_DETECT = 53,
        /// <summary>
        /// 人体识别大类 "FaceBodyAnalyse"
        /// "FaceBodyAnalyse"
        /// </summary>
        EM_CLASS_FACEBODY_ANALYSE = 54,
        /// <summary>
        /// 车辆密度 "VehiclesDistri"
        /// "VehiclesDistri"
        /// </summary>
        EM_CLASS_VEHICLES_DISTRI = 55,
        /// <summary>
        /// 智慧养殖检测 "IntelliBreed"
        /// "IntelliBreed"
        /// </summary>
        EM_CLASS_INTELLI_BREED = 56,
        /// <summary>
        /// JY行为分析 ""
        /// ""
        /// </summary>
        EM_CLASS_INTELLI_PS = 57,
        /// <summary>
        /// 电力检测 "ElectricDetect"
        /// "ElectricDetect"
        /// </summary>
        EM_CLASS_ELECTRIC_DETECT = 58,
        /// <summary>
        /// 雷达检测 "RadarDetect"
        /// "RadarDetect"
        /// </summary>
        EM_CLASS_RADAR_DETECT = 59,
        /// <summary>
        /// 车位检测大类 "ParkingSpace"
        /// "ParkingSpace"
        /// </summary>
        EM_CLASS_PARKINGSPACE = 60,
        /// <summary>
        /// 智慧金融 "IntelliFinance"
        /// "IntelliFinance"
        /// </summary>
        EM_CLASS_INTELLI_FINANCE = 61,
        /// <summary>
        /// 人群异常检测 "CrowdAbnormal"
        /// "CrowdAbnormal"
        /// </summary>
        EM_CLASS_CROWD_ABNORMAL = 62,
        /// <summary>
        /// 人体温智能检测 "AnatomyTempDetect"
        /// "AnatomyTempDetect"
        /// </summary>
        EM_CLASS_ANATOMY_TEMP_DETECT = 63,
        /// <summary>
        /// 天气监控 "WeatherMonitor"
        /// "WeatherMonitor"
        /// </summary>
        EM_CLASS_WEATHER_MONITOR = 64,
        /// <summary>
        /// 电梯门禁 "ElevatorAccessControl"
        /// "ElevatorAccessControl"
        /// </summary>
        EM_CLASS_ELEVATOR_ACCESS_CONTROL = 65,
        /// <summary>
        /// 违章建筑 "BreakRuleBuilding"
        /// "BreakRuleBuilding"
        /// </summary>
        EM_CLASS_BREAK_RULE_BUILDING = 66,
        /// <summary>
        /// 异物检测 "ForeignDetection"
        /// "ForeignDetection"
        /// </summary>
        EM_CLASS_FOREIGN_DETECT = 67,
        /// <summary>
        /// 全景交通 "PanoramaTraffic"
        /// "PanoramaTraffic"
        /// </summary>
        EM_CLASS_PANORAMA_TRAFFIC = 68,
        /// <summary>
        /// 传送带阻塞 "ConveyorBlock"
        /// "ConveyorBlock"
        /// </summary>
        EM_CLASS_CONVEY_OR_BLOCK = 69,
        /// <summary>
        /// 厨房有害动物检测 "KitchenAnimal"
        /// "KitchenAnimal"
        /// </summary>
        EM_CLASS_KITCHEN_ANIMAL = 70,
        /// <summary>
        /// 万物检测 "AllSeeingEye"
        /// "AllSeeingEye"
        /// </summary>
        EM_CLASS_ALLSEEINGEYE = 71,
        /// <summary>
        /// 智慧消防 "IntelliFireControl"
        /// "IntelliFireControl"
        /// </summary>
        EM_CLASS_INTELLI_FIRE_CONTROL = 72,
        /// <summary>
        /// 传送带检测 "ConveyerBelt"
        /// "ConveyerBelt"
        /// </summary>
        EM_CLASS_CONVERYER_BELT = 73,
        /// <summary>
        /// 智慧物流 "IntelliLogistics"
        /// "IntelliLogistics"
        /// </summary>
        EM_CLASS_INTELLI_LOGISTICS = 74,
        /// <summary>
        /// 烟火检测"SmokeFire"
        /// "SmokeFire"
        /// </summary>
        EM_CLASS_SMOKE_FIRE = 75,
        /// <summary>
        /// 物品监控"ObjectMonitor"
        /// "ObjectMonitor"
        /// </summary>
        EM_CLASS_OBJECT_MONITOR = 76,
        /// <summary>
        /// 智能停车"IntelliParking"
        /// "IntelliParking"
        /// </summary>
        EM_CLASS_INTELLI_PARKING = 77,
        /// <summary>
        /// 智慧消防 "FireControl"
        /// "FireControl"
        /// </summary>
        EM_CLASS_FIRE_CONTROL = 78,
        /// <summary>
        /// 动物检测 "AnimalDetection"
        /// "AnimalDetection"
        /// </summary>
        EM_CLASS_ANIMAL_DETECTION = 79,
        /// <summary>
        /// 火警监控 "FireControlMonitor"
        /// "FireControlMonitor"
        /// </summary>
        EM_CLASS_FIRE_CONTROL_MONITOR = 80,
        /// <summary>
        /// / 鱼群监测 "FishMonitor"
        /// "FishMonitor"
        /// </summary>
        EM_CLASS_FISH_MONITOR = 81,
        /// <summary>
        /// / 工程车检测“ShopTruckDetect”
        /// "ShopTruckDetect"
        /// </summary>
        EM_CLASS_SHOPTRUCK_DETECT = 82,
        /// <summary>
        /// / 精准客流 "CustomerFlow"
        /// / "CustomerFlow"
        /// </summary>
        EM_CLASS_CUSTOMER_FLOW = 83,
        /// <summary>
        /// / 人员聚集 "Cluster"
        /// / "Cluster"
        /// </summary>
        EM_CLASS_CLUSTER = 84,
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFIC_UNDERSPEED's data
    /// 交通欠速事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_UNDERSPEED_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        // <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved2;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// have being detected object
        /// 车牌信息
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// speed,km/h
        /// 车辆实际速度,Km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// Speed Up limit Unit:km/h
        /// 速度上限 单位：km/h
        /// </summary>
        public int nSpeedUpperLimit;
        /// <summary>
        /// Speed Low limit Unit:km/h 
        /// 速度下限 单位：km/h 
        /// </summary>
        public int nSpeedLowerLimit;
        /// <summary>
        /// snap index: such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved1;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// under speed percentage
        /// 欠速百分比
        /// </summary>
        public int nUnderSpeedingPercentage;
        /// <summary>
        /// snap flags(by bit),0bit:"*",1bit:"Timing",2bit:"Manual",3bit:"Marked",4bit:"Event",5bit:"Mosaic",6bit:"Cutout"
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// intelli comm info
        /// 智能事件公共信息
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// GPS info
        /// GPS信息
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 832)]
        public byte[] bReserved;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFICGATE's data
    /// owing to history, if you want to deal with TRAFFICGATE,NET_DEV_EVENT_TRAFFICJUNCTION_INFO and NET_EVENT_IVS_TRAFFICGATE must be handle together;
    /// in addition: EVENT_IVS_TRAFFIC_TOLLGATE only support new tollgate event configuration
    /// 事件类型EVENT_IVS_TRAFFICGATE(交通卡口老规则事件/线圈电警上的交通卡口老规则事件)对应的数据块描述信息
    /// 由于历史原因,如果要处理卡口事件,NET_DEV_EVENT_TRAFFICJUNCTION_INFO 和 NET_EVENT_IVS_TRAFFICGATE要一起处理,以防止有视频电警和线圈电警同时接入平台的情况发生
    /// 另外NET_EVENT_IVS_TRAFFIC_TOLLGATE只支持新卡口事件的配置
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFICGATE_INFO
    {
        /// <summary>
        /// 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 开闸状态,具体请见EM_OPEN_STROBE_STATE
        /// Open gateway status, see EM_OPEN_STROBE_STATE
        /// </summary>
        public byte byOpenStrobeState;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体，车标
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 对应车道号
        /// road number
        /// </summary>
        public int nLane;
        /// <summary>
        /// 车辆实际速度Km/h
        /// the car's actual rate(Km/h)
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// 速度上限 单位：km/h
        /// rate upper limit(km/h)
        /// </summary>
        public int nSpeedUpperLimit;
        /// <summary>
        /// 速度下限 单位：km/h
        /// rate lower limit(km/h)
        /// </summary>
        public int nSpeedLowerLimit;
        /// <summary>
        /// 违反规则掩码,第一位:逆行;
        /// 第二位:压线行驶; 第三位:超速行驶;
        /// 第四位：欠速行驶; 第五位:闯红灯;第六位:穿过路口(卡口事件)
        /// 第七位: 压黄线; 第八位: 有车占道; 第九位: 黄牌占道;否则默认为:交通卡口事件
        /// BreakingRule's mask,first byte: Retrograde;
        /// second byte:Overline; the third byte:Overspeed;
        /// the forth byte:UnderSpeed;the five byte: crash red light;the six byte:passing(trafficgate)
        /// the seven byte: OverYellowLine; the eight byte: WrongRunningRoute; the nine byte: YellowVehicleInRoute; default: trafficgate
        /// </summary>
        public uint dwBreakingRule;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 车身信息，有存放车牌信息
        /// vehicle info
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// 手动抓拍序号
        /// manual snap sequence string
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szManualSnapNo;
        /// <summary>
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// snap index,such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// </summary>
        public int nSequence;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved;
        /// <summary>
        /// 设备产生的抓拍标识
        /// snap flag from device
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szSnapFlag;
        /// <summary>
        /// 抓拍方式,0-未分类 1-全景 2-近景 4-同向抓拍 8-反向抓拍 16-号牌图像
        /// snap mode,0-normal 1-globle 2-near 4-snap on the same side 8-snap on the reverse side 16-plant picture
        /// </summary>
        public byte bySnapMode;
        /// <summary>
        /// 超速百分比
        /// over speed percentage
        /// </summary>
        public byte byOverSpeedPercentage;
        /// <summary>
        /// 欠速百分比
        /// under speed percentage
        /// </summary>
        public byte byUnderSpeedingPercentage;
        /// <summary>
        /// 红灯容许间隔时间,单位：秒
        /// red light margin, s
        /// </summary>
        public byte byRedLightMargin;
        /// <summary>
        /// 行驶方向,0-上行(即车辆离设备部署点越来越近),1-下行(即车辆离设备部署点越来越远)
        /// drive direction,0-"Approach",where the car is more near,1-"Leave",means where if mor far to the car
        /// </summary>
        public byte byDriveDirection;
        /// <summary>
        /// 道路编号
        /// road way number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRoadwayNo;
        /// <summary>
        /// 违章代码
        /// violation code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szViolationCode;
        /// <summary>
        /// 违章描述
        /// violation desc
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szViolationDesc;
        /// <summary>
        /// 对应图片的分辨率
        /// picture resolution
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// 车辆大小类型 Minisize"微型车,"Light-duty"小型车,"Medium"中型车,
        /// "Oversize"大型车,"Huge"超大车,"Largesize"长车 "Unknown"未知
        /// car type,"Motor", "Light-duty", "Medium", "Oversize", "Huge", "Other"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVehicleType;
        /// <summary>
        /// 车辆长度, 单位米
        /// car length, m
        /// </summary>
        public byte byVehicleLenth;
        /// <summary>
        /// LightState表示红绿灯状态:0 未知,1 绿灯,2 红灯,3 黄灯
        /// LightState means red light status:0 unknown,1 green,2 red,3 yellow
        /// </summary>
        public byte byLightState;
        /// <summary>
        /// 保留字节,留待扩展
        /// reserved
        /// </summary>
        public byte byReserved1;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 限高速宽限值 单位：km/h
        /// over speed margin, km/h
        /// </summary>
        public int nOverSpeedMargin;
        /// <summary>
        /// 限低速宽限值 单位：km/h
        /// under speed margin, km/h
        /// </summary>
        public int nUnderSpeedMargin;
        /// <summary>
        /// "DrivingDirection" : ["Approach", "上海", "杭州"],行驶方向
        /// "Approach"-上行,即车辆离设备部署点越来越近；"Leave"-下行,
        /// 即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和
        /// 下行的两个地点,UTF-8编码
        /// "DrivingDirection" : ["Approach", "Shanghai", "Hangzhou"],
        /// "Approach" means driving direction,where the car is more near;"Leave"-means where if mor far to the car
        /// the second and third param means the location of the driving direction
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3 * 256)]
        public string szDrivingDirection;
        /// <summary>
        /// 本地或远程设备名称
        /// machine name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMachineName;
        /// <summary>
        /// 机器部署地点、道路编码
        /// machine address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMachineAddress;
        /// <summary>
        /// 机器分组、设备所属单位
        /// machine group
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMachineGroup;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 由车检器产生抓拍信号冗余信息
        /// The vehicle detector generates the snap signal redundancy info
        /// </summary>
        public NET_SIG_CARWAY_INFO_EX stuSigInfo;
        /// <summary>
        /// 文件路径
        /// File path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;
        /// <summary>
        /// 红灯开始UTC时间
        /// the begin time of red light
        /// </summary>
        public NET_TIME_EX RedLightUTC;
        /// <summary>
        /// 设备地址,OSD叠加到图片上的,来源于配置TrafficSnapshot.DeviceAddress,'\0'结束
        /// device address,OSD superimposed onto the image,from TrafficSnapshot.DeviceAddress,'\0'means end.
        /// </summary>
        public IntPtr szDeviceAddress;
        /// <summary>
        /// 当前图片曝光时间,单位为毫秒
        /// Current picture exposure time, in milliseconds
        /// </summary>
        public float fActualShutter;
        /// <summary>
        /// 当前图片增益,范围为0~100
        /// Current picture gain, ranging from 0 to 1000
        /// </summary>
        public byte byActualGain;
        /// <summary>
        /// 0-南向北 1-西南向东北 2-西向东 3-西北向东南 4-北向南 5-东北向西南 6-东向西 7-东南向西北 8-未知
        /// 0-S to N 1-SW to NE 2-W to E 3-NW to SE 4-N to S 5-NE to SW 6-E to W 7-SE to NW 8-Unknown
        /// </summary>
        public byte byDirection;
        /// <summary>
        /// 保留字节, 字节对齐
        /// Reserved bytes, byte alignment
        /// </summary>
        public byte bReserve;
        /// <summary>
        /// 卡片个数
        /// Card Number
        /// </summary>
        public byte bRetCardNumber;
        /// <summary>
        /// 卡片信息
        /// Card information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_EVENT_CARD_INFO[] stuCardInfo;
        /// <summary>
        /// 图片防伪码
        /// Waterproof
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDefendCode;
        /// <summary>
        /// 关联禁止名单数据库记录默认主键ID, 0,无效；> 0,禁止名单数据记录
        /// Link to balcklist main keyID, 0, invalid, > 0, prohibit data record
        /// </summary>
        public int nTrafficBlackListID;
        /// <summary>
        /// 公共信息
        /// public info
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 抓拍方向
        /// Vehicle Direction
        /// </summary>
        public EM_VEHICLE_DIRECTION emVehicleDirection;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved bytes, leave extended
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 448)]
        public byte[] bReserved;
    }

    /// <summary>
    /// strobe state
    /// 道闸状态
    /// </summary>
    public enum EM_OPEN_STROBE_STATE
    {
        /// <summary>
        /// unknown
        /// 未知状态
        /// </summary>
        UNKOWN,
        /// <summary>
        /// close
        /// 关闸
        /// </summary>
        CLOSE,
        /// <summary>
        /// auto open
        /// 自动开闸
        /// </summary>
        AUTO,
        /// <summary>
        /// manual open
        /// 手动开闸
        /// </summary>
        MANUAL,
    }

    /// <summary>
    /// 手动抓拍专用上报钉子内容
    /// manual-snap custom data
    /// </summary>
    public struct NET_A_EVENT_MANUALSNAP_CUSTOM_DATA
    {
        /// <summary>
        /// 地磅钉子称重信息
        /// custom weight info
        /// </summary>
        public NET_EVENT_CUSTOM_WEIGHT_INFO stuWeighInfo;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 472)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 停车位数据信息
    /// parking space data information
    /// </summary>
    public struct NET_A_EVENT_MANUALSNAP_PARKING_INFO
    {
        /// <summary>
        /// 通道号，从0开始, -1表示未知通道
        /// Channel number, starting from 0. -1 indicates an unknown channel
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// 车位是否有车标记：0：未知 1：有车 2：无车
        /// Whether there is a car in the parking space: 0: unknown 1: there is a car 2: no car
        /// </summary>
        public uint nStatus;
        /// <summary>
        /// 车牌号码
        /// plate number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPlateNumber;
        /// <summary>
        /// 车牌号码
        /// plate number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szParkingNo;
        /// <summary>
        /// 保留字节
        /// Save bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFIC_MANUALSNAP's data
    /// 交通手动抓拍事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_MANUALSNAP_INFO
    {
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 对应车道号
        /// lane number
        /// </summary>
        public int nLane;
        /// <summary>
        /// 手动抓拍序号
        /// manual snap number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szManualSnapNo;
        /// <summary>
        /// 检测到的物体
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 检测到的车身信息
        /// have being detected vehicle
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// 表示交通车辆的数据库记录
        /// TrafficCar info
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 开闸状态, 具体请见 EM_OPEN_STROBE_STATE
        /// Open status, see EM_OPEN_STROBE_STATE
        /// </summary>
        public byte byOpenStrobeState;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 对应图片的分辨率
        /// picture resolution
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// 停车位数据信息数组实际有效大小
        /// Actual valid size of parking space data information array
        /// </summary>
        public int nParkingInfoNum;
        /// <summary>
        /// 保留字节,留待扩展.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 500)]
        public byte[] bReserved;
        /// <summary>
        /// 手动抓拍专用上报内容
        /// Custom data
        /// </summary>
        public NET_A_EVENT_MANUALSNAP_CUSTOM_DATA stuCustom;
        /// <summary>
        /// 公共信息
        /// public info
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 停车位数据信息
        /// Parking space data information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_A_EVENT_MANUALSNAP_PARKING_INFO[] stuParkingInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event Public Extension Field Structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    // 禁停状态
    public enum EM_FORBID_PARKING_STATUS
    {
        UNKNOWN,   // 未知
        NOT_FORBID,// 未禁止
        FORBID,    // 禁止
    }

    // 是否跨位
    public enum EM_ACROSS_PARKING
    {
        UNKNOWN,                   // 未知
        NO,                        // 未跨位
        YES,                       // 跨位
    }

    // 车位抓拍触发类型
    public enum EM_PARKING_TRIGGER_TYPE
    {
        UNKNOWN = -1,            // 未知
        NONMANUAL,          // 非手动触发
        MANUAL,             // 手动触发
    }

    // 停车方向
    public enum EM_PARKINGSPACE_DIRECTION
    {
        UNKNOWN,           // 未知
        REVERSE,           // 逆向
        FORWARD,           // 正向
    }

    // 一位多车信息
    public struct NET_DEV_OCCUPIED_WARNING_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szParkingNo;          // 车位号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5 * 64)]
        public string szPlateNumber;        // 车牌号码
        public int nPlateNumber;            // 车牌数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] bReserved;            // 预留字节
    }

    /// <summary>
    /// 车位有车事件类型
    /// Types of parking events
    /// </summary>
    public enum EM_PARKING_SPACE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_PARKING_SPACE_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 正常驶入
        /// Normal entry
        /// </summary>
        EM_PARKING_SPACE_TYPE_NORMAL,
        /// <summary>
        /// 泊车变更事件
        /// Parking change event
        /// </summary>
        EM_PARKING_SPACE_TYPE_CHANGE,
    }

    /// <summary>
    /// 停车变更信息
    /// Parking change information
    /// </summary>
    public struct NET_PARKING_CHANGE_INFO
    {
        /// <summary>
        /// 变更前的车位
        /// Parking space before change
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPreParkingNo;
        /// <summary>
        /// 变更后的车位
        /// Changed parking space
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAfterParkingNo;
        /// <summary>
        /// 变更车位停车时长，单位：秒
        /// Change parking time in seconds
        /// </summary>
        public uint nStrandTime;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;
    }

    /// <summary>
    /// event type  EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING(parking space parking)corresponding data block description info
    /// 车位有车事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_PARKINGSPACEPARKING_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] bReserved1;
        /// <summary>
        /// Time stamp(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public uint PTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Corresponding lane No.
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// Detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// Vehicle body info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// The corresponding file info of the event
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// snap index: such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 
        /// </summary>
        public int nSequence;
        /// <summary>
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// snap flags(by bit),0bit:"*",1bit:"Timing",2bit:"Manual",3bit:"Marked",4bit:"Event",5bit:"Mosaic",6bit:"Cutout"
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON 
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// parking space status 0-free 1-not free 2-on line
        /// 车位综合的状态,0-占用,1-空闲,2-压线
        /// </summary>
        public int nParkingSpaceStatus;
        /// <summary>
        /// traffic paring information
        /// 停车场信息
        /// </summary>
        public NET_DEV_TRAFFIC_PARKING_INFO stTrafficParingInfo;
        /// <summary>
        /// The source of plate text, 0:Local,1:Server
        /// 车牌识别来源, 0:本地算法识别,1:后端服务器算法识别
        /// </summary>
        public byte byPlateTextSource;
        /// <summary>
        /// reserved
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved2;
        /// <summary>
        /// 车位(地磁)编号，
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szParkingNum;
        /// <summary>
        /// 球机预置位编号，
        /// </summary>
        public uint dwPresetNum;
        /// <summary>
        /// 车位是否有故障，
        /// </summary>
        public bool bParkingFault;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 364)]
        public byte[] bReserved;
        /// <summary>
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 车位图片信息
        /// </summary>
        public NET_INTELLIGENCE_IMAGE_INFO stuParkingImage;
        /// <summary>
        /// 事件置信度（0-100）
        /// </summary>
        public uint nConfidence;
        /// <summary>
        /// 是否跨位
        /// </summary>
        public EM_ACROSS_PARKING emAcrossParking;
        /// <summary>
        /// 停车方向
        /// </summary>
        public EM_PARKINGSPACE_DIRECTION emParkingDirection;
        public EM_FORBID_PARKING_STATUS emForbidParkingStatus;              // 禁停状态
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1004)]
        public byte[] byReserved1;                                      // 为图片信息做预留字节，新增的字段请在该保留字节下面添加
        public EM_PARKING_TRIGGER_TYPE emTriggerType;                       // 触发类型
        public NET_DEV_OCCUPIED_WARNING_INFO stuOccupiedWarningInfo;            // 一位多车信息, 如果车位此前没有车占用, 不会带有本字段信息
        /// <summary>
        /// 所有使能的车位号
        /// All enabled parking spaces
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12 * 32)]
        public string szAllParkingNo;
        /// <summary>
        /// 使能车位号的个数
        /// Number of enabled parking spaces
        /// </summary>
        public int nParkingNoNum;
        /// <summary>
        /// 车位有车的事件类型
        /// Event types of parking spaces with cars
        /// </summary>
        public EM_PARKING_SPACE_TYPE emParkingSpaceType;
        /// <summary>
        /// 停车变更信息
        /// Parking change information
        /// </summary>
        public NET_PARKING_CHANGE_INFO stuParkingChangeInfo;
        /// <summary>
        /// 图片信息数组
        /// Image information
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Image information number
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved;
    }

    /// <summary>
    /// Parking lot info
    /// 停车场信息
    /// </summary>
    public struct NET_DEV_TRAFFIC_PARKING_INFO
    {
        /// <summary>
        /// Feature image point number
        /// 特征图片区点个数
        /// </summary>
        public int nFeaturePicAreaPointNum;
        /// <summary>
        /// Feature image info
        /// 特征图片区信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_POINT[] stFeaturePicArea;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 572)]
        public byte[] bReserved;
    }

    // 匹配到的车辆驶入信息
    public struct NET_DEV_MATCH_PARKING_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szParkingNo;                            // 驶入的车位号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPlateNum;                             // 驶入的车牌号信息
        public uint nSimilarity;                                // 驶出车牌号码与匹配到的驶入车牌号码的相似度, 全匹配成功为100, 失败为0。
                                                                // 如果开启模糊匹配, 全匹配不为100则进行模糊匹配, 如下
                                                                // 1. 除汉字外，所有的数字和字母一样 为95
                                                                // 2. 有一位数字或字母不一样，则为90
                                                                // 3. 有两位数字或字母不一样，则为80
                                                                // 其他的情况则认为没有匹配到，则为0
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] bReserved;                                // 保留字节
    }

    /// <summary>
    /// event type  EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING(parking space no parking)corresponding data block description info
    /// 车位无车事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] bReserved1;
        /// <summary>
        /// Time stamp(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public uint PTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Corresponding lane No.
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// Detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// Vehicle body info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// The corresponding file info of the event
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// snap index: such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// snap flags(by bit),0bit:"*",1bit:"Timing",2bit:"Manual",3bit:"Marked",4bit:"Event",5bit:"Mosaic",6bit:"Cutout"
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// traffic paring information
        /// 停车场信息
        /// </summary>
        public NET_DEV_TRAFFIC_PARKING_INFO stTrafficParingInfo;
        /// <summary>
        /// The source of plate text, 0:Local,1:Server
        /// 车牌识别来源, 0:本地算法识别,1:后端服务器算法识别
        /// </summary>
        public byte byPlateTextSource;
        /// <summary>
        /// reserved
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved2;
        /// <summary>
        /// 车位(地磁)编号，
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szParkingNum;
        /// <summary>
        /// 球机预置位编号，
        /// </summary>
        public uint dwPresetNum;
        /// <summary>
        /// 车位是否有故障，
        /// </summary>
        public bool bParkingFault;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 368)]
        public byte[] bReserved;
        /// <summary>
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 全景大图信息
        /// </summary>
        public NET_INTELLIGENCE_IMAGE_INFO stuGlobalImage;
        /// <summary>
        /// 车位图片信息
        /// </summary>
        public NET_INTELLIGENCE_IMAGE_INFO stuParkingImage;
        /// <summary>
        /// 事件置信度（0-100）
        /// </summary>
        public uint nConfidence;
        /// <summary>
        /// 为图片信息做预留字节，新增的字段请在该保留字节下面添加
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016)]
        public byte[] byReserved1;
        public EM_PARKING_TRIGGER_TYPE emTriggerType;                          // 触发方式

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public NET_DEV_MATCH_PARKING_INFO[] stuMatchParkingInfo;                  // 匹配到的车辆驶入信息
        public int nMatchParkingNum;                           // 匹配到的车辆驶入信息个数
        /// <summary>
        /// 所有使能的车位号
        /// All enabled parking spaces
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12 * 32)]
        public string szAllParkingNo;
        /// <summary>
        /// 使能车位号的个数
        /// Number of enabled parking spaces
        /// </summary>
        public int nParkingNoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }


    /// <summary>
    /// event type EVENT_IVS_PARKINGDETECTION corresponding data block description info 
    /// 非法停车事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_PARKINGDETECTION_INFO
    {
        /// <summary>
        /// ChannelId
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// have being detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// detect region's point number
        /// 规则检测区域顶点数
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// detect region info
        /// 规则检测区域
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// snap flags(by bit),0bit:"*",1bit:"Timing",2bit:"Manual",3bit:"Marked",4bit:"Event",5bit:"Mosaic",6bit:"Cutout"
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// the source device's index,-1 means data in invalid
        /// 事件源设备上的index,-1表示数据无效
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// the source device's sign(exclusive),field said local device does not exist or is empty
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// event trigger accumilated times
        /// 事件触发累计次数
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// intelli comm info
        /// 智能事件公共信息
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 扩展信息
        /// Extension info
        /// </summary>
        public NET_EXTENSION_INFO stuExtensionInfo;
        /// <summary>
        /// 车位名称
        /// parking space name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCustomParkNo;
        /// <summary>
        /// 预置点的坐标和放大倍数 是一个数组，每个成员是int类型
        /// 第一个参数是水平坐标，范围[0,3599]，表示0度到359.9度，度数扩大10倍表示。
        /// 第二个参数是垂直坐标，范围[-1800,1800]，表示-180.0度到+180.0度，度数扩大10倍表示。
        /// 第三个参数是放大参数，范围[0,127]，表示最小倍到最大倍的变倍位置
        /// The coordinates and magnification of the preset points
        /// </summary>
        public NET_PRESET_POSITION stPosition;
        /// <summary>
        /// 当前报警通道的横向视场角，单位度，实际角度乘以100
        /// Lateral field angle of view of the current alarm channel, Unit: degrees, the actual Angle times 100
        /// </summary>
        public uint nCurChannelHFOV;
        /// <summary>
        /// 当前报警通道的纵向视场角，单位度，实际角度乘以100
        /// Longitudinal field angle of view of the current alarm channel, Unit: degrees, the actual Angle times 100
        /// </summary>
        public uint nCurChannelVFOV;
        /// <summary>
        /// 全景广角图
        /// Panoramic wide-angle map
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 船只物体个数
        /// Number of Boat objects
        /// </summary>
        public uint nObjectBoatsNum;
        /// <summary>
        /// 船只物品信息
        /// Boat Objects Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_BOAT_OBJECT[] stuBoatObjects;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 400)]
        public byte[] bReserved;
    }

    /// <summary>
    /// event type  EVENT_IVS_TRAFFIC_OVERLINE(traffic-Overline)corresponding data block description info
    /// 交通-压线事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_OVERLINE_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// have being detected object
        /// 车牌信息
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// snap index,such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// speed,km/h
        /// 车辆实际速度,Km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// flag(by bit),see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON 
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// GPS info
        /// GPS信息
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 968)]
        public byte[] bReserved;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// public info 
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// event type  EVENT_IVS_TRAFFIC_OVERYELLOWLINE(traffic-OverYellowLine)corresponding data block description info
    /// 交通违章-压黄线对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// have being detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// speed,km/h
        /// 车辆实际速度,km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// flag(by bit),see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON 
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// true:corresponding alarm recording; false: no corresponding alarm recording
        /// True:有对应的报警录像; false:无对应的报警录像
        /// </summary>
        public int bIsExistAlarmRecord;
        /// <summary>
        /// Video size
        /// 录像大小
        /// </summary>
        public uint dwAlarmRecordSize;
        /// <summary>
        /// Video Path
        /// 录像路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szAlarmRecordPath;
        /// <summary>
        /// intelli comm info
        /// 智能事件公共信息
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 532)]
        public byte[] bReserved;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// Acme amount of the rule detect zone 
        /// 规则检测区域顶点数
        /// </summary>
        public int nDetectNum;
        /// <summary>
        /// Rule detect zone
        /// 规则检测区域
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// public info 
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// event type EVENT_IVS_TRAFFIC_RETROGRADE corresponding data block description info
    /// 交通-逆行事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_RETROGRADE_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// have being detected object
        /// 车牌信息
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// snap index,such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// speed,km/h
        /// 车辆实际速度,Km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// flag(by bit),see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON 
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// true:corresponding alarm recording; false: no corresponding alarm recording
        /// True:有对应的报警录像; false:无对应的报警录像
        /// </summary>
        public int bIsExistAlarmRecord;
        /// <summary>
        /// Video size
        /// 录像大小
        /// </summary>
        public uint dwAlarmRecordSize;
        /// <summary>
        /// Video Path
        /// 录像路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szAlarmRecordPath;
        /// <summary>
        /// intelli comm info
        /// 智能事件公共信息
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// GPS info
        /// GPS信息
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// Reserved 
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 484)]
        public byte[] bReserved;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// Acme amount of the rule detect zone 
        /// 规则检测区域顶点数
        /// </summary>
        public int nDetectNum;
        /// <summary>
        /// Rule detect zone
        /// 规则检测区域
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        public bool bHasNonMotor; // 是否有非机动车对象
        public NET_VA_OBJECT_NONMOTOR stuNonMotor; // 非机动车信息
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// event type EVENT_IVS_TRAFFIC_WRONGROUTE corresponding data block description info
    /// 交通违章-不按车道行驶对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_WRONGROUTE_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// have being detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// event file info  
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// speed,km/h
        /// 车辆实际速度,km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// flag(by bit),see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON  
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// GPS info
        /// GPS信息
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// Reserved 
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 972)]
        public byte[] bReserved;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// public info 
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// 新音频检测报警信息
    /// New audio detection alarm information
    /// </summary>
    public struct NET_NEW_SOUND_ALARM_STATE
    {
        /// <summary>
        /// 报警通道号
        /// Alarm channel number
        /// </summary>
        public int channel;
        /// <summary>
        /// 报警类型；0：音频值过低,1：音频值过高
        /// Alarm type;0:Volume value is too low ,1:Volume value is too high.
        /// </summary>
        public int alarmType;
        /// <summary>
        /// 音量值
        /// Volume
        /// </summary>
        public uint volume;
        /// <summary>
        /// 音频报警状态, 0: 音频报警出现, 1: 音频报警消失
        /// volume alarm state, 0: alarm appear, 1: alarm disappear
        /// </summary>
        public byte byState;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 255)]
        public string reserved;
    }

    /// <summary>
    /// struct about audio anomaly alarm information
    /// 音频异常事件对应的数据描述信息
    /// </summary>
    public struct NET_ALARM_AUDIO_ANOMALY
    {
        /// <summary>
        /// 结构体大小
        /// StructSize
        /// </summary>
        public uint dwStructSize;
        /// <summary>
        /// 事件动作, 0:Start, 1:Stop
        /// Event Action, 0:Start, 1:Stop
        /// </summary>
        public uint dwAction;
        /// <summary>
        /// 音频通道号
        /// Audio Channel ID
        /// </summary>
        public uint dwChannelID;
        /// <summary>
        /// 声音强度
        /// Audio sensitivity
        /// </summary>
        public int nDecibel;
        /// <summary>
        /// 声音频率
        /// Audio frequency
        /// </summary>
        public int nFrequency;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 报警类型：0-未知 1- 音频丢失侦测，2- 声强陡升侦测，3- 声强陡降侦测
        /// / Alarm type: 0 - Unknown, 1 - Audio loss detection, 2 - Sudden increase in sound intensity, 3 - Sudden decrease in sound intensity
        /// </summary>
        public uint nAlarmType;
        /// <summary>
        /// / 保留字段
        /// / Reserved field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 声音类型枚举
    /// Audio type enum
    /// </summary>
    public enum EM_AUDIO_MUTATION_ALARM_TYPE
    {
        AUDIO_MUTATION_UNKNOW,
        AUDIO_MUTATION_CRY,
        AUDIO_MUTATION_ALARM,
        AUDIO_MUTATION_GUNSHOT,
        AUDIO_MUTATION_EXPLOSION,
        AUDIO_MUTATION_SCREAM,
        AUDIO_MUTATION_CRASHINGGLASS,
    }

    /// <summary>
    /// struct about audio mutation alarm information
    /// 声强突变事件对应的数据描述信息
    /// </summary>
    public struct NET_ALARM_AUDIO_MUTATION
    {
        /// <summary>
        /// 结构体大小
        /// StructSize
        /// </summary>
        public uint dwStructSize;
        /// <summary>
        /// 事件动作, 0:Start, 1:Stop
        /// Event Action,0:Start, 1:Stop
        /// </summary>
        public uint dwAction;
        /// <summary>
        /// 音频通道号
        /// Audio Channel ID
        /// </summary>
        public uint dwChannelID;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 声音类型
        /// Audio type
        /// </summary>
        public EM_AUDIO_MUTATION_ALARM_TYPE emAudioType;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string reserved;
    }

    // 无硬盘报警
    public struct NET_ALARM_NO_DISK_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 时间
        /// time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 事件动作, 0:Start, 1:Stop
        /// event action, 0:Start, 1:Stop
        /// </summary>
        public uint dwAction;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// system ability
    /// 系统能力类型
    /// </summary>
    public enum EM_SYS_ABILITY
    {
        /// <summary>
        /// dynamic connect capacity
        /// 查询动态多连接能力
        /// </summary>
        DYNAMIC_CONNECT = 1,
        /// <summary>
        /// Watermark configuration capacity
        /// 水印配置能力
        /// </summary>
        WATERMARK_CFG = 17,
        /// <summary>
        /// wireless  configuration capacity
        /// wireless配置能力
        /// </summary>
        WIRELESS_CFG = 18,
        /// <summary>
        /// Device capacity list 
        /// 设备的能力列表
        /// </summary>
        DEVALL_INFO = 26,
        /// <summary>
        /// Card number search capacity 
        /// 卡号查询能力
        /// </summary>
        CARD_QUERY = 0x0100,
        /// <summary>
        /// Multiple-window preview capacity 
        /// 多画面预览能力
        /// </summary>
        MULTIPLAY = 0x0101,
        /// <summary>
        /// Fast query configuration Capabilities
        /// 快速查询配置能力
        /// </summary>
        QUICK_QUERY_CFG = 0x0102,
        /// <summary>
        /// Wireless alarm capacity 
        /// 无线报警能力
        /// </summary>
        INFRARED = 0x0121,
        /// <summary>
        /// Alarm activation mode function 
        /// 报警输出触发方式能力
        /// </summary>
        TRIGGER_MODE = 0x0131,
        /// <summary>
        /// Network hard disk partition
        /// 网络硬盘分区能力
        /// </summary>
        DISK_SUBAREA = 0x0141,
        /// <summary>
        /// Query DSP Capabilities
        /// 查询DSP能力
        /// </summary>
        DSP_CFG = 0x0151,
        /// <summary>
        /// Query SIP,RTSP Capabilities
        /// 查询SIP,RTSP能力
        /// </summary>
        STREAM_MEDIA = 0x0161,
        /// <summary>
        /// Search intelligent track capability
        /// 查询智能跟踪能力
        /// </summary>
        INTELLI_TRACKER = 0x0171,
    }

    /// <summary>
    /// device enable information
    /// 设备使能信息
    /// </summary>
    public struct NET_DEV_ENABLE_INFO
    {
        /// <summary>
        /// Function list capacity set. Corresponding to the above mentioned enumeration. Use bit to represent sub-function
        /// 功能列表能力集,下标对应上述的枚举值,按位表示子功能
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public uint[] IsFucEnable;
    }

    /// <summary>
    /// query log type
    /// 查询日志类型
    /// </summary>
    public enum EM_LOG_QUERY_TYPE
    {
        /// <summary>
        /// All logs
        /// 所有日志
        /// </summary>
        ALL = 0,
        /// <summary>
        /// System logs 
        /// 系统日志
        /// </summary>
        SYSTEM,
        /// <summary>
        /// Configuration logs 
        /// 配置日志
        /// </summary>
        CONFIG,
        /// <summary>
        /// Storage logs
        /// 存储相关
        /// </summary>
        STORAGE,
        /// <summary>
        /// Alarm logs 
        /// 报警日志
        /// </summary>
        ALARM,
        /// <summary>
        /// Record related
        /// 录象相关
        /// </summary>
        RECORD,
        /// <summary>
        /// Account related
        /// 帐号相关
        /// </summary>
        ACCOUNT,
        /// <summary>
        /// Clear log 
        /// 清除日志
        /// </summary>
        CLEAR,
        /// <summary>
        /// Playback related 
        /// 回放相关
        /// </summary>
        PLAYBACK,
        /// <summary>
        /// Concerning the front-end management and running
        /// 前端管理运行相关
        /// </summary>
        MANAGER
    }

    /// <summary>
    /// query device log prarm
    /// 查询设备日志参数
    /// </summary>
    public struct NET_QUERY_DEVICE_LOG_PARAM
    {
        /// <summary>
        /// Searched log type
        /// 查询日志类型
        /// </summary>
        public EM_LOG_QUERY_TYPE emLogType;
        /// <summary>
        /// The searched log start time
        /// 查询日志的开始时间
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// The searched log end time
        /// 查询日志的结束时间
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// The search begins from which log in one period. It shall begin with 0 if it is the first time search
        /// 在时间段中从第几条日志开始查询,开始第一次查询可设为0
        /// </summary>
        public int nStartNum;
        /// <summary>
        /// The ended log serial number in one search,the max returning number is 1024
        /// 一次查询中到第几条日志结束,日志返回条数的最大值为1024
        /// </summary>
        public int nEndNum;
        /// <summary>
        /// log struct type,0:NET_DEVICE_LOG_ITEM;1:NET_DEVICE_LOG_ITEM_EX
        /// 日志数据结构体类型,0:表示DH_DEVICE_LOG_ITEM；1:表示NET_DEVICE_LOG_ITEM_EX
        /// </summary>
        public byte nLogStuType;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] reserved;
        /// <summary>
        /// Channel no. 0:Compatible with previous all channel numbers. The channel No. begins with 1.1: The first channel
        /// 通道号,0:兼容之前表示所有通道号,所以通道号从1开始; 1:第一个通道
        /// </summary>
        public uint nChannelID;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
        public byte[] bReserved;
    }

    /// <summary>
    /// device log content
    /// 日志信息
    /// </summary>
    public struct NET_DEVICE_LOG_ITEM
    {
        /// <summary>
        /// Log type 
        /// 日志类型
        /// </summary>
        public int nLogType;
        /// <summary>
        /// Date
        /// 日期
        /// </summary>
        public NETDEVTIME stuOperateTime;
        /// <summary>
        /// Operator
        /// 操作者
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szOperator;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved;
        /// <summary>
        /// union structure type,0:szLogContext;1:stuOldLog
        /// union结构类型,0:szLogContext;1:stuOldLog
        /// </summary>
        public byte bUnionType;
        /// <summary>
        /// 0:Log content,1:Old log structure NET_OLDLOG
        /// 0:日志内容，1：老日志 结构体NET_OLDLOG
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szLogContext;
        /// <summary>
        /// Detail operation
        /// 具体的操作内容
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] reserved;
    }

    /// <summary>
    /// device log content
    /// 设备日志内容
    /// </summary>
    public struct NET_DEVICE_LOG_ITEM_EX
    {
        /// <summary>
        /// Log type 
        /// 日志类型
        /// </summary>
        public int nLogType;
        /// <summary>
        /// Date
        /// 日期
        /// </summary>
        public NETDEVTIME stuOperateTime;
        /// <summary>
        /// Operator
        /// 操作者
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szOperator;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved;
        /// <summary>
        /// union structure type,0:szLogContext;1:stuOldLog
        /// union结构类型,0:szLogContext;1:stuOldLog
        /// </summary>
        public byte bUnionType;
        /// <summary>
        /// 0:Log content,1:Old log structure NET_OLDLOG
        /// 0:日志内容，1：老日志 结构体NET_OLDLOG
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szLogContext;
        /// <summary>
        /// Detail operation
        /// 具体的操作内容
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szOperation;
        /// <summary>
        /// DetailContext
        /// 详细日志信息描述
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4 * 1024)]
        public byte[] szDetailContext;
    }

    /// <summary>
    /// old log content
    /// 老日志内容
    /// </summary>
    public struct NET_OLDLOG
    {
        /// <summary>
        /// Old log
        /// 老日志
        /// </summary>
        public NET_LOG_ITEM stuLog;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>         
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
        public byte[] bReserved;
    }

    /// <summary>
    /// old log content
    /// 老日志内容
    /// </summary>
    public struct NET_LOG_ITEM
    {
        /// <summary>
        /// Date
        /// 日期
        /// </summary>
        public NETDEVTIME time;
        /// <summary>
        /// Type
        /// 日志类型
        /// </summary>
        public ushort type;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        public byte reserved;
        /// <summary>
        /// Data
        /// 数据
        /// </summary>
        public byte data;
        /// <summary>
        /// Content
        /// 内容
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] context;
    }

    /// <summary>
    /// The time definition in the log information
    /// 时间结构体
    /// </summary>
    [StructLayout(LayoutKind.Explicit, Size = 4)]
    public struct NETDEVTIME
    {
        [FieldOffset(0)]
        private uint _value;

        /// <summary>
        /// Second 6bit
        /// 秒 6位
        /// </summary>
        public uint Second
        {
            set
            {
                _value = (value & 0x003f) | (_value & 0xffffffc0);
            }
            get
            {
                return _value & 0x003f;
            }
        }

        /// <summary>
        /// Minute 6bit
        /// 分 6位
        /// </summary>
        public uint Minute
        {
            set
            {
                _value = ((value & 0x003f) << 6) | (_value & 0xfffff03f);
            }
            get
            {
                return (_value >> 6) & 0x003f;
            }
        }

        /// <summary>
        /// Hour 5bit
        /// 小时 5位
        /// </summary>
        public uint Hour
        {
            set
            {
                _value = ((value & 0x001f) << 12) | (_value & 0xfffe0fff);
            }
            get
            {
                return (_value >> 12) & 0x001f;
            }
        }

        /// <summary>
        /// Day 5bit
        /// 天 5位
        /// </summary>
        public uint Day
        {
            set
            {
                _value = ((value & 0x001f) << 17) | (_value & 0xffc3ffff);
            }
            get
            {
                return (_value >> 17) & 0x001f;
            }
        }

        /// <summary>
        /// Month 4bit
        /// 月 4位
        /// </summary>
        public uint Month
        {
            set
            {
                _value = ((value & 0x000f) << 22) | (_value & 0xfc3fffff);
            }
            get
            {
                return (_value >> 22) & 0x000f;
            }
        }

        /// <summary>
        /// Year 6bit 2000-2063
        /// 年 6位 2000-2063
        /// </summary>
        public uint Year
        {
            set
            {
                _value = (((value - 2000) & 0x003f) << 26) | (_value & 0x3ffffff);
            }
            get
            {
                return ((_value >> 26) & 0x003f) + 2000;
            }
        }

        public override string ToString()
        {
            return string.Format("{0}-{1}-{2} {3}:{4}:{5}", Year.ToString("D4"), Month.ToString("D2"), Day.ToString("D2"), Hour.ToString("D2"), Minute.ToString("D2"), Second.ToString("D2"));
        }
    }

    /// <summary>
    /// device enable type
    /// 设备支持功能列表
    /// </summary>
    public enum EM_DEV_ENABLE_TYPE
    {
        /// <summary>
        /// FTP bitwise, 1: send out record file;  2: Send out snapshot file
        /// FTP 按位,1：传送录像文件 2：传送抓图文件
        /// </summary>
        FTP = 0,
        /// <summary>
        /// SMTP bitwise,1: alarm send out text mail 2: Alarm send out image3:support HealthMail
        /// SMTP 按位,1：报警传送文本邮件 2：报警传送图片 3:支持健康邮件功能
        /// </summary>
        SMTP,
        /// <summary>
        /// NTP	 Bitwise:1:Adjust system time 
        /// NTP  按位：1：调整系统时间
        /// </summary>
        NTP,
        /// <summary>
        /// Auto maintenance  Bitwise:1:reboot 2:close  3:delete file
        /// 自动维护 按位：1：重启 2：关闭 3:删除文件
        /// </summary>
        AUTO_MAINTAIN,
        /// <summary>
        /// Privacy mask Bitwise  :1:multiple-window privacy mask
        /// 区域遮挡 按位：1：多区域遮挡
        /// </summary>
        VIDEO_COVER,
        /// <summary>
        /// Auto registration	Bitwise:1:SDK auto log in after registration 
        /// 主动注册 按位：1：注册后sdk主动登陆
        /// </summary>
        AUTO_REGISTER,
        /// <summary>
        /// DHCP	Bitwise 1:DHCP
        /// DHCP 按位：1：DHCP
        /// </summary>
        DHCP,
        /// <summary>
        /// UPNP	Bitwise 1:UPNP
        /// UPNP 按位：1：UPNP
        /// </summary>
        UPNP,
        /// <summary>
        /// COM sniffer  Bitwise :1:CommATM
        /// 串口抓包 按位：1:CommATM
        /// </summary>
        COMM_SNIFFER,
        /// <summary>
        /// Network sniffer Bitwise : 1:NetSniffer
        /// 网络抓包 按位： 1：NetSniffer
        /// </summary>
        NET_SNIFFER,
        /// <summary>
        /// Burn function Bitwise 1:Search burn status 
        /// 刻录功能 按位：1：查询刻录状态
        /// </summary>
        BURN,
        /// <summary>
        /// Video matrix Bitwise  1:Support video matrix or not 2:Support SPOT video matrix or not
        /// 视频矩阵 按位：1：是否支持视频矩阵 2:是否支持SPOT视频矩阵 3:是否支持HDMI视频矩阵
        /// </summary>
        VIDEO_MATRIX,
        /// <summary>
        /// Video detection Bitwise :1:Support video detection or not 
        /// 音频检测 按位：1：是否支持音频检测
        /// </summary>
        AUDIO_DETECT,
        /// <summary>
        /// Storage position Bitwise:1:Ftp server (Ips) 2:SBM 3:NFS 16:DISK 17:Flash disk
        /// 存储位置 按位：1：Ftp服务器(Ips) 2：SMB 3：NFS 4：ISCSI 16：DISK 17：U盘
        /// </summary>
        STORAGE_STATION,
        /// <summary>
        /// IPS storage search  Bitwise  1:IPS storage search
        /// IPS存储查询 按位：1：IPS存储查询
        /// </summary>
        IPSSEARCH,
        /// <summary>
        /// Snapshot Bitwise  1:Resoluiton 2:Frame rate 3:Snapshoot  4:Snapshoot file image; 5:Image quality 
        /// 抓图  按位：1：分辨率2：帧率3：抓图方式4：抓图文件格式5：图画质量
        /// </summary>
        SNAP,
        /// <summary>
        /// Search default network card search  Bitwise  1:Support
        /// 支持默认网卡查询 按位 1：支持
        /// </summary>
        DEFAULTNIC,
        /// <summary>
        /// Image quality configuration time in CBR mode 1:support 
        /// CBR模式下显示画质配置项 按位 1:支持
        /// </summary>
        SHOWQUALITY,
        /// <summary>
        /// Configuration import& emport function capacity.  Bitwise   1:support
        /// 配置导入导出功能能力 按位 1:支持
        /// </summary>
        CONFIG_IMEXPORT,
        /// <summary>
        /// Support search log page by page or not. Bitwise 1:support 
        /// 是否支持分页方式的日志查询 按位 1：支持
        /// </summary>
        LOG,
        /// <summary>
        /// Record setup capacity. Bitwise  1:Redandunce  2:Pre-record 3:Record period
        /// 录像设置的一些能力 按位 1:冗余 2:预录 3:录像时间段
        /// </summary>
        SCHEDULE,
        /// <summary>
        /// Network type. Bitwise 1:Wire Network 2:Wireless Network 3:CDMA/GPRS,4:CDMA/GPRS multi network card
        /// 网络类型按位表示 1:以态网 2:无线局域 3:CDMA/GPRS 4:CDMA/GPRS多网卡配置
        /// </summary>
        NETWORK_TYPE,
        /// <summary>
        /// Important record. Bitwise 1:Important record mark
        /// 标识重要录像 按位:1：设置重要录像标识
        /// </summary>
        MARK_IMPORTANTRECORD,
        /// <summary>
        /// Frame rate control activities. Bitwise 1:support frame rate control activities;2:support timing alarm type activate frame rate control(it does not support dynamic detection), this ability mutually exclusive with ACF ability
        /// 活动帧率控制 按位：1：支持活动帧率控制, 2:支持定时报警类型活动帧率控制(不支持动检),该能力与ACF能力互斥
        /// </summary>
        ACFCONTROL,
        /// <summary>
        /// Multiple-channel extra stream. Bitwise:1:support three channel extra stream
        /// 多路辅码流 按位：1：支持三路辅码流, 2:支持辅码流编码压缩格式独立设置
        /// </summary>
        MULTIASSIOPTION,
        /// <summary>
        /// Component modules bitwise: 1.Separate processing the schedule 2.Standard I franme Interval setting
        /// 组件化模块 按位：1,时间表分开处理 2:标准I帧间隔设置
        /// </summary>
        DAVINCIMODULE,
        /// <summary>
        /// GPS function bitwise:1:Gps locate function
        /// GPS功能 按位：1：Gps定位功能
        /// </summary>
        GPS,
        /// <summary>
        /// Support multi net card query   bitwise: 1: support
        /// 支持多网卡查询 按位 1：支持
        /// </summary>
        MULTIETHERNET,
        /// <summary>
        /// Login properties   bitwise: 1: support query login properties 
        /// Login属性 按位：1：支持Login属性查询
        /// </summary>
        LOGIN_ATTRIBUTE,
        /// <summary>
        /// Recording associated  bitwise: 1:Normal recording; 2:Alarm recording;3:Motion detection recording;  4:Local storage; 5: Network storage ;6:Redundancy storage;  7:Local emergency storage
        /// 录像相关 按位：1,普通录像；2：报警录像；3：动态检测录像；4：本地存储；5：远程存储；6：冗余存储；7：本地紧急存储；8：支持区分主辅码流的远程存储
        /// </summary>
        RECORD_GENERAL,
        /// <summary>
        /// Whether support Json configuration, bitwise: 1: support Json
        /// Json格式配置:按位：1支持Json格式, 2: 使用F6的NAS配置, 3: 使用F6的Raid配置, 4：使用F6的MotionDetect配置, 5：完整支持三代配置(V3),通过F6命令访问
        /// </summary>
        JSON_CONFIG,
        /// <summary>
        /// Hide function:bitwise::1,hide PTZ function
        /// 屏蔽功能：按位：1,屏蔽PTZ云台功能, 2: 屏蔽3G的保活时段功能
        /// </summary>
        HIDE_FUNCTION,
        /// <summary>
        /// Harddisk damage information support ability: bitwise:1,harddisk damage information
        /// 硬盘坏道信息支持能力: 按位：1,硬盘坏道信息查询支持能力
        /// </summary>
        DISK_DAMAGE,
        /// <summary>
        /// Support playback network transmission speed control, bitwise::1 support playback acceleration
        /// 支持回放网传速度控制:按位:1,支持回放加速
        /// </summary>
        PLAYBACK_SPEED_CTRL,
        /// <summary>
        /// Support holiday period setup : bitwise:1,Support holiday period setup
        /// 支持假期时间段配置:按位:1,支持假期时间段配置
        /// </summary>
        HOLIDAYSCHEDULE,
        /// <summary>
        /// ATM fetch money overtime
        /// ATM取钱超时
        /// </summary>
        FETCH_MONEY_TIMEOUT,
        /// <summary>
        /// Device backup support format. DAV, ASF
        /// 备份支持的格式,按位：1:DAV, 2:ASF
        /// </summary>
        BACKUP_VIDEO_FORMAT,
        /// <summary>
        /// backup disk type query
        /// 支持硬盘类型查询
        /// </summary>
        QUERY_DISK_TYPE,
        /// <summary>
        /// backup device output of display (such as VGA) configuration, by bit: 1: configuration on tour of frame segmentation 
        /// 支持设备显示输出（VGA等）配置,按位: 1:画面分割轮巡配置
        /// </summary>
        CONFIG_DISPLAY_OUTPUT,
        /// <summary>
        /// backup extra stream control configuration, by bit: 1-extra stream control configuration
        /// 支持扩展码流录像控制设置, 按位：1-辅码流录像控制设置
        /// </summary>
        SUBBITRATE_RECORD_CTRL,
        /// <summary>
        /// backup IPV6 configuration, by bit:1-IPV6 configuration
        /// 支持IPV6设置, 按位：1-IPV6配置
        /// </summary>
        IPV6,
        /// <summary>
        /// SNMP
        /// SNMP（简单网络管理协议）
        /// </summary>
        SNMP,
        /// <summary>
        /// back up query device's URL info, by bit: 1-query device's config URL info
        /// 支持获取设备URL地址, 按位: 1-查询配置URL地址
        /// </summary>
        QUERY_URL,
        /// <summary>
        /// ISCSI
        /// ISCSI（Internet小型计算机系统接口配置）
        /// </summary>
        ISCSI,
        /// <summary>
        /// Raid
        /// 支持Raid功能
        /// </summary>
        RAID,
        /// <summary>
        /// Support disk info query
        /// 支持磁盘信息查询
        /// </summary>
        HARDDISK_INFO,
        /// <summary>
        /// support picture in pictu,by bit:1,set; 2,preview , record , query record , download record
        /// 支持画中画功能 按位:1,画中画设置; 2,画中画预览、录像存储、查询、下载;3,支持画中画编码配置,同时支持画中画通道查询
        /// </summary>
        PICINPIC,
        /// <summary>
        /// same to EN_PLAYBACK_SPEED_CTRL
        /// 同 EN_PLAYBACK_SPEED_CTRL ,只为了兼容协议
        /// </summary>
        PLAYBACK_SPEED_CTRL_SUPPORT,
        /// <summary>
        /// support LF-X series of 24, 32, 64 channels, label their encode ability with sepcial calculation, by bit 1: able
        /// 支持24、32、64路LF-X系列,标注这类设备特殊的编码能力计算方式
        /// </summary>
        LF_XDEV,
        /// <summary>
        /// support DSP encode
        /// DSP编码能力查询
        /// </summary>
        DSP_ENCODE_CAP,
        /// <summary>
        /// support different multicast config for different channel
        /// 组播能力查询
        /// </summary>
        MULTICAST,
        /// <summary>
        /// query the limit ability of net, bitwise,1-limit size of net send code stream
        /// 网络限制能力查询,按位,1-网络发送码流大小限制,2-支持用户操作数据加密,4-支持配置数据加密
        /// </summary>
        NET_LIMIT,
        /// <summary>
        /// serial port 422
        /// 串口422
        /// </summary>
        COM422,
        /// <summary>
        /// support three generations of framework agrement or not(need actualize listMethod(),listService()),by F6 to visit
        /// 是否支持三代协议框架（需要实现listMethod(),listService()）,通过F6命令访问
        /// </summary>
        PROTOCAL_FRAMEWORK,
        /// <summary>
        /// write disk OSD overlying ,bitwise, 1-write disk OSD overlying configuration
        /// 刻录OSD叠加, 按位, 1-刻录OSD叠加配置
        /// </summary>
        WRITE_DISK_OSD,
        /// <summary>
        /// dynamic multi-connect,bitise,1-request reply video data
        /// 动态多连接, 按位, 1-请求视频数据应答
        /// </summary>
        DYNAMIC_MULTI_CONNECT,
        /// <summary>
        /// cloud service,bitwise,1- support private cloud service
        /// 云服务,按位,1-支持私有云服务
        /// </summary>
        CLOUDSERVICE,
        /// <summary>
        /// Video Information Report, by bit. 1-Active video information report, 2-Frame numbers inquiry support
        /// 录像信息上报, 按位, 1-录像信息主动上报, 2-支持录像帧数查询
        /// </summary>
        RECORD_INFO,
        /// <summary>
        /// Active Register Support, by bit. 1- Dynamic active register support
        /// 主动注册能力,按位,1-支持动态主动注册, 2-主动注册动态多链接支持SDK发起IP,port填0的请求
        /// </summary>
        DYNAMIC_REG,
        /// <summary>
        /// Multi-channel Preview and Playback, by bit. 1-Multi-channel preview and playback support
        /// 多通道预览回放,按为,1-支持多通道预览回放
        /// </summary>
        MULTI_PLAYBACK,
        /// <summary>
        /// Encoding Channel, by bit. 1- Audio-only channel support
        /// 编码通道, 按位, 1-支持纯音频通道, 2-预览支持音视频分开获取
        /// </summary>
        ENCODE_CHN,
        /// <summary>
        /// Record search, by bit, 1-support sync search record, 2-support 3rd generation protocol search record
        /// 录像查询, 按位, 1-支持异步查询录像, 2-支持三代协议查询录像
        /// </summary>
        SEARCH_RECORD,
        /// <summary>
        /// Support MD5 check after update file send finish，1- support MD5
        /// 支持升级文件传输完成后做MD5验证,1-支持MD5验证2-支持三代升级
        /// </summary>
        UPDATE_MD5,
        /// <summary>
        /// protocol3 to F6, 1-support log 2.restore config by configManager.deleteFile protocol
        /// 三代切F6,按位，1-Log日志功能2.DeleteFile 恢复默认配置支持使用configManager.deleteFile协议 
        /// </summary>
        PROTOCOL3ToF6,
    }

    /// <summary>
    /// log type
    /// 日志类型
    /// </summary>
    public enum EM_LOG_TYPE
    {
        /// <summary>
        /// Device reboot
        /// 设备重启
        /// </summary>
        REBOOT = 0x0000,
        /// <summary>
        /// Shut down device
        /// 设备关机
        /// </summary>
        SHUT,
        /// <summary>
        /// Report stop
        /// 报告停止
        /// </summary>
        REPORTSTOP,
        /// <summary>
        /// Rreport start
        /// 报告开始
        /// </summary>
        REPORTSTART,
        /// <summary>
        /// Device Upgrade
        /// 设备升级
        /// </summary>
        UPGRADE = 0x0004,
        /// <summary>
        /// system time update
        /// 系统时间更新
        /// </summary>
        SYSTIME_UPDATE = 0x0005,
        /// <summary>
        /// GPS time update
        /// GPS时间更新
        /// </summary>
        GPS_TIME_UPDATE = 0x0006,
        /// <summary>
        /// Voice intercom, true representative open, false on behalf of the closed
        /// 语音对讲, true代表开启,false代表关闭
        /// </summary>
        AUDIO_TALKBACK,
        /// <summary>
        /// Transparent transmission, true representative open, false on behalf of the closed
        /// 透明传输, true代表开启,false代表关闭
        /// </summary>
        COMM_ADAPTER,
        /// <summary>
        /// Net sync
        /// 网络校时
        /// </summary>
        NET_TIMING,
        /// <summary>
        /// NR
        /// NR
        /// </summary>
        TYPE_NR,
        /// <summary>
        /// Save configuration
        /// 保存配置
        /// </summary>
        CONFSAVE = 0x0100,
        /// <summary>
        /// Read configuration 
        /// 读取配置
        /// </summary>
        CONFLOAD,
        /// <summary>
        /// File system error
        /// 文件系统错误
        /// </summary>
        FSERROR = 0x0200,
        /// <summary>
        /// HDD write error 
        /// 硬盘写错误
        /// </summary>
        HDD_WERR,
        /// <summary>
        /// HDD read error
        /// 硬盘读错误
        /// </summary>
        HDD_RERR,
        /// <summary>
        /// Set HDD type 
        /// 设置硬盘类型
        /// </summary>
        HDD_TYPE,
        /// <summary>
        /// Format HDD
        /// 格式化硬盘
        /// </summary>
        HDD_FORMAT,
        /// <summary>
        /// Current working HDD space is not sufficient
        /// 当前工作盘空间不足
        /// </summary>
        HDD_NOSPACE,
        /// <summary>
        /// Set HDD type as read-write 
        /// 设置硬盘类型为读写盘
        /// </summary>
        HDD_TYPE_RW,
        /// <summary>
        /// Set HDD type as read-only
        /// 设置硬盘类型为只读盘
        /// </summary>
        HDD_TYPE_RO,
        /// <summary>
        /// Set HDD type as redundant 
        /// 设置硬盘类型为冗余盘
        /// </summary>
        HDD_TYPE_RE,
        /// <summary>
        /// Set HDD type as snapshot
        /// 设置硬盘类型为快照盘
        /// </summary>
        HDD_TYPE_SS,
        /// <summary>
        /// No HDD
        /// 无硬盘记录
        /// </summary>
        HDD_NONE,
        /// <summary>
        /// No work HDD
        /// 无工作盘
        /// </summary>
        HDD_NOWORKHDD,
        /// <summary>
        /// Set HDD type to backup HDD
        /// 设置硬盘类型为备份盘
        /// </summary>
        HDD_TYPE_BK,
        /// <summary>
        /// Set HDD type to reserve subarea
        /// 设置硬盘类型为保留分区
        /// </summary>
        HDD_TYPE_REVERSE,
        /// <summary>
        /// note the boot-strap's hard disk info
        /// 记录开机时的硬盘信息
        /// </summary>
        HDD_START_INFO = 0x20e,
        /// <summary>
        /// note the disk number after the disk change
        /// 记录换盘后的工作盘号
        /// </summary>
        HDD_WORKING_DISK,
        /// <summary>
        /// note other errors of disk
        /// 记录硬盘其它错误
        /// </summary>
        HDD_OTHER_ERROR,
        /// <summary>
        /// there has some little errors on disk
        /// 硬盘存在轻微问题
        /// </summary>
        HDD_SLIGHT_ERR,
        /// <summary>
        /// there has some serious errors on disk
        /// 硬盘存在严重问题
        /// </summary>
        HDD_SERIOUS_ERR,
        /// <summary>
        /// the end of the alarm that current disk has no space left
        /// 当前工作盘空间不足报警结束
        /// </summary>
        HDD_NOSPACE_END,
        /// <summary>
        /// Raid control
        /// Raid操作
        /// </summary>
        HDD_TYPE_RAID_CONTROL,
        /// <summary>
        /// excess 
        /// 温度过高
        /// </summary>
        HDD_TEMPERATURE_HIGH,
        /// <summary>
        /// lower die 
        /// 温度过低
        /// </summary>
        HDD_TEMPERATURE_LOW,
        /// <summary>
        /// remove eSATA
        /// 移除eSATA
        /// </summary>
        HDD_ESATA_REMOVE,
        /// <summary>
        /// External alarm begin 
        /// 外部输入报警开始
        /// </summary>
        ALM_IN = 0x0300,
        /// <summary>
        /// Network alarm input 
        /// 网络报警输入
        /// </summary>
        NETALM_IN,
        /// <summary>
        /// External input alarm stop 
        /// 外部输入报警停止
        /// </summary>
        ALM_END = 0x0302,
        /// <summary>
        /// Video loss alarm begin
        /// 视频丢失报警开始
        /// </summary>
        LOSS_IN,
        /// <summary>
        /// Video loss alarm stop
        /// 视频丢失报警结束
        /// </summary>
        LOSS_END,
        /// <summary>
        /// Motion detection alarm begin
        /// 动态检测报警开始
        /// </summary>
        MOTION_IN,
        /// <summary>
        /// Motion detection alarm stop
        /// 动态检测报警结束
        /// </summary>
        MOTION_END,
        /// <summary>
        /// Annunciator alarm input
        /// 报警器报警输入
        /// </summary>
        ALM_BOSHI,
        /// <summary>
        /// Network disconnected
        /// 网络断开
        /// </summary>
        NET_ABORT = 0x0308,
        /// <summary>
        /// Network connection restore 
        /// 网络恢复
        /// </summary>
        NET_ABORT_RESUME,
        /// <summary>
        /// Encoder error
        /// 编码器故障
        /// </summary>
        CODER_BREAKDOWN,
        /// <summary>
        /// Encoder error restore 
        /// 编码器故障恢复
        /// </summary>
        CODER_BREAKDOWN_RESUME,
        /// <summary>
        /// Camera masking
        /// 视频遮挡
        /// </summary>
        BLIND_IN,
        /// <summary>
        /// Restore camera masking 
        /// 视频遮挡恢复
        /// </summary>
        BLIND_END,
        /// <summary>
        /// High  
        /// 温度过高
        /// </summary>
        ALM_TEMP_HIGH,
        /// <summary>
        /// Low voltage
        /// 电压过低
        /// </summary>
        ALM_VOLTAGE_LOW,
        /// <summary>
        /// Battery capacity is not sufficient 
        /// 电池容量不足
        /// </summary>
        ALM_BATTERY_LOW,
        /// <summary>
        /// ACC power off 
        /// ACC断电
        /// </summary>
        ALM_ACC_BREAK,
        /// <summary>
        /// ACC res
        /// ACC重置
        /// </summary>
        ALM_ACC_RES,
        /// <summary>
        /// GPS signal lost
        /// GPS无信号
        /// </summary>
        GPS_SIGNAL_LOST,
        /// <summary>
        /// GPS signal resume
        /// GPS信号恢复
        /// </summary>
        GPS_SIGNAL_RESUME,
        /// <summary>
        /// 3G signal lost
        /// 3G无信号
        /// </summary>
        LOG_3G_SIGNAL_LOST,
        /// <summary>
        /// 3G signal resume
        /// 3G信号恢复
        /// </summary>
        LOG_3G_SIGNAL_RESUME,
        /// <summary>
        /// IPC external alarms
        /// IPC外部报警
        /// </summary>
        ALM_IPC_IN,
        /// <summary>
        /// IPC external alarms recovery
        /// IPC外部报警恢复
        /// </summary>
        ALM_IPC_END,
        /// <summary>
        /// Broken network alarm
        /// 断网报警
        /// </summary>
        ALM_DIS_IN,
        /// <summary>
        /// Broken network alarm recovery
        /// 断网报警恢复
        /// </summary>
        ALM_DIS_END,
        /// <summary>
        /// UPS alarm 
        /// UPS告警
        /// </summary>
        ALM_UPS_IN,
        /// <summary>
        /// UPS alarm resume 
        /// UPS告警恢复
        /// </summary>
        ALM_UPS_END,
        /// <summary>
        /// NAS server abnormal alarm 
        /// NAS服务器异常报警
        /// </summary>
        ALM_NAS_IN,
        /// <summary>
        /// NAS server abnormal alarm resume 
        /// NAS服务器异常报警恢复
        /// </summary>
        ALM_NAS_END,
        /// <summary>
        /// Redundant power alarm 
        /// 冗余电源告警
        /// </summary>
        ALM_REDUNDANT_POWER_IN,
        /// <summary>
        /// Redundant alarm resume 
        /// 冗余电源告警恢复
        /// </summary>
        ALM_REDUNDANT_POWER_END,
        /// <summary>
        /// Record failure alarm 
        /// 录像失败告警
        /// </summary>
        ALM_RECORD_FAILED_IN,
        /// <summary>
        /// Record failure alarm resume 
        /// 录像失败告警恢复
        /// </summary>
        ALM_RECORD_FAILED_END,
        /// <summary>
        /// Storage pool abnormal alarm
        /// 存储池异常报警
        /// </summary>
        ALM_VGEXCEPT_IN,
        /// <summary>
        /// Storage abnormal alarm resume 
        /// 存储池异常报警恢复
        /// </summary>
        ALM_VGEXCEPT_END,
        /// <summary>
        /// Fan alarm starts
        /// 风扇报警开始
        /// </summary>
        ALM_FANSPEED_IN,
        /// <summary>
        /// Fan alarm stops 
        /// 风扇报警结束
        /// </summary>
        ALM_FANSPEED_END,
        /// <summary>
        /// Frame loss alarm starts 
        /// 丢帧报警开始
        /// </summary>
        ALM_DROP_FRAME_IN,
        /// <summary>
        /// Frame loss alarm stops
        /// 丢帧报警结束
        /// </summary>
        ALM_DROP_FRAME_END,
        /// <summary>
        /// HDD pre-check tour alarm event log type 
        /// 磁盘预检巡检报警事件日志类型
        /// </summary>
        ALM_DISK_STATE_CHECK,
        /// <summary>
        /// HDCVI smoke alarm event
        /// 同轴烟感报警事件
        /// </summary>
        ALARM_COAXIAL_SMOKE,
        /// <summary>
        /// HDCVI  alarm event
        /// 同轴温度报警事件
        /// </summary>
        ALARM_COAXIAL_TEMP_HIGH,
        /// <summary>
        /// HDCVI external alarm event 
        /// 同轴外部报警事件
        /// </summary>
        ALARM_COAXIAL_ALM_IN,
        /// <summary>
        /// Wireless alarm begin 
        /// 无线报警开始
        /// </summary>
        INFRAREDALM_IN = 0x03a0,
        /// <summary>
        /// Wireless alarm end 
        /// 无线报警结束
        /// </summary>
        INFRAREDALM_END,
        /// <summary>
        /// IP conflict 
        /// IP冲突
        /// </summary>
        IPCONFLICT,
        /// <summary>
        /// IP restore
        /// IP恢复
        /// </summary>
        IPCONFLICT_RESUME,
        /// <summary>
        /// SD Card insert
        /// SD卡插入
        /// </summary>
        SDPLUG_IN,
        /// <summary>
        /// SD Card Pull-out
        /// SD卡拔出
        /// </summary>
        SDPLUG_OUT,
        /// <summary>
        /// Failed to bind port
        /// 网络端口绑定失败
        /// </summary>
        NET_PORT_BIND_FAILED,
        /// <summary>
        /// Hard disk error beep reset 
        /// 硬盘错误报警蜂鸣结束
        /// </summary>
        HDD_BEEP_RESET,
        /// <summary>
        /// MAC conflict
        /// MAC冲突
        /// </summary>
        MAC_CONFLICT,
        /// <summary>
        /// MAC conflict resume
        /// MAC冲突恢复
        /// </summary>
        MAC_CONFLICT_RESUME,
        /// <summary>
        /// alarm out
        /// 报警输出状态
        /// </summary>
        ALARM_OUT,
        /// <summary>
        /// RAID state event  
        /// RAID状态变化事件
        /// </summary>
        ALM_RAID_STAT_EVENT,
        /// <summary>
        /// Fire alarm, smoker or high 
        /// 火警报警,烟感或温度
        /// </summary>
        ABLAZE_ON,
        /// <summary>
        /// Fire alarm reset 
        /// 火警报警恢复
        /// </summary>
        ABLAZE_OFF,
        /// <summary>
        /// Intelligence pulse alarm
        /// 智能脉冲型报警
        /// </summary>
        INTELLI_ALARM_PLUSE,
        /// <summary>
        /// Intelligence alarm start
        /// 智能报警开始
        /// </summary>
        INTELLI_ALARM_IN,
        /// <summary>
        /// Intelligence alarm end
        /// 智能报警结束
        /// </summary>
        INTELLI_ALARM_END,
        /// <summary>
        /// 3G signal scan
        /// 3G信号检测
        /// </summary>
        LOG_3G_SIGNAL_SCAN,
        /// <summary>
        /// GPS signal scan
        /// GPS信号检测
        /// </summary>
        GPS_SIGNAL_SCAN,
        /// <summary>
        /// Auto record
        /// 自动录像
        /// </summary>
        AUTOMATIC_RECORD = 0x0400,
        /// <summary>
        /// Manual record 
        /// 手动录象
        /// </summary>
        MANUAL_RECORD = 0x0401,
        /// <summary>
        /// Stop record
        /// 停止录象
        /// </summary>
        CLOSED_RECORD,
        /// <summary>
        /// Log in
        /// 登录
        /// </summary>
        LOGIN = 0x0500,
        /// <summary>
        /// Log off 
        /// 注销
        /// </summary>
        LOGOUT,
        /// <summary>
        /// Add user
        /// 添加用户
        /// </summary>
        ADD_USER,
        /// <summary>
        /// Delete user
        /// 删除用户
        /// </summary>
        DELETE_USER,
        /// <summary>
        /// Modify user 
        /// 修改用户
        /// </summary>
        MODIFY_USER,
        /// <summary>
        /// Add user group 
        /// 添加用户组
        /// </summary>
        ADD_GROUP,
        /// <summary>
        /// Delete user group 
        /// 删除用户组
        /// </summary>
        DELETE_GROUP,
        /// <summary>
        /// Modify user group 
        /// 修改用户组
        /// </summary>
        MODIFY_GROUP,
        /// <summary>
        /// Network Login
        /// 网络用户登录
        /// </summary>
        NET_LOGIN = 0x0508,
        /// <summary>
        /// Modify password
        /// 修改密码
        /// </summary>
        MODIFY_PASSWORD,
        /// <summary>
        /// Clear log 
        /// 清除日志
        /// </summary>
        CLEAR = 0x0600,
        /// <summary>
        /// Search log 
        /// 查询日志
        /// </summary>
        SEARCHLOG,
        /// <summary>
        /// Search record
        /// 录像查询
        /// </summary>
        SEARCH = 0x0700,
        /// <summary>
        /// Record download
        /// 录像下载
        /// </summary>
        DOWNLOAD,
        /// <summary>
        /// Record playback
        /// 录像回放
        /// </summary>
        PLAYBACK,
        /// <summary>
        /// Backup recorded file 
        /// 备份录像文件
        /// </summary>
        BACKUP,
        /// <summary>
        /// Failed to backup recorded file
        /// 备份录像文件失败
        /// </summary>
        BACKUPERROR,
        /// <summary>
        /// Real-time backup, that is, copy CD
        /// 实时备份,即光盘刻录
        /// </summary>
        BACK_UPRT,
        /// <summary>
        /// CD copy
        /// 光盘复制
        /// </summary>
        BACKUPCLONE,
        /// <summary>
        /// Manual changed
        /// 手动换盘
        /// </summary>
        DISK_CHANGED,
        /// <summary>
        /// Image playback
        /// 图片回放
        /// </summary>
        IMAGEPLAYBACK,
        /// <summary>
        /// Lock the video
        /// 锁定录像
        /// </summary>
        LOCKFILE,
        /// <summary>
        /// Unlock the video
        /// 解锁录像
        /// </summary>
        UNLOCKFILE,
        /// <summary>
        /// Add log superposition of ATM card number
        /// ATM卡号叠加添加日志
        /// </summary>
        ATMPOS,
        /// <summary>
        /// Pause
        /// 暂停回放
        /// </summary>
        PLAY_PAUSE,
        /// <summary>
        /// Start
        /// 正放
        /// </summary>
        PLAY_START,
        /// <summary>
        /// Stop
        /// 停止回放
        /// </summary>
        PLAY_STOP,
        /// <summary>
        /// Back
        /// 倒放
        /// </summary>
        PLAY_BACK,
        /// <summary>
        /// Fast
        /// 快放
        /// </summary>
        PLAY_FAST,
        /// <summary>
        /// Slow
        /// 慢放
        /// </summary>
        PLAY_SLOW,
        /// <summary>
        /// Search
        /// 智能检索
        /// </summary>
        SMART_SEARCH,
        /// <summary>
        /// Snap
        /// 录像抓图
        /// </summary>
        RECORD_SNAP,
        /// <summary>
        /// Add tag
        /// 添加标签
        /// </summary>
        ADD_TAG,
        /// <summary>
        /// Delete tag
        /// 删除标签
        /// </summary>
        DEL_TAG,
        /// <summary>
        /// USB connected
        /// 发现USB设备
        /// </summary>
        USB_IN,
        /// <summary>
        /// USB disconnected
        /// USB设备断开连接
        /// </summary>
        USB_OUT,
        /// <summary>
        /// Backup file
        /// 文件备份
        /// </summary>
        BACKUP_FILE,
        /// <summary>
        /// Backup log
        /// 日志备份
        /// </summary>
        BACKUP_LOG,
        /// <summary>
        /// Backup config
        /// 配置备份
        /// </summary>
        BACKUP_CONFIG,
        /// <summary>
        /// Time update
        /// 时间同步
        /// </summary>
        TIME_UPDATE = 0x0800,
        /// <summary>
        /// remote diary 
        /// 远程日志
        /// </summary>
        REMOTE_STATE = 0x0850,
        /// <summary>
        /// User define
        /// 用户定义
        /// </summary>
        USER_DEFINE = 0x0900,
    }

    /// <summary>
    /// The coordinates and magnification of the preset points
    /// 预置点的坐标和放大倍数
    /// </summary>
    public struct NET_PRESET_POSITION
    {
        /// <summary>
        /// Horizontal coordinates
        /// 水平坐标
        /// </summary>
        public int nHorizontal;
        /// <summary>
        /// The vertical coordinate
        /// 垂直坐标
        /// </summary>
        public int nVertical;
        /// <summary>
        /// Magnification
        /// 放大倍数
        /// </summary>
        public int nMagnification;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_CROSSLINEDETECTION(拌线入侵事件)对应的数据块描述信息
    /// the describe of EVENT_IVS_CROSSLINEDETECTION's data
    /// </summary>
    public struct NET_DEV_EVENT_CROSSLINE_INFO
    {
        /// <summary>
        /// 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 规则检测线
        /// rule detect line
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectLine;
        /// <summary>
        /// 规则检测线顶点数
        /// rule detect line's point number
        /// </summary>
        public int nDetectLineNum;
        /// <summary>
        /// 物体运动轨迹
        /// object moveing track
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] TrackLine;
        /// <summary>
        /// 物体运动轨迹顶点数
        /// object moveing track's point number
        /// </summary>
        public int nTrackLineNum;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 表示入侵方向, 0-由左至右, 1-由右至左
        /// direction, 0-left to right, 1-right to left
        /// </summary>
        public byte bDirection;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件源设备上的index,-1表示数据无效,-1表示数据无效
        /// the source device's index,-1 means data in invalid
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// the source device's sign(exclusive),field said local device does not exist or is empty
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// 事件触发累计次数
        /// event trigger accumulated times
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 扩展信息
        /// Extension info
        /// </summary>
        public NET_EXTENSION_INFO stuExtensionInfo;
        /// <summary>
        /// 全景广角图
        /// Scene image
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 检测到人的数量
        /// Number of people detected
        /// </summary>
        public uint nObjetcHumansNum;
        /// <summary>
        /// 检测的到人
        /// People detected
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_VAOBJECT_NUMMAN[] stuObjetcHumans;
        /// <summary>
        /// 规则编号,用于标示哪个规则触发的事件，缺省时默认为0
        /// Rule ID, used to indicate which rule triggers the event. The default value is 0
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 事件级别
        /// Event level
        /// </summary>
        public EM_EVENT_LEVEL emEventType;
        /// <summary>
        /// 预置点的坐标和放大倍数
        /// The coordinates and magnification of the preset points
        /// </summary>
        public NET_PRESET_POSITION stPosition;
        /// <summary>
        /// 可见光横向视场角,单位度 实际角度乘以100
        /// Horizontal field Angle of visible light ,the actual Angle times 100
        /// </summary>
        public uint nVisibleHFOV;
        /// <summary>
        /// 可见光纵向视场角,单位度 实际角度乘以100
        /// Longitudinal field Angle of visible light ,the actual Angle times 100
        /// </summary>
        public uint nVisibleVFOV;
        /// <summary>
        /// 当前报警通道的横向视场角，单位度，实际角度乘以100
        /// Lateral field angle of view of the current alarm channel,Unit: degrees,the actual Angle times 100
        /// </summary>
        public uint nCurChannelHFOV;
        /// <summary>
        /// 当前报警通道的纵向视场角，单位度，实际角度乘以100
        /// Longitudinal field angle of view of the current alarm channel,Unit: degrees,the actual Angle times 100
        /// </summary>
        public uint nCurChannelVFOV;
        /// <summary>
        /// 图片信息个数
        /// picture number
        /// </summary>
        public int nImageNum;
        /// <summary>
        /// 图片信息数组
        /// picture info
        /// </summary>
        public IntPtr pImageArray;
        /// <summary>
        /// 车的后视镜状态，-1: 未知, 0: 正常, 1: 不正常(如数量缺失等)
        /// The status of the rearview mirror of the car, -1: Unknown 0-normal, 1-abnormal (such as missing quantity, etc.)
        /// </summary>
        public int nCarMirrorStatus;
        /// <summary>
        /// 车的车灯状态,-1: 未知, 0: 正常, 1:不正常(如灯未亮等)
        /// Status of vehicle lights: -1: Unknown 0-normal, 1-abnormal (such as lights not on, etc.)
        /// </summary>
        public int nCarLightStatus;
        /// <summary>
        /// 船只物体个数
        /// Number of Boat objects
        /// </summary>
        public uint nObjectBoatsNum;
        /// <summary>
        /// 船只物品信息
        /// Boat Objects Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_BOAT_OBJECT[] stuBoatObjects;
        /// <summary>
        /// 车道/航道方向, 0:未知, 1:上行, 2:下行
        /// Lane/Course Direction, 0: Unknown, 1: UpGoing, 2: DownGoing
        /// </summary>
        public int nUpDownGoing;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 452)]
        public byte[] byReserved1;
    }

    /// <summary>
    /// Object action support type
    /// 物体动作支持类型
    /// </summary>CROSSREGIONDETECTION
    public enum EM_ACTION
    {
        /// <summary>
        /// Unknown type
        /// 未知类型
        /// </summary>
        EM_ACTION_UNKNOWN,
        /// <summary>
        /// Appears in the detection area for the first time, or a new object that has not been confirmed in the physical separation action during tracking
        /// 第一次出现在检测区域中，或者跟踪时物理分离动作中尚未确认的新物体
        /// </summary>
        EM_ACTION_APPEAR,
        /// <summary>
        /// Moving, the object is being tracked normally
        /// 正在运动，物体被正常跟踪
        /// </summary>
        EM_ACTION_MOVE,
        /// <summary>
        /// The object stops moving, this object will not appear in the object list in the next frame, and the object will resume in the list after it starts to move
        /// 物体停止运动，这个物体不会在出现在下一帧物体列表中，物体开始移动后再恢复在列表中
        /// </summary>
        EM_ACTION_STAY,
        /// <summary>
        /// If the object is removed from the original area, or is covered, or the tracking fails, the ID of the removed object will not be automatically deleted, and the object may be used again if it reappears
        /// 物体从原来的区域移除，或者被遮盖，或者跟踪失败，移除的物体ID不会被自动删除，并且物体重现出现是有可能再次被使用
        /// </summary>
        EM_ACTION_REMOVE,
        /// <summary>
        /// Move out of the tracking area, or reach the upper limit of the algorithm to track the object and be cleared, the disappeared object ID will no longer appear
        /// 运动到跟踪区域之外，或者达到了算法跟踪物体的上限而被清除，消失的物体ID将不再出现
        /// </summary>
        EM_ACTION_DISAPPEAR,
        /// <summary>
        /// Separated from other objects, it can be used to detect objects left behind, and the associated ID means separation from the corresponding object of this ID
        /// 从其他物体中分离出来，可以用来检测物体遗留，关联ID表示从这个ID对应物体分离
        /// </summary>
        EM_ACTION_SPLIT,
        /// <summary>
        /// Merge to other objects, can be used to check the preservation of the object, the associated ID means that the ID is merged to the corresponding object
        /// 合并到其他物体，可以用来检查物体保全，关联ID表示合并到这个ID对相应的物体
        /// </summary>
        EM_ACTION_MERGE,
        /// <summary>
        /// If the algorithm cannot determine that an object in the separation action is the same object originally, a new object should be created first, and then renamed to the old object ID after sufficient evidence. The associated ID represents the new ID that is temporarily used
        /// 如果算法无法确定分离动作中某个物体是原先同一个物体，应该创建先一个新的物体，证据充分后再重命名为旧的物体ID，关联ID表示暂时使用的新的ID
        /// </summary>
        EM_ACTION_RENAME,
    }

    /// <summary>
    /// 船只行驶方向
    /// The direction of the boat
    /// </summary>
    public enum EM_BOAT_DIRECTION
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_BOAT_DIRECTION_UNKNOWN,
        /// <summary>
        /// 逆向
        /// Opposite direction
        /// </summary>
        EM_BOAT_DIRECTION_OPPOSITE,
        /// <summary>
        /// 正向
        /// Positive direction
        /// </summary>
        EM_BOAT_DIRECTION_POSITIVE,
    }

    /// <summary>
    /// Ship object information
    /// 船只物体信息
    /// </summary>
    public struct NET_BOAT_OBJECT
    {
        /// <summary>
        /// Object ID, each ID represents a unique object, different objects cannot share an ID, and IDs that have been used cannot be used again
        /// 物体ID，每个ID表示一个唯一的物体，不同的物体不能共用一个ID，已经使用过的ID也不能再次使用
        /// </summary>
        public uint nObjectID;
        /// <summary>
        /// The distance from the ship's body to the camera, in meters. Value range: 0-65535
        /// 船身体到相机的距离，单位米 取值范围0-65535
        /// </summary>
        public int nDistance;
        /// <summary>
        /// The height of the ship, in meters, the value range is 0-255
        /// 船的高度，单位米 取值范围0-255
        /// </summary>
        public int nHeight;
        /// <summary>
        /// The length of the ship, in meters, the value range is 0-2000
        /// 船的长度，单位米 取值范围0-2000
        /// </summary>
        public int nWidth;
        /// <summary>
        /// The speed of the ship, in meters/second, the value range is 0-255
        /// 船的速度，单位米/秒 取值范围0-255
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// Object action support type
        /// 物体动作支持类型
        /// </summary>
        public EM_ACTION emActionType;
        /// <summary>
        /// reserved
        /// Rectangular range, the coordinates of the point are normalized to the interval [0,8191]
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// Bounding box (absolute coordinates)
        /// 包围盒(绝对坐标)
        /// </summary>
        public NET_RECT stuOriginalBoundingBox;
        /// <summary>
        /// 行驶方向
        /// Direction of the boat
        /// </summary>
        public EM_BOAT_DIRECTION emDirection;
        /// <summary>
        /// 船名或船舷号
        /// BoatCode
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szBoatCode;
        /// <summary>
        /// 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 60)]
        public byte[] byReserved;
    }

    /// <summary>
    /// event type EVENT_IVS_CROSSREGIONDETECTION corresponding data block description info
    /// 区域入侵事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_CROSSREGION_INFO
    {
        /// <summary>
        /// ChannelId
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved2;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// have being detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// rule detect region
        /// 规则检测区域
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// rule detect region's point number
        /// 规则检测区域顶点数
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// object moving track
        /// 物体运动轨迹
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] TrackLine;
        /// <summary>
        /// object moving track's point number
        /// 物体运动轨迹顶点数
        /// </summary>
        public int nTrackLineNum;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// direction, 0-in, 1-out,2-apaer,3-leave
        /// 表示入侵方向, 0-进入, 1-离开,2-出现,3-消失
        /// </summary>
        public byte bDirection;
        /// <summary>
        /// action type,0-appear 1-disappear 2-in area 3-cross area
        /// 表示检测动作类型,0-出现 1-消失 2-在区域内 3-穿越区域
        /// </summary>
        public byte bActionType;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// flag(by bit),see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON  
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// the source device's index,-1 means data in invalid
        /// 事件源设备上的index,-1表示数据无效
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// the source device's sign(exclusive),field said local device does not exist or is empty
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// event trigger times
        /// 事件触发累计次数
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// Cargo Channel Info
        /// 货物通道信息
        /// </summary>
        public NET_CUSTOM_INFO stuCustom;
        /// <summary>
        /// Extension info
        /// 扩展信息
        /// </summary>
        public NET_EXTENSION_INFO stuExtensionInfo;
        /// <summary>
        /// Rule ID,used to indicate which rule triggers
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// The coordinates and magnification of the preset points
        /// 预置点的坐标和放大倍数
        /// </summary>
        public NET_PRESET_POSITION stPosition;
        /// <summary>
        /// orizontal field Angle of visible light ,the actual Angle times 100
        /// 可见光横向视场角,单位度 实际角度乘以100
        /// </summary>
        public uint nVisibleHFOV;
        /// <summary>
        /// Longitudinal field Angle of visible light ,the actual Angle times 100
        /// 可见光纵向视场角,单位度 实际角度乘以100
        /// </summary>
        public uint nVisibleVFOV;
        /// <summary>
        /// The lateral field of view, unit degree, and actual angle of the current alarm channel multiplied by 100
        /// 当前报警通道的横向视场角，单位度，实际角度乘以100
        /// </summary>
        public uint nCurChannelHFOV;
        /// <summary>
        /// The longitudinal field of view of the current alarm channel, unit degree, and actual angle multiplied by 100
        /// 当前报警通道的纵向视场角，单位度，实际角度乘以100
        /// </summary>
        public uint nCurChannelVFOV;
        /// <summary>
        /// 
        /// 采用该字段区分是区域入侵还是事件，该字段不携带则是通用的区域入侵事件，携带则根据内容区分实际的事件类型，目前只有IllegalDumping（垃圾违规投放）
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRealEventType;
        /// <summary>
        /// Reserved
        /// 保留字节,留待扩展
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 264)]
        public byte[] bReserved;
        /// <summary>
        /// Detect object amount
        /// 检测到的物体个数
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// Detected object
        /// 检测到的物体
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_MSG_OBJECT[] stuObjectIDs;
        /// <summary>
        /// Locus amount(Corresponding to the detected object amount.)
        /// 轨迹数(与检测到的物体个数对应)
        /// </summary>
        public int nTrackNum;
        /// <summary>
        /// Locus info(Corresponding to the detected object)
        /// 轨迹信息(与检测到的物体对应)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_POLY_POINTS[] stuTrackInfo;
        /// <summary>
        /// intelli comm info
        /// 智能事件公共信息
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// scene image
        /// 全景广角图
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// Number of people detected
        /// 检测到人的数量
        /// </summary>
        public uint nObjetcHumansNum;
        /// <summary>
        /// People detected
        /// 检测的到人
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_VAOBJECT_NUMMAN[] stuObjetcHumans;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Trigger type
        /// 触发类型
        /// </summary>
        public EM_TRIGGER_TYPE emTriggerType;
        /// <summary>
        /// Used to mark capture frames
        /// 标记抓拍帧
        /// </summary>
        public int nMark;
        /// <summary>
        /// Data source address of the video analysis
        /// 视频分析的数据源地址
        /// </summary>
        public int nSource;
        /// <summary>
        /// Video analysis frame number
        /// 视频分析帧序号
        /// </summary>
        public int nFrameSequence;
        /// <summary>
        /// Capture process
        /// 抓拍过程
        /// </summary>
        public EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// PTZ direction and magnification (indicated by 100 times enlargement)
        /// The first element is the horizontal angle, 0-36000
        /// The second element is the vertical angle, (-18000)-(18000)
        /// The third element is the display magnification, 0-MaxZoom*100
        /// 云台方向与放大倍数（扩大100倍表示）
        /// 第一个元素为水平角度，0-36000
        /// 第二个元素为水平角度，0-36000
        /// 第三个元素为垂直角度，（-18000）-（18000）
        /// </summary>
        public NET_PTZSPACE_UNNORMALIZED stuAbsPosition;
        /// <summary>
        /// HFov Value, unit: 0.01 degree, Enlarged 100 times display
        /// 对应倍率水平视场角, 单位0.01度, 扩大100倍表示
        /// </summary>
        public int nHFovValue;
        /// <summary>
        /// Focus Position
        /// 聚焦位置
        /// </summary>
        public double dbFocusPosition;
        /// <summary>
        /// Number of ship objects
        /// 船只物体个数
        /// </summary>
        public uint nObjectBoatNum;
        /// <summary>
        /// Ship item information
        /// 船只物品信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_BOAT_OBJECT[] stuBoatObject;
        /// <summary>
        /// 图片信息个数
        /// picture number
        /// </summary>
        public int nImageNum;
        /// <summary>
        /// 图片信息数组 < NET_IMAGE_INFO_EX2 >
        /// picture info < NET_IMAGE_INFO_EX2 >
        /// </summary>
        public IntPtr pImageArray;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 检测到的物体扩展
        /// have being detected object
        /// </summary>
        public IntPtr pstuObjectEx2;
        /// <summary>
        /// 检测到的物体扩展,数量为nObjectNum
        /// Detected object,The number is nObjectNum
        /// </summary>
        public IntPtr pstuObjectIDsEx2;
        /// <summary>
        /// 车身信息扩展
        /// vehicle info expansion
        /// </summary>
        public IntPtr pstuVehicleEx2;
        /// <summary>
        /// / GPS信息
        /// / GPS Information
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// / Scene type, 0: invalid, 1: general scene, 2: thermal imaging scene, 3: mining scene
        /// </summary>
        public int nSceneType;
        /// <summary>
        /// / Loading status, 0: unknown, 1: empty, 2: normal, 3: overloaded
        /// </summary>
        public int nLoadingStatus;
        /// <summary>
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1016)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_LEFTDETECTION(物品遗留事件)对应的数据块描述信息
    /// the describe of EVENT_IVS_LEFTDETECTION's data
    /// </summary>
    public struct NET_DEV_EVENT_LEFT_INFO
    {
        /// <summary>
        /// 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 规则检测区域顶点数
        /// detect region point number
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件源设备上的index,-1表示数据无效
        /// the source device's index,-1 means data in invalid
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// the source device's sign(exclusive),field said local device does not exist or is empty
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// 事件触发累计次数
        /// event trigger accumilated times
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 事件触发的预置点号，从1开始（没有表示未知）
        /// Event triggered preset period, starting from 1 (no unknown)
        /// </summary>
        public short nPreserID;
        /// <summary>
        /// 事件触发的预置名称
        /// Preset name for event triggered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 扩展信息
        /// Extension info
        /// </summary>
        public NET_EXTENSION_INFO stuExtensionInfo;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved2;
        /// <summary>
        /// GPS信息
        /// GPS info
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// 违章关联视频FTP上传路径
        /// ftp path for assocated video
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szVideoPath;
        /// <summary>
        /// 全景广角图
        /// Panoramic wide-angle map
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    };

    /// <summary>
    /// 坐标与放大倍数
    /// Coordinates and magnification
    /// </summary>
    public struct NET_POSTION
    {
        /// <summary>
        /// 水平坐标, 范围[0, 3599]，表示0度到359.9度，度数扩大10倍表示。
        /// Horizontal coordinate, range [0, 3599], which means 0 degrees to 359.9 degrees, and the number of degrees is expanded by 10 times.
        /// </summary>
        public int nHorizontalCoordinate;
        /// <summary>
        /// 垂直坐标，范围[-1800,1800]，表示-180.0度到+180.0度，度数扩大10倍表示。
        /// The vertical coordinate, the range [-1800,1800], means -180.0 degrees to +180.0 degrees, and the degree is expanded by 10 times.
        /// </summary>
        public int nVerticalCoordinate;
        /// <summary>
        /// 放大倍数, 范围[0,127]，表示最小倍到最大倍的变倍位置
        /// Magnification, range [0,127], indicating the zoom position from minimum to maximum
        /// </summary>
        public int nMagnification;
    }

    // 事件类型EVENT_IVS_WANDERDETECTION(徘徊事件)对应的数据块描述信息
    public struct NET_DEV_EVENT_WANDER_INFO
    {
        public int nChannelID;                         // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                        // 事件名称
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;                      // 字节对齐
        public double PTS;                                // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                // 事件发生的时间
        public int nEventID;                           // 事件ID
        public NET_EVENT_FILE_INFO stuFileInfo;                        // 事件对应文件信息
        public byte bEventAction;                       // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;                      // 保留字节
        public byte byImageIndex;                       // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        public int nObjectNum;                         // 检测到的物体个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_MSG_OBJECT[] stuObjectIDs;   // 检测到的物体
        public int nTrackNum;                          // 轨迹数(与检测到的物体个数对应)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_POLY_POINTS[] stuTrackInfo;   // 轨迹信息(与检测到的物体对应)
        public int nDetectRegionNum;                   // 规则检测区域顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;    // 规则检测区域
        public uint dwSnapFlagMask;                     // 抓图标志(按位),具体见NET_RESERVED_COMMON    
        public int nSourceIndex;                       // 事件源设备上的index,-1表示数据无效
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;           // 事件源设备唯一标识,字段不存在或者为空表示本地设备
        public uint nOccurrenceCount;                   // 事件触发累计次数
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;         // 智能事件公共信息
        public short nPreserID;                            // 事件触发的预置点号，从1开始（没有表示未知）
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;                  // 事件触发的预置名称
        public NET_EXTENSION_INFO stuExtensionInfo;                   // 扩展信息
        /// <summary>
        /// 坐标与放大倍数
        /// Coordinates and magnification
        /// </summary>
        public NET_POSTION stuPostion;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string byReserved2;
        /// <summary>
        /// 当前报警通道的横向视场角,单位：度，实际角度乘以100
        /// The lateral field of view angle of the current alarm channel, unit: degree, the actual angle is multiplied by 100
        /// </summary>
        public uint nCurChannelHFOV;
        /// <summary>
        /// 当前报警通道的垂直视场角,单位：度，实际角度乘以100
        /// The vertical field of view angle of the current alarm channel, unit: degree, the actual angle is multiplied by 100
        /// </summary>
        public uint nCurChannelVFOV;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// pstuSceneImage是否有效
        /// Whether stuSceneImage is valid
        /// </summary>
        public bool bSceneImage;
        /// <summary>
        /// 全景广角图
        /// Global scene iamge
        /// </summary>
        public IntPtr pstuSceneImage;
        /// <summary>
        /// 保留字节,留待扩展.
        /// reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 398 - 8)]
        public byte[] szReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 398 - 4)]
        public byte[] szReserved;
#endif
    };

    // 事件类型EVENT_IVS_CROSSFENCEDETECTION(翻越围栏事件)对应的数据块描述信息
    public struct NET_DEV_EVENT_CROSSFENCEDETECTION_INFO
    {
        public int nChannelID;                                 // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                                // 事件名称
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;                              // 字节对齐
        public double PTS;                                        // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                        // 事件发生的时间
        public int nEventID;                                   // 事件ID
        public NET_MSG_OBJECT stuObject;                                  // 检测到的物体
        public int nUpstairsLinePointNumber;                   // 围栏上边线顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuUpstairsLine;    // 围栏上边线信息
        public int nDownstairsLinePointNumber;                 // 围栏下边线顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDownstairsLine;  // 围栏下边线信息  
        public int nTrackLineNum;                              // 物体运动轨迹顶点数     
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] TrackLine;           // 物体运动轨迹
        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
        public byte bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        public byte bDirection;                                 // 表示入侵方向, 0-由左至右, 1-由右至左
        public byte byReserved;
        public byte byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        public uint dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON    
        public int nSourceIndex;                               // 事件源设备上的index,-1表示数据无效
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;                   // 事件源设备唯一标识,字段不存在或者为空表示本地设备
        public uint nOccurrenceCount;                           // 事件触发累计次数
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;                 // 智能事件公共信息
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 616)]
        public byte[] bReserved;                             // 保留字节,留待扩展.    
    };

    //事件类型 EVENT_IVS_CLIMBDETECTION(攀高检测事件)对应数据块描述信息
    public struct NET_DEV_EVENT_IVS_CLIMB_INFO
    {
        public int nChannelID;                                 // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                                // 事件名称
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;                              // 字节对齐
        public double PTS;                                        // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                        // 事件发生的时间
        public int nEventID;                                   // 事件ID
        public NET_MSG_OBJECT stuObject;                                  // 检测到的物体
        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
        public int nDetectLineNum;                             // 规则检测线顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectLine;         // 规则检测线
        public byte bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        public byte byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        public uint nOccurrenceCount;                           // 事件触发累计次数
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;                 // 智能事件公共信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 890)]
        public byte[] bReserved;                            // 保留字节
    }
    /// <summary>
    /// 事件类型EVENT_IVS_TAKENAWAYDETECTION(物品搬移事件)对应的数据块描述信息
    /// the describe of EVENT_IVS_TAKENAWAYDETECTION's data
    /// </summary>
    public struct NET_DEV_EVENT_TAKENAWAYDETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 规则检测区域顶点数
        /// detect region's point number
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// detect region info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        ///  byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON    
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件源设备上的index,-1表示数据无效
        /// the source device's index,-1 means data in invalid
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// the source device's sign(exclusive),field said local device does not exist or is empty
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// 事件触发累计次数
        /// event trigger accumilated times 
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 事件触发的预置点号，从1开始（没有表示未知）
        /// Event triggered preset period, starting from 1 (no unknown)
        /// </summary>
        public short nPreserID;
        /// <summary>
        /// 事件触发的预置名称
        /// Preset name for event triggered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 扩展信息
        /// Extension info
        /// </summary>
        public NET_EXTENSION_INFO stuExtensionInfo;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 418)]
        public byte[] bReserved;
    };

    /// <summary>
    /// 场景变更事件，ReloadPicture(对应事件 EVENT_IVS_SCENE_CHANGE)
    /// </summary>
    public struct NET_DEV_ALRAM_SCENECHANGE_INFO
    {
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 持续型事件动作, 1表示开始, 2表示停止
        /// Continuous event action: 1 means start,2 means stop;
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// The event happen time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 抓图标志(按位),具体见 NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    };

    /// <summary>
    /// poly point information
    /// 区域或曲线顶点信息
    /// </summary>
    public struct NET_POLY_POINTS
    {
        /// <summary>
        /// point number
        /// 顶点数
        /// </summary>
        public int nPointNum;
        /// <summary>
        /// point info
        /// 顶点信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuPoints;
    }

    #region HARD DISK
    /// <summary>
    /// hard disk's basic information
    /// 硬盘的基本信息
    /// </summary>
    public struct NET_DEV_DEVICE_INFO
    {
        /// <summary>
        /// model
        /// 型号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string byModle;
        /// <summary>
        /// serial number
        /// 序列号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string bySerialNumber;
        /// <summary>
        /// firmware no
        /// 固件号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string byFirmWare;
        /// <summary>
        /// ATA protocol version no.
        /// ATA协议版本号
        /// </summary>
        public int nAtaVersion;
        /// <summary>
        /// smart information no.
        /// smart 信息数
        /// </summary>
        public int nSmartNum;
        /// <summary>
        /// sectors
        /// 扇区
        /// </summary>
        public long Sectors;
        /// <summary>
        /// disk state 0-normal 1-abnormal
        /// 磁盘状态 0-正常 1-异常
        /// </summary>
        public int nStatus;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 33)]
        public int[] nReserved;
    }

    /// <summary>
    /// smart information of harddisk, there may be many items up to more than 30
    /// 硬盘的smart信息,可能会有很多条,最多不超过30个
    /// </summary>
    public struct NET_DEV_SMART_VALUE
    {
        /// <summary>
        /// ID
        /// ID
        /// </summary>
        public byte byId;
        /// <summary>
        /// attribute values
        /// 属性值
        /// </summary>
        public byte byCurrent;
        /// <summary>
        /// maximum error value 
        /// 最大出错值
        /// </summary>
        public byte byWorst;
        /// <summary>
        /// threshold value 
        /// 阈值
        /// </summary>
        public byte byThreshold;
        /// <summary>
        /// property name
        /// 属性名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// actual value
        /// 实际值
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szRaw;
        /// <summary>
        /// state
        /// 状态
        /// </summary>
        public int nPredict;
        /// <summary>
        /// reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] reserved;
    }

    /// <summary>
    /// search hard disk smart information
    /// 硬盘smart信息查询
    /// </summary>
    public struct NET_DEV_SMART_HARDDISK
    {
        /// <summary>
        /// disk number
        /// 硬盘号
        /// </summary>
        public byte nDiskNum;
        /// <summary>
        /// Raid sub disk, 0:single disk
        /// Raid子盘,0表示单盘
        /// </summary>
        public byte byRaidNO;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// device information
        /// 设备信息
        /// </summary>
        public NET_DEV_DEVICE_INFO deviceInfo;
        /// <summary>
        /// smart information
        /// 硬盘smart信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]
        public NET_DEV_SMART_VALUE[] smartValue;
    }
    #endregion
    #region <<Access Control>>

    /// <summary>
    /// Entrance Card Record Query Conditions
    /// 门禁卡记录查询条件
    /// </summary>
    public struct NET_FIND_RECORD_ACCESSCTLCARD_CONDITION
    {
        public uint dwSize;
        /// <summary>
        /// Card Number
        /// 卡号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;
        /// <summary>
        /// User ID
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// Whether effective, TRUE: effective, FALSE: invalid 
        /// 是否有效, TRUE:有效,FALSE:无效
        /// </summary>
        public bool bIsValid;
        /// <summary>
        /// Card inquire condition effects or not, for member szCardNo
        /// 卡号查询条件是否有效,针对成员 szCardNo
        /// </summary>
        public bool abCardNo;
        /// <summary>
        /// User ID inquire condition effects or not, for member  szUserID
        /// 用户ID查询条件是否有效,针对成员 szUserID
        /// </summary>
        public bool abUserID;
        /// <summary>
        /// IsValid inquire condition effects or not, for member  bIsValid
        /// IsValid查询条件是否有效,针对成员 bIsValid
        /// </summary>
        public bool abIsValid;
    }

    // 楼层号（梯控需求）
    public struct NET_FLOORS_INFO
    {
        public int nFloorNumEx2;                                   // 有效的楼层数量再次扩展
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256 * 8)]
        public string szFloorEx;								// 楼层号(梯控需求)最多不超过256个，楼层号不超过999
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;                               // 保留字节
    }

    /// <summary>
    /// 对接第三方平台数据, 
    /// 
    /// </summary>
    public enum EM_RENT_STATE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_RENT_STATE_UNKNOWN = 0,
        /// <summary>
        /// 正常缴费
        /// Normal payment
        /// </summary>
        EM_RENT_STATE_NORMAL_PAYMENT,
        /// <summary>
        /// 欠费0~3个月
        /// 0~3 months in arrears
        /// </summary>
        EM_RENT_STATE_0_TO_3_MONTHS_IN_ARREARS,
        /// <summary>
        /// 欠费3~6个月
        /// 3~6 months in arrears
        /// </summary>
        EM_RENT_STATE_3_TO_6_MONTHS_IN_ARREARS,
        /// <summary>
        /// 欠费6~12个月
        /// 6~12 months in arrears
        /// </summary>
        EM_RENT_STATE_6_TO_12_MONTHS_IN_ARREARS,
        /// <summary>
        /// 欠费12个月以上
        /// More than 12 months in arrears
        /// </summary>
        EM_RENT_STATE_MORE_THAN_12_MONTHS_IN_ARREARS,
        /// <summary>
        /// 临时访客
        /// Temporary visitor
        /// </summary>
        EM_RENT_STATE_TEMPORARY_VISITOR,
    }

    /// <summary>
    /// 一人对单个门支持多时段和假日计划方案
    /// Multi timesection information
    /// </summary>
    public struct NET_ACCESS_CONTROL_CARD_MULTI_TIMESECTION_INFO
    {
        /// <summary>
        /// / 门权限，控制器中的索引
        /// Door
        /// </summary>
        public int nDoor;
        /// <summary>
        /// /门权限对应时间段索引数量
        /// Number of indexes in the corresponding time period of door permissions
        /// </summary>
        public int nTimeSectionNum;
        /// <summary>
        /// / 门权限对应时间段索引, 表示当前门权限可在此时间段通行
        /// Index of corresponding time period of door authority
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public uint[] nTimeSectionList;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 504)]
        public string szReserved;
    }

    /// <summary>
    /// Entrance Guard Record Information
    /// 门禁卡记录集信息
    /// </summary>
    public struct NET_RECORDSET_ACCESS_CTL_CARD
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public UInt32 dwSize;
        /// <summary>
        /// Record Number,Read-Only
        /// 记录集编号,只读
        /// </summary>
        public Int32 nRecNo;
        /// <summary>
        /// Creat Time
        /// 创建时间
        /// </summary>
        public NET_TIME stuCreateTime;
        /// <summary>
        /// Card number
        /// 卡号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;
        /// <summary>
        /// User's ID
        /// 用户ID, 设备暂不支持
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// Card Stetue
        /// 卡状态
        /// </summary>
        public EM_ACCESSCTLCARD_STATE emStatus;
        /// <summary>
        /// Card Type
        /// 卡类型
        /// </summary>
        public EM_ACCESSCTLCARD_TYPE emType;
        /// <summary>
        /// Card Password
        /// 卡密码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPsw;
        /// <summary>
        /// Valid Door Number
        /// 有效的门数目
        /// </summary>
        public int nDoorNum;
        /// <summary>
        /// Privileged Door Number,That is CFG_CMD_ACCESS_EVENT Configure Array Subscript
        /// 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置的数组下标
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] sznDoors;
        /// <summary>
        /// the Number of Effective Open Time
        /// 有效的的开门时间段数目
        /// </summary>
        public int nTimeSectionNum;
        /// <summary>
        /// Open Time Segment Index,That is CFG_ACCESS_TIMESCHEDULE_INFO Array subscript
        /// 开门时间段索引,即CFG_ACCESS_TIMESCHEDULE_INFO的数组下标
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] sznTimeSectionNo;
        /// <summary>
        /// Frequency of Use
        /// 使用次数,仅当来宾卡时有效
        /// </summary>
        public int nUseTime;
        /// <summary>
        /// Valid Start Time 
        /// 开始有效期, 设备暂不支持时分秒
        /// </summary>
        public NET_TIME stuValidStartTime;
        /// <summary>
        /// Valid End Time
        /// 结束有效期, 设备暂不支持时分秒
        /// </summary>
        public NET_TIME stuValidEndTime;
        /// <summary>
        /// Wether Valid,True =Valid,False=Invalid
        /// 是否有效,TRUE有效;FALSE无效
        /// </summary>
        public bool bIsValid;
        /// <summary>
        /// data info (send only), DEPRECATED! use stuFingerPrintInfoEx instead
        /// 下发数据信息，仅为兼容性保留，请使用 stuFingerPrintInfoEx
        /// </summary>
        public NET_ACCESSCTLCARD_FINGERPRINT_PACKET stuFingerPrintInfo;
        /// <summary>
        /// has first card or not
        /// 是否拥有首卡权限
        /// </summary>
        public bool bFirstEnter;
        /// <summary>
        /// card naming
        /// 卡命名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCardName;
        /// <summary>
        /// VTO link position
        /// 门口机关联位置
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szVTOPosition;
        /// <summary>
        /// Card for handicap, TRUE:yes, FALSE:no
        /// 是否为残障人士卡
        /// </summary>
        public bool bHandicap;
        /// <summary>
        /// Enabled member stuFingerPrintInfoEx
        /// 启用成员 stuFingerPrintInfoEx
        /// </summary>
        public bool bEnableExtended;
        /// <summary>
        /// data info structure
        /// 数据信息
        /// </summary>
        public NET_ACCESSCTLCARD_FINGERPRINT_PACKET_EX stuFingerPrintInfoEx;
        /// <summary>
        /// targer detection data number,can not > 20
        /// 人脸数据个数不超过20
        /// </summary>
        public int nFaceDataNum;
        /// <summary>
        /// targer detection data
        /// 人脸模版数据
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20 * 2048)]
        public byte[] szFaceData;
        /// <summary>
        /// dynamic check code
        /// 动态校验码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDynamicCheckCode;
        /// <summary>
        /// repeat enter route num 
        /// 反潜路径个数
        /// </summary>
        public int nRepeatEnterRouteNum;
        /// <summary>
        /// repeat enter route
        /// 反潜路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
        public int[] arRepeatEnterRoute;
        /// <summary>
        /// repeat enter route timeout
        /// 反潜超时时间
        /// </summary>
        public int nRepeatEnterRouteTimeout;
        /// <summary>
        /// enable to new field, TRUE: user nNewDoorNum,nNewDoors
        /// 是否启动新开门授权字段，TRUE表示使用nNewDoorNum和nNewDoors字段下发开门权限
        /// </summary>
        public bool bNewDoor;
        /// <summary>
        /// Valid Door Number;
        /// 有效的门数目;
        /// </summary>
        public int nNewDoorNum;
        /// <summary>
        /// Privileged Door Number, That is CFG_CMD_ACCESS_EVENT Configure Array Subscript
        /// 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置的数组下标
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public int[] nNewDoors;
        /// <summary>
        /// the Number of Effective Open Time
        /// 有效的的开门时间段数目
        /// </summary>
        public int nNewTimeSectionNum;
        /// <summary>
        /// Open Time Segment Index,That is CFG_ACCESS_TIMESCHEDULE_INFO Array subscript
        /// 开门时间段索引,即CFG_ACCESS_TIMESCHEDULE_INFO的数组下标
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public int[] nNewTimeSectionNo;
        /// <summary>
        /// ID card no
        /// 证号码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCitizenIDNo;
        /// <summary>
        /// SpecialDaysSchedule Number
        /// 假日计划表示数量
        /// </summary>
        public int nSpecialDaysScheduleNum;
        /// <summary>
        /// SpecialDaysSchedule Identification
        /// 假日计划标识
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public int[] arSpecialDaysSchedule;
        /// <summary>
        /// user type, 0:common, 1:prohibit
        /// 用户类型, 0 普通用户, 1 禁止名单用户
        /// </summary>
        public uint nUserType;
        /// <summary>
        /// 有效的楼层数量
        /// </summary>
        public int nFloorNum;
        /// <summary>
        /// 楼层号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szFloorNo;
        /// <summary>
        /// 部门名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szSection;
        /// <summary>
        /// 部门名称
        /// </summary>
        public int nScore;
        /// <summary>
        /// 单位名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)]
        public byte[] szCompanyName;
        /// <summary>
        /// 部门ID
        /// </summary>
        public uint nSectionID;
        /// <summary>
        /// 性别
        /// </summary>
        public EM_ACCESSCTLCARD_SEX emSex;
        /// <summary>
        /// 角色
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szRole;
        /// <summary>
        /// 项目ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szProjectNo;
        /// <summary>
        /// 项目名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szProjectName;
        /// <summary>
        /// 施工单位全称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szBuilderName;
        /// <summary>
        /// 施工单位ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szBuilderID;
        /// <summary>
        /// 施工单位类型
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szBuilderType;
        /// <summary>
        /// 施工单位类别ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] szBuilderTypeID;
        /// <summary>
        /// 人员照片ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szPictureID;
        /// <summary>
        /// 原合同系统合同编号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szContractID;
        /// <summary>
        /// 工种ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] szWorkerTypeID;
        /// <summary>
        /// 工种名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szWorkerTypeName;
        /// <summary>
        /// 人员状态, TRUE:启用, FALSE:禁用
        /// </summary>
        public bool bPersonStatus;
        /// <summary>
        /// 用户权限
        /// </summary>
        public EM_ACCESSCTLCARD_AUTHORITY emAuthority;
        /// <summary>
        /// 工种名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 120)]
        public byte[] szCompanionName;
        /// <summary>
        /// 工种名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)]
        public byte[] szCompanionCompany;
        /// <summary>
        /// 临时授权开始时间,当该时间和其他时间同时生效时，以此时间为最高优先级
        /// </summary>
        public NET_TIME stuTmpAuthBeginTime;
        /// <summary>
        /// 临时授权结束时间,当该时间和其他时间同时生效时，以此时间为最高优先级
        /// </summary>
        public NET_TIME stuTmpAuthEndTime;
        /// <summary>
        /// 楼层号扩展 szFloorNoEx 是否有效
        /// </summary>
        public bool bFloorNoExValid;
        /// <summary>
        /// 有效的楼层数量扩展
        /// </summary>
        public int nFloorNumEx;
        /// <summary>
        /// 楼层号扩展
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2048)]
        public string szFloorNoEx;
        /// <summary>
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSubUserID;
        /// <summary>
        /// 人员电话号码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPhoneNumber;
        /// <summary>
        /// 人员照片对应在ftp上的路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPhotoPath;
        /// <summary>
        /// 来访原因
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCause;
        /// <summary>
        /// 陪同人员证件号
        /// </summary>
	    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCompanionCard;

        /// <summary>
        /// 陪同人员证件号
        /// </summary>
	    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCitizenAddress;                         // 证地址
        public NET_TIME stuBirthDay;                                   // 出生日期（年月日有效）
        public bool bFloorNoEx2Valid;                              // stuFloors2 是否有效
        public IntPtr pstuFloorsEx2;                             // 楼层号（再次扩展），参考NET_FLOORS_INFO
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szDefaultFloor;                             // 默认楼层号（梯控需求)
        public int nUserTimeSectionNum;                            // 用户时间段有效个数
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6 * 20)]
        public string szUserTimeSections; // 针对用户自身的开门时间段校验，最多支持6个时间段
        /// <summary>
        /// 工作班别
        /// Work class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szWorkClass;
        /// <summary>
        /// 有效时间段内启动时间
        /// Start time in valid time period
        /// </summary>
        public NET_TIME stuStartTimeInPeriodOfValidity;
        /// <summary>
        /// 测试项目
        /// Test items
        /// </summary>
        public EM_TEST_ITEMS emTestItems;
        /// <summary>
        /// 授权时间、过期时间，时间单位: 小时
        /// Authorization time, expiration time, time unit: hour
        /// </summary>
        public uint nAuthOverdueTime;
        /// <summary>
        /// 人员健康状态
        /// Staff health status
        /// </summary>
        public EM_GREENCNHEALTH_STATUS emGreenCNHealthStatus;
        /// <summary>
        /// 电子通行证状态
        /// E-pass status
        /// </summary>
        public EM_ALLOW_PERMIT_FLAG emAllowPermitFlag;
        /// <summary>
        /// 对接第三方平台数据, 
        /// 
        /// </summary>
        public EM_RENT_STATE emRentState;
        /// <summary>
        /// 用户消费时间段
        /// User consumption period
        /// </summary>
        public int nConsumptionTimeSectionsNum;
        /// <summary>
        /// 消费时间段.每天最多6个时间段，每6个元素对应一天。一共7天;
        /// 每个时段格式为"星期 时:分:秒-时:分:秒 消费类型 可消费次数 可消费金额"
        /// Consumption period There are up to 6 time periods per day, and every 6 elements correspond to one day. 7 days in total;
        /// The format of each period is "week hour: minute: second hour: minute: second consumption type consumable times consumable amount"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 42 * 34)]
        public string szConsumptionTimeSections;
        /// <summary>
        /// / 一人对单个门支持多时段和假日计划方案需求
        /// / One person needs to support multiple time periods and holiday planning solutions for a single door
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_ACCESS_CONTROL_CARD_MULTI_TIMESECTION_INFO[] stuMultiTimeSections;
        /// <summary>
        /// / 一人对单个门支持多时段和假日计划方案需求个数
        /// / The number of requirements for a person to support multiple time periods and holiday planning schemes for a single door
        /// </summary>
        public int nMultiTimeSectionsNum;
        /// <summary>
        /// / 字节对齐
        /// / byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szResvered1;
    }

    /// <summary>
    /// data, for sending only
    /// 数据，只用于下发信息
    /// </summary>
    public struct NET_ACCESSCTLCARD_FINGERPRINT_PACKET
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public UInt32 dwSize;
        /// <summary>
        /// length of a finger print packet, unit: byte
        /// 单个数据包长度,单位字节
        /// </summary>
        public Int32 nLength;
        /// <summary>
        /// packet count 
        /// 包个数
        /// </summary>
        public Int32 nCount;
        /// <summary>
        /// all packet in a single buffer, allocated and filled by user, nLength*nCount bytes
        /// 所有数据包，用户申请内存并填充，长度为 nLength*nCount
        /// </summary>
        public IntPtr pPacketData;

    }

    /// <summary>
    /// data, for sending and receiving
    /// 纹数据扩展，可用于下发和获取信息
    /// </summary>
    public struct NET_ACCESSCTLCARD_FINGERPRINT_PACKET_EX
    {
        /// <summary>
        /// length of a finger print packet, unit: byte
        /// 单个数据包长度,单位字节
        /// </summary>
        public int nLength;
        /// <summary>
        /// packet count 
        /// 包个数
        /// </summary>
        public int nCount;
        /// <summary>
        /// all packet in a single buffer, allocated by user
        /// 所有数据包, 用户申请内存,大小至少为nLength * nCount
        /// </summary>
        public IntPtr pPacketData;
        /// <summary>
        /// pPacketData buffer length, set by user
        /// 指向内存区的大小，用户填写
        /// </summary>
        public int nPacketLen;
        /// <summary>
        /// The actual size returned to the user, equal to nLength*nCount
        /// 返回给用户实际总大小
        /// </summary>
        public int nRealPacketLen;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReverseed;
    }

    /// <summary>
    /// 门禁事件类型
    /// Entrance Guard Event Type
    /// </summary>
    public enum EM_ACCESS_CTL_EVENT_TYPE
    {
        UNKNOWN = 0,
        /// <summary>
        /// 进门
        /// Get In
        /// </summary>
        ENTRY,
        /// <summary>
        /// 出门
        /// Get Out
        /// </summary>
        EXIT,
    }

    /// <summary>
    /// 门禁事件
    /// access control event
    /// </summary>
    public struct NET_ALARM_ACCESS_CTL_EVENT_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 门通道号
        /// Door Channel Number
        /// </summary>
        public int nDoor;
        /// <summary>
        /// 门禁名称
        /// Entrance Guard Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDoorName;
        /// <summary>
        /// 报警事件发生的时间
        /// Alarm Event Triggered Time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 门禁事件类型
        /// Entrance Guard Event Type
        /// </summary>
        public EM_ACCESS_CTL_EVENT_TYPE emEventType;
        /// <summary>
        /// 刷卡结果,TRUE表示成功,FALSE表示失败
        /// Swing Card Result,True is Success,False is Fail
        /// </summary>
        public bool bStatus;
        /// <summary>
        /// 卡类型
        /// Card Type
        /// </summary>
        public EM_A_NET_ACCESSCTLCARD_TYPE emCardType;
        /// <summary>
        /// 开门方式
        /// Open The Door Method
        /// </summary>
        public EM_ACCESS_DOOROPEN_METHOD emOpenMethod;
        /// <summary>
        /// 卡号
        /// Card Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;
        /// <summary>
        /// 密码
        /// Password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPwd;
        /// <summary>
        /// 门读卡器ID
        /// Reader ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReaderID;
        /// <summary>
        /// 开门用户
        /// unlock user
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUserID;
        /// <summary>
        /// 抓拍照片存储地址
        /// snapshot picture storage address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szSnapURL;
        /// <summary>
        /// 开门操作码，配合 bStatus 使用
        /// 0x00 没有错误
        /// 0x10 未授权
        /// 0x11 卡挂失或注销
        /// 0x12 没有该门权限
        /// 0x13 开门模式错误
        /// 0x14 有效期错误
        /// 0x15 防反潜模式
        /// 0x16 胁迫报警未打开
        /// 0x17 门常闭状态
        /// 0x18 AB互锁状态
        /// 0x19 巡逻卡
        /// 0x1A 设备处于闯入报警状态
        /// 0x20 时间段错误
        /// 0x21 假期内开门时间段错误
        /// 0x23 卡逾期
        /// 0x30 需要先验证有首卡权限的卡片
        /// 0x40 卡片正确,输入密码错误
        /// 0x41 卡片正确,输入密码超时
        /// 0x42 卡片正确,输入错误
        /// 0x43 卡片正确,输入超时
        /// 0x44 正确,输入密码错误
        /// 0x45 正确,输入密码超时
        /// 0x50 组合开门顺序错误
        /// 0x51 组合开门需要继续验证
        /// 0x60 验证通过,控制台未授权
        /// 0x61 卡片正确,人脸错误
        /// 0x62 卡片正确,人脸超时
        /// 0x63 重复进入
        /// 0x64 未授权,需要后端平台识别
        /// 0x65 体温过高
        /// 0x66 未戴口罩
        /// 0x67 健康码获取失败
        /// 0x68 黄码禁止通行
        /// 0x69 红码禁止通行
        /// 0x6a 健康码无效
        /// 0x6b 绿码验证通过
        /// 0x6e 绿码,行程码非绿码
        /// 0x6f 绿码，抗原为羊
        /// 0x70 获取健康码信息
        /// 0x71 校验证信息（平台下发对应证号的校验结果）
        /// 0xA8 未佩戴安全帽
        /// 0xB1 授权信息不足，待补充
        /// Open door operate code, use with bStatus
        /// 0x00 no error
        /// 0x10 unauthorized
        /// 0x11 card lost or cancelled
        /// 0x12 no door right
        /// 0x13 unlock mode error
        /// 0x14 valid period error
        /// 0x15 anti sneak into mode
        /// 0x16 forced alarm not unlocked
        /// 0x17 door NC status
        /// 0x18 AB lock status
        /// 0x19 patrol card
        /// 0x1A device is under intrusion alarm status
        /// 0x20 period error
        /// 0x21 unlock period error in holiday period
        /// 0x23 Card is overdue
        /// 0x30 first card right check required
        /// 0x40 card correct, input password error
        /// 0x41 card correct, input password timed out
        /// 0x42 card correct, input fingerprint error
        /// 0x43 card correct, input fingerprint timed out
        /// 0x44 fingerprint correct, input password error
        /// 0x45 fingerprint correct, input password timed out
        /// 0x50 group unlock sequence error
        /// 0x51 test required for group unlock
        /// 0x60 test passed, control unauthorized
        /// 0x61 card correct, face error
        /// 0x62 card correct,face timeout
        /// 0x63 repeat enter
        /// 0x64 unauthorized, requiring back-end platform identification
        /// 0x65 high body 
        /// 0x66 no mask
        /// 0x67 get health code fail
        /// 0x68 No Entry because of yellow code
        /// 0x69 No Entry because of red code
        /// 0x6a health code is invalid
        /// 0x6b entry because of green code
        /// 0x6e Green code, travel code not green code
        /// 0x6f Green code, antigen positive
        /// 0x70 get health code info
        /// 0x71 verify citizenId (platform issues the verification result of the corresponding citizenId)
        /// 0xA8 not wear safety helmet (customized)
        /// 0xB1 insufficient authorization information, to be supplemented
        /// </summary>
        public int nErrorCode;
        /// <summary>
        /// 刷卡记录集中的记录编号
        /// punching record number
        /// </summary>
        public int nPunchingRecNo;
        /// <summary>
        /// 抓图张数
        /// pic Numbers
        /// </summary>
        public int nNumbers;
        /// <summary>
        /// 卡状态
        /// Card Status
        /// </summary>
        public EM_ACCESSCTLCARD_STATE emStatus;
        /// <summary>
        /// 智能锁序列号
        /// wireless deivce serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 考勤状态
        /// attend state
        /// </summary>
        public EM_ATTENDANCESTATE emAttendanceState;
        /// <summary>
        /// 二维码
        /// QRcode
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szQRCode;
        /// <summary>
        /// 呼梯楼层号
        /// Floor of Call Lift
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szCallLiftFloor;
        /// <summary>
        /// 是否为采集卡片
        /// Collect as card or not
        /// </summary>
        public EM_CARD_STATE emCardState;
        /// <summary>
        /// 证号
        /// card ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szCitizenIDNo;
        /// <summary>
        /// 陪同者卡号信息
        /// The companion cards list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6 * 32)]
        public string szCompanionCards;
        /// <summary>
        /// 陪同者卡号个数
        /// The number of companion cards
        /// </summary>
        public int nCompanionCardCount;
        /// <summary>
        /// 帽子类型
        /// hat style
        /// </summary>
        public EM_HAT_STYLE emHatStyle;
        /// <summary>
        /// 帽子颜色
        /// hat color
        /// </summary>
        public EM_UNIFIED_COLOR_TYPE emHatColor;
        /// <summary>
        /// 梯控方式触发者
        /// lift caller type
        /// </summary>
        public EM_LIFT_CALLER_TYPE emLiftCallerType;
        /// <summary>
        /// 人员温度信息是否有效
        /// Whether the information of human body  is valid
        /// </summary>
        public bool bManTemperature;
        /// <summary>
        /// 人员温度信息,  为TRUE 时有效
        /// Information of human body , It is valid whne  is TURE
        /// </summary>
        public NET_MAN_TEMPERATURE_INFO stuManTemperatureInfo;
        /// <summary>
        /// 证姓名
        /// name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szCitizenName;
        /// <summary>
        /// 口罩状态（EM_MASK_STATE_UNKNOWN、EM_MASK_STATE_NOMASK、EM_MASK_STATE_WEAR 有效）
        /// mask ( EM_MASK_STATE_UNKNOWN,EM_MASK_STATE_NOMASK,EM_MASK_STATE_WEAR is valid )
        /// </summary>
        public EM_MASK_STATE_TYPE emMask;
        /// <summary>
        /// 卡命名
        /// card name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCardName;
        /// <summary>
        /// 一人脸时的人脸序号
        /// face index
        /// </summary>
        public uint nFaceIndex;
        /// <summary>
        /// 用户类型( EM_USER_TYPE_ORDINARY 至 EM_USER_TYPE_CZ 有效 )
        /// user type( from EM_USER_TYPE_ORDINARY to EM_USER_TYPE_CZ is valid )
        /// </summary>
        public EM_USER_TYPE emUserType;
        /// <summary>
        /// RealUTC 是否有效，bRealUTC 为 TRUE 时，用 RealUTC，否则用 stuTime 字段
        /// whether RealUTC is valid. when bRealUTC is TRUE, use RealUTC, otherwise use stuTime
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// 事件发生的时间（标准UTC）
        /// event occur time
        /// </summary>
        public NET_TIME_EX RealUTC;
        /// <summary>
        /// 公司名称
        /// Company Address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
        public string szCompanyName;
        /// <summary>
        /// 人脸质量评分
        /// Face Quality
        /// </summary>
        public int nScore;
        /// <summary>
        /// 电梯编号
        /// Elevator number
        /// </summary>
        public int nLiftNo;
        /// <summary>
        /// 
        /// 
        /// </summary>
        public EM_QRCODE_IS_EXPIRED emQRCodeIsExpired;
        /// <summary>
        /// 
        /// 
        /// </summary>
        public EM_QRCODE_STATE emQRCodeState;
        /// <summary>
        /// 二维码截止日期
        /// QR code deadline
        /// </summary>
        public NET_TIME stuQRCodeValidTo;
        /// <summary>
        /// 平台通过密码校验权限。用于动态密码校验，动态密码由手机APP生成，设备仅透传给平台
        /// The platform verifies permissions by password. Used for dynamic password verification. The dynamic password is generated by the mobile APP, and the device is only transparently transmitted to the platform
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDynPWD;
        /// <summary>
        /// 上报事件数据序列号从1开始自增
        /// The serial number of the reported event data increases from 1
        /// </summary>
        public uint nBlockId;
        /// <summary>
        /// 部门名称
        /// Department name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSection;
        /// <summary>
        /// 工作班级
        /// Work class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szWorkClass;
        /// <summary>
        /// 测试项目
        /// Test items
        /// </summary>
        public EM_TEST_ITEMS emTestItems;
        /// <summary>
        /// ESD阻值测试结果
        /// ESD resistance test result
        /// </summary>
        public NET_TEST_RESULT stuTestResult;
        /// <summary>
        /// 门禁设备编号
        /// Access control equipment number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// 用户唯一表示ID
        /// User unique ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserUniqueID;
        /// <summary>
        /// 是否使用卡命名扩展
        /// Whether to use the card name extension
        /// </summary>
        public bool bUseCardNameEx;
        /// <summary>
        /// 卡命名扩展
        /// Card name extension
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCardNameEx;
        /// <summary>
        /// 临时密码
        /// tmp passwd
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szTempPassword;
        /// <summary>
        /// 摘要信息
        /// Note
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szNote;
        /// <summary>
        /// 核酸检测报告结果 -1: 未知 0: 羊 1: 非羊 2: 未检测 3: 过期
        /// Nucleic acid test report result, -1: Unknow 0: yang, 1: unyang, 2: not tested, 3: expired
        /// </summary>
        public int nHSJCResult;
        /// <summary>
        /// 新冠疫苗接种信息
        /// New crown vaccination information
        /// </summary>
        public NET_VACCINE_INFO stuVaccineInfo;
        /// <summary>
        /// 行程码信息
        /// Trip code information
        /// </summary>
        public NET_TRAVEL_INFO stuTravelInfo;
        /// <summary>
        /// 国康码项目，用来上传大二维码内容
        /// Guokang code project is used to upload large QR code content
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2048)]
        public string szQRCodeEx;
        /// <summary>
        /// 核酸信息
        /// Nucleic acid detection information
        /// </summary>
        public NET_HSJC_INFO stuHSJCInfo;
        /// <summary>
        /// 抗原检测信息
        /// Antigen Test Information
        /// </summary>
        public NET_ANTIGEN_INFO stuAntigenInfo;
        /// <summary>
        /// 个人健康状态 绿码:"Green" 红码:"Red" 黄码:"Yellow" 橙:"Orange" 未知:"None"
        /// Personal health status Green Code:"Green" Red code:"Red" Yellow code:"Yellow" Orange code:"Orange" unknown:"None"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szHealthGreenStatus;
        /// <summary>
        /// 年龄
        /// Age
        /// </summary>
        public int nAge;
        /// <summary>
        /// 签出类型
        /// Check Out Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCheckOutType;
        /// <summary>
        /// 签出原因
        /// Check out Reason
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szCheckOutCause;
        /// <summary>
        /// / 刷卡开门时，门禁后台目标校验是否为同一人，
        /// / 0：该人员无目标数据
        /// / 1：刷卡和目标人员一致
        /// / 2：刷卡和目标人员不一致
        /// When swiping the card to open the door, check whether the background target of access control is the same person
        /// 0:This person has no target data
        /// 1:Card swiping is consistent with target personnel
        /// 2:Card swiping and target personnel are inconsistent
        /// </summary>
        public int nTargetCheck;
        /// <summary>
        /// /动态识别的结构化信息对象
        /// Dynamically Recognized Structured Information Objects
        /// </summary>
        public NET_ACCESS_CTL_OBJECT_PROPERTIES stuObjectProperties;
        /// <summary>
        /// / 按钮控制鉴权信息
        /// / Button control authentication information
        /// </summary>
        public NET_BUTTON_CONTROL_INFO stuButtonControlInfo;
        /// <summary>
        /// / 人脸目标识别相似度, 人脸开门时有效, 范围: 0~100
        /// / Facial target recognition similarity, effective when opening the door, range: 0-100
        /// </summary>
        public uint nSimilarity;
        /// <summary>
        /// / 通行结果，人员是否有同行 0-未知 1-人员进入 2-人员退出 3-人员未通行
        /// / Pass result, whether the person is accompanied or not: 0-unknown, 1-person enters, 2-person exits, 3-person fails to pass.
        /// </summary>
        public int nPassResult;
        /// <summary>
        /// / 设备在不同的密码模式下上报的密码类型，0:未知 1,唤醒密码模式 2,陪同密码模式 3胁迫密码模式
        /// / Password type reported by the device in different password modes: 0: unknown, 1: wake-up password mode, 2: accompanying password mode, 3: coercion password mode
        /// </summary>
        public int nCustomerPWDType;
        /// <summary>
        /// / 平台下发操作员ID, 仅用于远程开门
        /// Operator ID, remote open door
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string szOperatorID;
        /// <summary>
        /// 设备开门信息透传唯一标识
        /// Transmission Uuid
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szTransmissionUuid;
        /// <summary>
        /// / 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1256)]
        public string szReserved;
    }

    /// <summary>
    /// Access control status event
    /// 门禁状态事件
    /// </summary>
    public struct NET_ALARM_ACCESS_CTL_STATUS_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Door channel no.
        /// 门通道号
        /// </summary>
        public int nDoor;
        /// <summary>
        /// Event time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// Access control status
        /// 门禁状态
        /// </summary>
        public EM_A_NET_ACCESS_CTL_STATUS_TYPE emStatus;
        /// <summary>
        /// 无线设备序列号(智能锁)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szSerialNumber;
        public bool bRealUTC;              // RealUTC 是否有效，bRealUTC 为 TRUE 时，用 RealUTC，否则用 stuTime 字段
        public NET_TIME_EX RealUTC;                // 事件发生的时间（标准UTC）
    }

    /// <summary>
    /// Record New Operation (Insert)Parameter
    /// 记录集新增操作(插入)参数
    /// </summary>
    public struct NET_CTRL_RECORDSET_INSERT_PARAM
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public UInt32 dwSize;
        /// <summary>
        /// Record Information(User Write)
        /// 记录集信息(用户填写)
        /// </summary>
        public NET_CTRL_RECORDSET_INSERT_IN stuCtrlRecordSetInfo;
        /// <summary>
        /// Record Information(the Device Come Back)
        /// 记录集信息(设备返回)
        /// </summary>
        public NET_CTRL_RECORDSET_INSERT_OUT stuCtrlRecordSetResult;
    }

    /// <summary>
    /// New Record Set Operation(Insert)Parameter
    /// 记录集新增操作(插入)输入参数
    /// </summary>
    public struct NET_CTRL_RECORDSET_INSERT_IN
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public UInt32 dwSize;
        /// <summary>
        /// Record Information Type
        /// 记录集信息类型
        /// </summary>
        public EM_NET_RECORD_TYPE emType;
        /// <summary>
        /// Record Information Cache,The EM_NET_RECORD_TYPE Note is Details
        /// 记录集信息缓存,详见EM_NET_RECORD_TYPE注释，由用户申请内存
        /// </summary>
        public IntPtr pBuf;
        /// <summary>
        /// Record Information Cache Size
        /// 记录集信息缓存大小,大小参照记录集信息类型对应的结构体
        /// </summary>
        public Int32 nBufLen;
    }

    /// <summary>
    /// Record New Operation(Insert) Parameter
    /// 记录集新增操作(插入)输出参数
    /// </summary>
    public struct NET_CTRL_RECORDSET_INSERT_OUT
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public UInt32 dwSize;
        /// <summary>
        /// Record Number(The Device Come Back When New Insert )
        /// 记录编号(新增插入时设备返回)
        /// </summary>
        public Int32 nRecNo;
    }

    /// <summary>
    /// 支持的梯控制方式类型
    /// Supported ladder control mode types
    /// </summary>
    public enum EM_SUPPORT_LIFT_CONTROL_TYPES
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_SUPPORT_LIFT_CONTROL_TYPES_UNKNOWN,
        /// <summary>
        /// 本地485协议梯控方式
        /// Local 485 protocol ladder control mode
        /// </summary>
        EM_SUPPORT_LIFT_CONTROL_TYPES_LOCAL485,
        /// <summary>
        /// 从门口机联动主门口进行召梯
        /// The elevator is called from the door machine linkage to the main door
        /// </summary>
        EM_SUPPORT_LIFT_CONTROL_TYPES_LINKMAINVTO,
        /// <summary>
        /// 联动梯控主机召梯
        /// Linkage ladder control host calling
        /// </summary>
        EM_SUPPORT_LIFT_CONTROL_TYPES_LINkLIFTCONTROLHOST,
    }

    /// <summary>
    /// Entrance Guard Control Ability
    /// 门禁控制能力
    /// </summary>
    public struct CFG_CAP_ACCESSCONTROL
    {
        /// <summary>
        /// 门禁组数、
        /// Class Number of Entrance Guard
        /// </summary>
        public int nAccessControlGroups;
        /// <summary>
        /// 是否支持门禁报警日志记录在记录集中
        /// AccessControl Alarm Log Supported in Record
        /// </summary>
        public bool bSupAccessControlAlarmRecord;
        /// <summary>
        /// AccessControlCustomPassword记录集中密码的保存方式
        /// password encryption mode of AccessControlCustomPassword
        /// </summary>
        public EM_CUSTOM_PASSWORD_ENCRYPTION_MODE emCustomPasswordEncryption;
        /// <summary>
        /// 是否支持功能
        /// Whether to support
        /// </summary>
        public EM_SUPPORTFINGERPRINT emSupportFingerPrint;
        /// <summary>
        /// 是否只支持单门授权(发卡)
        /// Only Single Door authorize
        /// </summary>
        public bool bOnlySingleDoorAuth;
        /// <summary>
        /// 是否支持授权异步返回
        /// asynchronous return of authorize
        /// </summary>
        public bool bAsynAuth;
        /// <summary>
        /// 假日计划
        /// SpecialDaysSchedule
        /// </summary>
        public NET_SPECIAL_DAYS_SCHEDULE stSpecialDaysSchedule;
        /// <summary>
        /// 是否支持多人多类型组合开门
        /// whether to support multi-user and multi-type combination opening door
        /// </summary>
        public bool bSupportMultiUserMultiTypeAuth;
        /// <summary>
        /// 是否支持门禁快速导入功能
        /// support access control fast import or not
        /// </summary>
        public EM_SUPPORT_FAST_IMPORT_TYPE bSupportFastImport;
        /// <summary>
        /// 是否支持门禁快速复核功能
        /// support access control fast check or not
        /// </summary>
        public EM_SUPPORT_FAST_CHECK_TYPE bSupportFastCheck;
        /// <summary>
        /// 是否支持梯控功能
        /// support call lift or not
        /// </summary>
        public bool bSupportCallLift;
        /// <summary>
        /// 支持的梯控制方式类型的集合
        /// A collection of supported ladder control mode types
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_SUPPORT_LIFT_CONTROL_TYPES[] emSupportLiftControlTypes;
        /// <summary>
        /// 支持的梯控方式类型的有效数
        /// Valid number of supported ladder control mode types
        /// </summary>
        public int nSupportLiftControlTypesNum;
        /// <summary>
        /// 支持静电检测功能
        /// Support electrostatic detection function
        /// </summary>
        public bool bSupportESD;
        /// <summary>
        /// 是否支持假日常开常闭功能
        /// Whether the holiday normally open and normally closed functions are supported
        /// </summary>
        public bool bSupportSpecialDaysAlwaysOpenOrClose;
        /// <summary>
        /// 能力bit位控制：0-不支持人员采集新接口, 1-支持人脸使用新接口, 2-支持身份证采集使用新接口, 4-支持指纹采集使用新接口, 8-支持卡采集使用新接口 16-支持虹膜采集使用新接口, 32-支持掌纹采集使用新接口
        /// Capability bit control: 0- does not support the use of new interfaces for personnel collection, 1- supports the use of new interfaces for facial recognition, 2- supports the use of new interfaces for ID card collection, 4- supports the use of new interfaces for fingerprint collection, 8- supports the use of new interfaces for card collection, 16- supports the use of new interfaces for iris collection, 32- supports the use of new interfaces for palm print collection
        /// </summary>
        public uint nSupportPersonCollection;
        /// <summary>
        /// 是否支持平台下发假日计划
        /// Support Special Days Config
        /// </summary>
        public bool bSupportSpecialDaysConfig;
        /// <summary>
        /// 是否支持按照门通道设置门磁的常开/常闭类型
        /// Support Set Door Channel Sensor Type
        /// </summary>
        public bool bSupportSetDoorChannelSensorType;
        /// <summary>
        /// 保留字段
        /// Reserved Byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1016)]
        public string szResvered;
    }

    /// <summary>
    /// Log Capability
    /// 日志能力
    /// </summary>
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]
    public struct NET_CFG_CAP_LOG
    {
        /// <summary>
        /// The Maximum Log Number
        /// 最大日志条数
        /// </summary>
        public uint dwMaxLogItems;
        /// <summary>
        /// The Maximum Log Number of Each Page
        /// 每个分页的最大日志条数
        /// </summary>
        public uint dwMaxPageItems;
        /// <summary>
        /// Query Whether to Support the Initial Sequence  Number
        /// 查询条件是否支持起始序号
        /// </summary>
        public bool bSupportStartNo;
        /// <summary>
        /// Query Whether to Support the Type Filter
        /// 查询条件是否支持类型过滤
        /// </summary>
        public bool bSupportTypeFilter;
        /// <summary>
        /// Query Whether to Support the Time Filter
        /// 查询条件是否支持时间过滤
        /// </summary>
        public bool bSupportTimeFilter;
        /// <summary>
        /// 查询条件是否支持日志查询的UTC能力
        /// Check whether the UTC function of log query is supported
        /// </summary>
        public bool bSupportRealUTC;
    }

    /// <summary>
    /// Audio Encoding Compression Format
    /// 音频编码压缩格式
    /// </summary>
    public enum EM_TALK_AUDIO_TYPE
    {
        PCM,
        ADPCM,
        G711A,
        G711Mu,
        G726,
        G729,
        MPEG2,
        AMR,
        AAC,
    }

    /// <summary>
    /// Audio Properties
    /// 音频属性
    /// </summary>
    public struct NET_CFG_AUDIO_PROPERTY
    {
        /// <summary>
        /// Stream Size, Unit:kbps, such as 192kbps
        /// 码流大小，单位:kbps，比如192kbps
        /// </summary>
        public int nBitRate;
        /// <summary>
        /// Sampling Depth, such as8 or 16
        /// 采样的位深，如8或16
        /// </summary>
        public int nSampleBit;
        /// <summary>
        /// Sampling Frequency, Unit:Hz, such as 44100Hz
        /// 采样率，单位:Hz，比如44100Hz
        /// </summary>
        public int nSampleRate;
    }

    /// <summary>
    /// Supports Audio Formats
    /// 支持的音频格式
    /// </summary>
    public struct NET_CFG_CAP_AUDIO_FORMAT
    {
        /// <summary>
        /// Audio Compressed Format
        /// 音频压缩格式
        /// </summary>
        public EM_TALK_AUDIO_TYPE emCompression;
        /// <summary>
        /// Audio Properties Number
        /// 音频属性个数
        /// </summary>
        public int nPropertyNum;
        /// <summary>
        /// Audio Properties
        /// 音频属性个数
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_CFG_AUDIO_PROPERTY[] stuProperty;
    }

    /// <summary>
    /// audio play path
    /// 音频播放路径
    /// </summary>
    public struct NET_CFG_AUDIO_PLAY_PATH
    {
        /// <summary>
        /// file path
        /// 文件路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
        /// <summary>
        /// if support upload
        /// 是否支持上传
        /// </summary>
        public bool bSupportUpload;
        /// <summary>
        /// max file upload number, valid when support upload
        /// 支持最大上传个数, 支持上传才有效
        /// </summary>
        public int nMaxFileUploadNum;
        /// <summary>
        /// max upload file size, valid when support upload
        /// 最大上传文件大小，单位字节, 支持上传才有效
        /// </summary>
        public int nMaxUploadFileSize;
    }

    /// <summary>
    /// 语音时间预案配置
    /// Voice time plan configuration
    /// </summary>
    public struct NET_VOICE_PLAY_PLAN_INFO
    {
        /// <summary>
        /// / 每个语音定时播放任务开关标志
        /// Each voice timing playback task switch logo
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 播放次数
        /// Alarm duration, unit: second
        /// </summary>
        public int nPlayTimes;
        /// <summary>
        /// / 语音播放路径,绝对路径
        /// Voice playback path, absolute path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szVoicePath;
        /// <summary>
        /// / 工作时间段
        /// Working hours
        /// </summary>
        public NET_CFG_TIME_SCHEDULE stuTimeSchedule;
        /// <summary>
        /// / 语音播放间隔 间隔为0时为一直播放 默认值为0 单位为秒
        /// When the interval between voice playback is 0, it will continue to play. The default value is 0, and the unit is seconds
        /// </summary>
        public uint nPlayInterval;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 508)]
        public string szReserved;
    }

    /// <summary>
    /// Time plan playback voice control capability
    /// 时间预案播放语音控制能力
    /// </summary>
    public struct NET_CFG_VOICE_PLAY_PLAN
    {
        /// <summary>
        /// Whether to support time plan voice broadcast
        /// 是否支持时间预案语音播报
        /// </summary>
        public bool bSupport;
        /// <summary>
        /// Number of voices supporting time plan
        /// 支持时间预案的语音个数
        /// </summary>
        public int nVoiceTaskNum;
    }

    /// <summary>
    /// The Speaker Ability
    /// 扬声器能力
    /// </summary>
    public struct NET_CFG_CAP_SPEAK
    {
        /// <summary>
        /// The Number of Audio Formats Supported
        /// 支持的音频格式个数
        /// </summary>
        public int nAudioCapNum;
        /// <summary>
        /// Supported Audio Formats
        /// 支持的音频格式
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_CFG_CAP_AUDIO_FORMAT[] stuAudioCap;
        /// <summary>
        /// audio play path number
        /// 音频播放路径个数
        /// </summary>
        public int nAudioPlayPathNum;
        /// <summary>
        /// audio play path
        /// 音频播放路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CFG_AUDIO_PLAY_PATH[] stuAudioPlayPath;
        /// <summary>
        /// Time plan playback voice control capability
        /// 时间预案播放语音控制能力
        /// </summary>
        public NET_CFG_VOICE_PLAY_PLAN stuVoicePlayPlan;
    }

    /// <summary>
    /// Query record capability sets 
    /// 查询记录能力集能力集
    /// </summary>
    public struct NET_CFG_CAP_RECORDFINDER_INFO
    {
        /// <summary>
        /// The biggest article page number
        /// 最大分页条数
        /// </summary>
        public int nMaxPageSize;
        /// <summary>
        /// 查询表是否支持按真实UTC时间作为条件查询
        /// Whether the query table supports query based on real UTC time
        /// </summary>
        public bool bSupportRealUTC;
    }

    /// <summary>
    /// Record Operation Parameter
    /// 记录集操作参数
    /// </summary>
    public struct NET_CTRL_RECORDSET_PARAM
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Record Information Type
        /// 记录集信息类型
        /// </summary>
        public EM_NET_RECORD_TYPE emType;
        /// <summary>
        /// New/Renew/Inquire,It is Record Information Cache,the EM_NET_RECORD_TYPE Note is Details),Delete,It is Record Number(Int type)
        /// 新增\更新\查询\导入时,为记录集信息缓存,详见EM_NET_RECORD_TYPE注释,由用户申请内存，长度为nBufLen,删除时,为记录编号(int型),清除时为NULL
        /// </summary>
        public IntPtr pBuf;
        /// <summary>
        /// Record Information Cache Size
        /// 记录集信息缓存大小,大小参照记录集信息类型对应的结构体
        /// </summary>
        public int nBufLen;
    }

    /// <summary>
    /// 卡状态
    /// Card Status
    /// </summary>
    public enum EM_ACCESSCTLCARD_STATE
    {
        UNKNOWN = -1,
        /// <summary>
        /// 正常
        /// Normal
        /// </summary>
        NORMAL = 0,
        /// <summary>
        /// 挂失
        /// Lose
        /// </summary>
        LOSE = 1,
        /// <summary>
        /// 注销
        /// Logoff
        /// </summary>
        LOGOFF = 2,
        /// <summary>
        /// 冻结
        /// Freeze
        /// </summary>
        FREEZE = 4,
        /// <summary>
        /// 欠费
        /// Arrears
        /// </summary>
        ARREARAGE = 8,
        /// <summary>
        /// 逾期
        /// Overdue
        /// </summary>
        OVERDUE = 16,
        /// <summary>
        /// 预欠费(还是可以开门,但有语音提示)
        /// Pre-Arrears(still can open the door)
        /// </summary>
        PREARREARAGE = 32,
    }

    /// <summary>
    /// Card Type
    /// 卡类型
    /// </summary>
    public enum EM_ACCESSCTLCARD_TYPE
    {
        /// <summary>
        /// unknow
        /// 未知
        /// </summary>
        UNKNOWN = -1,
        /// <summary>
        /// General Card
        /// 一般卡
        /// </summary>
        GENERAL,
        /// <summary>
        /// 
        /// 
        /// </summary>
        VIP,
        /// <summary>
        /// Guest Card
        /// 来宾卡
        /// </summary>
        GUEST,
        /// <summary>
        /// Patrol Card
        /// 巡逻卡
        /// </summary>
        PATROL,
        /// <summary>
        /// prohibit Card
        /// 禁止名单卡
        /// </summary>
        BLACKLIST,
        /// <summary>
        /// Corce Card
        /// 胁迫卡
        /// </summary>
        CORCE,
        /// <summary>
        /// Polling Card
        /// 巡检卡
        /// </summary>
        POLLING,
        /// <summary>
        /// Mother Card
        /// 母卡
        /// </summary>
        MOTHERCARD = 0xff,
    }

    /// <summary>
    /// Sex
    /// 性别
    /// </summary>
    public enum EM_ACCESSCTLCARD_SEX
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// Male
        /// 男
        /// </summary>
        MALE,
        /// <summary>
        /// Female
        /// 女
        /// </summary>
        FEMALE,
    }

    /// <summary>
    /// Authority
    /// 用户权限
    /// </summary>
    public enum EM_ACCESSCTLCARD_AUTHORITY
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// Male
        /// 管理员
        /// </summary>
        ADMINISTRATORS,
        /// <summary>
        /// Female
        /// 普通用户
        /// </summary>
        CUSTOMER,
    }

    /// <summary>
    /// 开门方式(门禁事件,门禁出入记录,实际的开门方式)
    /// Door Open Method(Entrance Guard Event,Entrance Guard get In/Out Record, Actual Open Door Method)
    /// </summary>
    public enum EM_ACCESS_DOOROPEN_METHOD
    {
        UNKNOWN = 0,
        /// <summary>
        /// 密码开锁
        /// Password
        /// </summary>
        PWD_ONLY,
        /// <summary>
        /// 刷卡开锁
        /// Card
        /// </summary>
        CARD,
        /// <summary>
        /// 先刷卡后密码开锁
        /// First Card Then Password
        /// </summary>
        CARD_FIRST,
        /// <summary>
        /// 先密码后刷卡开锁
        /// First Password Then Card
        /// </summary>
        PWD_FIRST,
        /// <summary>
        /// 远程开锁,如通过室内机或者平台对门口机开锁
        /// Long-Range Open,Such as Through theIndoor Unit or Unlock the Door Machine Platform
        /// </summary>
        REMOTE,
        /// <summary>
        /// 开锁按钮进行开锁
        /// Open Door Button
        /// </summary>
        BUTTON,
        /// <summary>
        /// 开锁
        /// lock
        /// </summary>
        FINGERPRINT,
        /// <summary>
        /// 密码+刷卡+组合开锁
        /// password+swipe card+ combination unlock
        /// </summary>
        PWD_CARD_FINGERPRINT,
        /// <summary>
        /// 密码+组合开锁
        /// password+ combination unlock
        /// </summary>
        PWD_FINGERPRINT = 10,
        /// <summary>
        /// 刷卡+组合开锁
        /// swipe card+ combination unlock
        /// </summary>
        CARD_FINGERPRINT = 11,
        /// <summary>
        /// 多人开锁
        /// multi-people unlock
        /// </summary>
        PERSONS = 12,
        /// <summary>
        /// 钥匙开门
        /// Key
        /// </summary>
        KEY = 13,
        /// <summary>
        /// 胁迫密码开门
        /// Use force password to open the door
        /// </summary>
        COERCE_PWD = 14,
        /// <summary>
        /// 二维码开门
        /// Use QR Code
        /// </summary>
        QRCODE = 15,
        /// <summary>
        /// 目标识别开门
        /// target recogniton to open the door
        /// </summary>
        FACE_RECOGNITION = 16,
        /// <summary>
        /// 人证对比
        /// comparsion of face and ID card
        /// </summary>
        FACEIDCARD = 18,
        /// <summary>
        /// 证+ 人证比对
        /// ID card and compasion of face and ID card
        /// </summary>
        FACEIDCARD_AND_IDCARD = 19,
        /// <summary>
        /// 蓝牙开门
        /// Bluetooth
        /// </summary>
        BLUETOOTH = 20,
        /// <summary>
        /// 个性化密码开门
        /// Custom password
        /// </summary>
        CUSTOM_PASSWORD = 21,
        /// <summary>
        /// UserID+密码
        /// UserID and password
        /// </summary>
        USERID_AND_PWD = 22,
        /// <summary>
        /// 人脸+密码开锁
        /// Face and password
        /// </summary>
        FACE_AND_PWD = 23,
        /// <summary>
        /// +密码开锁
        /// and password
        /// </summary>
        FINGERPRINT_AND_PWD = 24,
        /// <summary>
        /// +人脸开锁
        /// and face
        /// </summary>
        FINGERPRINT_AND_FACE = 25,
        /// <summary>
        /// 刷卡+人脸开锁
        /// Card and face
        /// </summary>
        CARD_AND_FACE = 26,
        /// <summary>
        /// 人脸或密码开锁
        /// Face or password
        /// </summary>
        FACE_OR_PWD = 27,
        /// <summary>
        /// 或密码开锁
        /// or password
        /// </summary>
        FINGERPRINT_OR_PWD = 28,
        /// <summary>
        /// 或人脸开锁
        /// or face
        /// </summary>
        FINGERPRINT_OR_FACE = 29,
        /// <summary>
        /// 刷卡或人脸开锁
        /// Card or face
        /// </summary>
        CARD_OR_FACE = 30,
        /// <summary>
        /// 刷卡或开锁
        /// Card or
        /// </summary>
        CARD_OR_FINGERPRINT = 31,
        /// <summary>
        /// +人脸+密码开锁
        /// and face and password
        /// </summary>
        FINGERPRINT_AND_FACE_AND_PWD = 32,
        /// <summary>
        /// 刷卡+人脸+密码开锁
        /// Card and face and password
        /// </summary>
        CARD_AND_FACE_AND_PWD = 33,
        /// <summary>
        /// 刷卡++密码开锁
        /// Card and  and password
        /// </summary>
        CARD_AND_FINGERPRINT_AND_PWD = 34,
        /// <summary>
        /// 卡++人脸组合开锁
        /// Card and password and face
        /// </summary>
        CARD_AND_PWD_AND_FACE = 35,
        /// <summary>
        /// 或人脸或密码
        ///  or face or password
        /// </summary>
        FINGERPRINT_OR_FACE_OR_PWD = 36,
        /// <summary>
        /// 卡或人脸或密码开锁
        /// Card or face or password
        /// </summary>
        CARD_OR_FACE_OR_PWD = 37,
        /// <summary>
        /// 卡或或人脸开锁
        /// Card or  or face
        /// </summary>
        CARD_OR_FINGERPRINT_OR_FACE = 38,
        /// <summary>
        /// 卡++人脸+密码组合开锁
        /// Card and and face and password
        /// </summary>
        CARD_AND_FINGERPRINT_AND_FACE_AND_PWD = 39,
        /// <summary>
        /// 卡或或人脸或密码开锁
        /// Card or or face or password
        /// </summary>
        CARD_OR_FINGERPRINT_OR_FACE_OR_PWD = 40,
        /// <summary>
        /// (证+人证比对)或 刷卡 或 人脸
        /// ID card and compasion of face and ID card or card or face
        /// </summary>
        FACEIPCARDANDIDCARD_OR_CARD_OR_FACE = 41,
        /// <summary>
        /// 人证比对 或 刷卡(二维码) 或 人脸
        /// ID card and compasion of face or card or face
        /// </summary>
        FACEIDCARD_OR_CARD_OR_FACE = 42,
        /// <summary>
        /// DTMF开锁(包括SIPINFO,RFC2833,INBAND)
        /// DTMF unlock(include SIPINFO,RFC2833,INBAND)
        /// </summary>
        DTMF = 43,
        /// <summary>
        /// 远程二维码开门
        /// remote QR code to open the door
        /// </summary>
        REMOTE_QRCODE = 44,
        /// <summary>
        /// 远程人脸开门
        /// remote face to open the door
        /// </summary>
        REMOTE_FACE = 45,
        /// <summary>
        /// 人证比对开门()
        /// Citizen picture()
        /// </summary>
        CITIZEN_FINGERPRINT = 46,
        /// <summary>
        /// 临时密码开门
        /// Temporary password
        /// </summary>
        TEMPORARY_PASSWORD = 47,
        /// <summary>
        /// 健康码开门
        /// Health code
        /// </summary>
        HEALTHCODE = 48,
        /// <summary>
        /// HMSB开锁
        ///  recognition unlock
        /// </summary>
        IRIS = 49,
        /// <summary>
        /// +密码组合开锁
        ///  + password combination to unlock
        /// </summary>
        IRIS_AND_PASSWORD = 50,
        /// <summary>
        /// 人脸+组合开锁
        /// face +  combination unlock
        /// </summary>
        FACE_AND_IRIS = 51,
        /// <summary>
        /// 卡+组合开锁
        /// Card +  combination unlock
        /// </summary>
        CARD_AND_IRIS = 52,
        /// <summary>
        /// 或密码开锁
        ///  or password unlock
        /// </summary>
        IRIS_OR_PASSWORD = 53,
        /// <summary>
        /// 人脸或开锁
        /// face or  unlock
        /// </summary>
        FACE_OR_IRIS = 54,
        /// <summary>
        /// 卡或开锁
        /// Card or  unlock
        /// </summary>
        CARD_OR_IRIS = 55,
        /// <summary>
        /// 人脸++密码组合开锁
        /// face +  + password combination to unlock
        /// </summary>
        FACE_AND_IRIS_AND_PASSWORD = 56,
        /// <summary>
        /// 卡+人脸+组合开锁
        /// Card + face +  combination unlock
        /// </summary>
        CARD_AND_FACE_AND_IRIS = 57,
        /// <summary>
        /// 卡++密码组合开锁
        /// Card +  + password combination to unlock
        /// </summary>
        CARD_AND_IRIS_AND_PASSWORD = 58,
        /// <summary>
        /// 人脸或或密码开锁
        /// face or  or password unlock
        /// </summary>
        FACE_OR_IRIS_OR_PASSWORD = 59,
        /// <summary>
        /// 卡或人脸或开锁
        /// Card or face or  unlock
        /// </summary>
        CARD_OR_FACE_OR_IRIS = 60,
        /// <summary>
        /// 卡或或密码开锁
        /// Card or  or password unlock
        /// </summary>
        CARD_OR_IRIS_OR_PASSWORD = 61,
        /// <summary>
        /// 卡+人脸++密码组合开锁
        /// Card + face +  + password combination to unlock
        /// </summary>
        CARD_AND_FACE_AND_IRIS_AND_PASSWORD = 62,
        /// <summary>
        /// 卡或人脸或或密码开锁
        /// Card or face or  or password to unlock
        /// </summary>
        CARD_OR_FACE_OR_IRIS_OR_PASSWORD = 63,
    }

    /// <summary>
    /// 刻录案件信息
    /// burning case info
    /// </summary>
    public struct NET_BURN_CASE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// channel no.
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 刻录起始时间
        /// burning start time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 刻录结束时间
        /// burning end time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 序号
        /// sn
        /// </summary>
        public int nIndex;
        /// <summary>
        /// 编号
        /// no.
        /// </summary>
        public int nCode;
        /// <summary>
        /// 光盘编号
        /// disk no.
        /// </summary>
        public int nDiscNum;
        /// <summary>
        /// 名称
        /// name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 办案地点
        /// location
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPlace;
        /// <summary>
        /// 办案人员
        /// handled by
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32 * 32)]
        public string szInvestigator;
        /// <summary>
        /// ArgXyf
        /// ArgXyf
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32 * 32)]
        public string szXyfs;
        /// <summary>
        /// 备注
        /// note
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMemo;
        /// <summary>
        /// 录像名称
        /// record name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szVideoName;
        /// <summary>
        /// 刻录人
        /// burned by
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRecorder;
    }

    /// <summary>
    /// record type
    /// 记录类型
    /// </summary>
    public enum EM_NET_RECORD_TYPE
    {
        /// <summary>
        /// Unknow
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// Traffic WL account record.search criteria corresponding to FIND_RECORD_TRAFFICREDLIST_CONDITION structure,record info corresponding to NET_TRAFFIC_LIST_RECORD structure
        /// 交通允许名单账户记录.查询条件对应 FIND_RECORD_TRAFFICREDLIST_CONDITION 结构体,记录信息对应 NET_TRAFFIC_LIST_RECORD 结构体
        /// </summary>
        TRAFFICWHITELIST,
        /// <summary>
        /// Traffic BL account record.search criteria corresponding to FIND_RECORD_TRAFFICREDLIST_CONDITION structure,record info corresponding to NET_TRAFFIC_LIST_RECORD structure
        /// 交通不允许名单账户记录.查询条件对应 FIND_RECORD_TRAFFICREDLIST_CONDITION 结构体,记录信息对应 NET_TRAFFIC_LIST_RECORD 结构体
        /// </summary>
        TRAFFICBLACKLIST,
        /// <summary>
        /// burning case record.search criteria corresponding to FIND_RECORD_BURN_CASE_CONDITION structure,record info corresponding to NET_BURN_CASE_INFO structure 
        /// 刻录案件记录.查询条件对应 FIND_RECORD_BURN_CASE_CONDITION 结构体,记录信息对应 NET_BURN_CASE_INFO 结构体
        /// </summary>                                         
        BURN_CASE,
        /// <summary>
        /// access control card,search criteria corresponding to FIND_RECORD_ACCESSCTLCARD_CONDITION structure,record info corresponding to NET_RECORDSET_ACCESS_CTL_CARD structure
        /// 门禁卡.查询条件对应 FIND_RECORD_ACCESSCTLCARD_CONDITION 结构体,记录信息对应 NET_RECORDSET_ACCESS_CTL_CARD 结构体
        /// </summary>
        ACCESSCTLCARD,
        /// <summary>
        /// access control password.search criteria corresponding to FIND_RECORD_ACCESSCTLPWD_CONDITION structure,record info corresponding to NET_RECORDSET_ACCESS_CTL_PWD
        /// 门禁密码.查询条件对应 FIND_RECORD_ACCESSCTLPWD_CONDITION 结构体,记录信息对应 NET_RECORDSET_ACCESS_CTL_PWD
        /// </summary>          
        ACCESSCTLPWD,
        /// <summary>
        /// access control in/out record.search criteria corresponding to FIND_RECORD_ACCESSCTLCARDREC_CONDITION structure,record info corresponding to
        /// 门禁出入记录（必须同时按卡号和时间段查询,建议用NET_RECORD_ACCESSCTLCARDREC_EX查询.查询条件对应 FIND_RECORD_ACCESSCTLCARDREC_CONDITION 结构体,记录信息对应 NET_RECORDSET_ACCESS_CTL_CARDREC 结构体
        /// </summary>                                                               
        ACCESSCTLCARDREC,
        /// <summary>
        /// holiday record set.search criteria corresponding to FIND_RECORD_ACCESSCTLHOLIDAY_CONDITION structure,record info corresponding to NET_RECORDSET_HOLIDAY
        /// 假日记录集.查询条件对应 FIND_RECORD_ACCESSCTLHOLIDAY_CONDITION 结构体,记录信息对应 NET_RECORDSET_HOLIDAY 结构体
        /// </summary>
        ACCESSCTLHOLIDAY,
        /// <summary>
        /// search Traffic flow record.search criteria corresponding to FIND_RECORD_TRAFFICFLOW_CONDITION structure,record info corresponding to NET_RECORD_TRAFFIC_FLOW_STATE structure
        /// 查询交通流量记录.查询条件对应 FIND_RECORD_TRAFFICFLOW_CONDITION 结构体,记录信息对应 NET_RECORD_TRAFFIC_FLOW_STATE 结构体
        /// </summary>
        TRAFFICFLOW_STATE,
        /// <summary>
        /// call record.search criteria corresponding to NET_FIND_RECORD_VIDEO_TALK_LOG_CONDITION structure,record info corresponding to NET_RECORD_VIDEO_TALK_LOG structure 
        /// 通话记录.查询条件对应 NET_FIND_RECORD_VIDEO_TALK_LOG_CONDITION 结构体,记录信息对应 NET_RECORD_VIDEO_TALK_LOG 结构体
        /// </summary>                                       
        VIDEOTALKLOG,
        /// <summary>
        /// status record.search criteria corresponding to FIND_RECORD_REGISTER_USER_STATE_CONDITION structure,record info corresponding to NET_RECORD_REGISTER_USER_STATE structure
        /// 状态记录.查询条件对应 FIND_RECORD_REGISTER_USER_STATE_CONDITION 结构体,记录信息对应 NET_RECORD_REGISTER_USER_STATE 结构体
        /// </summary>
        REGISTERUSERSTATE,
        /// <summary>
        /// contact record.search criteria corresponding to NET_FIND_RECORD_VIDEO_TALK_CONTACT_CONDITION structure,record info corresponding to NET_RECORD_VIDEO_TALK_CONTACT structure
        /// 联系人记录.查询条件对应 NET_FIND_RECORD_VIDEO_TALK_CONTACT_CONDITION 结构体,记录信息对应 NET_RECORD_VIDEO_TALK_CONTACT 结构体
        /// </summary>                                 
        VIDEOTALKCONTACT,
        /// <summary>
        /// annoinncement record.search criteria corresponding to FIND_RECORD_ANNOUNCEMENT_CONDITION structure,record info corresponding to NET_RECORD_ANNOUNCEMENT_INFO structure
        /// 公告记录.查询条件对应 FIND_RECORD_ANNOUNCEMENT_CONDITION 结构体,记录信息对应 NET_RECORD_ANNOUNCEMENT_INFO 结构体
        /// </summary>
        ANNOUNCEMENT,
        /// <summary>
        /// alarm record.search criteria corresponding to FIND_RECORD_ALARMRECORD_CONDITION structure,record info corresponding to NET_RECORD_ALARMRECORD_INFO structure
        /// 报警记录.查询条件对应 FIND_RECORD_ALARMRECORD_CONDITION 结构体,记录信息对应 NET_RECORD_ALARMRECORD_INFO 结构体
        /// </summary>
        ALARMRECORD,
        /// <summary>
        /// commodity notice record.search criteria corresponding to FIND_RECORD_COMMODITY_NOTICE_CONDITION structure,record info corresponding to NET_RECORD_COMMODITY_NOTICE structure
        /// 下发商品记录.查询条件对应 FIND_RECORD_COMMODITY_NOTICE_CONDITION 结构体,记录信息对应 NET_RECORD_COMMODITY_NOTICE 结构体
        /// </summary>
        COMMODITYNOTICE,
        /// <summary>
        /// healthcare notice.search criteria corresponding to FIND_RECORD_HEALTH_CARE_NOTICE_CONDITION structure,record info corresponding to NET_RECORD_HEALTH_CARE_NOTICE structure
        /// 就诊信息记录.查询条件对应 FIND_RECORD_HEALTH_CARE_NOTICE_CONDITION 结构体,记录信息对应 NET_RECORD_HEALTH_CARE_NOTICE 结构体
        /// </summary>
        HEALTHCARENOTICE,
        /// <summary>
        /// A&C entry-exit record(can select some critera to search. Please replace NET_RECORD_ACCESSCTLCARDREC).Search criteria corresponding to strcture FIND_RECORD_ACCESSCTLCARDREC_CONDITION_EX,Record info corresponding to structre NET_RECORDSET_ACCESS_CTL_CARDREC
        /// 门禁出入记录(可选择部分条件查询,建议替代NET_RECORD_ACCESSCTLCARDREC).查询条件对应 NET_FIND_RECORD_ACCESSCTLCARDREC_CONDITION_EX 结构体,记录信息对应 NET_RECORDSET_ACCESS_CTL_CARDREC 结构体
        /// </summary>
        ACCESSCTLCARDREC_EX,
        /// <summary>
        /// GPS position information reocrd, support import and clear only.Record info corresponding to structure NET_RECORD_GPS_LOCATION_INFO
        /// GPS位置信息记录, 只实现import和clear.记录信息对应 NET_RECORD_GPS_LOCATION_INFO 结构体
        /// </summary>
        GPS_LOCATION,
        /// <summary>
        /// public rental tenants record. search criteria corresponding to FIND_RECORD_RESIDENT_CONDTION structure,record info corresponding to NET_RECORD_RESIDENT_INFO structure
        /// 公租房租户信息.查询条件对应 FIND_RECORD_RESIDENT_CONDTION结构体,记录信息对应 NET_RECORD_RESIDENT_INFO 结构体
        /// </summary>
        RESIDENT,
        /// <summary>
        /// sensor record. search criteria corresponding to FIND_RECORD_SENSORRECORD_CONDITION structure,record info corresponding to NET_RECORD_SENSOR_RECORD structure
        /// 监测量数据记录.查询条件对应 FIND_RECORD_SENSORRECORD_CONDITION 结构体,记录信息对应 NET_RECORD_SENSOR_RECORD 结构体
        /// </summary>
        SENSORRECORD,
        /// <summary>
        /// AccessQRCode record. record info corresponding to NET_RECORD_ACCESSQRCODE_INFO structure
        /// 开门二维码记录集.记录信息对应 NET_RECORD_ACCESSQRCODE_INFO结构体
        /// </summary>
        ACCESSQRCODE,
        /// <summary>
        /// electronic tag info record.Search criteria corresponding to structure FIND_RECORD_ELECTRONICSTAG_CONDITION,Record info corresponding to NET_RECORD_ELECTRONICSTAG_INFO
        /// 电子车牌查询.查询条件对应FIND_RECORD_ELECTRONICSTAG_CONDITION 结构体,记录信息对应NET_RECORD_ELECTRONICSTAG_INFO 结构体
        /// </summary>
        ELECTRONICSTAG,
        /// <summary>
        /// Access blue tooth record.Search blue tooth access record corresponding to structure FIND_RECORD_ACCESS_BLUETOOTH_INFO_CONDITION,Record info corresponding to structure NET_RECORD_ACCESS_BLUETOOTH_INF
        /// 蓝牙开门记录集.查询条件对应 FIND_RECORD_ACCESS_BLUETOOTH_INFO_CONDITION 结构体,记录信息对应 NET_RECORD_ACCESS_BLUETOOTH_INFO 结构体
        /// </summary>
        ACCESS_BLUETOOTH,
        /// <summary>
        /// 门禁报警记录集,查询条件对应 FIND_NET_RECORD_ACCESS_ALARMRECORD_INFO_CONDITION 结构体,记录信息对应 NET_RECORD_ACCESS_ALARMRECORD_INFO 结构体
        /// </summary>
        ACCESS_ALARMRECORD,
    }

    /// <summary>
    /// Entrance Guard Record  Information
    /// 门禁密码记录集信息
    /// </summary>
    public struct NET_RECORDSET_ACCESS_CTL_PWD
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Record Number,Read-Only
        /// 记录集编号,只读
        /// </summary>
        public int nRecNo;
        /// <summary>
        /// Create Time
        /// 创建时间
        /// </summary>
        public NET_TIME stuCreateTime;
        /// <summary>
        /// User's ID
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szUserID;
        /// <summary>
        /// Open Password
        /// 开门密码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szDoorOpenPwd;
        /// <summary>
        /// Alarm Password
        /// 报警密码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szAlarmPwd;
        /// <summary>
        /// Valid Door Number
        /// 有效的的门数目
        /// </summary>
        public int nDoorNum;
        /// <summary>
        /// Privileged Door Number,That is CFG_CMD_ACCESS_EVENT Configure Array Subscript
        /// 有权限的门序号，即CFG_CMD_ACCESS_EVENT配置CFG_ACCESS_EVENT_INFO的数组下标
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] sznDoors;
        /// <summary>
        /// VTO link position
        /// 门口机关联位置
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szVTOPosition;

        public int nTimeSectionNum;                        // 开门时间段个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nTimeSectionIndex;  // 开门时间段索引,是个数组，每个元素与sznDoors中的门对应
        public bool bNewDoor;                               // 是否启动新开门授权字段，TRUE表示使用nNewDoorNum和nNewDoors字段下发开门权限
        public int nNewDoorNum;                            // 有效的门数目;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public int[] nNewDoors;   // 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置的数组下标
        public int nNewTimeSectionNum;                            // 有效的的开门时间段数目
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public int[] nNewTimeSectionNo;   // 开门时间段索引,即CFG_ACCESS_TIMESCHEDULE_INFO的数组下标
        public NET_TIME stuValidStartTime;                      // 开始有效期
        public NET_TIME stuValidEndTime;                        // 结束有效期
        public int nValidCounts;							// 有效次数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public byte[] szCitizenIDNo;        // 证号码
    }

    /// <summary>
    /// FindRecord    Interface Input Parameters 
    /// FindRecord接口输入参数
    /// </summary>
    public struct NET_IN_FIND_RECORD_PARAM
    {
        /// <summary>
        ///  Structure Size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// The record type to query
        /// 待查询记录类型
        /// </summary>
        public EM_NET_RECORD_TYPE emType;
        /// <summary>
        /// Query types corresponding to the query conditions,the space application by the user,according to query condition type,find corresponding structure,then ensure memory size
        /// 查询类型对应的查询条件,由用户申请内存，根据查询记录类型，找到查询条件对应的结构体，进而确定内存大小
        /// </summary>
        public IntPtr pQueryCondition;
    }

    /// <summary>
    /// FindRecord  Interface Output Parameters 
    /// FindRecord接口输出参数
    /// </summary>
    public struct NET_OUT_FIND_RECORD_PARAM
    {
        /// <summary>
        /// Structure Size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Query Log Handle,Uniquely identifies a certain query
        /// 查询记录句柄,唯一标识某次查询
        /// </summary>
        public IntPtr lFindeHandle;
    }

    /// <summary>
    /// FindNextRecord  Interface Input Parameters 
    /// FindNextRecord接口输入参数
    /// </summary>
    public struct NET_IN_FIND_NEXT_RECORD_PARAM
    {
        /// <summary>
        /// Structure Size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Query Log Handle
        /// 查询句柄
        /// </summary>
        public IntPtr lFindeHandle;
        /// <summary>
        /// The current number of records  need query 
        /// 当前想查询的记录条数
        /// </summary>
        public int nFileCount;
    }

    /// <summary>
    /// FindNextRecord  Interface Output Parameters
    /// FindNextRecord接口输出参数
    /// </summary>
    public struct NET_OUT_FIND_NEXT_RECORD_PARAM
    {
        /// <summary>
        /// Structure Size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Record List, the user allocates memory, ensure structure by query record type(EM_NET_RECORD_TYPE) of NET_IN_FIND_RECORD_PARAM,then ensure memory size
        /// 记录列表,用户分配内存,根据NET_IN_FIND_RECORD_PARAM中的查询类型EM_NET_RECORD_TYPE，确定对应结构体，进入确定内存大小
        /// </summary>
        public IntPtr pRecordList;
        /// <summary>
        /// Max list Record Number 
        /// 最大查询列表记录数
        /// </summary>
        public int nMaxRecordNum;
        /// <summary>
        /// Query to the number of records, when the query to the article number less than want to query the number, end
        /// 查询到的记录条数,当查询到的条数小于想查询的条数时,查询结束
        /// </summary>
        public int nRetRecordNum;
    }

    /// <summary>
    /// QueryRecordCount port input parameter
    /// QueryRecordCount接口输入参数
    /// </summary>
    public struct NET_IN_QUEYT_RECORD_COUNT_PARAM
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// search handle
        /// 查询句柄
        /// </summary>
        public IntPtr lFindeHandle;
    }

    /// <summary>
    /// QueryRecordCount port output parameter
    /// QueryRecordCount接口输出参数
    /// </summary>
    public struct NET_OUT_QUEYT_RECORD_COUNT_PARAM
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// device return record item
        /// 设备返回的记录条数
        /// </summary>
        public int nRecordCount;
    }

    /// <summary>
    /// extry/exit search criteria
    /// 门禁出入记录查询条件
    /// </summary>
    public struct NET_FIND_RECORD_ACCESSCTLCARDREC_CONDITION_EX
    {
        public uint dwSize;
        /// <summary>
        /// Enable card search
        /// 启用卡号查询
        /// </summary>
        public bool bCardNoEnable;
        /// <summary>
        /// Card No.
        /// 卡号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;
        /// <summary>
        /// Enable search by period
        /// 启用时间段查询
        /// </summary>
        public bool bTimeEnable;
        /// <summary>
        /// Start time 
        /// 起始时间
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// End time 
        /// 结束时间
        /// </summary>
        public NET_TIME stEndTime;
        public int nOrderNum;                                       // 规则数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_FIND_RECORD_ACCESSCTLCARDREC_ORDER[] stuOrders;	// 规则数组
        /// <summary>
        /// 启动RealUTC时间查询, bRealUTCTimeEnable为TRUE时bTimeEnable无效
        /// Start RealUTC time query
        /// </summary>
        public bool bRealUTCTimeEnable;
        /// <summary>
        /// 真实UTC时间戳，起始时间
        /// Real UTC timestamp, start time
        /// </summary>
        public uint nStartRealUTCTime;
        /// <summary>
        /// 真实UTC时间戳，结束时间
        /// Real UTC timestamp, end time
        /// </summary>
        public uint nEndRealUTCTime;
        /// <summary>
        /// 字节对齐
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szReserved;
    }

    // 开门方向
    public enum EM_DIRECTION_ACCESS_CTL
    {
        UNKNOWN,
        ENTRY,                              // 进门             
        EXIT,                               // 出门
    }

    // 刷卡开门时，门禁后台校验人脸是否是同一个人
    public enum EM_FACE_CHECK
    {
        UNKNOWN = -1,     // 未知
        NODATA,           // 该人员无人脸数据
        CONSISTENT,       // 刷卡和人脸人员一致
        NOT_CONSISTENT    // 刷卡和人脸人员不一致
    }

    // 二维码是否过期
    public enum EM_QRCODE_IS_EXPIRED
    {
        EXPIRED_UNKNOWN,      // 未知
        NO_EXPIRED,           // 未过期
        EXPIRED,              // 过期
    }

    // 二维码状态
    public enum EM_QRCODE_STATE
    {
        UNKNOWN,        // 未知
        CLEARED,        // 已批准
        NOCLEARED,      // 未批准
    }

    /// <summary>
    /// 门禁刷卡记录记录集信息
    /// Access control card swiping record set information
    /// </summary>
    public struct NET_RECORDSET_ACCESS_CTL_CARDREC
    {
        public uint dwSize;
        /// <summary>
        /// 记录集编号,只读
        /// Record Number,Read-Only
        /// </summary>
        public int nRecNo;
        /// <summary>
        /// 卡号
        /// Card Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;
        /// <summary>
        /// 密码
        /// Password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPwd;
        /// <summary>
        /// 刷卡时间
        /// Swing Card Time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 刷卡结果,TRUE表示成功,FALSE表示失败
        /// Swing Card Result,True is Success,False is Fail
        /// </summary>
        public bool bStatus;
        /// <summary>
        /// 开门方式
        /// Open Door Method
        /// </summary>
        public EM_ACCESS_DOOROPEN_METHOD emMethod;
        /// <summary>
        /// 门号,即CFG_CMD_ACCESS_EVENT配置CFG_ACCESS_EVENT_INFO的数组下标
        /// Door Number,That is CFG_CMD_ACCESS_EVENT Configure Array Subscript
        /// </summary>
        public int nDoor;
        /// <summary>
        /// 用户ID
        /// user ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// 读卡器ID (废弃,不再使用)
        /// card reader ID (abandoned)
        /// </summary>
        public int nReaderID;
        /// <summary>
        /// 开锁抓拍上传的FTP地址
        /// unlock snap upload ftp url
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSnapFtpUrl;
        /// <summary>
        /// 读卡器ID  开门并上传抓拍照片,在记录集记录存储地址,成功才有
        /// card reader ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReaderID;
        /// <summary>
        /// 卡类型
        /// Card Type
        /// </summary>
        public EM_A_NET_ACCESSCTLCARD_TYPE emCardType;
        /// <summary>
        /// 开门失败的原因,仅在bStatus为FALSE时有效
        /// 0x00 没有错误
        /// 0x10 未授权
        /// 0x11 卡挂失或注销
        /// 0x12 没有该门权限
        /// 0x13 开门模式错误
        /// 0x14 有效期错误
        /// 0x15 防反潜模式
        /// 0x16 胁迫报警未打开
        /// 0x17 门常闭状态
        /// 0x18 AB互锁状态
        /// 0x19 巡逻卡
        /// 0x1A 设备处于闯入报警状态
        /// 0x20 时间段错误
        /// 0x21 假期内开门时间段错误
        /// 0x23 卡逾期
        /// 0x30 需要先验证有首卡权限的卡片
        /// 0x40 卡片正确,输入密码错误
        /// 0x41 卡片正确,输入密码超时
        /// 0x42 卡片正确,输入错误
        /// 0x43 卡片正确,输入超时
        /// 0x44 正确,输入密码错误
        /// 0x45 正确,输入密码超时
        /// 0x50 组合开门顺序错误
        /// 0x51 组合开门需要继续验证
        /// 0x60 验证通过,控制台未授权
        /// 0x61 卡片正确,人脸错误
        /// 0x62 卡片正确,人脸超时
        /// 0x63 重复进入
        /// 0x64 未授权,需要后端平台识别
        /// 0x65 体温过高
        /// 0x66 未戴口罩
        /// 0x67 健康码获取失败
        /// 0x68 黄码禁止通行
        /// 0x69 红码禁止通行
        /// 0x6a 健康码无效
        /// 0x6b 绿码验证通过
        /// 0x6c 绿码,核酸为羊
        /// 0x6d 绿码,未接种
        /// 0x6f 绿码,抗原为羊
        /// 0x70 获取健康码信息
        /// 0xB6 锁未接
        /// 0xB7 闸机主板繁忙，授权失败
        /// 0xB8 授权方向和当前通行方向不一致，授权失败
        /// 0xB9 关门防夹无法关门，授权失败
        /// Reason of unlock failure, only because it is valid when bStatus is FALSE
        /// 0x00 no error
        /// 0x10 unauthorized
        /// 0x11 card lost or cancelled
        /// 0x12 no door right
        /// 0x13 unlock mode error
        /// 0x14 valid period error
        /// 0x15 anti sneak into mode
        /// 0x16 forced alarm not unlocked
        /// 0x17 door NC status
        /// 0x18 AB lock status
        /// 0x19 patrol card
        /// 0x1A device is under intrusion alarm status
        /// 0x20 period error
        /// 0x21 unlock period error in holiday period
        /// 0x23 Card is overdue
        /// 0x30 first card right check required
        /// 0x40 card correct, input password error
        /// 0x41 card correct, input password timed out
        /// 0x42 card correct, input fingerprint error
        /// 0x43 card correct, input fingerprint timed out
        /// 0x44 fingerprint correct, input password error
        /// 0x45 fingerprint correct, input password timed out
        /// 0x50 group unlock sequence error
        /// 0x51 test required for group unlock
        /// 0x60 test passed, control unauthorized
        /// 0x61 card correct, input face error
        /// 0x62 card correct, input face timed out
        /// 0x63 repeat enter
        /// 0x64 unauthorized, requiring back-end platform identification
        /// 0x65 High body 
        /// 0x66 no mask
        /// 0x67 get health code fail
        /// 0x68 No Entry because of yellow code
        /// 0x69 No Entry because of red code
        /// 0x6a health code is invalid
        /// 0x6b entry because of green code
        /// 0x6c Green code, nucleic acid is positive
        /// 0x6d Green code, not vaccinated
        /// 0x6f Green code, antigen positive
        /// 0x70 get health code info
        /// 0xB6 Lock not connected
        /// 0xB7 The gate motherboard is busy and authorization has failed
        /// 0xB8 Authorization direction is inconsistent with the current traffic direction, authorization failed
        /// 0xB9 Unable to close the door due to anti pinch measures, authorization failed
        /// </summary>
        public int nErrorCode;
        /// <summary>
        /// 刷卡录像的地址
        /// record url
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRecordURL;
        /// <summary>
        /// 抓图的张数
        /// snap picture numbers
        /// </summary>
        public int nNumbers;
        /// <summary>
        /// 考勤状态
        /// attendance state
        /// </summary>
        public EM_ATTENDANCESTATE emAttendanceState;
        /// <summary>
        /// 开门方向
        /// open door direction
        /// </summary>
        public EM_DIRECTION_ACCESS_CTL emDirection;
        /// <summary>
        /// 班级
        /// Class number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szClassNumber;
        /// <summary>
        /// 电话
        /// Phone number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPhoneNumber;
        /// <summary>
        /// 卡命名
        /// Card name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCardName;
        /// <summary>
        /// 智能锁序列号,无线配件需要该字段
        /// wireless device serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 人证比对结果
        /// Compare result
        /// </summary>
        public bool bCitizenIDResult;
        /// <summary>
        /// 名字
        /// Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 30)]
        public string szCitizenIDName;
        /// <summary>
        /// 字节对齐
        /// Align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// 性别
        /// Sex
        /// </summary>
        public EM_CITIZENIDCARD_SEX_TYPE emCitizenIDSex;
        /// <summary>
        /// MZ
        /// MZ
        /// </summary>
        public EM_CITIZENIDCARD_EC_TYPE emCitizenIDEC;
        /// <summary>
        /// 出生日期(时分秒无效)
        /// Birth date
        /// </summary>
        public NET_TIME stuCitizenIDBirth;
        /// <summary>
        /// 住址
        /// Address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 108)]
        public string szCitizenIDAddress;
        /// <summary>
        /// 签发机关
        /// Authority
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szCitizenIDAuthority;
        /// <summary>
        /// 有效起始日期(时分秒无效)
        /// Start time
        /// </summary>
        public NET_TIME stuCitizenIDStart;
        /// <summary>
        /// 有效截止日期(时分秒无效, 年为负数时表示长期有效)
        /// End time
        /// </summary>
        public NET_TIME stuCitizenIDEnd;
        /// <summary>
        /// 是否长期有效
        /// Is end time unlimited
        /// </summary>
        public bool bIsEndless;
        /// <summary>
        /// 人脸图片保存地址
        /// Face picture URL
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSnapFaceURL;
        /// <summary>
        /// 证图片保存地址
        /// Citizen picture URL
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCitizenPictureURL;
        /// <summary>
        /// 证号码
        /// Citizen card number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szCitizenIDNo;
        /// <summary>
        /// 性别
        /// sex
        /// </summary>
        public NET_ACCESSCTLCARD_SEX emSex;
        /// <summary>
        /// 角色
        /// role
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRole;
        /// <summary>
        /// 项目ID
        /// project No.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szProjectNo;
        /// <summary>
        /// 项目名称
        /// project name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProjectName;
        /// <summary>
        /// 施工单位全称
        /// builder name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szBuilderName;
        /// <summary>
        /// 施工单位ID
        /// builder ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szBuilderID;
        /// <summary>
        /// 施工单位类型
        /// builder type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szBuilderType;
        /// <summary>
        /// 施工单位类别ID
        /// builder type ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szBuilderTypeID;
        /// <summary>
        /// 人员照片ID
        /// picture ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPictureID;
        /// <summary>
        /// 原合同系统合同编号
        /// contract ID in original contract system
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szContractID;
        /// <summary>
        /// 工种ID
        /// worker type ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szWorkerTypeID;
        /// <summary>
        /// 工种名称
        /// worker type name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szWorkerTypeName;
        /// <summary>
        /// 人员状态, TRUE:启用, FALSE:禁用
        /// person status, TRUE:enable, FALSE:forbidden
        /// </summary>
        public bool bPersonStatus;
        /// <summary>
        /// 帽子类型
        /// hat style
        /// </summary>
        public EM_HAT_STYLE emHatStyle;
        /// <summary>
        /// 帽子颜色
        /// hat color
        /// </summary>
        public EM_UNIFIED_COLOR_TYPE emHatColor;
        /// <summary>
        /// 人员温度信息
        /// human  info
        /// </summary>
        public NET_MAN_TEMPERATURE_INFO stuManTemperatureInfo;
        /// <summary>
        /// 陪同人员 stuCompanionInfo 个数
        /// stuCompanionInfo's count
        /// </summary>
        public int nCompanionInfo;
        /// <summary>
        /// 陪同人员信息：姓名、卡号字段有效
        /// companion info:name and card valid
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
        public NET_COMPANION_INFO[] stuCompanionInfo;
        /// <summary>
        /// 口罩状态（EM_MASK_STATE_UNKNOWN、EM_MASK_STATE_NOMASK、EM_MASK_STATE_WEAR 有效）
        /// mask ( EM_MASK_STATE_UNKNOWN,EM_MASK_STATE_NOMASK,EM_MASK_STATE_WEAR is valid )
        /// </summary>
        public EM_MASK_STATE_TYPE emMask;
        /// <summary>
        /// 一人多脸的人脸序号
        /// face index
        /// </summary>
        public uint nFaceIndex;
        /// <summary>
        /// 人脸质量评分
        /// Face quality score
        /// </summary>
        public int nScore;
        /// <summary>
        /// 电梯编号
        /// Elevator number
        /// </summary>
        public int nLiftNo;
        /// <summary>
        /// 二维码
        /// QRCode
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szQRCode;
        /// <summary>
        /// 刷卡开门时，门禁后台校验人脸是否是同一个人
        /// when swiping the card to open the door, the access control background checks whether the face is the same person
        /// </summary>
        public EM_FACE_CHECK emFaceCheck;
        /// <summary>
        /// 
        /// 
        /// </summary>
        public EM_QRCODE_IS_EXPIRED emQRCodeIsExpired;
        /// <summary>
        /// 
        /// 
        /// </summary>
        public EM_QRCODE_STATE emQRCodeState;
        /// <summary>
        /// 二维码截止日期
        /// QR code deadline
        /// </summary>
        public NET_TIME stuQRCodeValidTo;
        /// <summary>
        /// 梯控方式触发者
        /// Ladder control trigger
        /// </summary>
        public EM_LIFT_CALLER_TYPE emLiftCallerType;
        /// <summary>
        /// 上报事件数据序列号从1开始自增
        /// The serial number of the reported event data increases from 1
        /// </summary>
        public uint nBlockId;
        /// <summary>
        /// 部门名称
        /// Department name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSection;
        /// <summary>
        /// 工作班级
        /// Work class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szWorkClass;
        /// <summary>
        /// 测试项目
        /// Test items
        /// </summary>
        public EM_TEST_ITEMS emTestItems;
        /// <summary>
        /// ESD阻值测试结果
        /// ESD resistance test result
        /// </summary>
        public NET_TEST_RESULT stuTestResult;
        /// <summary>
        /// 是否使用卡命名扩展
        /// Whether to use the card name extension
        /// </summary>
        public bool bUseCardNameEx;
        /// <summary>
        /// 卡命名扩展
        /// Card name extension
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCardNameEx;
        /// <summary>
        /// 核酸检测报告结果 -1: 未知 0: 羊 1: 非羊 2: 未检测 3: 过期
        /// Nucleic acid test report result, -1: Unknow 0: yang, 1: unyang, 2: not tested, 3: expired
        /// </summary>
        public int nHSJCResult;
        /// <summary>
        /// 是否已接种新冠疫苗（0:否，1:是）
        /// Have you been vaccinated against the new crown vaccine, 0: No, 1: Yes
        /// </summary>
        public int nVaccinateFlag;
        /// <summary>
        /// 新冠疫苗名称
        /// New crown vaccine name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szVaccineName;
        /// <summary>
        /// 历史接种日期有效数
        /// Valid number of historical vaccination dates
        /// </summary>
        public int nDateCount;
        /// <summary>
        /// 历史接种日期 历史接种日期 (yyyy-MM-dd)。 ”0000-00-00”，表示已接种，但无具体日期。
        /// Historical vaccination date(yyyy-MM-dd). If you cannot provide the time, fill in "0000-00-00", which means that you have been vaccinated
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 32)]
        public string szVaccinateDate;
        /// <summary>
        /// 返回行程码状态信息
        /// Travel Code Color
        /// </summary>
        public EM_TRAVEL_CODE_COLOR emTravelCodeColor;
        /// <summary>
        /// 最近14天经过的城市名有效数
        /// Number of cities passed in the last 14 days
        /// </summary>
        public int nCityCount;
        /// <summary>
        /// 最近14天经过的城市名（按照时间顺序排列）最早经过的城市放第一个。
        /// The names of the cities that have passed in the last 14 days. In chronological order, the earliest passing city is placed first
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szPassingCity;
        /// <summary>
        /// 车牌
        /// TrafficPlate
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szTrafficPlate;
        /// <summary>
        /// 刷卡录像的地址
        /// Record Url
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRecordLocalUrl;
        /// <summary>
        /// 核酸检测报告日期(格式: yyyy-MM-dd)
        /// Date of nucleic acid test report (format: yyyy-MM-dd)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szHSJCReportDate;
        /// <summary>
        /// 核酸检测报告有效期(单位:天)
        /// Validity period of nucleic acid test report (unit: day)
        /// </summary>
        public int nHSJCExpiresIn;
        /// <summary>
        /// 抗原检测报告日期(格式: yyyy-MM-dd)
        /// Antigen test report date (format: yyyy-MM-dd)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAntigenReportDate;
        /// <summary>
        /// 抗原检测报告结果: -1:未知 0: 羊 1: 非羊 2: 未检测 3: 过期
        /// Antigen Test Report Result: -1: Unknown 0: yang 1: unyang 2: Not Tested 3: Expired
        /// </summary>
        public int nAntigenStatus;
        /// <summary>
        /// 抗原检测报告有效期(单位:天)
        /// Validity period of antigen test report (unit: day)
        /// </summary>
        public int nAntigenExpiresIn;
        /// <summary>
        /// 签出类型
        /// Check Out Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCheckOutType;
        /// <summary>
        /// 签出原因
        /// Check out Reason
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szCheckOutCause;
        /// <summary>
        /// 刷卡时间，真实UTC时间戳
        /// Swipe time, real UTC time
        /// </summary>
        public uint nCreateTimeRealUTC;
        /// <summary>
        /// 字节对齐
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szReserved;
        /// <summary>
        /// 场所码名称
        /// Location Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szLocationName;
        /// <summary>
        /// 场所码详细地址
        /// Location Address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szLocationAddress;
        /// <summary>
        /// 场所码类型
        /// Location Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szLocationType;
        /// <summary>
        /// / 通行结果，人员是否有同行 0-未知 1-人员进入 2-人员退出 3-人员未通行
        /// / Pass result, whether the person is accompanied or not: 0-unknown, 1-person enters, 2-person exits, 3-person fails to pass.
        /// </summary>
        public int nPassResult;
        /// <summary>
        /// / 设备在不同的密码模式下上报的密码类型，0:未知 1,唤醒密码模式 2,陪同密码模式 3胁迫密码模式
        /// / Password type reported by the device in different password modes: 0: unknown, 1: wake-up password mode, 2: accompanying password mode, 3: coercion password mode
        /// </summary>
        public int nCustomerPWDType;
        /// <summary>
        /// / 用户ID扩展, 当前只支持32位有效值解析获取, 并未实现下发
        /// UserID Extend, support 32-bit valid values
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserIDEx;
		/// <summary>
		/// 室内机房间号
        /// Room Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRoomNumber;
    }

    /// <summary>
    /// collection (corresponding to EM_CtrlType.CAPTURE_FINGER_PRINT command)
    /// 采集(对应EM_CtrlType.CAPTURE_FINGER_PRINT命令)
    /// </summary>
    public struct NET_CTRL_CAPTURE_FINGER_PRINT
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// access control no.(start from 0)
        /// 门禁序号(从0开始)
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// card reader ID
        /// 读卡器ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReaderID;
        /// <summary>
        /// User ID (smart building requirements, optional)
        /// 用户ID（智能楼宇需求，可选）
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]
        public string szUserID;
    }

    /// <summary>
    /// get  event(corresponding to EM_ALARM_TYPE.ALARM_FINGER_PRINT)
    /// 获取事件(对应DH_ALARM_FINGER_PRINT类型)
    /// </summary>
    public struct NET_ALARM_CAPTURE_FINGER_PRINT_INFO
    {
        public uint dwSize;
        /// <summary>
        /// / 门通道号(从0开始)
        /// door channel no.( from 0)
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件时间
        /// event time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// / 门读卡器ID
        /// card reader ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReaderID;
        /// <summary>
        /// / 单个信息数据包长度
        /// single information data length
        /// </summary>
        public int nPacketLen;
        /// <summary>
        /// / 信息数据包个数
        /// information data number
        /// </summary>
        public int nPacketNum;
        /// <summary>
        /// / 信息数据(数据总长度即nPacketLen*nPacketNum)
        /// information data(data total length as nPacketLen*nPacketNum)
        /// </summary>
        public IntPtr szFingerPrintInfo;
        /// <summary>
        /// / 采集结果
        /// collect result
        /// </summary>
        public bool bCollectResult;
        /// <summary>
        /// / 信息所属人员卡号
        /// card num
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;
        /// <summary>
        /// / 信息所属人员ID
        /// user id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// / 指纹采集失败的错误码, -1 未知, 0, 通用成功 1, 通用失败 2, 采集失败 3, 合成失败 4, 插入失败 5, 超时 6, 采集暂停 7, 指纹重复 8,未知错误，9,指纹已满
        /// / Error codes for fingerprint collection failure, -1 unknown, 0, universal success 1, universal failure 2, collection failure 3, synthesis failure 4, insertion failure 5, timeout 6, collection pause 7, finger duplication 8, unknown error 9, finger full
        /// </summary>
        public int nErrorCode;
        /// <summary>
        /// / 指纹图像数据长度
        /// / Finger image data length
        /// </summary>
        public int nFingerImageDataLen;
        /// <summary>
        /// / 指纹图像数据
        /// / Finger image data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 204800)]
        public string szFingerImageData;
    }

    /// <summary>
    /// remove anti-submarine alarm input parameter
    /// 消除反潜报警入参
    /// </summary>
    public struct NET_IN_CLEAR_REPEAT_ENTER
    {
        /// <summary>
        /// user card number
        /// 用户卡号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szCardNO;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// remove anti-submarine alarm output parameter 
    /// 消除反潜报警出参
    /// </summary>
    public struct NET_OUT_CLEAR_REPEAT_ENTER
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// access control status info(QueryDevState port input parameter)
    /// 门禁状态信息(QueryDevState 接口输入参数)
    /// </summary>
    public struct NET_DOOR_STATUS_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// access control channel no.
        /// 门禁通道号
        /// </summary>
        public int nChannel;
        /// <summary>
        /// access control status info
        /// 门禁状态信息
        /// </summary>
        public EM_NET_DOOR_STATUS_TYPE emStateType;
    }

    /// <summary>
    /// access control status type
    /// 门禁状态类型
    /// </summary>
    public enum EM_NET_DOOR_STATUS_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// door unlock
        /// 门打开
        /// </summary>
        OPEN,
        /// <summary>
        /// door lock
        /// 门关闭
        /// </summary>
        CLOSE,
        /// <summary>
        /// door abnormal unlock
        /// 门异常打开
        /// </summary>
        BREAK,
    }

    /// <summary>
    /// ControlDevice's param: NET_CTRL_ACCESS_OPEN
    /// ControlDevice接口的 ACCESS_OPEN 命令参数
    /// </summary>
    public struct NET_CTRL_ACCESS_OPEN
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Channel ID (start from 0)
        /// 通道号(0开始)
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// Target ID, NULL equals to not transmit  
        /// 转发目标设备ID,为NULL表示不转发
        /// </summary>
        public IntPtr szTargetID;
        /// <summary>
        /// remote user id
        /// 远程用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// open door type
        /// 开门方式
        /// </summary>
        public EM_OPEN_DOOR_TYPE emOpenDoorType;
        /// <summary>
        /// 开门方向
        /// </summary>
        public EM_OPEN_DOOR_DIRECTION emOpenDoorDirection;
        /// <summary>
        /// 远程权限验证结果
        /// </summary>
        public EM_REMOTE_CHECK_CODE emRemoteCheckCode;
        /// <summary>
        /// 兼容字段
        /// Compatible fields
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szShortNumber;
        /// <summary>
        /// 平台下发操作员ID, 仅用于远程开门
        /// Operator ID, Remote open door
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string szOperatorID;
        /// <summary>
        /// 字节对齐
        /// Align bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szAlign;
    }

    /// <summary>
    /// 开门方向
    /// </summary>
    public enum EM_OPEN_DOOR_DIRECTION
    {
        /// <summary>
        /// 未知，设备自行决定
        /// </summary>
	    EM_OPEN_DOOR_DIRECTION_UNKNOWN,
        /// <summary>
        /// 朝进门方向开门
        /// </summary>
	    EM_OPEN_DOOR_DIRECTION_FROM_ENTER,
        /// <summary>
        /// 朝出门方向开门
        /// </summary>
	    EM_OPEN_DOOR_DIRECTION_FROM_LEAVE
    }

    /// <summary>
    /// 远程权限验证结果
    /// </summary>
    public enum EM_REMOTE_CHECK_CODE
    {
        /// <summary>
        /// 未知
        /// </summary>
        EM_REMOTE_CHECK_CODE_UNKNOWN = -1,
        /// <summary>
        /// 成功
        /// </summary>
	    EM_REMOTE_CHECK_CODE_SUCCESS,
        /// <summary>
        /// 失败
        /// </summary>
	    EM_REMOTE_CHECK_CODE_FAIL
    }

    /// <summary>
    /// Access controller -- Open door type
    /// 门禁控制--开门方式
    /// </summary>
    public enum EM_OPEN_DOOR_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN = 0,
        /// <summary>
        /// Remote
        /// 远程开门
        /// </summary>
        REMOTE,
        /// <summary>
        /// Local_Password
        /// 本地密码开门
        /// </summary>
        LOCAL_PASSWORD,
        /// <summary>
        /// Local_Card
        /// 本地刷卡开门
        /// </summary>
        LOCAL_CARD,
        /// <summary>
        /// Local_Button
        /// 本地按钮开门
        /// </summary>
        LOCAL_BUTTON,
    }

    /// <summary>
    /// ControlDevice's param
    /// ControlDevice接口的 ACCESS_CLOSE 命令参数
    /// </summary>
    public struct NET_CTRL_ACCESS_CLOSE
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Channel ID (start from 0)
        /// 通道号(0开始)
        /// </summary>
        public int nChannelID;
    }

    /// <summary>
    /// input of StartFindFaceInfo
    /// StartFindFaceInfo 输入参数
    /// </summary>
    public struct NET_IN_FACEINFO_START_FIND
    {
        public uint dwSize;
        /// <summary>
        /// user ID
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
    }

    /// <summary>
    /// output of StartFindFaceInfo
    /// StartFindFaceInfo 输出参数
    /// </summary>
    public struct NET_OUT_FACEINFO_START_FIND
    {
        public uint dwSize;
        /// <summary>
        /// total count matching the finding condition
        /// 符合查询条件的总数
        /// </summary>
        public uint nTotalCount;
    }

    /// <summary>
    /// input of DoFindFaceInfo
    /// DoFindFaceInfo 输入参数
    /// </summary>
    public struct NET_IN_FACEINFO_DO_FIND
    {
        public uint dwSize;
        /// <summary>
        /// start number
        /// 起始序号
        /// </summary>
        public int nStartNo;
        /// <summary>
        /// number to query
        /// 本次查询的条数
        /// </summary>
        public int nCount;
    }

    /// <summary>
    /// output of DoFindFaceInfo
    /// DoFindFaceInfo 输出参数
    /// </summary>
    public struct NET_OUT_FACEINFO_DO_FIND
    {
        public uint dwSize;
        /// <summary>
        /// return number
        /// 本次查询到的个数
        /// </summary>
        public int nRetNum;
        /// <summary>
        /// result, user malloc the memroy, apply to sizeof(NET_FACEINFO)*nMaxNum
        /// 查询结果, 用户分配内存,大小为sizeof(NET_FACEINFO)*nMaxNum
        /// </summary>
        public IntPtr pstuInfo;
        /// <summary>
        /// number of user malloced
        /// 用户分配内存的个数
        /// </summary>
        public int nMaxNum;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
    }

    /// <summary>
    /// face photo info
    /// 人脸信息
    /// </summary>
    public struct NET_FACEINFO
    {
        /// <summary>
        /// user ID
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// number of MD5
        /// 有效的MD5编码数量
        /// </summary>
        public int nMD5;
        /// <summary>
        /// MD5 of face photo
        /// 图片对应的32字节MD5编码加密
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public NET_MD5[] szMD5;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    public struct NET_MD5
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDM5;
    }

    /// <summary>
    /// the opreate type of face info
    /// 人脸信息记录操作类型
    /// </summary>
    public enum EM_FACEINFO_OPREATE_TYPE
    {
        /// <summary>
        /// add, pInbuf = NET_IN_ADD_FACE_INFO , pOutBuf = NET_OUT_ADD_FACE_INFO
        /// 添加, pInbuf = NET_IN_ADD_FACE_INFO , pOutBuf = NET_OUT_ADD_FACE_INFO
        /// </summary>
        ADD,
        /// <summary>
        /// get, pInBuf = NET_IN_GET_FACE_INFO , pOutBuf = NET_OUT_GET_FACE_INFO
        /// 获取, pInBuf = NET_IN_GET_FACE_INFO , pOutBuf = NET_OUT_GET_FACE_INFO
        /// </summary>
        GET,
        /// <summary>
        /// update, pInbuf = NET_IN_UPDATE_FACE_INFO , pOutBuf = NET_OUT_UPDATE_FACE_INFO
        /// 更新, pInbuf = NET_IN_UPDATE_FACE_INFO , pOutBuf = NET_OUT_UPDATE_FACE_INFO
        /// </summary>
        UPDATE,
        /// <summary>
        /// remove, pInbuf = NET_IN_REMOVE_FACE_INFO , pOutBuf = NET_OUT_REMOVE_FACE_INFO
        /// 删除, pInbuf = NET_IN_REMOVE_FACE_INFO , pOutBuf = NET_OUT_REMOVE_FACE_INFO
        /// </summary>
        REMOVE,
        /// <summary>
        /// clear, pInbuf = NET_IN_CLEAR_FACE_INFO, pOutBuf = NET_OUT_CLEAR_FACE_INFO
        /// 清除, pInbuf = NET_IN_CLEAR_FACE_INFO, pOutBuf = NET_OUT_CLEAR_FACE_INFO
        /// </summary>
        CLEAR,
    }

    /// <summary>
    /// the info of face
    /// 人脸信息
    /// </summary>
    public struct NET_FACE_RECORD_INFO
    {
        /// <summary>
        /// user name
        /// 用户名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserName;
        /// <summary>
        /// count of rooms
        /// 房间个数
        /// </summary>
        public int nRoom;
        /// <summary>
        /// list of rooms
        /// 房间号列表
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_ROOM[] szRoomNo;
        /// <summary>
        /// count of face data
        /// 人脸模板数据个数
        /// </summary>
        public int nFaceData;
        /// <summary>
        /// face data
        /// 人脸模板数据
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20 * 2048)]
        public byte[] szFaceData;
        /// <summary>
        /// face data len
        /// 人脸模版数据大小
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public int[] nFaceDataLen;
        /// <summary>
        /// count of face photo
        /// 人脸照片个数
        /// </summary>
        public int nFacePhoto;
        /// <summary>
        /// face photo data len
        /// 每张图片的大小
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public int[] nFacePhotoLen;
        /// <summary>
        /// face photo data,max size: 120K
        /// 人脸照片数据,大小不超过120K
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public IntPtr[] pszFacePhoto;

        public bool bValidDate;    //是否设置人脸有效时间
        public NET_TIME stuValidDateStart;   //人脸有效开始时间
        public NET_TIME stuValidDateEnd;     //人脸有效结束时间
        public int nValidCounts;			 // 刷脸有效次数：小于0表示不限次数， 等于0刷脸次数已用完
        public bool bValidCountsEnable;									// 次数字段使能 
        public bool bFaceDataExEnable;                                   // 人脸模板数据扩展使能
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public IntPtr[] pszFaceDataEx; // 人脸模板数据扩展, 由用户申请释放, 每张照片最大为8K

        /// <summary>
        /// reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 240)]
        public byte[] byReserved;
    }

    /// <summary>
    /// room
    /// 房间
    /// </summary>
    public struct NET_ROOM
    {
        /// <summary>
        /// room No.
        /// 房间号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szRoomNo;
    }

    /// <summary>
    /// face data
    /// 人脸模板数据
    /// </summary>
    public struct NET_FACE_RECORD_DATA
    {
        /// <summary>
        /// face data
        /// 人脸模板数据
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2048)]
        public byte[] byFaceData;
    }

    /// <summary>
    /// the input param of adding face data
    /// 添加人脸记录信息输入参数
    /// </summary>
    public struct NET_IN_ADD_FACE_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// user ID
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// face data
        /// 人脸数据
        /// </summary>
        public NET_FACE_RECORD_INFO stuFaceInfo;
    }

    /// <summary>
    /// the output param of adding face data
    /// 添加人脸记录信息输出参数
    /// </summary>
    public struct NET_OUT_ADD_FACE_INFO
    {
        public uint dwSize;
    }

    /// <summary>
    /// the input param of getting face data
    /// 获取人脸记录信息输入参数
    /// </summary>
    public struct NET_IN_GET_FACE_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// user ID
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
    }

    /// <summary>
    /// the out param of getting face data
    /// 获取人脸记录信息输出参数
    /// </summary>
    public struct NET_OUT_GET_FACE_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// count of face data
        /// 人脸模板数据个数
        /// </summary>
        public int nFaceData;
        /// <summary>
        /// face data
        /// 人脸模板数据
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2048 * 20)]
        public byte[] szFaceData;
        /// <summary>
        /// count of face data
        /// 白光人脸照片数据个数, 最大个数：5
        /// </summary>
        public int nPhotoData;
        /// <summary>
        /// face data
        /// 用户申请的每张白光人脸照片大小
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public int[] nInPhotoDataLen;
        /// <summary>
        /// face data
        /// 每张白光人脸照片实际的大小
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public int[] nOutPhotoDataLen;
        /// <summary>
        /// face photo data,max size: 120K
        /// 白光人脸照片数据,由用户申请释放, 每张照片最大为200K
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public IntPtr[] pPhotoData;
    }

    /// <summary>
    /// the input param to updata face data
    /// 更新人脸记录信息输入参数
    /// </summary>
    public struct NET_IN_UPDATE_FACE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// user ID
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// the info of face
        /// 人脸数据
        /// </summary>
        public NET_FACE_RECORD_INFO stuFaceInfo;
    }

    /// <summary>
    /// the output param to updata face data
    /// 更新人脸记录信息输出参数
    /// </summary>
    public struct NET_OUT_UPDATE_FACE_INFO
    {
        public uint dwSize;
    }

    /// <summary>
    /// the input param of removing face data
    /// 删除人脸记录信息输入参数
    /// </summary>
    public struct NET_IN_REMOVE_FACE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// user ID
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
    }

    /// <summary>
    /// the output param of removing face data
    /// 删除人脸记录信息输出参数
    /// </summary>
    public struct NET_OUT_REMOVE_FACE_INFO
    {
        public uint dwSize;
    }

    /// <summary>
    /// the input param of clear face data
    /// 清除人脸记录信息输入参数
    /// </summary>
    public struct NET_IN_CLEAR_FACE_INFO
    {
        public uint dwSize;
    }

    /// <summary>
    /// the output param of clear face data
    /// 清除人脸记录信息输出参数
    /// </summary>
    public struct NET_OUT_CLEAR_FACE_INFO
    {
        public uint dwSize;
    }

    #endregion


    #region <<Number State>>
    /// <summary>
    /// The type of rule
    /// 规则类型
    /// </summary>
    public enum EM_RULE_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        EM_RULE_UNKNOWN,
        /// <summary>
        /// NumberStat
        /// 人数统计
        /// </summary>
        EM_RULE_NUMBER_STAT,
        /// <summary>
        /// Man number detection
        /// 区域内人数统计
        /// </summary>
        EM_RULE_MAN_NUM_DETECTION,
        /// <summary>
        /// / 排队检测
        /// Queue detection
        /// </summary>
        EM_RULE_QUEUE_DETECTION,
        /// <summary>
        /// / 人体温度数据统计
        /// Anatomy detect
        /// </summary>
        EM_RULE_ANATOMYTEMP_DETECT,
        /// <summary>
        /// / 查询客流聚档信息
        /// / Number Stat Cluster
        /// </summary>
        EM_RULE_NUMBER_STAT_CLUSTER,
        /// <summary>
        /// / 精准客流人数报表查询
        /// / Accurate passenger flow report query by num
        /// </summary>
        EM_RULE_CUSTOMER_FLOW_NUM,
        /// <summary>
        /// / 精准客流人次报表查询
        /// / Accurate passenger flow report query by times
        /// </summary>
        EM_RULE_CUSTOMER_FLOW_TIME,
        /// <summary>
        /// / 精准客流批次报表查询
        /// / Accurate passenger flow batch report query
        /// </summary>
        EM_RULE_CUSTOMER_FLOW_BATCH,
    }
    /// <summary>
    /// interface(StartFindNumberStat)'s input param
    /// StartFindNumberStat输入参数
    /// </summary>
    public struct NET_IN_FINDNUMBERSTAT
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel ID
        /// 要进行查询的通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// start time
        /// 开始时间 
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// end time
        /// 结束时间
        /// </summary>
        public NET_TIME stEndTime;
        /// <summary>
        /// granularity type, 0:minute,1:hour,2:day,3:week,4:month,5:quarter,6:year
        /// 查询粒度0:分钟,1:小时,2:日,3:周,4:月,5:季,6:年
        /// </summary>
        public int nGranularityType;
        /// <summary>
        /// wait time
        /// 等待接收数据的超时时间
        /// </summary>
        public int nWaittime;
        /// <summary>
        /// Plan ID,Speed Dome use,start from 1
        /// 计划ID,仅球机有效,从1开始
        /// </summary>
        public uint nPlanID;
        /// <summary>
        /// rule type
        /// 规则类型
        /// </summary>
        public EM_RULE_TYPE emRuleType;
        /// <summary>
        /// the minimum stay time，default value is 0; return the number of persons, the stay time of these persons are greater or equal to this time. this parameter is not required when the find type is NumberStat 
        /// 区域人数查询最小滞留时间，不填默认为0，返回滞留时长大于等于该时间的人数信息,NumberStat时不需要此参数
        /// </summary>
        public int nMinStayTime;

        public int nAreaIDNum;					// 区域ID个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public uint[] nAreaID;// 区域ID(一个预置点可以对应多个区域ID)
        public EM_OTHER_RULE_TYPE emOtherRule; // 其他规则
        /// <summary>
        /// 当查询粒度为分钟时，用以细化具体粒度 不填默认5分钟粒度
        /// When the query granularity is minutes, it is used to refine the specific granularity, default value is 5
        /// </summary>
        public int nGranularityExt;
        /// <summary>
        /// / 多通道融合区域ID
        /// Multi channel fusion region ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public int[] nClusterAreaID;
        /// <summary>
        /// / 多通道融合区域ID有效个数
        /// Effective number of multi-channel fusion region ID
        /// </summary>
        public uint nClusterAreaIDNum;
        /// <summary>
        /// / 规则大类
        /// / Rule Class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRuleClass;
        /// <summary>
        /// Distinguish between platform and local, unknown: 0 platform: 1 local: 2
        /// 区分平台和本地，未知：0 平台：1 本地：2
        /// </summary>
        public uint nClusterAreaType;
    }

    /// <summary>
    /// StartFindNumberStat's output param
    /// StartFindNumberStat输出参数
    /// </summary>
    public struct NET_OUT_FINDNUMBERSTAT
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// total count
        /// 符合此次查询条件的结果总条数
        /// </summary>
        public uint dwTotalCount;
    }

    /// <summary>
    /// DoFindNumberStat's input param
    /// 接口(DoFindNumberStat)输入参数
    /// </summary>
    public struct NET_IN_DOFINDNUMBERSTAT
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// [0, totalCount-1]
        /// [0, totalCount-1], 查询起始序号,表示从beginNumber条记录开始,取count条记录返回
        /// </summary>
        public uint nBeginNumber;
        /// <summary>
        /// count
        /// 每次查询的流量统计条数
        /// </summary>
        public uint nCount;
        /// <summary>
        /// wait time
        /// 等待接收数据的超时时间
        /// </summary>
        public int nWaittime;
    }

    /// <summary>
    /// DoFindNumberStat's ouput param
    /// 接口(DoFindNumberStat)输出参数
    /// </summary>
    public struct NET_OUT_DOFINDNUMBERSTAT
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// count
        /// 查询返回人数统计信息个数
        /// </summary>
        public int nCount;
        /// <summary>
        /// state array, the space application by the user(NET_NUMBERSTAT)
        /// 返回人数统计信息数组(NET_NUMBERSTAT)，由用户申请内存，大小为nBufferLen
        /// </summary>
        public IntPtr pstuNumberStat;
        /// <summary>
        /// the space application yb the user, the length unit is the dwsize of NET_NUMBERSTAT
        /// 用户申请的内存大小,以NET_NUMBERSTAT中的dwsize大小为单位
        /// </summary>
        public int nBufferLen;
        /// <summary>
        /// the minimum stay time when the find type is ManNumDetection
        /// 区域人数查询时指定的最小滞留时间
        /// </summary>
        public int nMinStayTime;
    }

    // 温度统计信息
    public struct NET_TEMPERATURE_STATISTICS_INFO
    {
        public uint nTotalCount;               // 总人数
        public uint nHighTempCount;                // 
        public uint nLowTempCount;             // 
        public uint nNormalTempCount;          // 体温正常次数
        public uint nNoMaskCount;              // 未带口罩总人数
        public uint nTimeKey;                  // 记录编号
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved; // 预留字段
    }

    /// <summary>
    /// number stat
    /// 数字统计
    /// </summary>
    public struct NET_NUMBERSTAT
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel id
        /// 统计通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// rule name
        /// 规则名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szRuleName;
        /// <summary>
        /// start time
        /// 开始时间
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// end time
        /// 结束时间
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// entered total
        /// 进入人数小计
        /// </summary>
        public int nEnteredSubTotal;
        /// <summary>
        /// entered total
        /// 出去人数小计
        /// </summary>
        public int nExitedSubtotal;
        /// <summary>
        /// average number inside
        /// 平均保有人数(除去零值)
        /// </summary>
        public int nAvgInside;
        /// <summary>
        /// max number inside
        /// 最大保有人数
        /// </summary>
        public int nMaxInside;
        /// <summary>
        /// people enter with helmet count
        /// 戴安全帽进入人数小计
        /// </summary>
        public int nEnteredWithHelmet;
        /// <summary>
        /// people enter without helmet count
        /// 不戴安全帽进入人数小计
        /// </summary>
        public int nEnteredWithoutHelmet;
        /// <summary>
        /// people exit with helmet count
        /// 戴安全帽出去人数小计
        /// </summary>
        public int nExitedWithHelmet;
        /// <summary>
        /// people exit without helmet count
        /// 不戴安全帽出去人数小计
        /// </summary>
        public int nExitedWithoutHelmet;
        /// <summary>
        /// 在区域内人数小计
        /// the count of peoples in the region
        /// </summary>
        public int nInsideSubtotal;
        /// <summary>
        /// 计划ID,仅球机有效,从1开始
        /// </summary>
        public uint nPlanID;
        /// <summary>
        /// 区域ID(一个预置点可以对应多个区域ID)
        /// </summary>
        public uint nAreaID;
        /// <summary>
        /// 区域内平均滞留时间
        /// </summary>
        public uint nAverageStayTime;
        public NET_TEMPERATURE_STATISTICS_INFO stuTempInfo;     // 温度统计信息(NET_IN_FINDNUMBERSTAT 字段 emRuleType 取值为 EM_RULE_ANATOMYTEMP_DETECT 时有效)
        /// <summary>
        /// 经过人数小计
        /// Passed Subtotaled
        /// </summary>
        public int nPassedSubtotal;
        /// <summary>
        /// 进入重复人数小计
        /// Subtotal of duplicate entries
        /// </summary>
        public uint nEnteredDupSubtotal;
        /// <summary>
        /// 出去重复人数小计
        /// Subtotal of duplicate number of people going out
        /// </summary>
        public uint nExitedDupSubtotal;
        /// <summary>
        /// 去重后的进入人数小计
        /// Subtotal of entry numbers after weight removal
        /// </summary>
        public uint nEnteredNoDupSubtotal;
        /// <summary>
        /// 去重后的出去人数小计
        /// Subtotal of number of people going out after weight removal
        /// </summary>
        public uint nExitedNoDupSubtotal;
        /// <summary>
        /// 多通道融合区域ID
        /// Cluster area ID
        /// </summary>
        public int nClusterAreaID;
        /// <summary>
        /// 批次数小计
        /// Subtotal of batch times
        /// </summary>
        public int nBatchTotal;
        /// <summary>
        /// / 精准客流使用，表示校正后的人数
        /// / Corrected number of people
        /// </summary>
        public uint nRealNumber;
        /// <summary>
        /// / 特定人员进入人数小计，已弃用
        /// / Subtotal of the number of specific personnel entering. Abandoned
        /// </summary>
        public uint nEnteredSpecSubtotal;
        /// <summary>
        /// / 特定人员出去人数小计，已弃用
        /// / Subtotal of the number of specific personnel going out. Abandoned
        /// </summary>
        public uint nExitedSpecSubtotal;
        /// <summary>
        /// / 进入雨伞小计
        /// / Subtotal for entering umbrellas
        /// </summary>
        public uint nEnteredUmbrellaSubtotal;
        /// <summary>
        /// / 离开雨伞小计
        /// / Subtitle for Leaving Umbrella
        /// </summary>
        public uint nExitedUmbrellaSubtotal;
        /// <summary>
        /// / 是否是断电期间的数据。0：未知， 1：正常运行时统计的数据，2：断电期间数据
        /// / Is it data during a power outage. 0：unknow， 1：data during normal operation, 2：data during power outage，
        /// </summary>
        public int nPowerOff;
    }

    /// <summary>
    /// input param for AttachVideoStatSummary
    /// AttachVideoStatSummary 入参
    /// </summary>
    public struct NET_IN_ATTACH_VIDEOSTAT_SUM
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// video channel ID    
        /// 视频通道号
        /// </summary>
        public int nChannel;
        /// <summary>
        /// video statistical summary callback
        /// 视频统计摘要信息回调
        /// </summary>
        public fVideoStatSumCallBack cbVideoStatSum;
        /// <summary>
        /// user data
        /// 用户数据
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// output param for AttachVideoStatSummary
    /// AttachVideoStatSummary 出参
    /// </summary>
    public struct NET_OUT_ATTACH_VIDEOSTAT_SUM
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// video statistical subtotal
    /// 视频统计小计信息
    /// </summary>
    public struct NET_VIDEOSTAT_SUBTOTAL
    {
        /// <summary>
        /// count since device operation
        /// 设备运行后人数统计总数
        /// </summary>
        public int nTotal;
        /// <summary>
        /// count in the last hour
        /// 小时内的总人数
        /// </summary>
        public int nHour;
        /// <summary>
        /// count for today
        /// 当天的总人数, 不可手动清除
        /// </summary>
        public int nToday;
        /// <summary>
        /// count for today, on screen display 
        /// 统计人数, 用于OSD显示, 可手动清除
        /// </summary>
        public int nOSD;
        /// <summary>
        /// reserved
        /// 保留字节
        /// </summary>   
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] reserved;
    }

    /// <summary>
    /// 非机动车的滞留时间信息
    /// nonmotor stay state
    /// </summary>
    public struct NET_NONMOTOR_STAY_STAT
    {
        /// <summary>
        /// 非机动车进入区域的时间
        /// Time for non-motorized vehicles to enter the area
        /// </summary>
        public NET_TIME stuEnterTime;
        /// <summary>
        /// 非机动车离开区域的时间
        /// Time for non-motorized vehicles to exit the area
        /// </summary>
        public NET_TIME stuExitTime;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] reserved;
    }

    /// <summary>
    /// 猪只离开开滞留时间信息
    /// Pig Stay Stat info
    /// </summary>
    public struct NET_PIG_STAY_STAT
    {
        /// <summary>
        /// 猪只进入区域的时间
        /// Enter Time
        /// </summary>
        public NET_TIME stuEnterTime;
        /// <summary>
        /// 猪只离开区域的时间
        /// Exit Time
        /// </summary>
        public NET_TIME stuExitTime;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 208)]
        public string szReserved;
    }

    /// <summary>
    /// 经过小计信息
    /// Passed Subtotal Info
    /// </summary>
    public struct NET_PASSED_SUBTOTAL_INFO
    {
        /// <summary>
        /// 设备运行后经过人数统计总数
        /// The total number of people after the equipment is running
        /// </summary>
        public int nTotal;
        /// <summary>
        /// 小时内的总人数
        /// total number of people during the hour
        /// </summary>
        public int nHour;
        /// <summary>
        /// 当天的总人数(自然天)
        /// The total number of people on the day (natural days)
        /// </summary>
        public int nToday;
        /// <summary>
        /// IPC专用，如果不执行clearSectionStat操作，等同于Today人数
        /// IPC only, if the clearSectionStat operation is not performed, it is equivalent to the number of Today
        /// </summary>
        public int nTotalInTimeSection;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 112)]
        public string szReserved;
    }

    /// <summary>
    /// video statistical summary
    /// 视频统计摘要信息
    /// </summary>
    public struct NET_VIDEOSTAT_SUMMARY
    {
        /// <summary>
        /// channel ID 
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// rule name
        /// 规则名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szRuleName;
        /// <summary>
        /// time of this statistics
        /// 统计时间
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// subtotal for the entered
        /// 进入小计
        /// </summary>
        public NET_VIDEOSTAT_SUBTOTAL stuEnteredSubtotal;
        /// <summary>
        /// subtotal for the exited
        /// 出去小计
        /// </summary>
        public NET_VIDEOSTAT_SUBTOTAL stuExitedSubtotal;
        /// <summary>
        /// num of the inside
        /// 区域内人数
        /// </summary>
        public uint nInsidePeopleNum;
        /// <summary>
        /// rule type
        /// 规则类型
        /// </summary>
        public EM_RULE_TYPE emRuleType;
        /// <summary>
        /// num of the exit
        /// 离开的人数个数
        /// </summary>
        public int nRetExitManNum;
        /// <summary>
        /// 离开人员的滞留时间信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_EXITMAN_STAY_STAT[] stuExitManStayInfo;
        /// <summary>
        /// 计划ID,仅球机有效,从1开始
        /// </summary>
        public uint nPlanID;
        /// <summary>
        /// 区域ID(一个预置点可以对应多个区域ID)
        /// </summary>
        public uint nAreaID;
        /// <summary>
        /// 当天区域内总人数
        /// </summary>
        public uint nCurrentDayInsidePeopleNum;
        /// <summary>
        /// 区域内非机动车总数
        /// Total number of non-motor vehicles in the area
        /// </summary>
        public uint nInsideTotalNonMotor;
        /// <summary>
        /// 当天的非机动车数
        /// Number of non-motorized vehicles on the day
        /// </summary>
        public uint nInsideTodayNonMotor;
        /// <summary>
        /// 非机动车的滞留个数
        /// Number of non-motor vehicles stranded
        /// </summary>
        public int nRetNonMotorNum;
        /// <summary>
        /// 非机动车的滞留时间信息
        /// Information on the detention time of non-motor vehicles
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_NONMOTOR_STAY_STAT[] stuNonMotorStayStat;
        /// <summary>
        /// 区域内猪只数
        /// Inside Total Pig Number
        /// </summary>
        public uint nInsideTotalPig;
        /// <summary>
        /// 猪只离开滞留时间信息个数
        /// Pig Stay Stat Count
        /// </summary>
        public int nPigStayStatCount;
        /// <summary>
        /// 猪只离开滞留时间信息
        /// Pig Stay Stat Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_PIG_STAY_STAT[] stuPigStayStatInfo;
        /// <summary>
        /// 当天的猪只数
        /// Inside Today Pig Number
        /// </summary>
        public uint nInsideTodayPig;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved;
        /// <summary>
        /// 经过小计
        /// Passed Subtotal Info
        /// </summary>
        public NET_PASSED_SUBTOTAL_INFO stuPassedSubtotal;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 884)]
        public byte[] reserved;
    }

    /// <summary>
    /// 离开人员的滞留时间信息
    /// </summary>
    public struct NET_EXITMAN_STAY_STAT
    {
        /// <summary>
        /// / 人员进入区域时间
        /// Time to enter the region
        /// </summary>
        public NET_TIME stuEnterTime;
        /// <summary>
        /// / 人员离开区域时间
        /// Time to exit the region
        /// </summary>
        public NET_TIME stuExitTime;
        /// <summary>
        /// / 离开区域人员ID
        /// / Personnel ID leaving the area
        /// </summary>
        public int nManID;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 124)]
        public byte[] reserved;
    }

    #endregion Number state

    #region <<Face Module>>
    /// <summary>
    /// the describe of EVENT_IVS_FACEDETECT's data
    /// 目标检测事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_FACEDETECT_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// have being detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Event action: 0 means pulse event,1 means continuous event's begin,2means continuous event's end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] reserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// detect region point number
        /// 规则检测区域顶点数
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// detect region
        /// 规则检测区域
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// flag(by bit),see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON  
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// snapshot current face device address
        /// 抓拍当前人脸的设备地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSnapDevAddress;
        /// <summary>
        /// event trigger accumilated times 
        /// 事件触发累计次数
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// sex type
        /// 性别
        /// </summary>
        public EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex;
        /// <summary>
        /// age, invalid if it is -1
        /// 年龄,-1表示该字段数据无效
        /// </summary>
        public int nAge;
        /// <summary>
        /// invalid number in array emFeature
        /// 目标特征数组有效个数,与 emFeature 结合使用
        /// </summary>
        public uint nFeatureValidNum;
        /// <summary>
        /// human face features
        /// 目标特征数组,与 nFeatureValidNum 结合使用
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE[] emFeature;
        /// <summary>
        /// number of stuFaces
        /// 指示stuFaces有效数量
        /// </summary>
        public int nFacesNum;
        /// <summary>
        /// when nFacesNum > 0, stuObject invalid
        /// 多张人脸时使用,此时没有Object
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_FACE_INFO[] stuFaces;
        /// <summary>
        /// public info 
        /// 智能事件公共信息
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// Reserved
        /// 保留字节,留待扩展.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// eyes state
        /// 眼睛状态
        /// </summary>
        public EM_EYE_STATE_TYPE emEye;
        /// <summary>
        /// mouth state
        /// 嘴巴状态
        /// </summary>
        public EM_MOUTH_STATE_TYPE emMouth;
        /// <summary>
        /// mask state
        /// 口罩状态
        /// </summary>
        public EM_MASK_STATE_TYPE emMask;
        /// <summary>
        /// beard state
        /// 胡子状态
        /// </summary>
        public EM_BEARD_STATE_TYPE emBeard;
        /// <summary>
        /// Attractive value, -1: invalid, 0:no disringuish,range: 1-100, the higher value, the higher charm
        /// 魅力值, -1表示无效, 0未识别，识别时范围1-100,得分高魅力高
        /// </summary>
        public int nAttractive;
        /// <summary>
        /// Unique identifier of the captured person
        /// 抓拍人员写入数据库的唯一标识符
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUID;
        /// <summary>
        /// byte alignment
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved2;
        /// <summary>
        /// Eigenvalue info
        /// 特征值信息
        /// </summary>
        public NET_FEATURE_VECTOR stuFeatureVector;
        /// <summary>
        /// Eigenvalue algorithm version
        /// 特征值算法版本
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFeatureVersion;
        /// <summary>
        /// The state of human face in camera
        /// 0-unknown,1-appear,2-in picture 3-left
        /// 人脸在摄像机画面中的状态
        /// </summary>
        public EM_FACE_DETECT_STATUS emFaceDetectStatus;
        /// <summary>
        /// The angle information of human face in the captured picture
        /// 人脸在抓拍图片中的角度信息
        /// nPitch:Pitch angle(抬头低头的俯仰角), 
        /// nYaw:Yaw angle(左右转头的偏航角), 
        /// nRoll:Roll angle(头在平面内左偏右偏的翻滚角)
        //  Angle value range(角度值取值范围)[-90,90], 
        /// Three angle values are 999, indicating that the angle information is invalid
        /// 三个角度值都为999表示角度信息无效
        /// </summary>
        public NET_EULER_ANGLE stuFaceCaptureAngle;
        /// <summary>
        /// Face capture quality score, range 0-10000
        /// 人脸抓拍质量分数,范围 0~10000 
        /// </summary>
        public uint nFaceQuality;
        /// <summary>
        /// Human speed, km/h
        /// 人的运动速度, km/h
        /// </summary>
        public double dHumanSpeed;
        /// <summary>
        /// Face alignment score, range 0-10000, -1 means invalid
        /// 人脸对齐得分分数,范围 0~10000,-1为无效值
        /// </summary>
        public int nFaceAlignScore;
        /// <summary>
        /// Face clarity score, range 0-10000, -1 means invalid
        /// 人脸清晰度分数,范围 0~10000,-1为无效值
        /// </summary>
        public int nFaceClarity;
        /// <summary>
        /// Whether the information of human  is valid
        /// 人体温信息是否有效
        /// </summary>
        public bool bHumanTemperature;
        /// <summary>
        /// Human body  information
        /// 人体温信息
        /// </summary>
        public NET_HUMAN_TEMPERATURE_INFO stuHumanTemperature;
        /// <summary>
        /// 国标编码
        /// National Standard Code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCameraID;
        /// <summary>
        /// 对应图片的分辨率
        /// picture resolution
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// 算法人脸分析时的实际人脸尺寸. 宽高为0是无效
        /// Actual face image size during algorithm face analysis.
        /// </summary>
        public NET_FACE_ORIGINAL_SIZE stuOriginalSize;
        /// <summary>
        /// 戴眼镜状态
        /// Wearing glasses state
        /// </summary>
        public EM_GLASS_STATE_TYPE emGlass;
        /// <summary>
        /// 帽子状态
        /// Hat state
        /// </summary>
        public EM_HAT_STYLE emHat;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 图片信息数组
        /// Picture information
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Picture number
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 保留字节,留待扩展
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 392 - 8)]
        public byte[] bReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 392 - 4)]
        public byte[] bReserved;
#endif
    }

    // 人体温信息
    public struct NET_HUMAN_TEMPERATURE_INFO
    {
        public double dbTemperature;				          // 温度
        public EM_HUMAN_TEMPERATURE_UNIT emTemperatureUnit;   // 温度单位
        public bool bIsOverTemp;                              // 
        public bool bIsUnderTemp;                             // 
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 132)]
        public byte[] bReserved;				              // 预留字段
    }

    /// <summary>
    /// eyes state
    /// 眼睛状态
    /// </summary>
    public enum EM_EYE_STATE_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// no disringuish
        /// 未识别
        /// </summary>
        NODISTI,
        /// <summary>
        /// close eyes
        /// 闭眼
        /// </summary>
        CLOSE,
        /// <summary>
        ///open eyes 
        /// 睁眼
        /// </summary>
        OPEN,
    }

    /// <summary>
    /// mouth state
    /// 嘴巴状态
    /// </summary>
    public enum EM_MOUTH_STATE_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// no disringuish
        /// 未识别
        /// </summary>
        NODISTI,
        /// <summary>
        /// close mouth
        /// 闭嘴
        /// </summary>
        CLOSE,
        /// <summary>
        /// open nouth
        /// 张嘴
        /// </summary>
        OPEN,
    }

    /// <summary>
    /// mask state
    /// 口罩状态
    /// </summary>
    public enum EM_MASK_STATE_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// no disringuish
        /// 未识别
        /// </summary>
        NODISTI,
        /// <summary>
        /// no mask
        /// 没戴口罩
        /// </summary>
        NOMASK,
        /// <summary>
        /// wearing mask
        /// 戴口罩
        /// </summary>
        WEAR,
    }

    /// <summary>
    /// beard state
    /// 胡子状态
    /// </summary>
    public enum EM_BEARD_STATE_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// no disringuish
        /// 未识别
        /// </summary>
        NODISTI,
        /// <summary>
        /// no beard
        /// 没胡子
        /// </summary>
        NOBEARD,
        /// <summary>
        /// have beard
        /// 有胡子
        /// </summary>
        HAVEBEARD,
    }

    /// <summary>
    /// sex type of dectected human face
    /// 目标检测对应性别类型
    /// </summary>
    public enum EM_DEV_EVENT_FACEDETECT_SEX_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// male
        /// 男性
        /// </summary>
        MAN,
        /// <summary>
        /// female
        /// 女性
        /// </summary>
        WOMAN,
    }

    /// <summary>
    /// feature type of detected human face
    /// 目标检测对应目标特征类型
    /// </summary>
    public enum EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// wearing glasses
        /// 戴眼镜
        /// </summary>
        WEAR_GLASSES,
        /// <summary>
        /// smile
        /// 微笑
        /// </summary>
        SMILE,
        /// <summary>
        /// anger
        /// 愤怒
        /// </summary>
        ANGER,
        /// <summary>
        /// sadness
        /// 悲伤
        /// </summary>
        SADNESS,
        /// <summary>
        /// disgust
        /// 厌恶
        /// </summary>
        DISGUST,
        /// <summary>
        /// fear
        /// 害怕
        /// </summary>
        FEAR,
        /// <summary>
        /// surprise
        /// 惊讶
        /// </summary>
        SURPRISE,
        /// <summary>
        /// neutral
        /// 正常
        /// </summary>
        NEUTRAL,
        /// <summary>
        /// laugh
        /// 大笑
        /// </summary>
        LAUGH,
        /// <summary>
        /// not wear glasses
        /// 没戴眼镜
        /// </summary>
        NOGLASSES,
        /// <summary>
        /// happy
        /// 高兴
        /// </summary>
        HAPPY,
        /// <summary>
        /// confused
        /// 困惑
        /// </summary>
        CONFUSED,
        /// <summary>
        /// scream
        /// 尖叫
        /// </summary>
        SCREAM,
        /// <summary>
        /// wearing sun glasses
        /// 戴太阳眼镜
        /// </summary>
        WEAR_SUNGLASSES,
    }

    /// <summary>
    /// multi faces detect info
    /// 多目标检测信息
    /// </summary>
    public struct NET_FACE_INFO
    {
        /// <summary>
        /// object id
        /// 物体ID,每个ID表示一个唯一的物体
        /// </summary>
        public int nObjectID;
        /// <summary>
        /// object type
        /// 物体类型
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szObjectType;
        /// <summary>
        /// same with the source picture id
        /// 这张人脸抠图所属的大图的ID
        /// </summary>
        public int nRelativeID;
        /// <summary>
        /// bounding box
        /// 包围盒
        /// </summary>
        public NET_A_RECT_EX BoundingBox;
        /// <summary>
        /// object center
        /// 物体型心
        /// </summary>
        public NET_POINT Center;
    }

    /// <summary>
    /// the describe of EVENT_IVS_FACERECOGNITION's data
    /// 目标识别对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_FACERECOGNITION_INFO
    {
        /// <summary>
        /// ChannelId
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// have being detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// candidate number
        /// 当前人脸匹配到的候选对象数量
        /// </summary>
        public int nCandidateNum;
        /// <summary>
        /// candidate info
        /// 当前人脸匹配到的候选对象信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_CANDIDATE_INFO[] stuCandidates;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// reserved
        /// 对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// The existence panorama
        /// 全景图是否存在
        /// </summary>
        public bool bGlobalScenePic;
        /// <summary>
        /// Panoramic Photos
        /// 全景图片信息
        /// </summary>
        public NET_PIC_INFO stuGlobalScenePicInfo;
        /// <summary>
        /// Snapshot current face aadevice address
        /// 抓拍当前人脸的设备地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSnapDevAddress;
        /// <summary>
        /// event trigger accumilated times 
        /// 事件触发累计次数
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// intelligent things info
        /// 智能事件公共信息
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// face data
        /// 人脸数据
        /// </summary>
        public NET_FACE_DATA stuFaceData;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUID;					// 抓拍人员写入数据库的唯一标识符



        public NET_FEATURE_VECTOR stuFeatureVector;                            // 特征值信息
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFeatureVersion;      // 特征值算法版本
        public EM_FACE_DETECT_STATUS emFaceDetectStatus;                       // 人脸在摄像机画面中的状态
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;         // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
        public NET_PASSERBY_INFO stuPasserbyInfo;                          // 路人库信息
        public uint nStayTime;                                 // 路人逗留时间 单位：秒
        public NET_GPS_INFO stuGPSInfo;                                 // GPS信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 432)]
        public byte[] bReserved;// 保留字节,留待扩展.
        public int nRetCandidatesExNum;                        // 当前人脸匹配到的候选对象数量实际返回值
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_CANDIDATE_INFOEX[] stuCandidatesEx;     // 当前人脸匹配到的候选对象信息扩展

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 22)]
        public string szSerialUUID;            // 级联物体ID唯一标识
                                               // 格式如下：前2位%d%d:01-视频片段,02-图片,03-文件,99-其他;
                                               // 中间14位YYYYMMDDhhmmss:年月日时分秒;后5位%u%u%u%u%u：物体ID，如00001
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved; // 对齐
        public NET_CUSTOM_PROJECTS_INFO stuCustomProjects;						// 信息
        public bool bIsDuplicateRemove;							// 是否符合去重策略（TRUE：符合 FALSE：不符合）
        /// <summary>
        /// 字节对齐
        /// byte alaginment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved2;
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// the number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 检测到的物体补充字段
        /// Detected object supplementary field
        /// </summary>
        public NET_A_MSG_OBJECT_SUPPLEMENT stuObjectSupplement;
        /// <summary>
        /// 0-普通 1-开启陌生人模式
        /// 0 - normal 1 - enable stranger mode
        /// </summary>
        public uint nMode;
        /// <summary>
        /// 大图（全景图）的缩略图信息
        /// Thumbnail information of large image (Panorama)
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuThumImageInfo;
        /// <summary>
        /// 人体图片信息
        /// Human body picture information
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuHumanImageInfo;
        /// <summary>
        /// 违章关联视频FTP上传路径
        /// ftp path for assocated video
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szVideoPath;
        /// <summary>
        /// 是否是高频次报警
        /// Is it a high frequency alarm
        /// </summary>
        public bool bIsHighFrequencyAlarm;
        /// <summary>
        /// 频次报警名称, 当bIsHighFrequencyAlarm字段值为TRUE时才有效，表示高频次报警名称
        /// Frequency alarm name, It is valid only when the value of bIshighfrequencylalarm field is TRUE, indicating the name of high-frequency alarm
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFrequencyAlarmName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Time stamp(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 触发人脸抓拍的事件类型
        /// Event types that trigger facial capture
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSubCode;
        /// <summary>
        /// 区域编码
        /// RegionCode
        /// </summary>
        public int nRegionCode;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 236)]
        public string byReserved3;
    }

    // 信息
    public struct NET_CUSTOM_PROJECTS_INFO
    {
        /// <summary>
        /// GPS位置信息
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// 人脸比对事件触发对应球机信息
        /// </summary>
        public NET_FACECOMPARISON_PTZ_INFO stuFaceComparisonPTZInfo;
        /// <summary>
        /// 人脸比对时车牌信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPlateNumber;
        /// <summary>
        /// 是否报警
        /// </summary>
        public bool bIsAlarm;
        /// <summary>
        /// 滞留类型 0-未知 1-基础滞留 2-异常滞留
        /// </summary>
        public int nStayEvent;
        /// <summary>
        /// 徘徊类型 0-未知 1-基础徘徊 2-异常徘徊
        /// </summary>
        public int nWanderEvent;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1012)]
        public byte[] byReserved;
    }

    // 人脸比对事件触发对应球机信息
    public struct NET_FACECOMPARISON_PTZ_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;					// 球机抓拍到人脸时预置点名称

        public uint dwPresetNumber;						// 球机抓拍到人脸时预置点编号
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;						// 字节对齐
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;					// 保留字节			
    }

    /// <summary>
    /// 算法人脸分析时的实际人脸图片尺寸
    /// Actual face image size during algorithm face analysis
    /// </summary>
    public struct NET_FACE_ORIGINAL_SIZE
    {
        /// <summary>
        /// 人脸图片宽度
        /// Width
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// 人脸图片高
        /// Height
        /// </summary>
        public uint nHeight;
    }

    /// <summary>
    /// 戴眼镜状态
    /// Wearing glasses state
    /// </summary>
    public enum EM_GLASS_STATE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_GLASS_STATE_TYPE_UNKNOWN,
        /// <summary>
        /// 未戴
        /// Not wearing
        /// </summary>
        EM_GLASS_STATE_TYPE_NOT_WEARING,
        /// <summary>
        /// 戴常规眼镜
        /// Wear regular glasses
        /// </summary>
        EM_GLASS_STATE_TYPE_CONVENTIONAL_GLASSES,
        /// <summary>
        /// 戴太阳眼镜
        /// Wear sunglasses
        /// </summary>
        EM_GLASS_STATE_TYPE_SUN_GLASSES,
        /// <summary>
        /// 戴黑框眼镜
        /// Wear black framed glasses
        /// </summary>
        EM_GLASS_STATE_TYPE_BLACK_GLASSES,
    }

    /// <summary>
    /// 人脸数据
    /// the data of face
    /// </summary>
    public struct NET_FACE_DATA
    {
        /// <summary>
        /// 性别
        /// sex type
        /// </summary>
        public EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex;
        /// <summary>
        /// 年龄,-1表示该字段数据无效
        /// age, invalid if it is -1
        /// </summary>
        public int nAge;
        /// <summary>
        /// 目标特征数组有效个数,与 emFeature 结合使用
        /// invalid number in array emFeature
        /// </summary>
        public uint nFeatureValidNum;
        /// <summary>
        /// 目标特征数组,与 nFeatureValidNum 结合使用
        /// human face features
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE[] emFeature;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// 眼睛状态
        /// eyes state
        /// </summary>
        public EM_EYE_STATE_TYPE emEye;
        /// <summary>
        /// 嘴巴状态
        /// mouth state
        /// </summary>
        public EM_MOUTH_STATE_TYPE emMouth;
        /// <summary>
        /// 口罩状态
        /// mask state
        /// </summary>
        public EM_MASK_STATE_TYPE emMask;
        /// <summary>
        /// 胡子状态
        /// beard state
        /// </summary>
        public EM_BEARD_STATE_TYPE emBeard;
        /// <summary>
        /// 魅力值, -1表示无效, 0未识别，识别时范围1-100,得分高魅力高
        /// Attractive value, -1: invalid, 0:no disringuish, range: 1-100, the higher value, the higher charm
        /// </summary>
        public int nAttractive;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// 人脸在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角
        /// 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效
        /// euler angle of face in the capture picture, nPitch:pitch of the head, nYaw: yaw of the head, nRoll:roll of the head
        /// range of the angle value is [-90,90], stuFaceCaptureAngle is invalid if the three angles are 999.
        /// </summary>
        public NET_EULER_ANGLE stuFaceCaptureAngle;
        /// <summary>
        /// 人脸抓拍质量分数
        /// quality about capture picture
        /// </summary>
        public uint nFaceQuality;
        /// <summary>
        /// 人脸对齐得分分数,范围 0~10000,-1为无效值
        /// The score of face picture align.The range is 0~10000,-1 is invalid
        /// </summary>
        public int nFaceAlignScore;
        /// <summary>
        /// 人脸清晰度分数,范围 0~10000,-1为无效值
        /// The score of face picture clarity.The range is 0~10000,-1 is invalid
        /// </summary>
        public int nFaceClarity;
        /// <summary>
        /// 温度, bAnatomyTempDetect 为TRUE时有效
        /// , it is valid when bAnatomyTempDetect is true
        /// </summary>
        public double dbTemperature;
        /// <summary>
        /// 是否人体测温
        /// Is anatomy  detection
        /// </summary>
        public bool bAnatomyTempDetect;
        /// <summary>
        /// 温度单位, bAnatomyTempDetect 为TRUE时有效
        ///  unit, it is valid when bAnatomyTempDetect is true
        /// </summary>
        public EM_HUMAN_TEMPERATURE_UNIT emTemperatureUnit;
        /// <summary>
        /// 是否超温, bAnatomyTempDetect 为TRUE时有效
        /// Is over , it is valid when bAnatomyTempDetect is true
        /// </summary>
        public bool bIsOverTemp;
        /// <summary>
        /// bAnatomyTempDetect 为TRUE时有效
        /// it is valid when bAnatomyTempDetect is true
        /// </summary>
        public bool bIsUnderTemp;
        /// <summary>
        /// 算法人脸分析时的实际人脸图片尺寸, 宽高为0时无效
        /// Actual face image size during algorithm face analysis.
        /// </summary>
        public NET_FACE_ORIGINAL_SIZE stuOriginalSize;
        /// <summary>
        /// / 戴眼镜状态
        /// Wearing glasses state
        /// </summary>
        public EM_GLASS_STATE_TYPE emGlass;
        /// <summary>
        /// / R脸数量
        /// / Number of faces
        /// </summary>
        public int nMultiFace;
        /// <summary>
        /// / R脸在整图中的占比
        /// / The proportion of faces in the entire image
        /// </summary>
        public float fRatio;
        /// <summary>
        /// / 眼睛的距离
        /// / EyesDist
        /// </summary>
        public int nEyesDist;
        /// <summary>
        /// / R脸角度,俯仰角(0°-90°)
        /// / Face angle, pitch angle (0 -90 )
        /// </summary>
        public int nPitchAngle;
        /// <summary>
        /// / R脸角度,水平角（航偏角）(0°-90°)
        /// / Face angle, horizontal angle (yaw angle) (0 -90 )
        /// </summary>
        public int nYawAngle;
        /// <summary>
        /// / R脸角度,翻滚角(0°-90°)
        /// / Face angle, roll angle (0 -90)
        /// </summary>
        public int nRollAngle;
        /// <summary>
        /// / 保留字节,留待扩展.
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
        public byte[] bReserved;
    }

    /// <summary>
    /// cadidate person info
    /// 候选人员信息
    /// </summary>
    public struct NET_CANDIDATE_INFO
    {
        /// <summary>
        /// person info
        /// 人员信息
        /// </summary>
        public NET_FACERECOGNITION_PERSON_INFO stPersonInfo;
        /// <summary>
        /// similarity
        /// 和查询图片的相似度
        /// </summary>
        public byte bySimilarity;
        /// <summary>
        /// Range officer's database, see EM_FACE_DB_TYPE
        /// 人员所属数据库范围,详见EM_FACE_DB_TYPE
        /// </summary>
        public byte byRange;
        /// <summary>
        /// Reserved
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// When byRange historical database effectively, which means that the query time staff appeared
        /// 当byRange为历史数据库时有效,表示查询人员出现的时间
        /// </summary>
        public NET_TIME stTime;
        /// <summary>
        /// When byRange historical database effectively, which means that people place a query appears
        /// 当byRange为历史数据库时有效,表示查询人员出现的地点 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szAddress;
        /// <summary>
        /// Is hit, means the result face has compare result in database
        /// 是否有识别结果,指这个检测出的人脸在库中有没有比对结果
        /// </summary>
        public bool bIsHit;
        /// <summary>
        /// Scene Image
        /// 人脸全景图
        /// </summary>
        public NET_PIC_INFO_EX3 stuSceneImage;
        /// <summary>
        /// channel id
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// extend of cadidate person info
    /// 候选人员信息扩展结构体
    /// </summary>
    public struct NET_CANDIDATE_INFOEX
    {
        /// <summary>
        /// Extend of person info
        /// 人员信息扩展
        /// </summary>
        public NET_FACERECOGNITION_PERSON_INFOEX stPersonInfo;
        /// <summary>
        /// Similarity in comparison with query image, expressed in percentage, 1~100
        /// 和查询图片的相似度,百分比表示,1~100
        /// </summary>
        public byte bySimilarity;
        /// <summary>
        /// Range officer's database, see EM_FACE_DB_TYPE
        /// 人员所属数据库范围,详见EM_FACE_DB_TYPE
        /// </summary>
        public byte byRange;
        /// <summary>
        /// When byRange historical database effectively, which means that the query time staff appeared
        /// 当byRange为历史数据库时有效,表示查询人员出现的时间
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        public NET_TIME stTime;
        /// <summary>
        /// When byRange historical database effectively, which means that people place a query appears
        /// 当byRange为历史数据库时有效,表示查询人员出现的地点
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szAddress;
        /// <summary>
        /// Is hit, means the result face has compare result in database
        /// 是否有识别结果,指这个检测出的人脸在库中有没有比对结果
        /// </summary>
        public bool bIsHit;
        /// <summary>
        /// Scene Image
        /// 人脸全景图
        /// </summary>
        public NET_PIC_INFO_EX3 stuSceneImage;
        /// <summary>
        /// ChannelId
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// File path
        /// 文件路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFilePathEx;
        /// <summary>
        /// 历史库人体信息
        /// </summary>
        public NET_HISTORY_HUMAN_INFO stuHistoryHumanInfo;
        /// <summary>
        /// 视频通道号
        /// Video channel id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szChannelString;
        /// <summary>
        /// 保留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 104)]
        public byte[] byReserved;
    }

    // 历史库人体信息
    public struct NET_HISTORY_HUMAN_INFO
    {
        /// <summary>
        /// 上衣颜色
        /// </summary>
        public EM_CLOTHES_COLOR emCoatColor;
        /// <summary>
        /// 上衣类型
        /// </summary>
        public EM_COAT_TYPE emCoatType;
        /// <summary>
        /// 裤子颜色
        /// </summary>
        public EM_CLOTHES_COLOR emTrousersColor;
        /// <summary>
        /// 裤子类型
        /// </summary>
        public EM_TROUSERS_TYPE emTrousersType;
        /// <summary>
        /// 是否戴帽子
        /// </summary>
        public EM_HAS_HAT emHasHat;
        /// <summary>
        /// 是否带包
        /// </summary>
        public EM_HAS_BAG emHasBag;
        /// <summary>
        /// 包围盒(8192坐标系)
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 年龄
        /// </summary>
        public int nAge;
        /// <summary>
        /// 性别
        /// </summary>
        public EM_SEX_TYPE emSex;
        /// <summary>
        /// 角度
        /// </summary>
        public EM_ANGLE_TYPE emAngle;
        /// <summary>
        /// 是否打伞
        /// </summary>
        public EM_HAS_UMBRELLA emHasUmbrella;
        /// <summary>
        /// 包类型
        /// </summary>
        public EM_BAG_TYPE emBag;
        /// <summary>
        /// 上半身衣服图案
        /// </summary>
        public EM_CLOTHES_PATTERN emUpperPattern;
        /// <summary>
        /// 头发样式
        /// </summary>
        public EM_HAIR_STYLE emHairStyle;
        /// <summary>
        /// 帽类型
        /// </summary>
        public EM_CAP_TYPE emCap;
        /// <summary>
        /// 是否有背包
        /// </summary>
        public EM_HAS_BACK_BAG emHasBackBag;
        /// <summary>
        /// 是否带手提包
        /// </summary>
        public EM_HAS_CARRIER_BAG emHasCarrierBag;
        /// <summary>
        /// 是否有肩包
        /// </summary>
        public EM_HAS_SHOULDER_BAG emHasShoulderBag;
        /// <summary>
        /// 是否有斜跨包
        /// </summary>
        public EM_HAS_MESSENGER_BAG emMessengerBag;
        /// <summary>
        /// 人体图片信息
        /// </summary>
        public NET_HISTORY_HUMAN_IMAGE_INFO stuImageInfo;
        /// <summary>
        /// 人脸图片信息
        /// </summary>
        public NET_HISTORY_HUMAN_IMAGE_INFO stuFaceImageInfo;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    // 是否有背包
    public enum EM_HAS_BACK_BAG
    {
        /// <summary>
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// 没有
        /// </summary>
        NO,
        /// <summary>
        /// 有
        /// </summary>
        YES
    }

    // 是否有手提包
    public enum EM_HAS_CARRIER_BAG
    {
        /// <summary>
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// 没有
        /// </summary>
        NO,
        /// <summary>
        /// 有
        /// </summary>
        YES
    }

    // 是否有肩包
    public enum EM_HAS_SHOULDER_BAG
    {
        /// <summary>
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// 没有
        /// </summary>
        NO,
        /// <summary>
        /// 有
        /// </summary>
        YES
    }

    // 是否有斜挎包
    public enum EM_HAS_MESSENGER_BAG
    {
        /// <summary>
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// 没有
        /// </summary>
        NO,
        /// <summary>
        /// 有
        /// </summary>
        YES
    }

    // 历史库人体图片信息
    public struct NET_HISTORY_HUMAN_IMAGE_INFO
    {
        /// <summary>
        /// 图片大小,单位:字节
        /// </summary>
        public int nLength;
        /// <summary>
        /// 图片宽度
        /// </summary>
        public int nWidth;
        /// <summary>
        /// 图片高度
        /// </summary>
        public int nHeight;
        /// <summary>
        /// 文件路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)]
        public byte[] szFilePath;
    }

    /// <summary>
    /// person info
    /// 人员信息
    /// </summary>
    public struct NET_FACERECOGNITION_PERSON_INFO
    {
        /// <summary>
        /// name
        /// 姓名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPersonName;
        /// <summary>
        /// birth year
        /// 出生年,作为查询条件时,此参数填0,则表示此参数无效
        /// </summary>
        public ushort wYear;
        /// <summary>
        /// birth month
        /// 出生月,作为查询条件时,此参数填0,则表示此参数无效
        /// </summary>
        public byte byMonth;
        /// <summary>
        /// birth day
        /// 出生日,作为查询条件时,此参数填0,则表示此参数无效
        /// </summary>
        public byte byDay;
        /// <summary>
        /// the unicle ID for the person
        /// 人员唯一标示(证号码,工号,或其他编号)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szID;
        /// <summary>
        /// importance level,1~10,the higher value the higher level
        /// 人员重要等级,1~10,数值越高越重要,作为查询条件时,此参数填0,则表示此参数无效
        /// </summary>
        public byte bImportantRank;
        /// <summary>
        /// sex, 1-man, 2-female
        /// 性别,1-男,2-女,作为查询条件时,此参数填0,则表示此参数无效
        /// </summary>
        public byte bySex;
        /// <summary>
        /// picture number
        /// 图片张数
        /// </summary>
        public ushort wFacePicNum;
        /// <summary>
        /// picture info
        /// 当前人员对应的图片信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
        public NET_PIC_INFO[] szFacePicInfo;
        /// <summary>
        /// Personnel types, see EM_PERSON_TYPE
        /// 人员类型,详见 EM_PERSON_TYPE
        /// </summary>
        public byte byType;
        /// <summary>
        /// Document types, see EM_CERTIFICATE_TYPE
        /// 证件类型,详见 EM_CERTIFICATE_TYPE
        /// </summary>
        public byte byIDType;
        /// <summary>
        /// Whether wear glasses or not,0-unknown,1-not wear glasses,2-wear glasses
        /// 是否戴眼镜，0-未知 1-不戴 2-戴
        /// </summary>
        public byte byGlasses;
        /// <summary>
        /// Age,0 means unknown
        /// 年龄,0表示未知
        /// </summary>
        public byte byAge;
        /// <summary>
        /// province
        /// 省份
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProvince;
        /// <summary>
        /// city
        /// 城市
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCity;
        /// <summary>
        /// Name, the name is too long due to the presence of 16 bytes can not be Storage problems, the increase in this parameter
        /// 姓名,因存在姓名过长,16字节无法存放问题,故增加此参数
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPersonNameEx;
        /// <summary>
        /// person unique ID
        /// 人员唯一标识符,首次由服务端生成,区别于ID字段,修改,删除操作时必填
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUID;
        /// <summary>
        /// country
        /// 国籍
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
        public string szCountry;
        /// <summary>
        /// using person type: 0 using byType, 1 using szPersonName
        /// 人员类型是否为自定义
        /// </summary>
        public byte byIsCustomType;
        /// <summary>
        /// comment info
        /// 备注信息
        /// </summary>
        public IntPtr pszComment;
        /// <summary>
        /// Group ID
        /// 人员所属组ID
        /// </summary>
        public IntPtr pszGroupID;
        /// <summary>
        /// Group Name
        /// 人员所属组名
        /// </summary>
        public IntPtr pszGroupName;
        /// <summary>
        /// the face feature 
        /// 目标特征 
        /// </summary>
        public IntPtr pszFeatureValue;
        /// <summary>
        /// len of pszGroupID
        /// pszGroupID的长度
        /// </summary>
        public byte bGroupIdLen;
        /// <summary>
        /// len of pszGroupName
        /// pszGroupName的长度
        /// </summary>
        public byte bGroupNameLen;
        /// <summary>
        /// len of pszFeatureValue
        /// pszFeatureValue的长度 128
        /// </summary>
        public byte bFeatureValueLen;
        /// <summary>
        /// len of pszComment
        /// pszComment的长度
        /// </summary>
        public byte bCommentLen;
        /// <summary>
        /// Emotion
        /// 表情
        /// </summary>			
        public EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion;
    }

    /// <summary>
    /// picture info
    /// 物体对应图片文件信息
    /// </summary>
    public struct NET_PIC_INFO_EX3
    {
        /// <summary>
        /// current picture file's offset in the binary file, byte
        /// 文件在二进制数据块中的偏移位置, 单位:字节
        /// </summary>
        public uint dwOffSet;
        /// <summary>
        /// current picture file's size, byte
        /// 文件大小, 单位:字节
        /// </summary>
        public uint dwFileLenth;
        /// <summary>
        ///  picture width, pixel
        /// 图片宽度, 单位:像素
        /// </summary>
        public ushort wWidth;
        /// <summary>
        /// picture high, pixel
        /// 图片高度, 单位:像素
        /// </summary>
        public ushort wHeight;
        /// <summary>
        /// File path
        /// 文件路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szFilePath;
        /// <summary>
        /// When submit to the server, the algorithm has checked the image or not 
        /// 图片是否算法检测出来的检测过的提交识别服务器时，则不需要再时检测定位抠图,1:检测过的,0:没有检测过
        /// </summary>
        public byte bIsDetected;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 11)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 证件类型
    /// ID type
    /// </summary>
    public enum EM_CERTIFICATE_TYPE
    {
        CERTIFICATE_TYPE_UNKNOWN,
        /// <summary>
        /// 证
        /// ID
        /// </summary>
        CERTIFICATE_TYPE_IC,
        /// <summary>
        /// 护照
        /// passport
        /// </summary>
        CERTIFICATE_TYPE_PASSPORT,
        /// <summary>
        /// 军官证
        /// </summary>
        CERTIFICATE_TYPE_OUTERGUARD,
        /// <summary>
        /// 学生证
        /// Student card
        /// </summary>
        CERTIFICATE_TYPE_STUDENT,
        /// <summary>
        /// 警官证
        /// Police officer card
        /// </summary>
        CERTIFICATE_TYPE_POLICE,
        /// <summary>
        /// 律师
        /// lawyer
        /// </summary>
        CERTIFICATE_TYPE_LAWYER,
    }

    #endregion

    /// <summary>
    /// Restore default setup mask. Can use to AND & OR operation, interface ControlDevice enum type EM_CtrlType.RESTOREDEFAULT
    /// "恢复默认配置"掩码,可进行与、或操作, 接口ControlDevice类型EM_CtrlType.RESTOREDEFAULT
    /// </summary>
    public enum NET_RESTORE : uint
    {
        /// <summary>
        /// General setup
        /// 普通设置
        /// </summary>
        COMMON = 0x00000001,
        /// <summary>
        /// Encode setup
        /// 编码设置
        /// </summary>
        CODING = 0x00000002,
        /// <summary>
        /// Record setup
        /// 录像设置
        /// </summary>
        VIDEO = 0x00000004,
        /// <summary>
        /// COM setup
        /// 串口设置
        /// </summary>
        COMM = 0x00000008,
        /// <summary>
        /// network setup
        /// 网络设置
        /// </summary>
        NETWORK = 0x00000010,
        /// <summary>
        /// Alarm setup
        /// 报警设置
        /// </summary>
        ALARM = 0x00000020,
        /// <summary>
        /// Video detection
        /// 视频检测
        /// </summary>
        VIDEODETECT = 0x00000040,
        /// <summary>
        /// PTZ control 
        /// 云台控制
        /// </summary>
        PTZ = 0x00000080,
        /// <summary>
        /// Output mode
        /// 输出模式
        /// </summary>
        OUTPUTMODE = 0x00000100,
        /// <summary>
        /// Channel name
        /// 通道名称
        /// </summary>
        CHANNELNAME = 0x00000200,
        /// <summary>
        /// Camera attribute
        /// 摄像头属性
        /// </summary>
        VIDEOINOPTIONS = 0x00000400,
        /// <summary>
        /// TrafficSnapshot
        /// 智能交通
        /// </summary>
        CPS = 0x00000800,
        /// <summary>
        /// Intelligent Component
        /// 视频分析
        /// </summary>
        INTELLIGENT = 0x00001000,
        /// <summary>
        /// Remote device configuration
        /// 远程设备配置
        /// </summary>
        REMOTEDEVICE = 0x00002000,
        /// <summary>
        /// decode video out
        /// 解码轮巡
        /// </summary>
        DECODERVIDEOOUT = 0x00004000,
        /// <summary>
        /// link mode
        /// 连接模式
        /// </summary>
        LINKMODE = 0x00008000,
        /// <summary>
        /// split screen
        /// 融合屏
        /// </summary>
        COMPOSITE = 0x00010000,
        /// <summary>
        /// Reset all
        /// 全部重置
        /// </summary>
        ALL = 0x80000000,
    }
    /// <summary>
    /// Control type    Corresponding to ControlDevice 
    /// 控制类型,对应ControlDevice接口
    /// </summary>
    public enum EM_CtrlType
    {
        /// <summary>
        /// Reboot device
        /// 重启设备
        /// </summary>
        REBOOT = 0,
        /// <summary>
        /// Shut down device
        /// 关闭设备
        /// </summary>
        SHUTDOWN,
        /// <summary>
        /// HDD management
        /// 硬盘管理
        /// </summary>
        DISK,
        /// <summary>
        /// Network keyboard
        /// 网络键盘
        /// </summary>
        KEYBOARD_POWER = 3,
        /// <summary>
        /// KEYBOARD_ENTER
        /// 键盘回车键
        /// </summary>
        KEYBOARD_ENTER,
        /// <summary>
        /// KEYBOARD_ESC
        /// 键盘退出键
        /// </summary>
        KEYBOARD_ESC,
        /// <summary>
        /// KEYBOARD_UP
        /// 键盘向上键
        /// </summary>
        KEYBOARD_UP,
        /// <summary>
        /// KEYBOARD_DOWN
        /// 键盘向下键
        /// </summary>
        KEYBOARD_DOWN,
        /// <summary>
        /// KEYBOARD_LEFT
        /// 键盘向左键
        /// </summary>
        KEYBOARD_LEFT,
        /// <summary>
        /// KEYBOARD_RIGHT
        /// 键盘向右键
        /// </summary>
        KEYBOARD_RIGHT,
        /// <summary>
        /// KEYBOARD_BTN0
        /// 键盘BTN0键
        /// </summary>
        KEYBOARD_BTN0,
        /// <summary>
        /// KEYBOARD_BTN1
        /// 键盘BTN1键
        /// </summary>
        KEYBOARD_BTN1,
        /// <summary>
        /// KEYBOARD_BTN2
        /// 键盘BTN2键
        /// </summary>
        KEYBOARD_BTN2,
        /// <summary>
        /// KEYBOARD_BTN3
        /// 键盘BTN3键
        /// </summary>
        KEYBOARD_BTN3,
        /// <summary>
        /// KEYBOARD_BTN4
        /// 键盘BTN4键
        /// </summary>
        KEYBOARD_BTN4,
        /// <summary>
        /// KEYBOARD_BTN5
        /// 键盘BTN5键
        /// </summary>
        KEYBOARD_BTN5,
        /// <summary>
        /// KEYBOARD_BTN6
        /// 键盘BTN6键
        /// </summary>
        KEYBOARD_BTN6,
        /// <summary>
        /// KEYBOARD_BTN7
        /// 键盘BTN7键
        /// </summary>
        KEYBOARD_BTN7,
        /// <summary>
        /// KEYBOARD_BTN8
        /// 键盘BTN8键
        /// </summary>
        KEYBOARD_BTN8,
        /// <summary>
        /// KEYBOARD_BTN9
        /// 键盘BTN9键
        /// </summary>
        KEYBOARD_BTN9,
        /// <summary>
        /// KEYBOARD_BTN10
        /// 键盘BTN10键
        /// </summary>
        KEYBOARD_BTN10,
        /// <summary>
        /// KEYBOARD_BTN11
        /// 键盘BTN11键
        /// </summary>
        KEYBOARD_BTN11,
        /// <summary>
        /// KEYBOARD_BTN12
        /// 键盘BTN12键
        /// </summary>
        KEYBOARD_BTN12,
        /// <summary>
        /// KEYBOARD_BTN13
        /// 键盘BTN13键
        /// </summary>
        KEYBOARD_BTN13,
        /// <summary>
        /// KEYBOARD_BTN14
        /// 键盘BTN14键
        /// </summary>
        KEYBOARD_BTN14,
        /// <summary>
        /// KEYBOARD_BTN15
        /// 键盘BTN15键
        /// </summary>
        KEYBOARD_BTN15,
        /// <summary>
        /// KEYBOARD_BTN16
        /// 键盘BTN16键
        /// </summary>
        KEYBOARD_BTN16,
        /// <summary>
        /// KEYBOARD_SPLIT
        /// 键盘分割键
        /// </summary>
        KEYBOARD_SPLIT,
        /// <summary>
        /// KEYBOARD_ONE
        /// 键盘ONE键
        /// </summary>
        KEYBOARD_ONE,
        /// <summary>
        /// KEYBOARD_NINE
        /// 键盘NINE键
        /// </summary>
        KEYBOARD_NINE,
        /// <summary>
        /// KEYBOARD_ADDR
        /// 键盘ADDR键
        /// </summary>
        KEYBOARD_ADDR,
        /// <summary>
        /// KEYBOARD_INFO
        /// 键盘INFO键
        /// </summary>
        KEYBOARD_INFO,
        /// <summary>
        /// KEYBOARD_REC
        /// 键盘REC键
        /// </summary>
        KEYBOARD_REC,
        /// <summary>
        /// KEYBOARD_FN1
        /// 键盘FN1键
        /// </summary>
        KEYBOARD_FN1,
        /// <summary>
        /// KEYBOARD_FN2
        /// 键盘FN2键
        /// </summary>
        KEYBOARD_FN2,
        /// <summary>
        /// KEYBOARD_PLAY
        /// 键盘PLAY键
        /// </summary>
        KEYBOARD_PLAY,
        /// <summary>
        /// KEYBOARD_STOP
        /// 键盘STOP键
        /// </summary>
        KEYBOARD_STOP,
        /// <summary>
        /// KEYBOARD_SLOW
        /// 键盘SLOW键
        /// </summary>
        KEYBOARD_SLOW,
        /// <summary>
        /// KEYBOARD_FAST
        /// 键盘FAST键
        /// </summary>
        KEYBOARD_FAST,
        /// <summary>
        /// KEYBOARD_PREW
        /// 键盘PREW键
        /// </summary>
        KEYBOARD_PREW,
        /// <summary>
        /// KEYBOARD_NEXT
        /// 键盘NEXT键
        /// </summary>
        KEYBOARD_NEXT,
        /// <summary>
        /// KEYBOARD_JMPDOWN
        /// 键盘JMPDOWN键
        /// </summary>
        KEYBOARD_JMPDOWN,
        /// <summary>
        /// KEYBOARD_JMPUP
        /// 键盘JMPUP键
        /// </summary>
        KEYBOARD_JMPUP,
        /// <summary>
        /// KEYBOARD_10PLUS
        /// 键盘10PLUS键
        /// </summary>
        KEYBOARD_10PLUS,
        /// <summary>
        /// KEYBOARD_SHIFT
        /// 键盘SHIFT键
        /// </summary>
        KEYBOARD_SHIFT,
        /// <summary>
        /// KEYBOARD_BACK
        /// 键盘BACK键
        /// </summary>
        KEYBOARD_BACK,
        /// <summary>
        /// KEYBOARD_LOGIN
        /// 键盘LOGIN键
        /// </summary>
        KEYBOARD_LOGIN,
        /// <summary>
        /// KEYBOARD_CHNNEL
        /// 键盘CHNNEL键
        /// </summary>
        KEYBOARD_CHNNEL,
        /// <summary>
        /// Activate alarm input
        /// 触发报警输入
        /// </summary>
        TRIGGER_ALARM_IN = 100,
        /// <summary>
        /// Activate alarm output 
        /// 触发报警输出
        /// </summary>
        TRIGGER_ALARM_OUT,
        /// <summary>
        /// Matrix control 
        /// 矩阵控制
        /// </summary>
        MATRIX,
        /// <summary>
        /// SD card control(for IPC series). Please refer to HDD control
        /// SD卡控制(IPC产品)参数同硬盘控制
        /// </summary>
        SDCARD,
        /// <summary>
        /// Burner control:begin burning
        /// 刻录机控制,开始刻录
        /// </summary>
        BURNING_START,
        /// <summary>
        /// Burner control:stop burning 
        /// 刻录机控制,结束刻录
        /// </summary>
        BURNING_STOP,
        /// <summary>
        /// Burner control:overlay password(The string ended with '\0'. Max length is 8 bits. )
        /// 刻录机控制,叠加密码(以'\0'为结尾的字符串,最大长度8位)
        /// </summary>
        BURNING_ADDPWD,
        /// <summary>
        /// Burner control:overlay head title(The string ended with '\0'. Max length is 1024 bytes. Use '\n' to Enter.)
        /// 刻录机控制,叠加片头(以'\0'为结尾的字符串,最大长度1024字节,支持分行,行分隔符'\n')
        /// </summary>
        BURNING_ADDHEAD,
        /// <summary>
        /// Burner control:overlay dot to the burned information(No parameter) 
        /// 刻录机控制,叠加打点到刻录信息(参数无)
        /// </summary>
        BURNING_ADDSIGN,
        /// <summary>
        /// Burner control:self-defined overlay (The string ended with '\0'. Max length is 1024 bytes. Use '\n' to Enter)
        /// 刻录机控制,自定义叠加(以'\0'为结尾的字符串,最大长度1024字节,支持分行,行分隔符'\n')
        /// </summary>
        BURNING_ADDCURSTOMINFO,
        /// <summary>
        /// restore device default setup 
        /// 恢复设备的默认设置
        /// </summary>
        RESTOREDEFAULT,
        /// <summary>
        /// Activate device snapshot
        /// 触发设备抓图
        /// </summary>
        CAPTURE_START,
        /// <summary>
        /// Clear log
        /// 清除日志
        /// </summary>
        CLEARLOG,
        /// <summary>
        /// Activate wireless alarm (IPC series)
        /// 触发无线报警(IPC产品)
        /// </summary>
        TRIGGER_ALARM_WIRELESS = 200,
        /// <summary>
        /// Mark important record
        /// 标识重要录像文件
        /// </summary>
        MARK_IMPORTANT_RECORD,
        /// <summary>
        /// Network hard disk partition	
        /// 网络硬盘分区
        /// </summary>
        DISK_SUBAREA,
        /// <summary>
        /// Annex burning
        /// 刻录机控制,附件刻录
        /// </summary>
        BURNING_ATTACH,
        /// <summary>
        /// Burn Pause
        /// 刻录暂停
        /// </summary>
        BURNING_PAUSE,
        /// <summary>
        /// Burn Resume
        /// 刻录继续
        /// </summary>
        BURNING_CONTINUE,
        /// <summary>
        /// Burn Postponed
        /// 刻录顺延
        /// </summary>
        BURNING_POSTPONE,
        /// <summary>
        /// OEM control
        /// 报停控制
        /// </summary>
        OEMCTRL,
        /// <summary>
        /// Start to device backup
        /// 设备备份开始
        /// </summary>
        BACKUP_START,
        /// <summary>
        /// Stop to device backup
        /// 设备备份停止
        /// </summary>
        BACKUP_STOP,
        /// <summary>
        /// Add WIFI configuration manually for car device
        /// 车载手动增加WIFI配置
        /// </summary>
        VIHICLE_WIFI_ADD,
        /// <summary>
        /// Delete WIFI configuration manually for car device
        /// 车载手动删除WIFI配置
        /// </summary>
        VIHICLE_WIFI_DEC,
        /// <summary>
        /// Start to buzzer control 
        /// 蜂鸣器控制开始
        /// </summary>
        BUZZER_START,
        /// <summary>
        /// Stop to buzzer control
        /// 蜂鸣器控制结束
        /// </summary>
        BUZZER_STOP,
        /// <summary>
        /// Reject User
        /// 剔除用户
        /// </summary>
        REJECT_USER,
        /// <summary>
        /// Shield User
        /// 屏蔽用户
        /// </summary>
        SHIELD_USER,
        /// <summary>
        /// Rain Brush
        /// 智能交通, 雨刷控制
        /// </summary>
        RAINBRUSH,
        /// <summary>
        /// manual snap (struct NET_MANUAL_SNAP_PARAMETER)
        /// 智能交通, 手动抓拍 (对应结构体NET_MANUAL_SNAP_PARAMETER)
        /// </summary>
        MANUAL_SNAP,
        /// <summary>
        /// manual ntp time adjust
        /// 手动NTP校时
        /// </summary>
        MANUAL_NTP_TIMEADJUST,
        /// <summary>
        /// navigation info and note
        /// 导航信息和短消息
        /// </summary>
        NAVIGATION_SMS,
        /// <summary>
        /// route info
        /// 路线点位信息
        /// </summary>
        ROUTE_CROSSING,
        /// <summary>
        /// backup device format
        /// 格式化备份设备
        /// </summary>
        BACKUP_FORMAT,
        /// <summary>
        /// local preview split
        /// 控制设备端本地预览分割
        /// </summary>
        DEVICE_LOCALPREVIEW_SLIPT,
        /// <summary>
        /// RAID init
        /// RAID初始化
        /// </summary>
        INIT_RAID,
        /// <summary>
        /// RAID control
        /// RAID操作
        /// </summary>
        RAID,
        /// <summary>
        /// sapredisk control
        /// 热备盘操作
        /// </summary>
        SAPREDISK,
        /// <summary>
        /// wifi connect
        /// 手动发起WIFI连接
        /// </summary>
        WIFI_CONNECT,
        /// <summary>
        /// wifi disconnect
        /// 手动断开WIFI连接
        /// </summary>
        WIFI_DISCONNECT,
        /// <summary>
        /// bufang/weibufang operation
        /// 布撤防操作
        /// </summary>
        ARMED,
        /// <summary>
        /// IP modify
        /// 修改前端IP
        /// </summary>
        IP_MODIFY,
        /// <summary>
        /// wps connect wifi
        /// wps连接wifi
        /// </summary>
        WIFI_BY_WPS,
        /// <summary>
        /// format pattion
        /// 格式化分区
        /// </summary>
        FORMAT_PATITION,
        /// <summary>
        /// eject storage device
        /// 手动卸载设备
        /// </summary>
        EJECT_STORAGE,
        /// <summary>
        /// load storage device
        /// 手动装载设备
        /// </summary>
        LOAD_STORAGE,
        /// <summary>
        /// close burner
        /// 关闭刻录机光驱门
        /// </summary>
        CLOSE_BURNER,
        /// <summary>
        /// eject burner
        /// 弹出刻录机光驱门
        /// </summary>
        EJECT_BURNER,
        /// <summary>
        /// alarm elimination
        /// 消警
        /// </summary>
        CLEAR_ALARM,
        /// <summary>
        /// TV wall information display
        /// 电视墙信息显示
        /// </summary>
        MONITORWALL_TVINFO,
        /// <summary>
        /// start Intelligent VIDEO analysis
        /// 开始视频智能分析
        /// </summary>
        START_VIDEO_ANALYSE,
        /// <summary>
        /// STOP intelligent VIDEO analysis
        /// 停止视频智能分析
        /// </summary>
        STOP_VIDEO_ANALYSE,
        /// <summary>
        /// Controlled start equipment upgrades, independently complete the upgrade process by the equipment do not need to upgrade file
        /// 控制启动设备升级,由设备独立完成升级过程,不需要传输升级文件
        /// </summary>
        UPGRADE_DEVICE,
        /// <summary>
        /// Multi-channel preview playback channel switching
        /// 切换多通道预览回放的通道
        /// </summary>
        MULTIPLAYBACK_CHANNALES,
        /// <summary>
        /// Turn on the switch power supply timing device output
        /// 电源时序器打开开关量输出口
        /// </summary>
        SEQPOWER_OPEN,
        /// <summary>
        /// Close the switch power supply timing device output
        /// 电源时序器关闭开关量输出口
        /// </summary>
        SEQPOWER_CLOSE,
        /// <summary>
        /// Power timing group open the switch quantity output
        /// 电源时序器打开开关量输出口组
        /// </summary>
        SEQPOWER_OPEN_ALL,
        /// <summary>
        /// Power sequence set close the switch quantity output
        /// 电源时序器关闭开关量输出口组
        /// </summary>
        SEQPOWER_CLOSE_ALL,
        /// <summary>
        /// PROJECTOR up
        /// 投影仪上升
        /// </summary>
        PROJECTOR_RISE,
        /// <summary>
        /// PROJECTOR drop
        /// 投影仪下降
        /// </summary>
        PROJECTOR_FALL,
        /// <summary>
        /// PROJECTOR stop
        /// 投影仪停止
        /// </summary>
        PROJECTOR_STOP,
        /// <summary>
        /// INFRARED buttons
        /// 红外按键
        /// </summary>
        INFRARED_KEY,
        /// <summary>
        /// Device START playback of audio file NET_CTRL_START_PLAYAUDIO
        /// 设备开始播放音频文件 对应的结构体NET_CTRL_START_PLAYAUDIO
        /// </summary>
        START_PLAYAUDIO,
        /// <summary>
        /// Equipment stop playback of audio file
        /// 设备停止播放音频文件
        /// </summary>
        STOP_PLAYAUDIO,
        /// <summary>
        /// open the warning signal
        /// 开启警号
        /// </summary>
        START_ALARMBELL,
        /// <summary>
        /// Close the warning signal
        /// 关闭警号
        /// </summary>
        STOP_ALARMBELL,
        /// <summary>
        /// OPEN ACCESS control NET_CTRL_ACCESS_OPEN
        /// 门禁控制-开门 对应的结构体NET_CTRL_ACCESS_OPEN
        /// </summary>
        ACCESS_OPEN,
        /// <summary>
        /// BYPASS function
        /// 设置旁路功能
        /// </summary>
        SET_BYPASS,
        /// <summary>
        /// Add records to record set number, corresponding to NET_CTRL_RECORDSET_INSERT_PARAM
        /// 添加记录,获得记录集编号,对应 NET_CTRL_RECORDSET_INSERT_PARAM
        /// </summary>
        RECORDSET_INSERT,
        /// <summary>
        /// Update a record of the number
        /// 更新某记录集编号的记录
        /// </summary>
        RECORDSET_UPDATE,
        /// <summary>
        /// According to the record set number to delete a record NET_CTRL_RECORDSET_PARAM
        /// 根据记录集编号删除某记录 NET_CTRL_RECORDSET_PARAM
        /// </summary>
        RECORDSET_REMOVE,
        /// <summary>
        /// Remove all RECORDSET information NET_CTRL_RECORDSET_PARAM
        /// 清除所有记录集信息 NET_CTRL_RECORDSET_PARAM
        /// </summary>
        RECORDSET_CLEAR,
        /// <summary>
        /// Entrance guard control - CLOSE (NET_CTRL_ACCESS_CLOSE)
        /// 门禁控制-关门 对应结构体(NET_CTRL_ACCESS_CLOSE)
        /// </summary>
        ACCESS_CLOSE,
        /// <summary>
        /// Alarm sub system activation setup
        /// 报警子系统激活设置
        /// </summary>
        ALARM_SUBSYSTEM_ACTIVE_SET,
        /// <summary>
        /// unable device open gateway
        /// 禁止设备端开闸
        /// </summary>
        FORBID_OPEN_STROBE,
        /// <summary>
        /// Enable gateway(corresponding to structure  NET_CTRL_OPEN_STROBE)
        /// 开启道闸(对应结构体 NET_CTRL_OPEN_STROBE)
        /// </summary>
        OPEN_STROBE,
        /// <summary>
        /// Talk no response
        /// 对讲拒绝接听
        /// </summary>
        TALKING_REFUSE,
        /// <summary>
        /// bufang-weibufang operation
        /// 布撤防操作
        /// </summary>
        ARMED_EX,
        /// <summary>
        /// Remote talk control
        /// 远程对讲控制
        /// </summary>
        REMOTE_TALK,
        /// <summary>
        /// Net keyboard control
        /// 网络键盘控制
        /// </summary>
        NET_KEYBOARD = 400,
        /// <summary>
        /// Open air conditioner
        /// 打开空调
        /// </summary>
        AIRCONDITION_OPEN,
        /// <summary>
        /// Close air-conditioner
        /// 关闭空调
        /// </summary>
        AIRCONDITION_CLOSE,
        /// <summary>
        /// Set 
        /// 设定空调温度
        /// </summary>
        AIRCONDITION_SET_TEMPERATURE,
        /// <summary>
        /// Adjust 
        /// 调节空调温度
        /// </summary>
        AIRCONDITION_ADJUST_TEMPERATURE,
        /// <summary>
        /// Set air work mode
        /// 设置空调工作模式
        /// </summary>
        AIRCONDITION_SETMODE,
        /// <summary>
        /// Set fan mode
        /// 设置空调送风模式
        /// </summary>
        AIRCONDITION_SETWINDMODE,
        /// <summary>
        /// Recover device default and set new protocol
        /// 恢复设备的默认设置新协议
        /// </summary>
        RESTOREDEFAULT_EX,
        /// <summary>
        /// send event to device
        /// 向设备发送事件
        /// </summary>
        NOTIFY_EVENT,
        /// <summary>
        /// mute alarm setup
        /// 无声报警设置
        /// </summary>
        SILENT_ALARM_SET,
        /// <summary>
        /// device start sound report
        /// 设备开始语音播报
        /// </summary>
        START_PLAYAUDIOEX,
        /// <summary>
        /// device stop sound report
        /// 设备停止语音播报
        /// </summary>
        STOP_PLAYAUDIOEX,
        /// <summary>
        /// close gateway
        /// 关闭道闸
        /// </summary>
        CLOSE_STROBE,
        /// <summary>
        /// set parking reservation status
        /// 设置车位预定状态
        /// </summary>
        SET_ORDER_STATE,
        /// <summary>
        /// add  record, get record no. NET_CTRL_RECORDSET_INSERT_PARAM
        /// 添加记录,获得记录集编号 NET_CTRL_RECORDSET_INSERT_PARAM
        /// </summary>
        RECORDSET_INSERTEX,
        /// <summary>
        /// update  print record  NET_CTRL_RECORDSET_PARAM
        /// 更新记录集编号的记录  NET_CTRL_RECORDSET_PARAM
        /// </summary>
        RECORDSET_UPDATEEX,
        /// <summary>
        /// collection, corresponding to NET_CTRL_CAPTURE_FINGER_PRINT
        /// 采集信息，对应NET_CTRL_CAPTURE_FINGER_PRINT
        /// </summary>
        CAPTURE_FINGER_PRINT,
        /// <summary>
        /// Parking lot entrance/exit controller LED setup
        /// 停车场出入口控制器LED设置
        /// </summary>
        ECK_LED_SET,
        /// <summary>
        /// Intelligent parking system in/out device IC card info import
        /// 智能停车系统出入口机IC卡信息导入
        /// </summary>
        ECK_IC_CARD_IMPORT,
        /// <summary>
        /// Intelligent parking system in/out device IC card info sync command, receive this command, device will delete original IC card info
        /// 智能停车系统出入口机IC卡信息同步指令,收到此指令后,设备删除原有IC卡信息
        /// </summary>
        ECK_SYNC_IC_CARD,
        /// <summary>
        /// Delete specific wireless device < NET_CTRL_LOWRATEWPAN_REMOVE >
        /// 删除指定无线设备 < NET_CTRL_LOWRATEWPAN_REMOVE >
        /// </summary>
        LOWRATEWPAN_REMOVE,
        /// <summary>
        /// Modify wireless device info
        /// 修改无线设备信息
        /// </summary>
        LOWRATEWPAN_MODIFY,
        /// <summary>
        /// Set up the vehicle spot information of the machine at the passageway of the intelligent parking system
        /// 智能停车系统出入口机设置车位信息
        /// </summary>
        ECK_SET_PARK_INFO,
        /// <summary>
        /// hang up the video phone
        /// 挂断视频电话
        /// </summary>
        VTP_DISCONNECT,
        /// <summary>
        /// the update of the remote multimedia files
        /// 远程投放多媒体文件更新
        /// </summary>
        UPDATE_FILES,
        /// <summary>
        /// Save up the relationship between the hyponymy matrixes
        /// 保存上下位矩阵输出关系
        /// </summary>
        MATRIX_SAVE_SWITCH,
        /// <summary>
        /// recover the relationship between the hyponymy matrixes
        /// 恢复上下位矩阵输出关系
        /// </summary>
        MATRIX_RESTORE_SWITCH,
        /// <summary>
        /// video talk phone divert ack
        /// 呼叫转发响应
        /// </summary>
        VTP_DIVERTACK,
        /// <summary>
        /// Rain-brush brush one time, efficient when set as manual mode
        /// 雨刷来回刷一次,雨刷模式配置为手动模式时有效
        /// </summary>
        RAINBRUSH_MOVEONCE,
        /// <summary>
        /// Rain-brush brush cyclic, efficient when set as manal mode
        /// 雨刷来回循环刷,雨刷模式配置为手动模式时有效
        /// </summary>
        RAINBRUSH_MOVECONTINUOUSLY,
        /// <summary>
        /// Rain-brush stop, efficient when set as manal mode
        /// 雨刷停止刷,雨刷模式配置为手动模式时有效
        /// </summary>
        RAINBRUSH_STOPMOVE,
        /// <summary>
        /// affirm the alarm event
        /// 报警事件确认
        /// </summary>
        ALARM_ACK,
        /// <summary>
        /// Batch import record set info
        /// 批量导入记录集信息
        /// </summary>
        RECORDSET_IMPORT,
        /// <summary>
        /// Delivery file to the video output port, building intercom use, run at the same time(Corresponding to NET_CTRL_DELIVERY_FILE)
        /// 向视频输出口投放视频和图片文件, 楼宇对讲使用，同一时间投放(对应NET_CTRL_DELIVERY_FILE)
        /// </summary>
        DELIVERY_FILE,
        /// <summary>
        /// Force breaking rule(Corresponding to NET_CTRL_FORCE_BREAKING)
        /// 强制产生违章类型(对应 NET_CTRL_FORCE_BREAKING)
        /// </summary>
        FORCE_BREAKING,
        /// <summary>
        /// Restore the configuration except the prescribed config.
        ///  恢复除指定配置外的其他配置为默认。
        /// </summary>
        RESTORE_EXCEPT,
        /// <summary>
        /// Set park info, platform is set to camera,the content is used for the dot matrix display(corresponding to NET_CTRL_SET_PARK_INFO)
        /// 设置停车信息，平台设置给相机，内容用于点阵屏显示(对应结构体 NET_CTRL_SET_PARK_INFO)
        /// </summary>
        SET_PARK_INFO,
        /// <summary>
        /// clear the statistics for the period and start again from 0 (Corresponding to NET_CTRL_CLEAR_SECTION_STAT_INFO)
        /// 清除当前时间段内人数统计信息, 重新从0开始计算(对应结构体NET_CTRL_CLEAR_SECTION_STAT_INFO)
        /// </summary>
        CLEAR_SECTION_STAT,
        /// <summary>
        /// Send video and image files to video output, Used by car, The ad time is served separately(Corresponding NET_CTRL_DELIVERY_FILE_BYCAR)
        /// 向视频输出口投放视频和图片文件, 车载使用，广告单独时间投放(对应NET_CTRL_DELIVERY_FILE_BYCAR)
        /// </summary>
        DELIVERY_FILE_BYCAR,
        /// <summary>
        /// 设置诱导屏显示内容(对应结构体 NET_CTRL_ECK_GUIDINGPANEL_CONTENT)
        /// </summary>
        ECK_GUIDINGPANEL_CONTENT,
        /// <summary>
        /// 设置门禁安全等级(对应结构体，pInBuf= NET_IN_SET_SAFE_LEVEL*, pOutBuf= NET_OUT_SET_SAFE_LEVEL* )
        /// </summary>
        SET_SAFE_LEVEL,
        /// <summary>
        /// 对讲请求回复(对应结构体 NET_CTRL_VTP_INVITEACK)
        /// </summary>
        VTP_INVITEACK,
        /// <summary>
        /// 门禁控制-重置密码(对应结构体 NET_CTRL_ACCESS_RESET_PASSWORD)
        /// </summary>
        ACCESS_RESET_PASSWORD,
        /// <summary>
        /// 门禁控制-呼梯(对应结构体 NET_CTRL_ACCESS_CALL_LIFT)
        /// </summary>
        ACCESS_CALL_LIFT,

        /// <summary>
        /// Enable or unable thermal shutter
        /// 设置热成像快门启用/禁用
        /// </summary>
        THERMO_GRAPHY_ENSHUTTER = 0x10000,
        /// <summary>
        /// set the OSD of the TM item to be highlighted
        /// 设置测温项的osd为高亮
        /// </summary>
        RADIOMETRY_SETOSDMARK,
        /// <summary>
        /// Enable audio record and get audio name
        /// 开启音频录音并得到录音名
        /// </summary>
        AUDIO_REC_START_NAME,
        /// <summary>
        /// Close audio file and return file name
        /// 关闭音频录音并返回文件名称
        /// </summary>
        AUDIO_REC_STOP_NAME,
        /// <summary>
        /// Manual snap
        /// 即时抓图
        /// </summary>
        SNAP_MNG_SNAP_SHOT,
        /// <summary>
        /// Forcedly sync buffer data to the database and close the database
        /// 强制同步缓存数据到数据库并关闭数据库
        /// </summary>
        LOG_STOP,
        /// <summary>
        /// Resume database
        /// 恢复数据库
        /// </summary>
        LOG_RESUME,
        /// <summary>
        /// Add a POS device
        /// 增加一个Pos设备
        /// </summary>
        POS_ADD,
        /// <summary>
        /// Del a POS device
        /// 删除一个Pos设备
        /// </summary>
        POS_REMOVE,
        /// <summary>
        /// Del several POS device
        /// 批量删除Pos设备
        /// </summary>
        POS_REMOVE_MULTI,
        /// <summary>
        /// Modify a POS device
        /// 修改一个Pos设备
        /// </summary>
        POS_MODIFY,
        /// <summary>
        /// Trigger alarm with sound
        /// 触发有声报警
        /// </summary>
        SET_SOUND_ALARM,
        /// <summary>
        /// audiomatrix silence
        /// 音频举证一键静音控制
        /// </summary>
        AUDIO_MATRIX_SILENCE,
        /// <summary>
        /// manual upload picture
        /// 设置手动上传
        /// </summary>
        MANUAL_UPLOAD_PICTURE,
        /// <summary>
        /// reboot network decoding device
        /// 重启网络解码设备
        /// </summary>
        REBOOT_NET_DECODING_DEV,
        /// <summary>
        /// ParkingControl about setting IC Sender 
        /// ParkingControl 设置发卡设备
        /// </summary>
        SET_IC_SENDER,
        /// <summary>
        /// set the media type ,e.g. audio only,video only , audio & video
        /// 设置预览码流组成,如仅音频,仅视频,音视频
        /// </summary>
        SET_MEDIAKIND,
        /// <summary>
        /// Add wireless device info < NET_CTRL_LOWRATEWPAN_ADD >
        /// 增加无线设备信息 < NET_CTRL_LOWRATEWPAN_ADD >
        /// </summary>
        LOWRATEWPAN_ADD,
        /// <summary>
        /// remove all the wireless device info < NET_CTRL_LOWRATEWPAN_REMOVEALL >
        /// 删除所有的无线设备信息 < NET_CTRL_LOWRATEWPAN_REMOVEALL >
        /// </summary>
        LOWRATEWPAN_REMOVEALL,
        /// <summary>
        /// Set the work mode of door
        /// 设置门锁工作模式
        /// </summary>
        SET_DOOR_WORK_MODE,
        /// <summary>
        /// Test Mail
        /// 测试邮件
        /// </summary>
        TEST_MAIL,
        /// <summary>
        /// Control smart switch
        /// 控制智能开关
        /// </summary>
        CONTROL_SMART_SWITCH,
        /// <summary>
        /// Set the work mode of the detector
        /// 设置探测器的工作模式 
        /// </summary>
        LOWRATEWPAN_SETWORKMODE,
        /// <summary>
        /// 发送同轴IO控制命令(对应结构体pInBuf = NET_IN_CONTROL_COAXIAL_CONTROL_IO*, pOutBUf = NET_OUT_CONTROL_COAXIAL_CONTROL_IO*)
        /// </summary>
        COAXIAL_CONTROL_IO,
        /// <summary>
        /// 开启无线警号 (对应结构体pInBuf = NET_IN_START_REMOTELOWRATEWPAN_ALARMBELL*, pOutBUf = NET_OUT_START_REMOTELOWRATEWPAN_ALARMBELL*)
        /// </summary>
        START_REMOTELOWRATEWPAN_ALARMBELL,
        /// <summary>
        /// 关闭无线警号 (对应结构体pInBuf = NET_IN_STOP_REMOTELOWRATEWPAN_ALARMBELL*, pOutBUf = NET_OUT_STOP_REMOTELOWRATEWPAN_ALARMBELL*)
        /// </summary>
        STOP_REMOTELOWRATEWPAN_ALARMBELL,
        /// <summary>
        /// 热成像FFC校准(对应结构体 pInBuf = NET_IN_THERMO_DO_FFC *,pOutBuf = NET_OUT_THERMO_DO_FFC *)
        /// </summary>
        THERMO_DO_FFC,
        /// <summary>
        /// 热成像双目定焦调(对应结构体 pInBuf = NET_IN_THERMO_FIX_FOCUS *,pOutBuf = NET_OUT_THERMO_FIX_FOCUS *)
        /// </summary>
        THERMO_FIX_FOCUS,
        /// <summary>
        /// 设置对讲状态(对应结构体pInBuf = NET_IN_VTP_THIRDCALL_STATUS*, pOutBuf = NET_OUT_VTP_THIRDCALL_STATUS*)
        /// </summary>
        SET_THIRD_CALLSTATUS,
        /// <summary>
        /// 清除用户进出门状态 (对应结构体pInBuf = NET_IN_ACCESS_CLEAR_STATUS*, pOutBuf = NET_OUT_ACCESS_CLEAR_STATUS *)
        /// </summary>
        ACCESS_CLEAR_STATUS,
        /// <summary>
        /// 查询/设置用户进出门记录 (对应结构体pInBuf = NET_IN_ACCESS_DEAL_RECORD*, pOutBuf = NET_OUT_ACCESS_DEAL_RECORD*)
        /// </summary>
        ACCESS_DEAL_RECORD,
        /// <summary>
        /// 向视频输出口查询广告信息,楼宇对讲使用,(对应NET_CTRL_QUERY_DELIVERY_FILE)
        /// </summary>
        QUERY_DELIVERED_FILE,
        /// <summary>
        /// 设置停车控制信息(点阵屏和语音播报的控制)(对应结构体pInBuf = NET_IN_SET_PARK_CONTROL_INFO*, pOutBuf = NET_OUT_SET_PARK_CONTROL_INFO*)
        /// </summary>
        SET_PARK_CONTROL_INFO,
        /// <summary>
        /// Set accessory information (Corresponding structure pInBuf = NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM *,pOutBuf = NULL)
        /// 设置配件信息(对应结构体pInBuf = NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM *,pOutBuf = NULL)
        /// </summary>l13936252735
        NET_CTRL_LOWRATEWPAN_SET_ACCESSORY_PARAM = 0x10101,

    }

    /// <summary>
    /// Manual snap parameter sturct
    /// 手动抓拍参数
    /// </summary>
    public struct NET_MANUAL_SNAP_PARAMETER
    {
        /// <summary>
        /// snap channel,start with 0
        /// 抓图通道,从0开始
        /// </summary>
        public int nChannel;
        /// <summary>
        /// snap sequence string
        /// 抓图序列号字符串
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string bySequence;
        /// <summary>
        /// reserved
        /// 保留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 60)]
        public byte[] byReserved;
    }
    #region<<Monitor Wall>>
    /// <summary>
    /// Matrix sub card list
    /// 矩阵子卡列表
    /// </summary>
    public struct NET_MATRIX_CARD_LIST
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// count
        /// 子卡数量
        /// </summary>
        public int nCount;
        /// <summary>
        /// card info
        /// 子卡列表
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_MATRIX_CARD[] stuCards;
    }

    /// <summary>
    /// Matrix sub card info
    /// 矩阵子卡信息
    /// </summary>
    public struct NET_MATRIX_CARD
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Valid or not
        /// 是否有效
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// Sub card type
        /// 子卡类型
        /// </summary>
        public uint dwCardType;
        /// <summary>
        /// Signal interface type, "CVBS", "VGA", "DVI"...
        /// 信号接口类型, "CVBS", "VGA", "DVI"...
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szInterface;
        /// <summary>
        /// Device IP or domain name. The sub card that has no network conneciton can be null
        /// 设备ip或域名, 无网络接口的子卡可以为空
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szAddress;
        /// <summary>
        /// Port No. The sub card that has no network conneciton can be 0
        /// 端口号, 无网络接口的子卡可以为0
        /// </summary>
        public int nPort;
        /// <summary>
        /// Definition. 0=standard definition. 1=High definition
        /// 清晰度, 0=标清, 1=高清
        /// </summary>
        public int nDefinition;
        /// <summary>
        /// Video input channel amount
        /// 视频输入通道数
        /// </summary>
        public int nVideoInChn;
        /// <summary>
        /// Audio input channel amount
        /// 音频输入通道数
        /// </summary>
        public int nAudioInChn;
        /// <summary>
        /// Video output channel amount
        /// 视频输出通道数
        /// </summary>
        public int nVideoOutChn;
        /// <summary>
        /// Audio output channel amount
        /// 音频输出通道数
        /// </summary>
        public int nAudioOutChn;
        /// <summary>
        /// Video encode channel amount
        /// 视频编码通道数
        /// </summary>
        public int nVideoEncChn;
        /// <summary>
        /// Audio encode channel amount
        /// 音频编码通道数
        /// </summary>
        public int nAudioEncChn;
        /// <summary>
        /// Video decode channel amount
        /// 视频解码通道数
        /// </summary>
        public int nVideoDecChn;
        /// <summary>
        /// Audio decode channel amount
        /// 音频解码通道数
        /// </summary>
        public int nAudioDecChn;
        /// <summary>
        /// Status: 0-OK, 1-no respond, 2-network disconnection, 3-conflict, 4-upgrading now
        /// 状态: -1-未知, 0-正常, 1-无响应, 2-网络掉线, 3-冲突, 4-正在升级, 5-链路状态异常, 6-子板背板未插好, 7-程序版本出错
        /// </summary>
        public int nStauts;
        /// <summary>
        /// COM amount
        /// 串口数
        /// </summary>
        public int nCommPorts;
        /// <summary>
        /// Video input channel min value
        /// 视频输入通道号最小值
        /// </summary>
        public int nVideoInChnMin;
        /// <summary>
        /// Video input channel max value
        /// 视频输入通道号最大值
        /// </summary>
        public int nVideoInChnMax;
        /// <summary>
        /// Audio input channel min value
        /// 音频输入通道号最小值
        /// </summary>
        public int nAudioInChnMin;
        /// <summary>
        /// Audio input channel max value
        /// 音频输入通道号最大值
        /// </summary>
        public int nAudioInChnMax;
        /// <summary>
        /// Video output channel min value
        /// 视频输出通道号最小值
        /// </summary>
        public int nVideoOutChnMin;
        /// <summary>
        /// Video output channel max value
        /// 视频输出通道号最大值
        /// </summary>
        public int nVideoOutChnMax;
        /// <summary>
        /// Audio output channel min value
        /// 音频输出通道号最小值
        /// </summary>
        public int nAudioOutChnMin;
        /// <summary>
        /// Audio output channel max value
        /// 音频输出通道号最大值
        /// </summary>
        public int nAudioOutChnMax;
        /// <summary>
        /// Video encode channel min value
        /// 视频编码通道号最小值
        /// </summary>
        public int nVideoEncChnMin;
        /// <summary>
        /// Video encode channel max value
        /// 视频编码通道号最大值
        /// </summary>
        public int nVideoEncChnMax;
        /// <summary>
        /// Audio encode channel min value
        /// 音频编码通道号最小值
        /// </summary>
        public int nAudioEncChnMin;
        /// <summary>
        /// Audio encode channel max value
        /// 音频编码通道号最大值
        /// </summary>
        public int nAudioEncChnMax;
        /// <summary>
        /// Video decode channel min value
        /// 视频解码通道号最小值
        /// </summary>
        public int nVideoDecChnMin;
        /// <summary>
        /// Video decode channel max value
        /// 视频解码通道号最大值
        /// </summary>
        public int nVideoDecChnMax;
        /// <summary>
        /// Audio decode channel min value
        /// 音频解码通道号最小值
        /// </summary>
        public int nAudioDecChnMin;
        /// <summary>
        /// Audio decode channel max value
        /// 音频解码通道号最大值
        /// </summary>
        public int nAudioDecChnMax;
        /// <summary>
        /// number of cascade channel
        /// 级联通道数
        /// </summary>
        public int nCascadeChannels;
        /// <summary>
        /// cascade channel bitrate (Mbps)
        /// 级联通道带宽, 单位Mbps
        /// </summary>
        public int nCascadeChannelBitrate;
        /// <summary>
        /// Alarm input channel number 
        /// 报警输入通道数
        /// </summary>
        public int nAlarmInChnCount;
        /// <summary>
        /// Alarm input channel number minimum value
        /// 报警输入通道号最小值
        /// </summary>
        public int nAlarmInChnMin;
        /// <summary>
        /// Alarm input channel number maximum value
        /// 报警输入通道号最大值
        /// </summary>
        public int nAlarmInChnMax;
        /// <summary>
        /// Alarm output channel number 
        /// 报警输出通道数
        /// </summary>
        public int nAlarmOutChnCount;
        /// <summary>
        /// Alarm output channel number minimum value
        /// 报警输入通道号最小值
        /// </summary>
        public int nAlarmOutChnMin;
        /// <summary>
        /// Alarm output channel number maximum value
        /// 报警输入通道号最大值
        /// </summary>
        public int nAlarmOutChnMax;
        /// <summary>
        /// Intelligent analysis of channel number 
        /// 智能分析通道数
        /// </summary>
        public int nVideoAnalyseChnCount;
        /// <summary>
        /// Intelligent analysis of channel number minimum value
        /// 智能分析通道号最小值
        /// </summary>
        public int nVideoAnalyseChnMin;
        /// <summary>
        /// Intelligent analysis of channel number maximum value
        /// 智能分析通道号最大值
        /// </summary>
        public int nVideoAnalyseChnMax;
        /// <summary>
        /// minimum value of serial port number
        /// 串口号最小值
        /// </summary>
        public int nCommPortMin;
        /// <summary>
        /// maximum value of serial port number
        /// 串口号最大值
        /// </summary>
        public int nCommPortMax;
        /// <summary>
        /// Version info
        /// 版本信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVersion;
        /// <summary>
        /// compile time
        /// 编译时间
        /// </summary>
        public NET_TIME stuBuildTime;
        /// <summary>
        /// BIOS Version
        /// BIOS版本号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szBIOSVersion;
        /// <summary>
        /// MAC address
        /// MAC地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szMAC;
        /// <summary>
        /// / 电视墙回显通道数目
        /// / Number of TV wall display channels
        /// </summary>
        public uint nMonitorWallEchoDisplayChannels;
        /// <summary>
        /// / 电视墙回显逻辑通道号枚举有效个数
        /// / TV wall display logic channel number enumeration of valid numbers
        /// </summary>
        public uint nMonitorWallEchoDisplayChannelsEnumNum;
        /// <summary>
        /// / 电视墙回显逻辑通道号枚举
        /// / TV wall display logic channel number enumeration
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public uint[] nMonitorWallEchoDisplayChannelsEnum;
        /// <summary>
        /// / 视频输出逻辑通道号枚举有效个数
        /// / List the valid number of logical channel numbers for video output
        /// </summary>
        public int nVideoOutputChannelsEnumCount;
        /// <summary>
        /// / 视频输出逻辑通道号枚举
        /// / Video output logic channel number enumeration
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public int[] nVideoOutputChannelsEnum;
    }

    /// <summary>
    /// composite screen channel information
    /// 融合屏通道信息
    /// </summary>
    public struct NET_COMPOSITE_CHANNEL
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// monitor wall name
        /// 电视墙名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szMonitorWallName;
        /// <summary>
        /// composite ID
        /// 融合屏ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCompositeID;
        /// <summary>
        /// virtual channel
        /// 虚拟通道号
        /// </summary>
        public int nVirtualChannel;
    }

    /// <summary>
    /// Split mode
    /// 分割模式
    /// </summary>
    public enum EM_SPLIT_MODE
    {
        /// <summary>
        /// 1画面
        /// 1-window
        /// </summary>
        EM_A_SPLIT_1 = 1,
        /// <summary>
        /// 2画面
        /// 2-window
        /// </summary>
        EM_A_SPLIT_2 = 2,
        /// <summary>
        /// 4画面
        /// 4-window
        /// </summary>
        EM_A_SPLIT_4 = 4,
        /// <summary>
        /// 5画面
        /// 5-window
        /// </summary>
        EM_A_SPLIT_5 = 5,
        /// <summary>
        /// 6画面
        /// 6-window
        /// </summary>
        EM_A_SPLIT_6 = 6,
        /// <summary>
        /// 8画面
        /// 8-window
        /// </summary>
        EM_A_SPLIT_8 = 8,
        /// <summary>
        /// 9画面
        /// 9-window
        /// </summary>
        EM_A_SPLIT_9 = 9,
        /// <summary>
        /// 12画面
        /// 12-window
        /// </summary>
        EM_A_SPLIT_12 = 12,
        /// <summary>
        /// 16画面
        /// 16-window
        /// </summary>
        EM_A_SPLIT_16 = 16,
        /// <summary>
        /// 20画面
        /// 20-window
        /// </summary>
        EM_A_SPLIT_20 = 20,
        /// <summary>
        /// 25画面
        /// 25-window
        /// </summary>
        EM_A_SPLIT_25 = 25,
        /// <summary>
        /// 36画面
        /// 36-window
        /// </summary>
        EM_A_SPLIT_36 = 36,
        /// <summary>
        /// 64画面
        /// 64-window
        /// </summary>
        EM_A_SPLIT_64 = 64,
        /// <summary>
        /// 144画面
        /// 144-window
        /// </summary>
        EM_A_SPLIT_144 = 144,
        /// <summary>
        /// 画中画模式, 1个全屏大画面+1个小画面窗口
        /// PIP mode.1-full screen+1-small window
        /// </summary>
        EM_A_PIP_1 = 1001,
        /// <summary>
        /// 画中画模式, 1个全屏大画面+3个小画面窗口
        /// PIP mode.1-full screen+3-small window
        /// </summary>
        EM_A_PIP_3 = 1003,
        /// <summary>
        /// 自由开窗模式,可以自由创建、关闭窗口,自由设置窗口位置和Z轴次序
        /// free open window mode,are free to create,close, window position related to the z axis
        /// </summary>
        EM_A_SPLIT_FREE = 2000,
        /// <summary>
        /// 融合屏成员1分割
        /// integration of a split screen
        /// </summary>
        EM_A_COMPOSITE_SPLIT_1 = 3001,
        /// <summary>
        /// 融合屏成员4分割
        /// fusion of four split screen
        /// </summary>
        EM_A_COMPOSITE_SPLIT_4 = 3004,
        /// <summary>
        /// 3画面
        /// 3-window
        /// </summary>
        EM_A_SPLIT_3 = 10,
        /// <summary>
        /// 3画面倒品
        /// 3-window(bottom)
        /// </summary>
        EM_A_SPLIT_3B = 11,
        /// <summary>
        /// 4个画面, 一个大画面在左边，3个小画面在右边排成一列
        /// 4-window, 1 big on the left, 3 samll on the right in a row
        /// </summary>
        EM_A_SPLIT_4A = 4001,
    }

    /// <summary>
    /// split display type
    /// 分割显示类型
    /// </summary>
    public enum EM_SPLIT_DISPLAY_TYPE
    {
        /// <summary>
        /// Common display types
        /// 普通显示类型
        /// </summary>
        GENERAL = 1,
        /// <summary>
        /// PIP Display Type
        /// 画中画显示类型
        /// </summary>
        PIP = 2,
        /// <summary>
        /// Custom Display Type
        /// 自由组合分割模式
        /// </summary>
        CUSTOM = 3,
    }

    /// <summary>
    /// Split capability
    /// 分割能力
    /// </summary>
    public struct NET_SPLIT_CAPS
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// The split amount supported
        /// 支持的分割模式数量
        /// </summary>
        public int nModeCount;
        /// <summary>
        /// The split mode supported
        /// 支持的分割模式
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public EM_SPLIT_MODE[] emSplitMode;
        /// <summary>
        /// Max display source allocation amount
        /// 最大显示源配置数
        /// </summary>
        public int nMaxSourceCount;
        /// <summary>
        /// count of free window support
        /// 支持的最大自由开窗数目
        /// </summary>
        public int nFreeWindowCount;
        /// <summary>
        /// support collection
        /// 是否支持区块收藏
        /// </summary>
        public bool bCollectionSupported;
        /// <summary>
        /// mask means multiple display types, see EM_SPLIT_DISPLAY_TYPE, under each mode in note , displayed content depends on "PicInPic", each mode displayed content by NVD old rule, as depending on DisChntext, Compatible, no this item, default is normal display type as"General"
        /// 掩码表示多个显示类型,具体见EM_SPLIT_DISPLAY_TYPE（注释各模式下显示内容由"PicInPic"决定, 各模式下显示内容按NVD旧有规则决定（即DisChn字段决定）。兼容,没有这一个项时,默认为普通显示类型,即"General"）
        /// </summary>
        public uint dwDisplayType;
        /// <summary>
        /// PIP support split mode quantity
        /// 画中画支持的分割模式数量
        /// </summary>
        public int nPIPModeCount;
        /// <summary>
        /// PIP supported split mode
        /// 画中画支持的分割模式
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public EM_SPLIT_MODE[] emPIPSplitMode;
        /// <summary>
        /// supported input channel
        /// 支持的输入通道
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nInputChannels;
        /// <summary>
        /// supported input channel quantity, 0 means no input channel limit
        /// 支持的输入通道个数, 0表示没有输入通道限制
        /// </summary>
        public int nInputChannelCount;
        /// <summary>
        /// enable split mode quantity
        /// 启动分割模式数量
        /// </summary>
        public int nBootModeCount;
        /// <summary>
        /// support enable default video split mode
        /// 支持的启动默认画面分割模式
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public EM_SPLIT_MODE[] emBootMode;
    }

    /// <summary>
    /// Split mode info
    /// 一屏幕的分割模式信息
    /// </summary>
    public struct NET_SPLIT_MODE_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Split mode
        /// 分割模式
        /// </summary>
        public EM_SPLIT_MODE emSplitMode;
        /// <summary>
        /// Group SN
        /// 分组序号
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// display type, see EM_SPLIT_DISPLAY_TYPE, under each mode in note , displayed content depends on "PicInPic", each mode displayed content by NVD old rule, as depending on DisChntext, . Compatible, no this item, default is normal display type as"General"
        /// 显示类型；具体见EM_SPLIT_DISPLAY_TYPE（注释各模式下显示内容由"PicInPic"决定, 各模式下显示内容按NVD旧有规则决定（即DisChn字段决定）。兼容,没有这一个项时,默认为普通显示类型,即"General"）
        /// </summary>
        public uint dwDisplayType;
    }

    /// <summary>
    /// OpenSplitWindow's interface input param(open window)
    /// OpenSplitWindow接口输入参数(开窗)
    /// </summary>
    public struct NET_IN_SPLIT_OPEN_WINDOW
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel no.
        /// 通道号(屏号)
        /// </summary>
        public int nChannel;
        /// <summary>
        /// windon position, 0~8192
        /// 窗口位置, 0~8192
        /// </summary>
        public NET_A_RECT_EX stuRect;
        /// <summary>
        /// coordinate whether meet the confitions
        /// 坐标是否满足直通条件, 直通是指拼接屏方式下,此窗口区域正好为物理屏区域
        /// </summary>
        public bool bDirectable;
    }

    /// <summary>
    /// OpenSplitWindow's interface output param(open window)
    /// OpenSplitWindow接口输出参数(开窗)
    /// </summary>
    public struct NET_OUT_SPLIT_OPEN_WINDOW
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// window ID
        /// 窗口序号
        /// </summary>
        public uint nWindowID;
        /// <summary>
        /// window order
        /// 窗口次序
        /// </summary>
        public uint nZOrder;
    }

    /// <summary>
    /// CLIENT_MatrixSetCameras接口的输入参数
    /// CLIENT_MatrixSetCameras's interface input param
    /// </summary>
    public struct NET_IN_MATRIX_SET_CAMERAS
    {
        public uint dwSize;
        /// <summary>
        /// 显示源信息数组, 用户分配内存，大小为sizeof(NET_MATRIX_CAMERA_INFO)*nCameraCount
        /// array,the space application by the user,apply to sizeof(NET_MATRIX_CAMERA_INFO)*nCameraCount
        /// </summary>
        public IntPtr pstuCameras;
        /// <summary>
        /// 显示源数组大小
        /// size of source array
        /// </summary>
        public int nCameraCount;
    }

    /// <summary>
    /// CLIENT_MatrixSetCameras接口的输出参数
    /// CLIENT_MatrixSetCameras's interface output param
    /// </summary>
    public struct NET_OUT_MATRIX_SET_CAMERAS
    {
        /// <summary>
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// MatrixGetCameras's interface input param
    /// MatrixGetCameras接口的输入参数
    /// </summary>
    public struct NET_IN_MATRIX_GET_CAMERAS
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// MatrixGetCameras's interface output param
    /// MatrixGetCameras接口的输出参数
    /// </summary>
    public struct NET_OUT_MATRIX_GET_CAMERAS
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// size of source array,the space application by the user,apply to sizeof(NET_MATRIX_CAMERA_INFO)*nMaxCameraCount
        /// 显示源信息数组, 用户分配内存,大小为sizeof(NET_MATRIX_CAMERA_INFO)*nMaxCameraCount
        /// </summary>
        public IntPtr pstuCameras;
        /// <summary>
        /// count
        /// 显示源数组大小
        /// </summary>
        public int nMaxCameraCount;
        /// <summary>
        /// return count
        /// 返回的显示源数量
        /// </summary>
        public int nRetCameraCount;
    }

    /// <summary>
    /// available according to the source of information
    /// 可用的显示源信息
    /// </summary>
    public struct NET_MATRIX_CAMERA_INFO
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// name
        /// 名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// device ID
        /// 设备ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDevID;
        /// <summary>
        /// control ID
        /// 控制ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szControlID;
        /// <summary>
        /// channel ID, DeviceID is unique
        /// 通道号, DeviceID设备内唯一
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// unique channel
        /// 设备内统一编号的唯一通道号
        /// </summary>
        public int nUniqueChannel;
        /// <summary>
        /// support remote device or not
        /// 是否远程设备
        /// </summary>
        public bool bRemoteDevice;
        /// <summary>
        /// info of remote device
        /// 远程设备信息
        /// </summary>
        public NET_REMOTE_DEVICE stuRemoteDevice;
        /// <summary>
        /// stream type
        /// 视频码流类型
        /// </summary>
        public EM_STREAM_TYPE emStreamType;
        /// <summary>
        /// Channel Types 
        /// 通道类型
        /// </summary>
        public EM_LOGIC_CHN_TYPE emChannelType;
        /// <summary>
        /// Enable only when using DeviceID to add/remove a device, do not use it through DeviceInfo operation
        /// 仅在使用DeviceID添加/删除设备时的使能，通过DeviceInfo操作不要使用
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// Video stream
        /// 视频码流
        /// </summary>
        public EM_VIDEO_STREAM emVideoStream;
    }

    /// <summary>
    /// video stream type
    /// 视频码流类型
    /// </summary>
    public enum EM_STREAM_TYPE
    {
        /// <summary>
        /// Others
        /// 其它
        /// </summary>
        ERR,
        /// <summary>
        /// Main stream
        /// 主码流
        /// </summary>
        MAIN,
        /// <summary>
        /// Extra stream 1
        /// 辅码流1
        /// </summary>
        EXTRA_1,
        /// <summary>
        /// Extra stream 2
        /// 辅码流2
        /// </summary>
        EXTRA_2,
        /// <summary>
        /// Extra stream 3
        /// 辅码流3
        /// </summary>
        EXTRA_3,
        /// <summary>
        /// Snap bit stream
        /// 抓图码流
        /// </summary>
        SNAPSHOT,
        /// <summary>
        /// Object stream
        /// 物体流
        /// </summary>
        OBJECT,
        /// <summary>
        /// Auto
        /// 自动选择合适码流
        /// </summary>
        AUTO,
        /// <summary>
        /// Preview
        /// 预览裸数据码流
        /// </summary>
        PREVIEW,
        /// <summary>
        /// No video stream (audio only)
        /// 无视频码流(纯音频)
        /// </summary>
        NONE,
    }

    /// <summary>
    /// logic chnnel type
    /// 逻辑通道类型
    /// </summary>
    public enum EM_LOGIC_CHN_TYPE
    {
        /// <summary>
        /// Unknow
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// Local channel 
        /// 本地通道
        /// </summary>
        LOCAL,
        /// <summary>
        /// Remote access channel 
        /// 远程通道
        /// </summary>
        REMOTE,
        /// <summary>
        /// Synthesis of channel, for the judicial equipment contains picture in picture channel and mixing channel
        /// 合成通道, 对于庭审设备包含画中画通道和混音通道
        /// </summary>
        COMPOSE,
        /// <summary>
        /// matrix channel, including analog matrix and digital matrix
        /// 模拟矩阵通道
        /// </summary>
        MATRIX,
        /// <summary>
        /// cascading channel
        /// 级联通道
        /// </summary>
        CASCADE,
    }

    /// <summary>
    /// remote device
    /// 远程设备
    /// </summary>
    public struct NET_REMOTE_DEVICE
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// enable
        /// 使能
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// IP
        /// IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szIp;
        /// <summary>
        /// username
        /// 用户名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szUser;
        /// <summary>
        /// password
        /// 密码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szPwd;
        /// <summary>
        /// port
        /// 端口
        /// </summary>
        public int nPort;
        /// <summary>
        /// definition. 0-standard definition, 1-high definition
        /// 清晰度, 0-标清, 1-高清
        /// </summary>
        public int nDefinition;
        /// <summary>
        /// protocol type
        /// 协议类型
        /// </summary>
        public EM_DEVICE_PROTOCOL emProtocol;
        /// <summary>
        /// device name
        /// 设备名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDevName;
        /// <summary>
        /// count channel of video input
        /// 视频输入通道数
        /// </summary>
        public int nVideoInputChannels;
        /// <summary>
        /// count channel of audio input
        /// 音频输入通道数
        /// </summary>
        public int nAudioInputChannels;
        /// <summary>
        /// device type, such as IPC, DVR, NVR
        /// 设备类型
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDevClass;
        /// <summary>
        /// device type, such as IPC-HF3300
        /// 设备具体型号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDevType;
        /// <summary>
        /// Http port
        /// Http端口
        /// </summary>
        public int nHttpPort;
        /// <summary>
        /// max count of video input
        /// 视频输入通道最大数
        /// </summary>
        public int nMaxVideoInputCount;
        /// <summary>
        /// return count
        /// 返回实际通道个数
        /// </summary>
        public int nRetVideoInputCount;
        /// <summary>
        /// max count of video input, user malloc the memory,apply to sizeof(NET_VIDEO_INPUTS)*nMaxVideoInputCount
        /// 视频输入通道信息,由用户申请内存，大小为sizeof(NET_VIDEO_INPUTS)*nMaxVideoInputCount
        /// </summary>
        public IntPtr pstuVideoInputs;
        /// <summary>
        /// machine address
        /// 设备部署地
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMachineAddress;
        /// <summary>
        /// serial no.
        /// 设备序列号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szSerialNo;
        /// <summary>
        /// Rtsp Port
        /// Rtsp端口
        /// </summary>
        public int nRtspPort;
        /// <summary>
        /// username
        /// 用户名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserEx;
        /// <summary>
        /// password  
        /// 密码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPwdEx;
        /// <summary>
        /// vendor abbreviation
        /// 长商缩写
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVendorAbbr;
        /// <summary>
        /// software version
        /// 设备软件版本
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSoftwareVersion;
        /// <summary>
        /// activation time
        /// 启动时间
        /// </summary>
        public NET_TIME stuActivationTime;
        /// <summary>
        /// MAC
        /// MAC地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szMac;
        /// <summary>
        /// HttpsPort
        /// HttpsPort
        /// </summary>
        public int nHttpsPort;
        /// <summary>
        /// Reserved
        /// 保留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// / 用于REMOTE_DEVICE新增字段扩展,由用户申请内存，大小为sizeof(NET_REMOTE_DEVICE_EX)
        /// REMOTE_DEVICE extend,user malloc the memory,apply to sizeof(NET_REMOTE_DEVICE_EX)
        /// </summary>
        public IntPtr pstuRemoteDevEx;
    }

    /// <summary>
    /// Device protocol type
    /// 设备协议类型
    /// </summary>
    public enum EM_DEVICE_PROTOCOL
    {
        /// <summary>
        /// private 2nd protocol
        /// 私有2代协议
        /// </summary>
        PRIVATE2,
        /// <summary>
        /// private 3rd protocol
        /// 私有3代协议
        /// </summary>
        PRIVATE3,
        /// <summary>
        /// Onvif
        /// Onvif
        /// </summary>
        ONVIF,
        /// <summary>
        /// virtual network computer
        /// 虚拟网络计算机
        /// </summary>
        VNC,
        /// <summary>
        /// Standard TS
        /// 标准TS
        /// </summary>
        TS,
        /// <summary>
        /// ecloud
        /// 云睿接入
        /// </summary>
        ECLOUD,
        /// <summary>
        /// Add by URL
        /// 以URL形式添加
        /// </summary>
        GENERAL,
        /// <summary>
        /// GB28181
        /// GB28181
        /// </summary>
        GB28181,
        /// <summary>
        /// / hk EHome协议
        /// hk EHome protocol
        /// </summary>
        EHOME,
        /// <summary>
        /// / Sdp方式推流接入
        /// Sdp method for streaming access
        /// </summary>
        SDPPUSH,
        /// <summary>
        /// private protocol of private 
        /// 私有协议
        /// </summary>
        PRIVATE = 100,
        /// <summary>
        /// aebell
        /// 美电贝尔
        /// </summary>
        AEBELL,
        /// <summary>
        /// panasonic
        /// 松下
        /// </summary>
        PANASONIC,
        /// <summary>
        /// sony
        /// 索尼
        /// </summary>
        SONY,
        /// <summary>
        /// Dynacolor
        /// Dynacolor
        /// </summary>
        DYNACOLOR,
        /// <summary>
        /// tcsw
        /// 天城威视
        /// </summary>
        TCWS,
        /// <summary>
        /// samsung
        /// 三星
        /// </summary>
        SAMSUNG,
        /// <summary>
        /// YOKO
        /// YOKO
        /// </summary>
        YOKO,
        /// <summary>
        /// axis
        /// 安讯视
        /// </summary>
        AXIS,
        /// <summary>
        /// sanyo
        /// 三洋
        /// </summary>
        SANYO,
        /// <summary>
        /// Bosch
        /// Bosch
        /// </summary>
        BOSH,
        /// <summary>
        /// Peclo
        /// Peclo
        /// </summary>
        PECLO,
        /// <summary>
        /// Provideo
        /// Provideo
        /// </summary>
        PROVIDEO,
        /// <summary>
        /// ACTi
        /// ACTi
        /// </summary>
        ACTI,
        /// <summary>
        /// Vivotek
        /// Vivotek
        /// </summary>
        VIVOTEK,
        /// <summary>
        /// Arecont
        /// Arecont
        /// </summary>
        ARECONT,
        /// <summary>
        /// PrivateEH
        /// PrivateEH
        /// </summary>
        PRIVATEEH,
        /// <summary>
        /// IMatek
        /// IMatek
        /// </summary>
        IMATEK,
        /// <summary>
        /// Shany
        /// Shany
        /// </summary>
        SHANY,
        /// <summary>
        /// videotrec
        /// 动力盈科
        /// </summary>
        VIDEOTREC,
        /// <summary>
        /// Ura
        /// Ura
        /// </summary>
        URA,
        /// <summary>
        /// Bticino
        /// Bticino
        /// </summary>
        BITICINO,
        /// <summary>
        /// Onvif's protocol type, same to NET_PROTOCOL_ONVIF
        /// Onvif协议类型, 同NET_PROTOCOL_ONVIF
        /// </summary>
        ONVIF2,
        /// <summary>
        /// shepherd
        /// 视霸
        /// </summary>
        SHEPHERD,
        /// <summary>
        /// yaan
        /// 亚安
        /// </summary>
        YAAN,
        /// <summary>
        /// Airpop
        /// Airpop
        /// </summary>
        AIRPOINT,
        /// <summary>
        /// TYCO
        /// TYCO
        /// </summary>
        TYCO,
        /// <summary>
        /// xunmei
        /// 讯美
        /// </summary>
        XUNMEI,
        /// <summary>
        /// 
        /// 
        /// </summary>
        HIKVISION,
        /// <summary>
        /// LG
        /// LG
        /// </summary>
        LG,
        /// <summary>
        /// aoqiman
        /// 奥奇曼
        /// </summary>
        AOQIMAN,
        /// <summary>
        /// baokang
        /// 宝康
        /// </summary>
        BAOKANG,
        /// <summary>
        /// Watchnet
        /// Watchnet
        /// </summary>
        WATCHNET,
        /// <summary>
        /// Xvision
        /// Xvision
        /// </summary>
        XVISION,
        /// <summary>
        /// fusitsu
        /// 富士通
        /// </summary>
        FUSITSU,
        /// <summary>
        /// Canon
        /// Canon
        /// </summary>
        CANON,
        /// <summary>
        /// GE
        /// GE
        /// </summary>
        GE,
        /// <summary>
        /// basler
        /// 巴斯勒
        /// </summary>
        Basler,
        /// <summary>
        /// patro
        /// 帕特罗
        /// </summary>
        Patro,
        /// <summary>
        /// CPPLUS K series
        /// CPPLUS K系列 
        /// </summary>
        CPKNC,
        /// <summary>
        /// CPPLUS R series
        /// CPPLUS R系列  
        /// </summary>
        CPRNC,
        /// <summary>
        /// CPPLUS U series		
        /// CPPLUS U系列  
        /// </summary>
        CPUNC,
        /// <summary>
        /// CPPLUS IPC	
        /// CPPLUS IPC
        /// </summary>
        CPPLUS,
        /// <summary>
        ///  xunmeis,protocal is Onvif	
        /// 讯美s,实际协议为Onvif
        /// </summary>
        XunmeiS,
        /// <summary>
        /// GDDW
        /// 广东电网
        /// </summary>
        GDDW,
        /// <summary>
        /// PSIA
        /// PSIA
        /// </summary>
        PSIA,
        /// <summary>
        /// GB2818
        /// GB2818
        /// </summary>
        GB2818,
        /// <summary>
        /// GDYX
        /// GDYX
        /// </summary>
        GDYX,
        /// <summary>
        /// others
        /// 由用户自定义
        /// </summary>
        OTHER,
        /// <summary>
        /// 组播，实现组播功能，当成第三方设备接入来处理
        /// Multicast, to achieve multicast function, as a third-P device access to deal with
        /// </summary>
        MULTICAST = 179,
        /// <summary>
        /// 组播，处理TS组播功能，当成第三方设备接入来处理
        /// MulticastTs, to achieve TS multicast function, as a third-P device access to deal with
        /// </summary>
        MULTICASTTS = 185,
    }

    /// <summary>
    /// channel info of video input
    /// 视频输入通道信息
    /// </summary>
    public struct NET_VIDEO_INPUTS
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel name
        /// 通道名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szChnName;
        /// <summary>
        /// enable
        /// 使能
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// control ID
        /// 控制ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szControlID;
        /// <summary>
        /// main stream url 
        /// 主码流url地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szMainStreamUrl;
        /// <summary>
        /// extra stream url
        /// 辅码流url地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szExtraStreamUrl;
        /// <summary>
        /// spare main stream address quantity
        /// 备用主码流地址数量
        /// </summary>
        public int nOptionalMainUrlCount;
        /// <summary>
        /// spare main stream address list. byte[] is 8*260
        /// 备用主码流地址列表
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8 * 260)]
        public byte[] szOptionalMainUrls;
        /// <summary>
        /// spare sub stream address quantity
        /// 备用辅码流地址数量
        /// </summary>
        public int nOptionalExtraUrlCount;
        /// <summary>
        /// spare substream address list. byte[] is 8*260   
        /// 备用辅码流地址列表
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8 * 260)]
        public byte[] szOptionalExtraUrls;
        /// <summary>
        /// 通道备注
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCaption;
        /// <summary>
        /// 指码流传输的服务类型
        /// </summary>
        public EM_STREAM_TRANSMISSION_SERVICE_TYPE emServiceType;
        /// <summary>
        /// 码流加密方式
        /// </summary>
        public NET_SOURCE_STREAM_ENCRYPT stuSourceStreamEncrypt;
    }

    /// <summary>
    /// Display source
    /// 显示源
    /// </summary>
    public struct NET_SPLIT_SOURCE
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Enable
        /// 使能
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// IP, null means there is no setup.
        /// IP, 空表示没有设置
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szIp;
        /// <summary>
        /// User name
        /// 用户名, 建议使用szUserEx
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szUser;
        /// <summary>
        /// Password
        /// 密码, 建议使用szPwdEx
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szPwd;
        /// <summary>
        /// Port
        /// 端口
        /// </summary>
        public int nPort;
        /// <summary>
        /// Channel No.
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// Video bit stream. -1-auto, 0-main stream, 1-extra stream 1, 2-extra stream 2, 3-extra stream 3
        /// 视频码流, -1-自动, 0-主码流, 1-辅码流1, 2-辅码流2, 3-辅码流3, 4-snap, 5-预览
        /// </summary>
        public int nStreamType;
        /// <summary>
        /// Definition, 0-standard definition, 1-high definition
        /// 清晰度, 0-标清, 1-高清
        /// </summary>
        public int nDefinition;
        /// <summary>
        /// Protocol type
        /// 协议类型
        /// </summary>
        public EM_DEVICE_PROTOCOL emProtocol;
        /// <summary>
        /// Device name
        /// 设备名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDevName;
        /// <summary>
        /// Video input channel amount
        /// 视频输入通道数
        /// </summary>
        public int nVideoChannel;
        /// <summary>
        /// Audio input channel amount,For decoder only
        /// 音频输入通道数
        /// </summary>
        public int nAudioChannel;
        /// <summary>
        /// Decoder or not.
        /// 是否是解码器
        /// </summary>
        public bool bDecoder;
        /// <summary>
        /// 0:TCP;1:UDP;2:multicast
        /// -1: auto, 0：TCP；1：UDP；2：组播
        /// </summary>
        public byte byConnType;
        /// <summary>
        /// 0:connect directly; 1:transfer
        /// 0：直连；1：转发
        /// </summary>
        public byte byWorkMode;
        /// <summary>
        /// isten port, valid with transfer; when byConnType is multicast, it is multiport
        /// 指示侦听服务的端口,转发时有效; byConnType为组播时,则作为多播端口
        /// </summary>
        public short wListenPort;
        /// <summary>
        /// szDevIp extension, front DVR Ip address (enter domain name)
        /// szDevIp扩展,前端DVR的IP地址(可以输入域名)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDevIpEx;
        /// <summary>
        /// snapshot mode (valid when nStreamType==4) 0: request for single frame, 1: sechdule sending request
        /// 抓图模式(nStreamType==4时有效) 0：表示请求一帧,1：表示定时发送请求
        /// </summary>
        public byte bySnapMode;
        /// <summary>
        /// Target device manufacturer. Refer to EM_IPC_TYPE for detailed information.
        /// 目标设备的生产长商, 具体参考EM_IPC_TYPE类
        /// </summary>
        public byte byManuFactory;
        /// <summary>
        /// target device type, 0:IPC
        /// 目标设备的设备类型, 0:IPC
        /// </summary>
        public byte byDeviceType;
        /// <summary>
        /// target device decode policy, 0:compatible with previous,1:real time level high 2: real time level medium,3: real time level low 4: default level 
        /// 5: fluency level high 6: fluency level medium,7: fluency level low
        /// 目标设备的解码策略, 0:兼容以前,1:实时等级高 2:实时等级中,3:实时等级低 4:默认等级,5:流畅等级高 6:流畅等级中,7:流畅等级低
        /// </summary>
        public byte byDecodePolicy;
        /// <summary>
        /// Http port number, 0-65535
        /// Http端口号, 0-65535
        /// </summary>
        public uint dwHttpPort;
        /// <summary>
        /// Rtsp port number, 0-65535
        /// Rtsp端口号, 0-65535
        /// </summary>
        public uint dwRtspPort;
        /// <summary>
        /// Remote channel name, modifiable only when name read is not vacant
        /// 远程通道名称, 只有读取到的名称不为空时才可以修改该通道的名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szChnName;
        /// <summary>
        /// Multicast IP address. Valid only when byConnType is multicast
        /// 多播IP地址, byConnType为组播时有效
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szMcastIP;
        /// <summary>
        /// device ID, ""-null, "Local"  "Remote"
        /// 设备ID, ""-null, "Local"-本地通道, "Remote"-远程通道, 或者填入具体的RemoteDevice中的设备ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// is remote channel or not(read only)
        /// 是否远程通道(只读)
        /// </summary>
        public bool bRemoteChannel;
        /// <summary>
        /// remote channel ID (read only), effective when bRemoteChannel=TRUE
        /// 远程通道ID(只读), bRemoteChannel=TRUE时有效
        /// </summary>
        public uint nRemoteChannelID;
        /// <summary>
        /// type of device, such as IPC, DVR, NVR and so on
        /// 设备类型, 如IPC, DVR, NVR等
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDevClass;
        /// <summary>
        /// device specific type, such as IPC-HF3300
        /// 设备具体型号, 如IPC-HF3300
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDevType;
        /// <summary>
        /// main stream url, effective when byManuFactory =D H_IPC_OTHER
        /// 主码流url地址, byManuFactory为DH_IPC_OTHER时有效
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szMainStreamUrl;
        /// <summary>
        /// extra stream url, effective when byManuFactory =D H_IPC_OTHER
        /// 辅码流url地址, byManuFactory为NET_IPC_OTHER时有效
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szExtraStreamUrl;
        /// <summary>
        /// unique channel ID, read only
        /// 设备内统一编号的唯一通道号, 只读
        /// </summary>
        public int nUniqueChannel;
        /// <summary>
        /// ssascade authemyication, effective when device ID = "Local/Cascade/SerialNo",  SerialNo is device seral no.
        /// 级联认证信息, 设备ID为"Local/Cascade/SerialNo"时有效, 其中SerialNo是设备序列号
        /// </summary>
        public NET_CASCADE_AUTHENTICATOR stuCascadeAuth;
        /// <summary>
        /// 0-normal video source, 1- alarm video source
        /// 0-普通视频源, 1-报警视频源
        /// </summary>
        public int nHint;
        /// <summary>
        /// back main stream address quantity
        /// 备用主码流地址数量
        /// </summary>
        public int nOptionalMainUrlCount;
        /// <summary>
        /// backup main stream address list
        /// 备用主码流地址列表
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8 * 260)]
        public byte[] szOptionalMainUrls;
        /// <summary>
        /// backup sub stream address quantity
        /// 备用辅码流地址数量
        /// </summary>
        public int nOptionalExtraUrlCount;
        /// <summary>
        /// backup sub stream address list
        /// 备用辅码流地址列表
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8 * 260)]
        public byte[] szOptionalExtraUrls;
        /// <summary>
        /// tour time intertval	unit:second
        /// 轮巡时间间隔   单位：秒
        /// </summary>
        public int nInterval;
        /// <summary>
        /// user name
        /// 用户名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserEx;
        /// <summary>
        /// password
        /// 密码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPwdEx;
        /// <summary>
        /// type of pushstream,effective when byConnType is TCP-Push or UDP-Push
        /// 推流方式的码流类型,只有byConnType为TCP-Push或UDP-Push才有该字段
        /// </summary>
        public EM_SRC_PUSHSTREAM_TYPE emPushStream;
        /// <summary>
        /// video source region,valid when szDeviceID is not null,if rect is (0,0,0,0),it means valid data,device use default value(0,0,8192,8192)
        /// 视频源区域,当szDeviceID不为空时有效,若区域为(0,0,0,0)表示数据无效，设备使用默认值(0,0,8192,8192)
        /// </summary>
        public NET_RECT stuSRect;
        /// <summary>
        /// The encrypt of stream info
        /// 码流加密方式
        /// </summary>
        public NET_SOURCE_STREAM_ENCRYPT stuSourceStreamEncrypt;
        /// <summary>
        /// Serial number of device.When connect protocol is EClould ,this parameter is required
        /// 设备序列号,当连接设备的协议类型为云睿接入，该字段必填
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szSerialNo;
        /// <summary>
        /// Channel remarks, can be used to display in OSD
        /// 通道备注，可用于在OSD显示
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCaption;
        /// <summary>
        /// 是否使用szMainStreamUrlEx/szExtraStreamUrlEx字段
        /// Whether to use the szMainStreamUrlEx/szExtraStreamUrlEx field
        /// </summary>
        public bool bUserStreamUrlEx;
        /// <summary>
        /// 主码流url地址, byManuFactory为IPC_OTHER时有效
        /// Main stream url address, valid when byManuFactory is IPC_OTHER
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szMainStreamUrlEx;
        /// <summary>
        /// 辅码流url地址, byManuFactory为IPC_OTHER时有效
        /// Secondary stream url address, valid when byManuFactory is IPC_OTHER
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szExtraStreamUrlEx;
        /// <summary>
        /// / 码流传输的服务类型
        /// Service types for stream transmission
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szServiceType;
        /// <summary>
        /// / Sdp数据信息
        /// Sdp data information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4096)]
        public string szSdpData;
    }

    /// <summary>
    /// even the authentication information
    /// 级联权限验证信息
    /// </summary>
    public struct NET_CASCADE_AUTHENTICATOR
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// user name
        /// 用户名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUser;
        /// <summary>                                                       
        /// passwd                                                          
        /// 密码                                                                
        /// </summary>                                                      
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPwd;
        /// <summary>                                                       
        /// serial no.                                                      
        /// 设备序列号                                                                
        /// </summary>                                                      
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szSerialNo;
    }

    /// <summary>
    /// src push stream type
    /// </summary>
    public enum EM_SRC_PUSHSTREAM_TYPE
    {
        /// <summary>
        /// device automatic recognition according to bit stream head, default
        /// 设备端根据码流头自动识别，默认值
        /// </summary>
        AUTO,
        /// <summary>
        /// private bit stream
        /// 私有码流
        /// </summary>
        HIKVISION,
        /// <summary>
        /// PS
        /// PS流
        /// </summary>
        PS,
        /// <summary>
        /// TS
        /// TS流
        /// </summary>
        TS,
        /// <summary>
        /// SVAC
        /// SVAC码流
        /// </summary>
        SVAC,
    }

    /// <summary>
    /// SetSplitSourceEx  The input parameters of the interface 
    /// SetSplitSourceEx 接口的输入参数
    /// </summary>
    public struct NET_IN_SET_SPLIT_SOURCE
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Video output control method 
        /// 视频输出控制方式
        /// </summary>
        public EM_VIDEO_OUT_CTRL_TYPE emCtrlType;
        /// <summary>
        /// Video output logical channel number,when the emCtrlType is EM_VIDEO_OUT_CTRL_CHANNEL effective
        /// 视频输出逻辑通道号, emCtrlType为EM_VIDEO_OUT_CTRL_CHANNEL时有效
        /// </summary>
        public int nChannel;
        /// <summary>
        /// Splicing screen ID, when the emCtrlType is EM_VIDEO_OUT_CTRL_CHANNEL effective
        /// 拼接屏ID, emCtrlType为EM_VIDEO_OUT_CTRL_COMPOSITE_ID时有效
        /// </summary>
        public IntPtr pszCompositeID;
        /// <summary>
        /// winder number, -1 means all windows of the current segmentation mode 
        /// 窗口号, -1表示当前分割模式下的所有窗口
        /// </summary>
        public int nWindow;
        /// <summary>
        /// pointer to NET_SPLIT_SOURCE. Video source information, when nWindow=-1, Video source is an array, and the number and the window number,the space application by the user,applt to sizeof(NET_SPLIT_SOURCE)*nSourceCount
        /// 视频源信息, 当nWindow=-1时, 视频源是个数组, 且数量与窗口数一致,由用户申请内存，大小为sizeof(NET_SPLIT_SOURCE)*nSourceCount
        /// </summary>
        public IntPtr pstuSources;
        /// <summary>
        /// Video source number
        /// 视频源数量
        /// </summary>
        public int nSourceCount;
    }

    /// <summary>
    /// Video output control method
    /// 视频输出控制方式
    /// </summary>
    public enum EM_VIDEO_OUT_CTRL_TYPE
    {
        /// <summary>
        /// Logical channel number control mode,effective for physical screen and splicing screen 
        /// 逻辑通道号控制方式, 对物理屏和拼接屏都有效
        /// </summary>
        CHANNEL,
        /// <summary>
        /// Splice screen ID control mode, applies to splice screen only 
        /// 拼接屏ID控制方式, 只对拼接屏有效
        /// </summary>
        COMPOSITE_ID,
    }

    /// <summary>
    /// Set the return result of video source  
    /// 设置视频源的返回结果
    /// </summary>
    public struct NET_SET_SPLIT_SOURCE_RESULT
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Monitor Port Number of Push Flow Pattern Equipment
        /// 推流模式的设备端监听端口号
        /// </summary>
        public int nPushPort;
    }

    /// <summary>
    /// SetSplitSourceEx output parameters of the interface 
    /// SetSplitSourceEx 接口的输出参数
    /// </summary>
    public struct NET_OUT_SET_SPLIT_SOURCE
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// pointer to NET_SET_SPLIT_SOURCE_RESULT. returned value after successful setting , corresponding the window array in NET_IN_SET_SPLIT_SOURCE, user allocates memory , apply to sizeof(NET_SET_SPLIT_SOURCE_RESULT)*nMaxResultCount,If don't need can be NULL 
        /// 设置成功后的返回值, 对应NET_IN_SET_SPLIT_SOURCE中的窗口数组, 用户分配内存,大小为sizeof(NET_SET_SPLIT_SOURCE_RESULT)*nMaxResultCount, 如果不需要可以为NULL
        /// </summary>
        public IntPtr pstuResults;
        /// <summary>
        /// The size of the pstuResults array
        /// pstuResults数组的大小
        /// </summary>
        public int nMaxResultCount;
        /// <summary>
        /// The Number Of Return
        /// 返回的数量
        /// </summary>
        public int nRetCount;
    }
    #endregion

    /// <summary>
    /// event type EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY corresponding data block description info
    /// 斑马线行人优先事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_PEDESTRAINPRIORITY_INFO
    {
        /// <summary>
        /// Channel No.
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// Event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// Time stamp(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// Vehicle body info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// The corresponding file info of the event
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Corresponding lane No.
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// Event initial UTC time 	UTC is the second of the event UTC (1970-1-1 00:00:00)
        /// 事件初始UTC时间    UTC为事件的UTC (1970-1-1 00:00:00)秒数
        /// </summary>
        public double dInitialUTC;
        /// <summary>
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// reserved
        /// 保留字段，对齐用
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// Snap flag(by bit),please refer to NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// The record of the database of the traffic vehicle
        /// 表示交通车辆的数据库记录
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// GPS info
        /// GPS信息
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// / 全景图
        /// / Panoramic view
        /// </summary>
        public IntPtr pstuSceneImage;
        /// <summary>
        /// / 保留字节,留待扩展.
        /// Reserved field for future extension.
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 984 - 8)]
        public byte[] bReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 984 - 4)]
        public byte[] bReserved;
#endif
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// the describe of EVENT_TRAFFICSNAPSHOT's data
    /// 事件类型EVENT_TRAFFICSNAPSHOT(交通抓拍事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFICSNAPSHOT_INFO
    {
        /// <summary>
        /// ChannelId
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserv;
        /// <summary>
        /// car way number being snapshotting
        /// 触发抓拍的车道个数
        /// </summary>
        public byte bCarWayCount;
        /// <summary>
        /// car way info being snapshotting
        /// 触发抓拍的车道相关信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CARWAY_INFO[] stuCarWayInfo;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// flag(by bit),see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON 
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// Reserved
        /// 保留字节,留待扩展
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 344)]
        public byte[] bReserved;
        /// <summary>
        /// public info 
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
    }

    /// <summary>
    /// car way info
    /// 每个车道的相关信息
    /// </summary>
    public struct NET_CARWAY_INFO
    {
        /// <summary>
        /// current car way id 
        /// 当前车道号
        /// </summary>
        public byte bCarWayID;
        /// <summary>
        /// reserved
        /// 保留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserve;
        /// <summary>
        /// being snapshotted
        /// 被触发抓拍的个数
        /// </summary>
        public byte bSigCount;
        /// <summary>
        /// the snapshot info
        /// 当前车道上,被触发抓拍对应的抓拍信息 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public NET_SIG_CARWAY_INFO[] stuSigInfo;
        /// <summary>
        /// reserved
        /// 保留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
        public byte[] bReserved;
    }

    /// <summary>
    /// snapshot info
    /// 抓拍信息
    /// </summary>
    public struct NET_SIG_CARWAY_INFO
    {
        /// <summary>
        /// current car speed,km/h
        /// 当前车的速度,km/h
        /// </summary>
        public short snSpeed;
        /// <summary>
        /// current car length, dm
        /// 当前车长,分米为单位
        /// </summary>
        public short snCarLength;
        /// <summary>
        /// current red light time, s.ms
        /// 当前车道红灯时间,秒.毫秒
        /// </summary>
        public float fRedTime;
        /// <summary>
        /// current car way snapshot time, s.ms
        /// 当前车道抓拍时间,秒.毫秒
        /// </summary>
        public float fCapTime;
        /// <summary>
        /// current snapshot Sequence
        /// 当前抓拍序号
        /// </summary>
        public byte bSigSequence;
        /// <summary>
        /// current snapshot type,0: radar up speed limit;1: radar low speed limit;2: car detector up speed limit;3:car detector low speed limit;4: reverse;5: break red light;6: red light on;7: red light off;8: snapshot or traffic gate
        /// 当前车道的抓拍类型,0: 雷达高限速;1: 雷达低限速;2: 车检器高限速;3:车检器低限速,4: 逆向;5: 闯红灯;6: 红灯亮;7: 红灯灭;8: 全部抓拍或者卡口
        /// </summary>
        public byte bType;
        /// <summary>
        /// breaking type :01:left turn;02:straight;03:right
        /// 闯红灯类型:01:左转红灯;02:直行红灯;03:右转红灯
        /// </summary>
        public byte bDirection;
        /// <summary>
        /// current car way traffic light state,0: green, 1: red, 2: yellow
        /// 当前车道的红绿灯状态,0: 绿灯, 1: 红灯, 2: 黄灯
        /// </summary>
        public byte bLightColor;
        /// <summary>
        /// snap flag from device
        /// 设备产生的抓拍标识
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] bSnapFlag;
    }

    /// <summary>
    /// open strobe information
    /// 打开道闸信息
    /// </summary>
    public struct NET_CTRL_OPEN_STROBE
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel number
        /// 通道号
        /// </summary>
        public int nChannelId;
        /// <summary>
        /// plate number
        /// 车牌号码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPlateNumber;
        /// <summary>
        /// 开闸类型
        /// </summary>
        public EM_OPEN_STROBE_TYPE emOpenType;
        /// <summary>
        /// 开闸车道号
        /// Location
        /// </summary>
        public int nLocation;
        /// <summary>
        /// Custom lane number, prioritize using custom lane number, if custom lane number is empty, use location
        /// 自定义车道号，优先使用自定义车道号，自定义车道号为空，则使用location
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCustomParkNo;
        /// <summary>
        /// / 是否自动放行
        /// / Is it automatically released
        /// </summary>
        public bool bIsAutoOpen;
        /// <summary>
        /// / 是否（平台）允许车辆
        /// / Does the platform allow vehicles
        /// </summary>
        public bool bIsTrustCar;
        /// <summary>
        /// / 进出场类型, 0.未知 1.进场 2.出场
        /// / Entry and exit type, 0. Unknown 1. Entry 2. Exit
        /// </summary>
        public int nEntryOrExitType;
		/// <summary>
        /// / Align bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szAlign;
        /// <summary>
        /// / Key
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szKey;
    }

    /// <summary>
    /// 开闸类型
    /// </summary>
    public enum EM_OPEN_STROBE_TYPE
    {
        /// <summary>
        /// 未知
        /// </summary>
	    EM_OPEN_STROBE_TYPE_UNKNOWN,
        /// <summary>
        /// 正常开闸(默认)
        /// </summary>
	    EM_OPEN_STROBE_TYPE_NORMAL,
        /// <summary>
        /// 测试手动开闸（用于施工前期）
        /// </summary>
	    EM_OPEN_STROBE_TYPE_TEST,
        /// <summary>
        /// 手动开闸
        /// </summary>
	    EM_OPEN_STROBE_TYPE_MANUAL
    }

    /// <summary>
    /// close gateway parameter
    /// 关闸参数
    /// </summary>
    public struct NET_CTRL_CLOSE_STROBE
    {
        public uint dwSize;
        /// <summary>
        /// channel no.
        /// 通道号
        /// </summary>
        public int nChannelId;
        /// <summary>
        /// 关闸车道号
        /// Location
        /// </summary>
        public int nLocation;
		/// <summary>
        /// Custom Park No
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCustomParkNo;
        /// <summary>
        /// Key
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szKey;
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFIC_UTURN's data
    /// 违章调头事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_UTURN_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// have being detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// snap index: such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// speed,km/h
        /// 车辆实际速度,Km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// flag(by bit),see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON 
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// GPS info ,
        /// GPS信息 
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary> 
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 968)]
        public byte[] bReserved;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 非机动车信息
        /// The information of Non-motor
        /// </summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// GPS Infomation
    /// GPS信息
    /// </summary>
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]
    public struct NET_GPS_INFO
    {
        /// <summary>
        /// Longitude(unit:1/1000000 degree) west Longitude: 0 - 180000000  practical value = 180*1000000 - dwLongitude,east Longitude: 180000000 - 360000000    practical value = dwLongitude - 180*1000000. eg: Longitude:300168866  (300168866 - 180*1000000)/1000000  equal east Longitude 120.168866 degree
        /// 经度(单位是百万分之一度) 西经：0 - 180000000 实际值应为: 180*1000000 – dwLongitude,东经：180000000 - 360000000		实际值应为: dwLongitude – 180*1000000. 如: 300168866应为（300168866 - 180*1000000）/1000000 即东经120.168866度
        /// </summary>
        public uint nLongitude;
        /// <summary>
        /// Latidude(unit:1/1000000 degree)
        /// 纬度(单位是百万分之一度)
        /// </summary>
        public uint nLatidude;
        /// <summary>
        /// altitude,unit:m
        /// 高度,单位为米
        /// </summary>
        public double dbAltitude;
        /// <summary>
        /// Speed,unit:km/H
        /// 速度,单位km/H
        /// </summary>
        public double dbSpeed;
        /// <summary>
        /// Bearing,unit:°
        /// 方向角,单位:°
        /// </summary>
        public double dbBearing;
        /// <summary>
        /// Reserved bytes
        /// 保留字段 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] bReserved;
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFIC_PARKING's data
    /// 交通违章停车事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_PARKING_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// have being detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// event file info 
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved bytes
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] reserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// the time of starting parking
        /// 开始停车时间
        /// </summary>
        public NET_TIME_EX stuStartParkingTime;
        /// <summary>
        /// snap index: such as 3,2,1,1 means the last one,0 means there has some exception and snap stop(this param work when bEventAction=2) 
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束(bEventAction=2时此参数有效)
        /// </summary>
        public int nSequence;
        /// <summary>
        /// interval time of alarm(s) (this is a continuous event,if the interval time of recieving next event go beyond this param, we can judge that this event is over with exception)
        /// 报警时间间隔,单位:秒。(此事件为连续性事件,在收到第一个此事件之后,若在超过间隔时间后未收到此事件的后续事件,则认为此事件异常结束了)
        /// </summary>
        public int nAlarmIntervalTime;
        /// <summary>
        /// the time of legal parking
        /// 允许停车时长,单位：秒
        /// </summary>
        public int nParkingAllowedTime;
        /// <summary>
        /// detect region point number
        /// 规则检测区域顶点数
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// detect region point number
        /// 规则检测区域
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// flag(by bit),see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// true:corresponding alarm recording; false: no corresponding alarm recording
        /// true:有对应的报警录像; false:无对应的报警录像
        /// </summary>
        public bool bIsExistAlarmRecord;
        /// <summary>
        /// Video size
        /// 录像大小
        /// </summary>
        public uint dwAlarmRecordSize;
        /// <summary>
        /// Video Path
        /// 录像路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szAlarmRecordPath;
        /// <summary>
        /// FTP path
        /// FTP路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szFTPPath;
        /// <summary>
        /// intelli comm info
        /// 智能事件公共信息
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// weather is PreAlarm event,0 :traffic parking event,1 :preAlarm event
        /// 是否为违章预警图片,0 违章停车事件1 预警事件(预警触发后一定时间，车辆还没有离开，才判定为违章)由于此字段会导致事件含义改变，必须和在平台识别预警事件后，才能有此字段, 
        /// </summary>
        public byte byPreAlarm;
        /// <summary>
        /// Reserved
        /// 保留字节,留待扩展
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved2;
        /// <summary>
        /// GPS info 
        /// GPS信息 
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 228)]
        public byte[] bReserved;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 非机动车对象
        /// </summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// 是否有非机动车对象
        /// </summary>
        public bool bHasNonMotor;
        /// <summary>
        /// 违停持续时间，单位：秒, 0表示无意义
        /// Parking Duration
        /// </summary>
        public uint nParkingDuration;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFIC_CROSSLANE's data
    /// 交通违章-违章变道对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_CROSSLANE_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// have being detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// event file info 
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// speed,km/h
        /// 车辆实际速度,km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// flag(by bit),see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// intelli comm info
        /// 智能事件公共信息
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// GPS info 
        /// GPS信息 
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 836)]
        public byte[] bReserved;
        /// <summary>
        /// traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE's data
    /// 交通违章-黄牌车占道事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_YELLOWPLATEINLANE_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// have being detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// event file info 
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// speed,km/h
        /// 车辆实际速度,km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// flag(by bit),see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// / 全景图
        /// / Panoramic view
        /// </summary>
        public IntPtr pstuSceneImage;
        /// <summary>
        /// / 保留字节,留待扩展.
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016 - 8)]
        public byte[] bReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016 - 4)]
        public byte[] bReserved;
#endif
        /// <summary>
        /// traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFIC_VEHICLEINROUTE's data
    /// 有车占道事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_VEHICLEINROUTE_INFO
    {
        /// <summary>
        /// channel id
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// PTS(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// the event happen time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// have being detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Corresponding Lane number
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// snap index
        /// 抓拍序号
        /// </summary>
        public int nSequence;
        /// <summary>
        /// speed
        /// 车速
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// TrafficCar info
        /// 表示交通车辆的数据库记录
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved0;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// flag(by bit),see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// intelli comm info
        /// 智能事件公共信息
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// / 全景图
        /// / Panoramic view
        /// </summary>
        public IntPtr pstuSceneImage;
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 884 - 8)]
        public byte[] byReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 884 - 4)]
        public byte[] byReserved;
#endif
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE's data
    /// 占用公交车道事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_VEHICLEINBUSROUTE_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// Time stamp(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// Vehicle body info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// The corresponding file info of the event
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Corresponding lane No
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// snap index
        /// 抓拍序号
        /// </summary>
        public int nSequence;
        /// <summary>
        /// speed km/h
        /// 车速,km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// Snap flag(by bit),please refer to NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// The record of the database of the traffic vehicle 
        /// 表示交通车辆的数据库记录
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// GPS info 
        /// GPS信息 
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// / 全景图
        /// / Panoramic view
        /// </summary>
        public IntPtr pstuSceneImage;
        /// <summary>
        /// / 保留字节,留待扩展.
        /// reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 980 - 8)]
        public byte[] bReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 980 - 4)]
        public byte[] bReserved;
#endif
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFIC_BACKING's data
    /// 违章倒车事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_IVS_TRAFFIC_BACKING_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// Time stamp(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// Vehicle body info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// The corresponding file info of the event
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Corresponding lane No.
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// snap index
        /// 抓拍序号
        /// </summary>
        public int nSequence;
        /// <summary>
        /// speed km/h
        /// 车速,km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// Snap flag(by bit),please refer to NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>                                                              
        /// The record of the database of the traffic vehicle                                                                    
        /// 表示交通车辆的数据库记录                                               
        /// </summary>                                                             
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>                                                              
        /// picture resolution                                                                       
        /// 对应图片的分辨率                                                       
        /// </summary>                                                             
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>                                                              
        /// intelli comm info                                                                       
        /// 智能事件公共信息                                                       
        /// </summary>                                                             
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>                                                              
        /// GPS info ,                                                                   
        /// GPS信息                                                        
        /// </summary>                                                             
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>                                                              
        /// reserved                                                                       
        /// 保留字节                                                               
        /// </summary>                                                             
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 848)]
        public byte[] bReserved;
        /// <summary>                                                              
        /// public info                                                                       
        /// 公共信息                                                               
        /// </summary>                                                             
        public NET_EVENT_COMM_INFO stCommInfo;
    }

    /// <summary>
    /// the describe of EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT's data
    /// 未系安全带事件事件对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_WITHOUT_SAFEBELT
    {
        /// <summary>
        /// channel no.
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// TriggerType:trigger type , 0 vehicle detector, 1 radar, 2 video
        /// TriggerType:触发类型,0车检器,1雷达,2视频
        /// </summary>
        public int nTriggerType;
        /// <summary>
        /// time stamp(unit is ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public uint PTS;
        /// <summary>
        /// event occurred time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// means snaoshot no.
        /// 表示抓拍序号
        /// </summary>
        public int nSequence;
        /// <summary>
        /// event  motion , 0 means pulse event ,1 means  continuity  event  start ,2 means  continuity  event end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public byte byEventAction;
        /// <summary>
        /// picture no., same time(accurate to second)may have multiple pictures , start from 0 
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// event corresponding to file info 
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// corresponding to lane no.
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// bottom generated trigger snapshot frame mark
        /// 底层产生的触发抓拍帧标记
        /// </summary>
        public int nMark;
        /// <summary>
        /// video analysis frame no.
        /// 视频分析帧序号
        /// </summary>
        public int nFrameSequence;
        /// <summary>
        /// video analysis data source address
        /// 视频分析的数据源地址
        /// </summary>
        public int nSource;
        /// <summary>
        /// detection object 
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// body info 
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Traffic vehicle info 
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;
        /// <summary>
        /// vehicle actual speed,Km/h
        /// 车辆实际速度,Km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// main driver seat belt status 
        /// 主驾驶座位安全带状态
        /// </summary>
        public EM_SAFEBELT_STATE emMainSeat;
        /// <summary>
        /// co-drvier seat belt status
        /// 副驾驶座位安全带状态
        /// </summary>
        public EM_SAFEBELT_STATE emSlaveSeat;
        /// <summary>
        /// snapshot mark(by bit), see NET_RESERVED_COMMON  
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// corresponding to picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// GPS info ,
        /// GPS信息 
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// 保留字节
        /// reserved text
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 728)]
        public byte[] byReserved;
        /// <summary>
        /// 公共信息
        /// public info
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 违章关联视频FTP上传路径
        /// FTP upload path of violation related video
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szVideoPath;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// 设置停车信息,对应DH_CTRL_SET_PARK_INFO命令参数
    /// Set park info, corresponding DH_CTRL_SET_PARK_INFO command parameter
    /// </summary>
    public struct NET_CTRL_SET_PARK_INFO
    {
        public uint dwSize;
        /// <summary>
        /// Plate number
        /// 车牌号码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPlateNumber;
        /// <summary>
        /// park time,Unit:minute
        /// 停车时长,单位:分钟
        /// </summary>
        public uint nParkTime;
        /// <summary>
        /// ZYH of car
        /// 车主姓名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szMasterofCar;
        /// <summary>
        /// 
        /// 
        /// 
        /// 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserType;
        /// <summary>
        /// Remain day
        /// 到期天数
        /// </summary>
        public uint nRemainDay;
        /// <summary>
        /// Park charge
        /// 停车费
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szParkCharge;
        /// <summary>
        /// Remain space
        /// 停车库余位数
        /// </summary>
        public uint nRemainSpace;
        /// <summary>
        /// 0:car is not allowed to pass,1:car is allowed to pass
        /// 0:不允许车辆通过 1:允许车辆通过
        /// </summary>
        public uint nPassEnable;
        /// <summary>
        /// car in time
        /// 车辆入场时间
        /// </summary>
        public NET_TIME stuInTime;
        /// <summary>
        /// car out time
        /// 车辆出场时间
        /// </summary>
        public NET_TIME stuOutTime;
        /// <summary>
        /// car pass status
        /// 过车状态
        /// </summary>
        public EM_CARPASS_STATUS emCarStatus;
        /// <summary>
        /// custom field,default:null
        /// 自定义显示字段，默认空 
        /// </summary>							
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCustom;
        /// <summary>
        /// Sub user type of szUserType
        /// 用户类型（szUserType字段）的子类型 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSubUserType;
        /// <summary>
        /// Remarks info
        /// 备注信息  
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRemarks;
        /// <summary>
        /// 资源文件（视频或图片）视频支持:mp4格式; 图片支持:BMP/jpg/JPG/jpeg/JPEG/png/PNG格式
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szResource;
        /// <summary>
        /// 停车超时时间，单位分钟。为0表示未超时，不为0表示超时时间。
        /// </summary>
        public uint nParkTimeout;
        /// <summary>
        /// / 通道号
        /// / Channel number
        /// </summary>
        public uint nChannel;
    }

    /// <summary>
    /// car pass status
    /// 过车状态
    /// </summary>
    public enum EM_CARPASS_STATUS
    {
        /// <summary>
        /// Unknown status
        /// 未知状态
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// car pass status
        /// 过车状态
        /// </summary>
        CARPASS,
        /// <summary>
        /// no car status
        /// 无车状态
        /// </summary>
        NORMAL,
    }
    #region <<Face Module 2>>

    /// <summary>
    /// 人员唯一标识符
    /// Person unique mark
    /// </summary>
    public struct NET_UUID_CHAR
    {
        /// <summary>
        /// UUID内容
        /// UUID contents
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUUID;
    }

    /// <summary>
    /// OperateFaceRecognitionDB interface input parameters
    /// OperateFaceRecognitionDB接口输入参数
    /// </summary>
    public struct NET_IN_OPERATE_FACERECONGNITIONDB
    {
        public uint dwSize;
        /// <summary>
        /// Type of operation
        /// 操作类型
        /// </summary>
        public EM_OPERATE_FACERECONGNITIONDB_TYPE emOperateType;
        /// <summary>
        /// Personal information
        /// 人员信息
        /// </summary>
        public NET_FACERECOGNITION_PERSON_INFO stPersonInfo;
        /// <summary>
        /// UID amount(be used when emOperateType is DELETE_BY_UID, stPeronInfo is invalid)
        /// UID个数(emOperateType操作类型为DELETE_BY_UID时使用,stPeronInfo字段无效)
        /// </summary>
        public uint nUIDNum;
        /// <summary>
        /// Person unique mark. Generated by the server at first. Different from the ID. Alloc by user, sizeof(NET_UID_CHAR)*nUIDNum
        /// 人员唯一标识符,首次由服务端生成,区别于ID字段;由用户申请内存,大小为sizeof(NET_UID_CHAR)*nUIDNum
        /// </summary>
        public IntPtr stuUIDs;
        /// <summary>
        /// Buffer address(Picture binary data)
        /// 缓冲地址(图片二进制数据)
        /// </summary>
        public IntPtr pBuffer;
        /// <summary>
        /// 缓冲数据长度
        /// </summary>
        public int nBufferLen;
        /// <summary>
        /// use stPersonInfoEx when bUsePersonInfoEx is true, otherwise use stPersonInfo
        /// 使用人员扩展信息
        /// </summary>
        public bool bUsePersonInfoEx;
        /// <summary>
        /// expansion of person information
        /// 人员信息扩展
        /// </summary>
        public NET_FACERECOGNITION_PERSON_INFOEX stPersonInfoEx;
        /// <summary>
        /// UUID个数
        /// UUID number
        /// </summary>
        public uint nUUIDNum;
        /// <summary>
        /// 人员唯一标识符,由平台端下发，区别于UID字段
        /// 由用户申请内存,大小为sizeof(NET_UUID_CHAR)*nUUIDNum
        /// The unique identifier of the personnel, issued by the platform, which is different from the UID field
        /// The memory is requested by the user, the size is sizeof(NET_UUID_CHAR)*nUUIDNum
        /// </summary>
        public IntPtr stuUUIDs;
    }

    /// <summary>
    /// Target recognition database operations
    /// 目标识别数据库操作
    /// </summary>
    public enum EM_OPERATE_FACERECONGNITIONDB_TYPE
    {
        UNKOWN,
        /// <summary>
        /// Add personnel information and face samples, if researchers already exists, image data and the original data
        /// 添加人员信息和人脸样本,如果人员已经存在,图片数据和原来的数据合并
        /// </summary>
        ADD,
        /// <summary>
        /// Delete the personnel information and face samples
        /// 删除人员信息和人脸样本
        /// </summary>
        DELETE,
        /// <summary>
        /// Modify person info and human face sample, must input person UID
        /// 修改人员信息和人脸样本,人员的UID标识必填
        /// </summary>
        MODIFY,
        /// <summary>
        /// Delete person info and human face via UID
        /// 通过UID删除人员信息和人脸样本
        /// </summary>
        DELETE_BY_UID,
    }

    public struct NET_UID_CHAR
    {
        /// <summary>
        /// UID contents
        /// UID内容
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUID;
    }

    /// <summary>
    /// OperateFaceRecognitionDB interface output parameter
    /// OperateFaceRecognitionDB接口输出参数
    /// </summary>
    public struct NET_OUT_OPERATE_FACERECONGNITIONDB
    {
        public UInt32 dwSize;
        /// <summary>
        /// / 人员唯一标识符, 只有在操作类型为NET_FACERECONGNITIONDB_ADD时有效
        /// Person unique mark. it is effective when emOperateType is NET_FACERECONGNITIONDB_ADD
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUID;
        /// <summary>
        /// / 错误码个数
        /// error code number
        /// </summary>
        public int nErrorCodeNum;
        /// <summary>
        /// / 错误码
        /// error code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public EM_ERRORCODE_TYPE[] emErrorCodes;
        /// <summary>
        /// / 添加人员UID
        /// / Add personnel UID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUID2;
        /// <summary>
        /// / 指定UID使用字段, 0使用UID字段，1使用UID2字段
        /// / Specify the UID field to use, 0 uses UID field, 1 uses UID2 field
        /// </summary>
        public uint nUIDType;
    }

    /// <summary>
    /// DetectFace interface input parameters
    /// DetectFace接口输入参数
    /// </summary>
    public struct NET_IN_DETECT_FACE
    {
        public uint dwSize;
        /// <summary>
        /// Big picture information
        /// 大图信息
        /// </summary>
        public NET_PIC_INFO stPicInfo;
        /// <summary>
        /// Buffer address(Picture binary data)
        /// 缓冲地址(图片二进制数据)
        /// </summary>
        public IntPtr pBuffer;
        /// <summary>
        /// Buffer data length
        /// 缓冲数据长度
        /// </summary>
        public int nBufferLen;
    }

    /// <summary>
    /// DetectFace interface output parameter
    /// DetectFace接口输出参数
    /// </summary>
    public struct NET_OUT_DETECT_FACE
    {
        public uint dwSize;
        /// <summary>
        /// The detected face image information. Alloc by user, sizeof(NET_PIC_INFO)*nMaxPicNum
        /// 检测出的人脸图片信息,由用户申请空间, sizeof(NET_PIC_INFO)*nMaxPicNum
        /// </summary>
        public IntPtr pPicInfo;
        /// <summary>
        /// The maximum number of face image information
        /// 最大人脸图片信息个数
        /// </summary>
        public int nMaxPicNum;
        /// <summary>
        /// The actual number of returned faces pictures
        /// 实际返回的人脸图片个数
        /// </summary>
        public int nRetPicNum;
        /// <summary>
        /// Buffer address. Alloc by user(Picture binary data)
        /// 缓冲地址,由用户申请空间,存放检测出的人脸图片数据(图片二进制数据)
        /// </summary>
        public IntPtr pBuffer;
        /// <summary>
        /// nBufferLen
        /// 缓冲数据长度
        /// </summary>
        public int nBufferLen;
    }

    /// <summary>
    /// NET_FILE_QUERY_FACE Corresponding Target recognition service search parameter
    /// 对应的目标识别服务查询参数
    /// </summary>
    public struct NET_MEDIAFILE_FACERECOGNITION_PARAM
    {
        public UInt32 dwSize;
        // Search filter criteria
        // 查询过滤条件
        /// <summary>
        /// start time 
        /// 开始时间
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// closing time
        /// 结束时间
        /// </summary>
        public NET_TIME stEndTime;
        /// <summary>
        /// Place to support fuzzy matching
        /// 地点,支持模糊匹配
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)]
        public byte[] szMachineAddress;
        /// <summary>
        /// To query the type of alarm, see EM_FACERECOGNITION_ALARM_TYPE
        /// 待查询报警类型,详见 EM_FACERECOGNITION_ALARM_TYPE
        /// </summary>
        public int nAlarmType;
        /// <summary>
        /// staff info is valid or not
        /// 人员信息是否有效
        /// </summary>
        public int abPersonInfo;
        /// <summary>
        /// staff info
        /// 人员信息
        /// </summary>
        public NET_FACERECOGNITION_PERSON_INFO stPersonInfo;
        /// <summary>
        /// channel no.  
        /// 通道号
        /// </summary>
        public int nChannelId;
        /// <summary>
        /// staff group
        /// 人员组数 
        /// </summary>
        public int nGroupIdNum;
        /// <summary>
        /// staff group ID
        /// 人员组ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128 * 64)]
        public byte[] szGroupId;
        /// <summary>
        /// stPersonInfoEx is valid or not
        /// 人员信息扩展是否有效
        /// </summary>
        public bool abPersonInfoEx;
        /// <summary>
        /// expansion of person information
        /// 人员信息扩展
        /// </summary>
        public NET_FACERECOGNITION_PERSON_INFOEX stPersonInfoEx;
        /// <summary>
        /// 相似度是否有效
        /// </summary>
        public bool bSimilaryRangeEnable;
        /// <summary>
        /// 相似度范围
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] nSimilaryRange;
        /// <summary>
        /// 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav
        /// </summary>
        public int nFileType;
        /// <summary>
        /// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stEndTime), 为FALSE表示仅下发stStartTime, stEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
        /// TRUE means only stuStartTimeRealUTC and stuEndTimeRealUTC are delivered (not stStartTime, stEndTime), FALSE means only stStartTime, stEndTime (stuStartTimeRealUTC and stuEndTimeRealUTC are not delivered)
        /// </summary>
        public bool bOnlySupportRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用，与(stStartTime, stEndTime)互斥
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC, mutually exclusive with (stStartTime, stEndTime)
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用，与(stStartTime, stEndTime)互斥
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC, mutually exclusive with (stStartTime, stEndTime)
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
        /// <summary>
        /// / 通道号数组
        /// Channel number array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nChannels;
        /// <summary>
        /// / 通道号数组有效个数
        /// Number of valid channel number arrays
        /// </summary>
        public uint nChannelsNum;
    }

    /// <summary>
    /// Target recognition event type
    /// 目标识别事件类型
    /// </summary>
    public enum EM_FACERECOGNITION_ALARM_TYPE
    {
        UNKOWN,
        /// <summary>
        /// prohibit and WL
        /// 黑允许名单
        /// </summary>
        ALL,
        /// <summary>
        /// The prohibit
        /// 禁止名单
        /// </summary>
        BLACKLIST,
        /// <summary>
        /// The WL
        /// 允许名单
        /// </summary>
        WHITELIST,
    }

    /// <summary>
    /// media file query condition
    /// media文件查询条件
    /// </summary>
    public enum EM_FILE_QUERY_TYPE
    {
        /// <summary>
        /// Vehicle information,corresponding structure is NET_MEDIA_QUERY_TRAFFICCAR_PARAM
        /// 交通车辆信息,对应结构体为NET_MEDIA_QUERY_TRAFFICCAR_PARAM
        /// </summary>
        TRAFFICCAR,
        /// <summary>
        /// ATM information
        /// ATM信息
        /// </summary>
        ATM,
        /// <summary>
        /// ATM transaction information
        /// ATM交易信息 
        /// </summary>
        ATMTXN,
        /// <summary>
        /// Face info, corresponding to NET_MEDIAFILE_FACERECOGNITION_PARAM, NET_MEDIAFILE_FACERECOGNITION_INFO
        /// 人脸信息 NET_MEDIAFILE_FACERECOGNITION_PARAM 和 NET_MEDIAFILE_FACERECOGNITION_INFO
        /// </summary>
        FACE,
        /// <summary>
        /// file info, corresponding to NET_IN_MEDIA_QUERY_FILE and NET_OUT_MEDIA_QUERY_FILE
        /// 文件信息对应 NET_IN_MEDIA_QUERY_FILE 和 NET_OUT_MEDIA_QUERY_FILE
        /// </summary>
        FILE,
        /// <summary>
        /// Transportation vehicle information, expand TRAFFICCAR, support more fields,corresponding structure is MEDIA_QUERY_TRAFFICCAR_PARAM_EX
        /// 交通车辆信息, 扩展TRAFFICCAR, 支持更多的字段，对应结构体为 MEDIA_QUERY_TRAFFICCAR_PARAM_EX
        /// </summary>
        TRAFFICCAR_EX,
        /// <summary>
        /// Target recognition event info NET_MEDIAFILE_FACE_DETECTION_PARAM and NET_MEDIAFILE_FACE_DETECTION_INFO
        /// 目标检测事件信息 NET_MEDIAFILE_FACE_DETECTION_PARAM 和 NET_MEDIAFILE_FACE_DETECTION_INFO
        /// </summary>
        FACE_DETECTION,
        /// <summary>
        /// ivs event info, corresponding to NET_MEDIAFILE_IVS_EVENT_PARAM, NET_MEDIAFILE_IVS_EVENT_INFO
        /// 智能事件信息 NET_MEDIAFILE_IVS_EVENT_PARAM 和 NET_MEDIAFILE_IVS_EVENT_INFO
        /// </summary>
        IVS_EVENT,
        /// <summary>
        /// analyse object info, corresponding to NET_MEDIAFILE_ANALYSE_OBJECT_PARAM, NET_MEDIAFILE_ANALYSE_OBJECT_INFO
        /// 智能分析其他物体(人和车除外) NET_MEDIAFILE_ANALYSE_OBJECT_PARAM 和 NET_MEDIAFILE_ANALYSE_OBJECT_INFO
        /// </summary>
        ANALYSE_OBJECT,
        /// <summary>
        /// query mpt record file,corresponding to NET_MEDIAFILE_MPT_RECORD_FILE_PARAM and NET_MEDIAFILE_MPT_RECORD_FILE_INFO
        /// MPT设备的录像文件 NET_MEDIAFILE_MPT_RECORD_FILE_PARAM 和 NET_MEDIAFILE_MPT_RECORD_FILE_INFO
        /// </summary>
        MPT_RECORD_FILE,
        XRAY_DETECTION,                       // X光检包裹信息对应 MEDIAFILE_XRAY_DETECTION_PARAM 和 MEDIAFILE_XRAY_DETECTION_INFO
        HUMAN_TRAIT,                          // 人体检测 NET_A_MEDIAFILE_HUMAN_TRAIT_PARAM 和 NET_A_MEDIAFILE_HUMAN_TRAIT_INFO
        NONMOTOR,                             // 非机动车查询,  NET_A_MEDIAFILE_NONMOTOR_PARAM 和 NET_A_MEDIAFILE_NONMOTOR_INFO
        DOORCONTROL_RECORD,                   // 门打开事件查询, MEDIAFILE_DOORCONTROL_RECORD_PARAM 和 MEDIAFILE_DOORCONTROL_RECORD_INFO	
        FACEBODY_DETECT,                      // 人像检测查询，MEDIAFILE_FACEBODY_DETECT_PARAM 和 MEDIAFILE_FACEBODY_DETECT_INFO
        FACEBODY_ANALYSE,                     // 人像识别查询，MEDIAFILE_FACEBODY_ANALYSE_PARAM 和 MEDIAFILE_FACEBODY_ANALYSE_INFO
        FILE_EX,                              // 文件信息扩展，对应 NET_IN_MEDIA_QUERY_FILE 和 NET_OUT_MEDIA_QUERY_FILE
                                              // 此时 NET_IN_MEDIA_QUERY_FILE 中的 stuEventInfo 字段有效, nEventLists 及 nEventCount字段无效
        SNAPSHOT_WITH_MARK,                   // 标记抓图查询, 对应MEDIAFILE_SNAPSHORT_WITH_MARK_PARAM 和MEDIAFILE_SNAPSHORT_WITH_MARK_INFO
        ANATOMY_TEMP_DETECT,                  // 人体测温信息查询， 对应 MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM 和 MEDIAFILE_ANATOMY_TEMP_DETECT_INFO
        ILLEGAL_TRAFFIC,                      // 违停车辆查询，对应 MEDIAFILE_ILLEGAL_TRAFFIC_PARAM 和 MEDIAFILE_ILLEGAL_TRAFFIC_INFO
        SMOKE_FIRE,                           // 烟火检测查询，对应 NET_MEDIAFILE_SMOKE_FIRE_PARAM 和 NET_MEDIAFILE_SMOKE_FIRE_INFO
        FIRE_CONTROL_MONITOR,                 // 消控室值班行为检测事件查询，对应 MEDIAFILE_FIRE_CONTROL_MONITOR_PARAM 和 MEDIAFILE_FIRE_CONTROL_MONITOR_INFO
        FIRE_LANE_DETECTION,                  // 消防通道占道检测查询，对应 MEDIAFILE_FIRE_LANE_DETECTION_PARAM 和 MEDIAFILE_FIRE_LANE_DETECTION_INFO
        NONMOTOR_ENTRYING,                    // 安全隐患检测查询，对应 MEDIAFILE_NONMOTOR_ENTRYING_PARAM 和 MEDIAFILE_NONMOTOR_ENTRYING_INFO
        WORK_CLOTHES_DETECTION,               // 作业管控查询，对应 MEDIAFILE_WORK_CLOTHES_DETECTION_PARAM 和 MEDIAFILE_WORK_CLOTHES_DETECTION_INFO
        INTELLIGENT_CITY_MANAGER = 25,        // 智慧城管查询查询，对应 MEDIAFILE_INTELLIGENT_CITY_MANAGER_PARAM 和 MEDIAFILE_INTELLIGENT_CITY_MANAGER_INFO    
        /// <summary>
        /// 按照考生或考场信息查找录像, 对应 NET_MEDIAFILE_EXAM_PARAM 和 NET_MEDIAFILE_EXAM_INFO
        /// Find the video according to the examinee or examination room information. NET_MEDIAFILE_EXAM_PARAM and NET_MEDIAFILE_EXAM_INFO
        /// </summary>
        EM_FILE_QUERY_EXAM = 33,
        /// <summary>
        /// / 精准客流智能回放查询, 对应 NET_MEDIAFILE_CUSTOMER_FLOW_RECORD_PARAM和 NET_MEDIA_CUSTOMER_FLOW_RECORD_INFO
        /// / Accurate passenger flow intelligent replay query, corresponding to NET_MEDIAFILE_CUSTOMER_FLOW_RECORD_PARAM and NET_MEDIA_CUSTOMER_FLOW_RECORD_INFO
        /// </summary>
        CUSTOMER_FLOW_RECORD = 40,
    }

    /// <summary>
    /// safe belt status
    /// 安全带状态
    /// </summary>
    public enum EM_SAFE_BELT_STATE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// unidentified
        /// 未识别
        /// </summary>
        OTHER,
        /// <summary>
        /// with safe belt
        /// 有安全带
        /// </summary>
        WITH,
        /// <summary>
        /// without safe belt
        /// 无安全带
        /// </summary>
        WITHOUT,
    }

    /// <summary>
    /// calling state
    /// 打电话状态
    /// </summary>
    public enum EM_CALLING_STATE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// unidentified
        /// 未识别
        /// </summary>
        OTHER,
        /// <summary>
        /// not calling
        /// 未打电话
        /// </summary>
        NO,
        /// <summary>
        /// calling
        /// 打电话
        /// </summary>
        YES,
    }

    /// <summary>
    /// attachment type
    /// 车内饰品类型
    /// </summary>
    public enum EM_ATTACHMENT_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// other
        /// 其他类型
        /// </summary>
        OTHER,
        /// <summary>
        /// furniture
        /// 摆件
        /// </summary>
        FURNITURE,
        /// <summary>
        /// pendant
        /// 挂件
        /// </summary>
        PENDANT,
        /// <summary>
        /// tissue box
        /// 纸巾盒
        /// </summary>
        TISSUEBOX,
        /// <summary>
        /// danger
        /// 危险品
        /// </summary>
        DANGER,
        /// <summary>
        /// perfume box
        /// 香水
        /// </summary>
        PERFUMEBOX,
    }

    /// <summary>
    /// car type
    /// 车辆类型
    /// </summary>
    public enum EM_CATEGORY_TYPE
    {
        UNKNOWN,                    // 未知
        OTHER,                      // 其他 
        MOTOR,                      // 机动车
        BUS,                        // 公交车
        UNLICENSED_MOTOR,           // 无牌机动车
        LARGE_CAR,                  // 大型汽车
        MICRO_CAR,                  // 小型汽车
        EMBASSY_CAR,                // 使馆汽车
        MARGINAL_CAR,               // 领馆汽车
        AREAOUT_CAR,                // 境外汽车
        FOREIGN_CAR,                // 外籍汽车
        FARMTRANSMIT_CAR,           // 农用运输车
        TRACTOR,                    // 拖拉机
        TRAILER,                    // 挂车
        COACH_CAR,                  // 教练汽车
        TRIAL_CAR,                  // 试验汽车
        TEMPORARY_ENTRY_CAR,        // 临时入境汽车
        TEMPORARY_ENTRY_MOTORCYCLE, // 临时入境摩托
        TEMPORARY_STEER_CAR,        // 临时行驶车
        LARGE_TRUCK,                // 大货车
        MID_TRUCK,                  // 中货车
        MICRO_TRUCK,                // 小货车
        MICROBUS,                   // 面包车
        SALOON_CAR,                 // 轿车
        CARRIAGE,                   // 小轿车
        MINI_CARRIAGE,              // 微型轿车
        SUV_MPV,                    // SUV或者MPV
        SUV,                        // SUV
        MPV,                        // MPV
        PASSENGER_CAR,              // 客车
        MOTOR_BUS,                  // 大客
        MID_PASSENGER_CAR,          // 中客车
        MINI_BUS,                   // 小客车
        PICKUP,                     // 皮卡车
        OILTANK_TRUCK,              // 油罐车
        TANK_CAR,                   // 危化品车辆
        SLOT_TANK_CAR,              // 槽罐车
        DREGS_CAR,                  // 渣土车
        CONCRETE_MIXER_TRUCK,       // 混凝土搅拌车
        TAXI,                       // 出租车
        POLICE,                     // 警车
        AMBULANCE,                  // 救护车
        GENERAL,                    // 普通车
        WATERING_CAR,               // 洒水车
        FIRE_ENGINE,                // 消防车
        MACHINE_TRUCK,              // 工程车
        POWER_LOT_VEHICLE,          // 粉粒物料车
        SUCTION_SEWAGE_TRUCK,       // 吸污车
        NORMAL_TANK_TRUCK,          // 普通罐车
        SCHOOL_BUS,                 // 校车
        EXCAVATOR,                  // 挖掘车
        BULLDOZER,                  // 推土车
        CRANE,                      // 吊车
        PIMP_TRUCK,                 // 泵车
        FORKLIFT,                   // 叉车
        ELECTRICBIKE,               // 二轮电瓶车
        NON_MOTOR,                  // 非机动车
        ESCORT,					    // 押运车
    }

    /// <summary>
    /// The media file information searched by DH_MEDIA_QUERY_TRAFFICCAR
    /// DH_MEDIA_QUERY_TRAFFICCAR查询出来的media文件信息
    /// </summary>
    public struct MEDIAFILE_TRAFFICCAR_INFO
    {
        /// <summary>
        /// Channel number
        /// 通道号
        /// </summary>
        public uint ch;
        /// <summary>
        /// File path
        /// 文件路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFilePath;
        /// <summary>
        /// File length,This field is discarded,please use the sizeEx
        /// 文件长度,该字段废弃，请使用sizeEx
        /// </summary>
        public uint size;
        /// <summary>
        /// Start time
        /// 开始时间
        /// </summary>
        public NET_TIME starttime;
        /// <summary>
        /// End time
        /// 结束时间
        /// </summary>
        public NET_TIME endtime;
        /// <summary>
        /// Working directory serial number
        /// 工作目录编号 
        /// </summary>
        public uint nWorkDirSN;
        /// <summary>
        /// File type：1:picture  2:video
        /// 文件类型  1:图片 2:视频
        /// </summary>
        public byte nFileType;
        /// <summary>
        /// File location index
        /// 文件定位索引
        /// </summary> 
        public byte bHint;
        /// <summary>
        /// drive number
        /// 磁盘号
        /// </summary> 
        public byte bDriveNo;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary> 
        public byte bReserved2;
        /// <summary>
        /// cluster number
        /// 簇号
        /// </summary> 
        public uint nCluster;
        /// <summary>
        /// picture type or file flag, 0-Normal, 1-Mosaic, 2-Cutout. more flags information ref to MEDIAFILE_TRAFFICCAR_INFO_EX's filed emFalgLists
        /// 图片类型或文件标记, 0-普通, 1-合成, 2-抠图。更多文件标记信息请参考 MEDIAFILE_TRAFFICCAR_INFO_EX 的 emFalgLists 字段
        /// </summary> 
        public byte byPictureType;
        /// <summary>
        /// video stream 0-unknown  1-main 2-sub1 3-sub2 4-sub3
        /// 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流
        /// </summary>
        public byte byVideoStream;
        /// <summary>
        /// accurate positioning No
        /// 精确定位号
        /// </summary>
        public byte byPartition;
        /// <summary>
        /// Reserved field for future extension. 
        /// 保留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
        public byte[] bReserved;
        /// <summary>
        /// Vehicle plate number
        /// 车牌号码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateNumber;
        /// <summary>
        /// 号牌类型:"Unknown" 未知; "Normal" 蓝牌黑牌; "Yellow" 黄牌; "DoubleYellow" 双层黄尾牌; "Police" 警牌; 
        /// "SAR" 港澳特区号牌; "Trainning" 教练车号牌; "Personal" 个性号牌; "Agri" 农用牌
        /// "Embassy" 使馆号牌; "Moto" 摩托车号牌; "Tractor" 拖拉机号牌; "Other" 其他号牌
        /// "Civilaviation"民航号牌,"Black"黑牌
        /// "PureNewEnergyMicroCar"纯电动新能源小车,"MixedNewEnergyMicroCar,"混合新能源小车,"PureNewEnergyLargeCar",纯电动新能源大车
        /// "MixedNewEnergyLargeCar"混合新能源大车
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateType;
        /// <summary>
        /// Plate color:"Blue","Yellow", "White","Black"
        /// 车牌颜色:"Blue","Yellow", "White","Black"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPlateColor;
        /// <summary>
        /// Vehicle color:"White", "Black", "Red", "Yellow", "Gray", "Blue","Green"
        /// 车身颜色:"White", "Black", "Red", "Yellow", "Gray", "Blue","Green"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szVehicleColor;
        /// <summary>
        /// Speed. The unit is Km/H
        /// 车速,单位Km/H
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// Activation event amount
        /// 关联的事件个数
        /// </summary>
        public int nEventsNum;
        /// <summary>
        /// Activation event list. The number refers to the corresponding event. Please refer to Intelligent Analytics Event Type
        /// 关联的事件列表,数组值表示相应的事件,详见"智能分析事件类型"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nEvents;
        /// <summary>
        /// Detailed offense type subnet mask. The first bit means redlight offense, the second bit is illegal straight/left-turn/right-turn driving
        /// The third bit is the wrong way driving; the four bit is illegal U-turn. Otherwise default value is intersection accident
        /// 具体违章类型掩码,第一位:闯红灯; 第二位:不按规定车道行驶
        /// 第三位:逆行; 第四位：违章掉头;否则默认为:交通路口事件
        /// </summary>
        public uint dwBreakingRule;
        /// <summary>
        /// Vehicle type:"Light-duty"=small;"Medium"=medium; "Oversize"=large
        /// 车辆大小类型:"Light-duty":小型车;"Medium":中型车; "Oversize":大型车
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szVehicleSize;
        /// <summary>
        /// Local or remote channel name
        /// 本地或远程的通道名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szChannelName;
        /// <summary>
        /// Local or remote device name
        /// 本地或远程设备名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szMachineName;
        /// <summary>
        /// up limit of speed, km/h
        /// 速度上限 单位: km/h
        /// </summary>
        public int nSpeedUpperLimit;
        /// <summary>
        /// lower limit of speed km/h
        /// 速度下限 单位: km/h
        /// </summary>
        public int nSpeedLowerLimit;
        /// <summary>
        /// id of event group
        /// 事件里的组编号
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// total count of the event group
        /// 一个事件组内的抓拍张数
        /// </summary>
        public byte byCountInGroup;
        /// <summary>
        /// the index of this event
        /// 一个事件组内的抓拍序号
        /// </summary>
        public byte byIndexInGroup;
        /// <summary>
        /// lane number
        /// 车道,参见MEDIA_QUERY_TRAFFICCAR_PARAM
        /// </summary>
        public byte byLane;
        /// <summary>
        /// reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 21)]
        public byte[] bReserved1;
        /// <summary>
        /// snap time
        /// 抓拍时间
        /// </summary>
        public NET_TIME stSnapTime;
        /// <summary>
        /// direction,MEDIA_QUERY_TRAFFICCAR_PARAM
        /// 车道方向,参见MEDIA_QUERY_TRAFFICCAR_PARAM
        /// </summary>
        public int nDirection;
        /// <summary>
        /// machine address
        /// 机器部署地点
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szMachineAddress;
        /// <summary>
        /// size of file extension, Support file length is greater than 4G,unit:Byte
        /// 文件长度扩展，支持文件长度大于4G，单位字节
        /// </summary>
        public long sizeEx;
    }

    public enum EM_RECORD_SNAP_FLAG_TYPE
    {
        /// <summary>
        /// Schele
        /// 定时文件
        /// </summary>
        TIMING,
        /// <summary>
        /// Manual
        /// 手动文件
        /// </summary>
        MANUAL,
        /// <summary>
        /// Important
        /// 重要文件
        /// </summary>
        MARKED,
        /// <summary>
        /// Event
        /// 事件文件
        /// </summary>
        EVENT,
        /// <summary>
        /// Combined
        /// 合成图片
        /// </summary>
        MOSAIC,
        /// <summary>
        /// Cut
        /// 抠图图片
        /// </summary>
        CUTOUT,
        /// <summary>
        /// Message
        /// 留言文件
        /// </summary>
        LEAVE_WORD,
        /// <summary>
        /// Talk Local
        /// 对讲本地方文件
        /// </summary>
        TALKBACK_LOCAL_SIDE,
        /// <summary>
        /// Talk Remote
        /// 对讲远程方文件
        /// </summary>
        TALKBACK_REMOTE_SIDE,
        /// <summary>
        /// Compressed Video
        /// 浓缩视频
        /// </summary>
        SYNOPSIS_VIDEO,
        /// <summary>
        /// Original Video
        /// 原始视频
        /// </summary>
        ORIGINAL_VIDEO,
        /// <summary>
        /// Processed
        /// 已经预处理的原始视频
        /// </summary>
        PRE_ORIGINAL_VIDEO,
        /// <summary>
        /// prohibit Picture
        /// 禁止名单图片
        /// </summary>
        BLACK_PLATE,
        /// <summary>
        /// Original Picture
        /// 原始图片
        /// </summary>
        ORIGINAL_PIC,
        /// <summary>
        /// card no. record
        /// 卡号录像
        /// </summary>
        CARD,
        MAX = 128,
    }

    /// <summary>
    /// attachement info
    /// 车内饰品信息
    /// </summary>
    public struct NET_ATTACH_MENET_INFO
    {
        /// <summary>
        /// attachment type
        /// 车内物品类型
        /// </summary>
        public EM_ATTACHMENT_TYPE emAttachMentType;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] bReserved1;
    }

    /// <summary>
    /// sun shade state
    /// 遮阳板状态
    /// </summary>
    public enum EM_NET_SUNSHADE_STATE
    {
        /// <summary>
        /// Unknow
        /// 未知
        /// </summary>
        NUKNOW,
        /// <summary>
        /// WithSunShade
        /// 有遮阳板 
        /// </summary>
        WITH,
        /// <summary>
        /// WithoutSunShade
        /// 无遮阳板
        /// </summary>
        WITHOUT,
    }

    /// <summary>
    /// smoking state
    /// 是否抽烟
    /// </summary>
    public enum EM_SMOKING_STATE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// not smoking
        /// 未抽烟
        /// </summary>
        NO,
        /// <summary>
        /// smoking
        /// 抽烟
        /// </summary>
        YES,
    }

    /// <summary>
    /// 车牌图片信息
    /// License plate picture information
    /// </summary>
    public struct NET_PLATE_IMAGE_INFO
    {
        /// <summary>
        /// 图片文件路径
        /// Picture file path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFilePath;
        /// <summary>
        /// 图片文件大小，单位:字节
        /// Image file size, bytes
        /// </summary>
        public int nLength;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szReserved;
    }

    /// <summary>
    /// 车身图片信息
    /// car body picture information
    /// </summary>
    public struct NET_CARBODY_IMAGE_INFO
    {
        /// <summary>
        /// 图片文件路径
        /// Picture file path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFilePath;
        /// <summary>
        /// 图片文件大小，单位:字节
        /// Image file size, bytes
        /// </summary>
        public int nLength;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szReserved;
    }

	/// <summary>
    /// sub dvriver face image info
    /// </summary>
    public struct NET_CODRIVER_FACE_IMAGE_INFO
    {
        /// <summary>
        /// / Image file size, bytes
        /// </summary>
        public uint nLength;
        /// <summary>
        /// / Image file start pos, bytes
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// main dvriver face image info
    /// </summary>
    public struct NET_DRIVER_FACE_IMAGE_INFO
    {
        /// <summary>
        /// / Image file size, bytes
        /// </summary>
        public uint nLength;
        /// <summary>
        /// / Image file start pos, bytes
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// DH_MEDIA_QUERY_TRAFFICCAR_EX Check out the file information
    /// DH_MEDIA_QUERY_TRAFFICCAR_EX查询出来的文件信息
    /// </summary>
    public struct MEDIAFILE_TRAFFICCAR_INFO_EX
    {
        public uint dwSize;
        /// <summary>
        /// DH_MEDIA_QUERY_TRAFFICCAR_EX Check out the file information
        /// 基本信息
        /// </summary>
        public MEDIAFILE_TRAFFICCAR_INFO stuInfo;
        /// <summary>
        /// Device Address
        /// 设备地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szDeviceAddr;
        /// <summary>
        /// Vehicle identification, such as "Unknown" - unknown, "Audi" - Audi, "Honda" - Honda
        /// 车辆标识, 例如 "Unknown"-未知, "Audi"-奥迪, "Honda"-本田
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVehicleSign;
        /// <summary>
        /// self defined parking space number, for parking
        /// 自定义车位号（停车场用）
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCustomParkNo;
        /// <summary>
        /// Specifies the sub-brand of vehicle,the real value can be found in a mapping table from the development manual
        /// 车辆子品牌，需要通过映射表得到真正的子品牌
        /// </summary>
        public ushort wVehicleSubBrand;
        /// <summary>
        /// Specifies the model years of vehicle. the real value can be found in a mapping table from the development manual
        /// 车辆年款，需要通过映射表得到真正的年款
        /// </summary>
        public ushort wVehicleYearModel;
        /// <summary>
        /// corresponding to throughTime in electronic tag info
        /// 对应电子车牌标签信息中的过车时间(ThroughTime)
        /// </summary>
        public NET_TIME stuEleTagInfoUTC;
        /// <summary>
        /// record or snapshot file mark
        /// 录像或抓图文件标志
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public EM_RECORD_SNAP_FLAG_TYPE[] emFalgLists;
        /// <summary>
        /// mark total
        /// 标志总数
        /// </summary>
        public int nFalgCount;
        /// <summary>
        /// safe belt state
        /// 安全带状态
        /// </summary>
        public EM_SAFE_BELT_STATE emSafeBelSate;
        /// <summary>
        /// calling state
        /// 打电话状态
        /// </summary>
        public EM_CALLING_STATE emCallingState;
        /// <summary>
        /// the count of attachment
        /// 车内物品个数
        /// </summary>
        public int nAttachMentNum;
        /// <summary>
        /// attachment info
        /// 车内物品信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_ATTACH_MENET_INFO[] stuAttachMent;
        /// <summary>
        /// attachment info
        /// 车牌所属国家和地区
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCountry;
        /// <summary>
        /// car type
        /// 车辆类型
        /// </summary>
        public EM_CATEGORY_TYPE emCarType;
        /// <summary>
        /// sun shade state
        /// 遮阳板状态
        /// </summary>
        public EM_NET_SUNSHADE_STATE emSunShadeState;
        /// <summary>
        /// smoking state
        /// 是否抽烟
        /// </summary>
        public EM_SMOKING_STATE emSmokingState;
        /// <summary>
        /// the count of annual inspections
        /// 年检标个数
        /// </summary>
        public int nAnnualInspection;
        /// <summary>
        /// Byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// PictureID high 4 bytes
        /// PictureID高四字节
        /// </summary>
        public int nPicIDHigh;
        /// <summary>
        /// PictureID low 4 bytes
        /// PictureID低四字节
        /// </summary>
        public int nPicIDLow;
        /// <summary>
        /// The client 1 upload information
        /// 平台客户端1上传信息
        /// </summary>
        public NET_UPLOAD_CLIENT_INFO stuClient1;
        /// <summary>
        /// The client 2 upload information
        /// 平台客户端2上传信息
        /// </summary>
        public NET_UPLOAD_CLIENT_INFO stuClient2;
        /// <summary>
        /// Three places license plate
        /// 三地车牌
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3 * 32)]
        public string szExtraPlateNumber;
        /// <summary>
        /// Number of license plates
        /// 车牌个数
        /// </summary>
        public int nExtraPlateNumberNum;
        /// <summary>
        /// Vehicle entry time, time format: UTC time
        /// 车辆进站时间，时间格式：UTC时间
        /// </summary>
        public uint nEntranceTime;
        /// <summary>
        /// Vehicle refueling time, time format: UTC time 
        /// 车辆加油时间，时间格式：UTC时间
        /// </summary>
        public uint nOilTime;
        /// <summary>
        /// Vehicle exit time, time format: UTC time
        /// 车辆出站时间，时间格式：UTC时间
        /// </summary>
        public uint nExitTime;
        /// <summary>
        /// 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅starttime和endtime有效(仅使用starttime和endtime, starttime和endtime在MEDIAFILE_TRAFFICCAR_INFO中)
        /// TRUE means only stuStartTimeRealUTC and stuEndTimeRealUTC are valid (only stuStartTimeRealUTC and stuEndTimeRealUTC are used), FALSE means only starttime and endtime are valid (only starttime and endtime are used, starttime and endtime are in MEDIAFILE_TRAFFICCAR_INFO)
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
        /// <summary>
        /// 车牌图片信息
        /// License plate picture information
        /// </summary>
        public NET_PLATE_IMAGE_INFO stuPlateImageInfo;
        /// <summary>
        /// 车身图片信息
        /// car body picture information
        /// </summary>
        public NET_CARBODY_IMAGE_INFO stuCarBodyImageInfo;
        /// <summary>
        /// 车牌代码
        /// Plate code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPlateCode;
		/// <summary>
		/// 离线补传字段，唯一标识一个事件
        /// EventUUID String
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szEventUUIDStr;
		/// <summary>
        /// /sub dvriver face image info
        /// </summary>
        public NET_CODRIVER_FACE_IMAGE_INFO stuCodriverFaceImageInfo;
        /// <summary>
        /// /main dvriver face image info
        /// </summary>
        public NET_DRIVER_FACE_IMAGE_INFO stuDriverFaceImageInfo;
    }

    /// <summary>
    /// The client upload information
    /// 客户端信息
    /// </summary>
    public struct NET_UPLOAD_CLIENT_INFO
    {
        /// <summary>
        /// The id of clent, IPv4 address or MAC
        /// 平台客户端的标识，当前是IPv4地址或者MAC地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szClientID;
        /// <summary>
        /// The upload flag of clent
        /// 平台上传标识
        /// </summary>
        public EM_UPLOAD_FLAG emUploadFlag;
        /// <summary>
        /// The time to upload to clent
        /// 上传到平台的UTC时间
        /// </summary>
        public NET_TIME stuUploadTime;
        /// <summary>
        /// Reserved bytes
        /// 预留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 上传标识
    /// </summary>
    public enum EM_UPLOAD_FLAG
    {
        UNKNOWN = 0,    // 未知
        SUCCEED,        // 成功
        FAILED,         // 失败
    }

    /// <summary>
    /// type of glassess
    /// 眼镜类型
    /// </summary>
    public enum EM_GLASSES_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// sun glasses
        /// 太阳眼镜
        /// </summary>
        SUNGLASS,
        /// <summary>
        /// normal galsses
        /// 普通眼镜
        /// </summary>
        GLASS,
    }

    /// <summary>
    /// alarm type
    /// 报警类型
    /// </summary>
    public enum EM_FREQUENCY_ALARM_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN = -1,
        /// <summary>
        /// high frequency
        /// 高频报警
        /// </summary>
        HIGH,
        /// <summary>
        /// low frequency
        /// 低频报警
        /// </summary>
        LOW,
    }

    /// <summary>
    /// alarm frequency info
    /// 频次报警信息
    /// </summary>
    public struct NET_PERSON_FREQUENCY_INFO
    {
        /// <summary>
        /// alarm Type
        /// 报警类型
        /// </summary>
        public EM_FREQUENCY_ALARM_TYPE emAlarmType;
        /// <summary>
        /// frequency
        /// 频次
        /// </summary>
        public int nTimes;
        /// <summary>
        /// Reserved bytes
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Personnel characteristics information
    /// 人员特征信息
    /// </summary>
    public struct NET_PERSON_FEATURE_VALUE_INFO
    {
        /// <summary>
        /// Offset value in binary data block
        /// 二进制数据块中的偏移值
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// Eigenvalue size
        /// 特征值大小
        /// </summary>
        public uint nLength;
        /// <summary>
        /// Reserved bytes
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 人脸库路人信息
    /// Face database passerby information
    /// </summary>
    public struct NET_A_FACERECOGNITION_CUSTOM_PASSER_BY_INFO
    {
        /// <summary>
        /// 入库地点对应的通道号
        /// storage address channel
        /// </summary>
        public int nStorageAddrChannel;
        /// <summary>
        /// 入库地点(首次抓拍到的地点)对应的预置点号
        /// storage address perset id
        /// </summary>
        public int nStoragePresetID;
        /// <summary>
        /// 入库时间
        /// storage time
        /// </summary>
        public NET_TIME stuStorageTime;
        /// <summary>
        /// 最近出现时间
        /// last appear time
        /// </summary>
        public NET_TIME stuLastAppearTime;
        /// <summary>
        /// 最近出现地点对应的通道号
        /// last appear address channel
        /// </summary>
        public int nLastAppearAddrChannel;
        /// <summary>
        /// 最近出现地点对应的预置点号(球机预置点从1开始)
        /// last appear address perset id
        /// </summary>
        public int nLastAppearPresetID;
        /// <summary>
        /// 出现次数
        /// occurrence number
        /// </summary>
        public uint nOccurrenceNumber;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 人员类型
    /// Personnel type
    /// </summary>
    public enum EM_PERSON_TYPE
    {
        PERSON_TYPE_UNKNOWN,
        /// <summary>
        /// 普通人员
        /// common person
        /// </summary>
        PERSON_TYPE_NORMAL,
        /// <summary>
        /// 
        /// ArgXYF
        /// </summary>
        PERSON_TYPE_SUSPICION,
        /// <summary>
        /// 
        /// ARGXT
        /// </summary>
        PERSON_TYPE_ARGXT,
        /// <summary>
        /// 
        /// 
        /// </summary>
        PERSON_TYPE_VIP,
        /// <summary>
        /// 打假人员
        /// FateCheck
        /// </summary>
        PERSON_TYPE_FATECHECK,
        /// <summary>
        /// 工作人员
        /// Staff
        /// </summary>
        PERSON_TYPE_STAFF,
    }

    /// <summary>
    /// expansion of  personnel information
    /// 人员信息扩展结构体
    /// </summary>
    public struct NET_FACERECOGNITION_PERSON_INFOEX
    {
        /// <summary>
        /// 姓名
        /// person name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPersonName;
        /// <summary>
        /// 出生年,作为查询条件时,此参数填0,则表示此参数无效
        /// birth year, fill 0 is invalid, when is as a query condition
        /// </summary>
        public ushort wYear;
        /// <summary>
        /// 出生月,作为查询条件时,此参数填0,则表示此参数无效
        /// birth month, fill 0 is invalid, when is as a query condition
        /// </summary>
        public byte byMonth;
        /// <summary>
        /// 出生日,作为查询条件时,此参数填0,则表示此参数无效
        /// birth day, fill 0 is invalid, when is as a query condition
        /// </summary>
        public byte byDay;
        /// <summary>
        /// 人员重要等级,1~10,数值越高越重要,作为查询条件时,此参数填0,则表示此参数无效
        /// importance level,1~10,the higher value the higher level. fill 0 is invalid, when is as a query condition
        /// </summary>
        public byte bImportantRank;
        /// <summary>
        /// 性别,1-男,2-女,作为查询条件时,此参数填0,则表示此参数无效
        /// sex, 0-man, 1-female. fill 0 is invalid, when is as a query condition
        /// </summary>
        public byte bySex;
        /// <summary>
        /// 人员唯一标示(证件号码,工号,或其他编号)
        /// the unicle ID for the person
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szID;
        /// <summary>
        /// 图片张数
        /// picture number
        /// </summary>
        public ushort wFacePicNum;
        /// <summary>
        /// 当前人员对应的图片信息
        /// picture info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
        public NET_PIC_INFO[] szFacePicInfo;
        /// <summary>
        /// 人员类型,详见 EM_PERSON_TYPE
        /// Personnel types, see EM_PERSON_TYPE
        /// </summary>
        public byte byType;
        /// <summary>
        /// 证件类型,详见 EM_CERTIFICATE_TYPE
        /// Document types, see EM_CERTIFICATE_TYPE
        /// </summary>
        public byte byIDType;
        /// <summary>
        /// 是否戴眼镜，0-未知 1-不戴 2-戴
        /// Whether wear glasses or not,0-unknown,1-not wear glasses,2-wear glasses
        /// </summary>
        public byte byGlasses;
        /// <summary>
        /// 年龄,0表示未知
        /// Age,0 means unknown
        /// </summary>
        public byte byAge;
        /// <summary>
        /// 省份
        /// province
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProvince;
        /// <summary>
        /// 城市
        /// city
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCity;
        /// <summary>
        /// 人员唯一标识符,首次由服务端生成,区别于ID字段
        /// 修改,删除操作时必填
        /// person unique ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUID;
        /// <summary>
        /// 国籍,符合ISO3166规范
        /// country
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
        public string szCountry;
        /// <summary>
        /// 人员类型是否为自定义: 0 使用Type规定的类型 1 自定义,使用szCustomType字段
        /// using person type: 0 using byType, 1 using CustomType
        /// </summary>
        public byte byIsCustomType;
        /// <summary>
        /// 人员自定义类型
        /// custom type of person
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szCustomType;
        /// <summary>
        /// 备注信息
        /// comment info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
        public string szComment;
        /// <summary>
        /// 人员所属组ID
        /// group ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupID;
        /// <summary>
        /// 人员所属组名, 用户自己申请内存的情况时,
        /// group name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szGroupName;
        /// <summary>
        /// 表情
        /// Emotion
        /// </summary>
        public EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion;
        /// <summary>
        /// 注册人员家庭地址
        /// home address of the person
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szHomeAddress;
        /// <summary>
        /// 眼镜类型
        /// glasses type
        /// </summary>
        public EM_GLASSES_TYPE emGlassesType;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// 眼睛状态
        /// eye state
        /// </summary>
        public EM_EYE_STATE_TYPE emEye;
        /// <summary>
        /// 嘴巴状态
        /// mouth state
        /// </summary>
        public EM_MOUTH_STATE_TYPE emMouth;
        /// <summary>
        /// 口罩状态
        /// mask state
        /// </summary>
        public EM_MASK_STATE_TYPE emMask;
        /// <summary>
        /// 胡子状态
        /// beard state
        /// </summary>
        public EM_BEARD_STATE_TYPE emBeard;
        /// <summary>
        /// 魅力值, -1表示无效, 0未识别，识别时范围1-100,得分高魅力高
        /// attractive, -1:invalid, 0:unknown range:1-100
        /// </summary>
        public int nAttractive;
        /// <summary>
        /// 人员建模状态
        /// person feature state
        /// </summary>
        public EM_PERSON_FEATURE_STATE emFeatureState;
        /// <summary>
        /// 是否指定年龄段
        /// age range is enabled
        /// </summary>
        public bool bAgeEnable;
        /// <summary>
        /// 年龄范围
        /// age range
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] nAgeRange;
        /// <summary>
        /// 目标特征数组有效个数,与 emFeature 结合使用, 如果为0则表示查询所有表情
        /// invalid number in array emEmotion, 0 means all emotion
        /// </summary>
        public int nEmotionValidNum;
        /// <summary>
        /// 目标特征数组,与 byFeatureValidNum 结合使用 设置查询条件的时候使用
        /// human emotion set the query condition
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE[] emEmotions;
        /// <summary>
        /// 注册人员信息扩展个数
        /// extension number of registered personnel information
        /// </summary>
        public int nCustomPersonInfoNum;
        /// <summary>
        /// 注册人员信息扩展
        /// extension of registered personnel information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_CUSTOM_PERSON_INFO[] szCustomPersonInfo;
        /// <summary>
        /// 注册库类型
        /// type of register target DB
        /// </summary>
        public EM_REGISTER_DB_TYPE emRegisterDbType;
        /// <summary>
        /// 有效期时间
        /// effective time
        /// </summary>
        public NET_TIME stuEffectiveTime;
        /// <summary>
        /// 建模失败原因
        /// error code of person feature
        /// </summary>
        public EM_PERSON_FEATURE_ERRCODE emFeatureErrCode;
        /// <summary>
        /// 目标图片张数
        /// Number of target pictures
        /// </summary>
        public uint wFacePicNumEx;
        /// <summary>
        /// 当前人员对应的图片信息
        /// The picture information corresponding to the current person. It is an extension of szFacePicInfo. This field will be used first in the future
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_FACE_PIC_INFO[] szFacePicInfoEx;
        /// <summary>
        /// 人员特征信息
        /// Personnel characteristics information
        /// </summary>
        public NET_PERSON_FEATURE_VALUE_INFO stuPersonFeatureValue;
        /// <summary>
        /// 人员冻结状态
        /// person frozen status
        /// </summary>
        public bool bFrozenStatus;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved;
        /// <summary>
        /// 频次报警信息
        /// alarm frequency info
        /// </summary>
        public NET_PERSON_FREQUENCY_INFO stuFrequencyInfo;
        /// <summary>
        /// 平台唯一标识目标字段，区别于UID,IVSS根据faceRecognitionServer.getCaps能力，SupportIDFromServer值为true时，支持UUID有效
        /// The platform uniquely identifies the target field, which is different from UID. According to the capability of getCaps, IVSS supports UUID when the value of SupportIDFromServer is true.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUUID;
        /// <summary>
        /// 路人信息,由用户申请内存, 一次申请一个
        /// passer info,the space application by the user,Apply one at a time
        /// </summary>
        public IntPtr pstuCustomPasserbyInfo;
        /// <summary>
        /// 考生考试信息, 由用户申请内存, 一次申请一个
        /// Candidate exam information is applied for by the user in memory, one at a time
        /// </summary>
        public IntPtr pstuCustomExamineeInfo;
        /// <summary>
        /// 住户信息, 由用户申请内存, 一次申请一个
        /// Resident information, requested by the user for memory, one at a time
        /// </summary>
        public IntPtr pstuCustomResidentsInfo;
        /// <summary>
        /// 对应抓拍的唯一id
        /// RecordID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRecordID;
        /// <summary>
        /// 人员信息扩展2, 由用户申请内存, 一次申请一个
        /// Personnel information extension 2, where users can apply for memory one at a time
        /// </summary>
        public IntPtr pstuPersonInfoEx2;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 124 - 8 * 4)]
        public byte[] byReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 124 - 4 * 4)]
        public byte[] byReserved;
#endif
    }

    // 人员建模状态
    public enum EM_PERSON_FEATURE_STATE
    {
        UNKNOWN,            // 未知
        FAIL,               // 建模失败,可能是图片不符合要求,需要换图片
        USEFUL,             // 有可用的特征值
        CALCULATING,        // 正在计算特征值
        UNUSEFUL			// 已建模，但算法升级导致数据不可用，需要重新建模
    }

    //注册人员信息扩展结构体
    public struct NET_CUSTOM_PERSON_INFO
    {
        /// <summary>
        /// 人员扩展信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPersonInfo;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 124)]
        public byte[] byReserved;
    }

    // 建模失败原因
    public enum EM_PERSON_FEATURE_ERRCODE
    {
        UNKNOWN,          // 未知
        PIC_FORMAT,       // 图片格式问题
        NO_FACE,          // 无人脸或不清晰
        MULTI_FACE,       // 多个人脸
        PIC_DECODE_FAIL,  // 图片解码失败
        NOT_RECOMMEND,    // 不推荐入库
        FACEDB_FAIL,      // 数据库操作失败
        GET_PICTURE,      // 获取图片失败
        SYSTEM_ERROR,     // 系统异常
    }

    // 人脸图片信息
    public struct NET_FACE_PIC_INFO
    {
        /// <summary>
        /// 文件在二进制数据块中的偏移位置, 单位:字节
        /// </summary>
        public uint dwOffSet;
        /// <summary>
        /// 文件大小, 单位:字节
        /// </summary>
        public uint dwFileLenth;
        /// <summary>
        /// 图片宽度, 单位:像素
        /// </summary>
        public uint dwWidth;
        /// <summary>
        /// 图片高度, 单位:像素
        /// </summary>
        public uint dwHeight;
        /// <summary>
        /// 图片是否算法检测出来的检测过的提交识别服务器时
        /// 则不需要再时检测定位抠图,1:检测过的,0:没有检测过
        /// </summary>
        public bool bIsDetected;
        /// <summary>
        /// 文件路径长度 既 pszFilePath 的大小
        /// </summary>
        public int nFilePathLen;
        /// <summary>
        /// 文件路径,  由用户申请空间, 作为输入条件时不需要
        /// </summary>
        public IntPtr pszFilePath;
        /// <summary>
        /// 图片ID, 针对一人多人脸的情况, 用于区分不同人脸
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPictureID;
        /// <summary>
        /// 图片建模状态
        /// </summary>
        public EM_PERSON_FEATURE_STATE emFeatureState;
        /// <summary>
        /// 建模失败原因
        /// </summary>
        public EM_PERSON_FEATURE_ERRCODE emFeatureErrCode;
        /// <summary>
        /// 图片操作类型
        /// </summary>
        public EM_PIC_OPERATE_TYPE emPicOperate;
        /// <summary>
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public byte[] bReserved;
    }

    //图片操作类型
    public enum EM_PIC_OPERATE_TYPE
    {
        UNKNOWN,         // 未知
        MODIFY,          // 修改
        ADD,             // 新增
        DEL              // 删除
    }

    /// <summary>
    /// face find state call back's info, lAttachHandle is CLIENT_AttachFaceFindState's return value
    /// 人脸查询状态信息回调函数, lAttachHandle是CLIENT_AttachFaceFindState的返回值
    /// </summary>
    public struct NET_CB_FACE_FIND_STATE
    {
        public UInt32 dwSize;
        /// <summary>
        /// Video synopsis task database main key ID 
        /// 视频浓缩任务数据库主键ID
        /// </summary>
        public Int32 nToken;
        /// <summary>
        /// Normal value: 0-100. 1=Searched token does not exist (When subscribe a search that does not exist or already finished)
        /// 正常取值范围：0-100,-1,表示查询token不存在(当订阅一个不存在或结束的查询时)
        /// </summary>
        public Int32 nProgress;
        /// <summary>
        /// The human face amount that match current criteria
        /// 目前符合查询条件的人脸数量
        /// </summary>
        public Int32 nCurrentCount;
    }

    /// <summary>
    ///  AttachFaceFindState interface in parameter 
    ///  AttachFaceFindState接口输入参数
    /// </summary>
    public struct NET_IN_FACE_FIND_STATE
    {
        /// <summary>
        /// Structure size. Must fill in.
        /// </summary>
        public UInt32 dwSize;
        /// <summary>
        /// Search token count. 0=subscribe all searched tasks.
        /// 查询令牌数,为0时,表示订阅所有的查询任务
        /// </summary>
        public Int32 nTokenNum;
        /// <summary>
        /// Search toke,the space application by the user, apply to sizeof(int)*nTokenNum
        /// 查询令牌,由用户申请内存，大小为sizeof(int)*nTokenNum
        /// </summary>
        public IntPtr nTokens;
        /// <summary>
        /// CallBack function 
        /// 回调函数
        /// </summary>
        public fFaceFindStateCallBack cbFaceFindState;
        /// <summary>
        /// User data
        /// 用户数据
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// AttachFaceFindState interface out parameter 
    /// AttachFaceFindState接口输出参数
    /// </summary>
    public struct NET_OUT_FACE_FIND_STATE
    {
        public UInt32 dwSize;
    }

    /// <summary>
    /// StartFindFaceRecognitionInterface input parameters
    /// StartFindFaceRecognition接口输入参数
    /// </summary>
    public struct NET_IN_STARTFIND_FACERECONGNITION
    {
        public UInt32 dwSize;
        /// <summary>
        /// is personal information valid
        /// 人员信息查询条件是否有效
        /// </summary>
        public bool bPersonEnable;
        /// <summary>
        /// personal information
        /// 人员信息查询条件
        /// </summary>
        public NET_FACERECOGNITION_PERSON_INFO stPerson;
        /// <summary>
        /// Face Matching Options
        /// 人脸匹配选项
        /// </summary>
        public NET_FACE_MATCH_OPTIONS stMatchOptions;
        /// <summary>
        /// Query filters
        /// 查询过滤条件
        /// </summary>
        public NET_FACE_FILTER_CONDTION stFilterInfo;
        /// <summary>
        /// Buffer address(Picture binary data)
        /// 缓冲地址(图像二进制数据)
        /// </summary>
        public IntPtr pBuffer;
        /// <summary>
        /// Buffer data length
        /// 缓冲数据长度
        /// </summary>
        public Int32 nBufferLen;
        /// <summary>
        /// Channel ID 
        /// 通道号
        /// </summary>
        public Int32 nChannelID;
        /// <summary>
        /// use stPersonInfoEx when bUsePersonInfoEx is true, otherwise use stPersonInfo
        /// 人员信息查询条件是否有效, 并使用扩展结构体
        /// </summary>
        public bool bPersonExEnable;
        /// <summary>
        /// expansion of person information
        /// 人员信息扩展
        /// </summary>
        public NET_FACERECOGNITION_PERSON_INFOEX stPersonInfoEx;
        /// <summary>
        /// the count of small picture ID
        /// 小图ID数量
        /// </summary>
        public int nSmallPicIDNum;
        /// <summary>
        /// small picture ID
        /// 小图ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nSmallPicID;
        /// <summary>
        /// The type of object
        /// 搜索的目标类型 
        /// </summary>
        public EM_OBJECT_TYPE emObjectType;
        /// <summary>
        /// Channel ID
        /// 通道号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szChannel;
    }

    /// <summary>
    /// 人脸匹配选项
    /// face match options
    /// </summary>
    public struct NET_FACE_MATCH_OPTIONS
    {
        public UInt32 dwSize;
        /// <summary>
        /// Important level 1 to 10 staff, the higher the number the more important (check important level greater than or equal to this level of staff)
        /// 人员重要等级    1~10,数值越高越重要,(查询重要等级大于等于此等级的人员)
        /// </summary>
        public UInt32 nMatchImportant;
        /// <summary>
        /// Face comparison mode, see EM_FACE_COMPARE_MODE
        /// 人脸比对模式,详见EM_FACE_COMPARE_MODE
        /// </summary>
        public EM_FACE_COMPARE_MODE emMode;
        /// <summary>
        /// Face the number of regional
        /// 人脸区域个数
        /// </summary>
        public Int32 nAreaNum;
        /// <summary>
        /// Regional groupings of people face is NET_FACE_COMPARE_MODE_AREA effective when emMode
        /// 人脸区域组合,emMode为NET_FACE_COMPARE_MODE.AREA时有效
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public EM_FACE_AREA_TYPE[] szAreas;
        /// <summary>
        /// Recognition accuracy (ranging from 1 to 10, with the value increases, the detection accuracy is improved, the detection rate of decline. Minimum value of 1 indicates the detection speed priority, the maximum is 10, said detection accuracy preferred. Temporarily valid only for targer detection)
        /// 识别精度(取值1~10,随着值增大,检测精度提高,检测速度下降。最小值为1 表示检测速度优先,最大值为10表示检测精度优先。 暂时只对目标检测有效)
        /// </summary>
        public Int32 nAccuracy;
        /// <summary>
        /// Similarity (must be greater than the degree of acquaintance before the report; expressed as a percentage, from 1 to 100)
        /// 相似度(必须大于该相识度才报告;百分比表示,1~100)
        /// </summary>
        public Int32 nSimilarity;
        /// <summary>
        /// Reported the largest number of candidate (based on similarity to sort candidates to take the maximum number of similarity report)
        /// 报告的最大候选个数(根据相似度进行排序,取相似度最大的候选人数报告)
        /// </summary>
        public Int32 nMaxCandidate;
        /// <summary>
        /// 以图搜图查询模式
        /// The query mode of searching face database by picture
        /// </summary>
        public EM_FINDPIC_QUERY_MODE emQueryMode;
        /// <summary>
        /// 以图搜图结果上报排序方式
        /// The sort order of the result about searching face database by picture
        /// </summary>
        public EM_FINDPIC_QUERY_ORDERED emOrdered;
    }

    /// <summary>
    /// Face contrast pattern
    /// 人脸比对模式
    /// </summary>
    public enum EM_FACE_COMPARE_MODE
    {
        UNKOWN,
        /// <summary>
        /// normal
        /// 正常
        /// </summary>
        NORMAL,
        /// <summary>
        /// Specify the face region combination area
        /// 指定人脸区域组合区域
        /// </summary>
        AREA,
        /// <summary>
        /// Intelligent model, the algorithm according to the situation of facial regions automatically select combination
        /// 智能模式,算法根据人脸各个区域情况自动选取组合 
        /// </summary>
        AUTO,
    }

    /// <summary>
    /// Face region
    /// 人脸区域
    /// </summary>
    public enum EM_FACE_AREA_TYPE
    {
        UNKOWN,
        /// <summary>
        /// eyebrow
        /// 眉毛
        /// </summary>
        EYEBROW,
        /// <summary>
        /// eye
        /// 眼睛
        /// </summary>
        EYE,
        /// <summary>
        /// nose
        /// 鼻子
        /// </summary>
        NOSE,
        /// <summary>
        /// mouth
        /// 嘴巴
        /// </summary>
        MOUTH,
        /// <summary>
        /// face
        /// 脸颊
        /// </summary>
        CHEEK,
    }

    /// <summary>
    /// Query filters
    /// 查询过滤条件
    /// </summary>
    public struct NET_FACE_FILTER_CONDTION
    {
        public UInt32 dwSize;
        /// <summary>
        /// Start time
        /// 开始时间
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// End Time
        /// 结束时间
        /// </summary>
        public NET_TIME stEndTime;
        /// <summary>
        /// Place to support fuzzy matching
        /// 地点,支持模糊匹配 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szMachineAddress;
        /// <summary>
        /// The actual number of database
        /// 实际数据库个数
        /// </summary>
        public Int32 nRangeNum;
        /// <summary>
        /// To query the database type, see EM_FACE_DB_TYPE
        /// 待查询数据库类型,详见EM_FACE_DB_TYPE
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] szRange;
        /// <summary>
        /// Face to query types, see EM_FACERECOGNITION_FACE_TYPE
        /// 待查询人脸类型,详见 EM_FACERECOGNITION_FACE_TYPE
        /// </summary>
        public EM_FACERECOGNITION_FACE_TYPE emFaceType;
        /// <summary>
        /// staff group  
        /// 人员组数   
        /// </summary>
        public Int32 nGroupIdNum;
        /// <summary>
        /// staff group ID 
        /// 人员组ID 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_FACE_FILTER_CONDTION_GROUPID[] szGroupId;
        /// <summary>
        /// start birthday time
        /// 生日起始时间
        /// </summary>
        public NET_TIME stBirthdayRangeStart;
        /// <summary>
        /// end birthday time
        /// 生日结束时间
        /// </summary>
        public NET_TIME stBirthdayRangeEnd;
        /// <summary>
        /// Age range, When byAge[0] is 0 and byAge[1] is 0, it means query all age
        /// 年龄区间，当byAge[0]=0与byAge[1]=0时，表示查询全年龄
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byAge;
        /// <summary>
        /// Reserved
        /// 保留字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Emotion
        /// 表情条件
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE[] emEmotion;
        /// <summary>
        /// Emotion num
        /// 表情条件的个数
        /// </summary>
        public int nEmotionNum;
        /// <summary>
        /// UID num
        /// 人员唯一标识数
        /// </summary>
        public int nUIDNum;
        /// <summary>
        /// UID list
        /// 人员唯一标识列表
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64 * 32)]
        public byte[] szUIDs;
        /// <summary>
        /// UUID num
        /// 平台端人员唯一标识数
        /// </summary>
        public int nUUIDNum;
        /// <summary>
        /// A list of the unique identifiers of the personnel on the platform, according to whether the ability obtained by faceRecognitionServer.getCaps has the field SupportIDFromServer and the value is true, it is valid
        /// 平台端人员唯一标识列表，根据faceRecognitionServer.getCaps获取到的能力是否存在字段SupportIDFromServer且值为true时有效
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64 * 32)]
        public byte[] szUUIDs;
        /// <summary>
        /// Whether to use the start time and end time in UTC format
        /// 是否使用UTC格式的开始、结束时间
        /// </summary>
        public bool bIsUsingRealUTCTime;
        /// <summary>
        /// Start time (UTC time format)
        /// 开始时间（UTC时间格式）
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// End Time (UTC time format) Note: This parameter is paired with StartTimeRealUTC
        /// 结束时间（UTC时间格式）备注：与StartTimeRealUTC配对使用
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
        /// <summary>
        /// 是否使用注册库人员的开始、结束时间
        /// Whether to use the start and end time of the registration database personnel
        /// </summary>
        public bool bIsUsingRegisterStorageTime;
        /// <summary>
        /// 注册库人员的入库开始时间
        /// Starting time for registration of personnel in the repository
        /// </summary>
        public NET_TIME stuStartRegisterStorageTime;
        /// <summary>
        /// 注册库人员的入库结束时间
        /// End time of registration of personnel in the repository
        /// </summary>
        public NET_TIME stuEndRegisterStorageTime;
        /// <summary>
        /// 是否使用注册库人员的修改开始、结束时间
        /// Whether to use the modification start and end time of the registration database personnel
        /// </summary>
        public bool bIsUsingModifyTime;
        /// <summary>
        /// 注册库人员的修改开始时间
        /// Starting time for modifying the registration database personnel
        /// </summary>
        public NET_TIME stuStartModifyTime;
        /// <summary>
        /// 注册库人员的修改结束时间
        /// End time of modification for registration database personnel
        /// </summary>
        public NET_TIME stuEndModifyTime;
        /// <summary>
        /// / 是否查询目标时间记录
        /// / Do you want to query the target time record
        /// </summary>
        public bool bFindObjRecord;
    }

    /// <summary>
    /// NET_FACE_FILTER_CONDTION.szGroupId temp variable
    /// NET_FACE_FILTER_CONDTION.szGroupId 临时变量
    /// </summary>
    public struct NET_FACE_FILTER_CONDTION_GROUPID
    {
        /// <summary>
        /// single GroupId
        /// 单个GroupId
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupId;
    }

    /// <summary>
    /// Target recognition face type
    /// 目标识别人脸类型
    /// </summary>
    public enum EM_FACERECOGNITION_FACE_TYPE
    {
        UNKOWN,
        /// <summary>
        /// All the faces 
        /// 所有人脸  
        /// </summary>
        ALL,
        /// <summary>
        /// recognition success
        /// 识别成功
        /// </summary>
        REC_SUCCESS,
        /// <summary>
        /// recognition fail
        /// 识别失败
        /// </summary>
        REC_FAIL,
    }

    /// <summary>
    /// StartFindFaceRecognition out param
    /// StartFindFaceRecognition接口输出参数
    /// </summary>
    public struct NET_OUT_STARTFIND_FACERECONGNITION
    {
        public UInt32 dwSize;
        /// <summary>
        /// Record number of returns that match the query criteria;-1 means device is querying,will get lately. use CLIENT_AttachFaceFindState to get status
        /// 返回的符合查询条件的记录个数;-1表示总条数未生成,要推迟获取;使用CLIENT_AttachFaceFindState接口获取状态
        /// </summary>
        public Int32 nTotalCount;
        /// <summary>
        /// Query handle
        /// 查询句柄
        /// </summary>
        public IntPtr lFindHandle;
        /// <summary>
        /// The search token received 
        /// 获取到的查询令牌
        /// </summary>
        public Int32 nToken;
    }

    /// <summary>
    /// StartMultiFindFaceRecognition in param
    /// StartMultiFindFaceRecognition 接口输入参数
    /// </summary>
    public struct NET_IN_STARTMULTIFIND_FACERECONGNITION
    {
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public IntPtr pChannelID;
        /// <summary>
        /// 通道申请个数
        /// number of channel
        /// </summary>
        public int nChannelCount;
        /// <summary>
        /// 人员信息查询条件是否有效
        /// Personnel information query is valid
        /// </summary>
        public bool bPersonEnable;
        /// <summary>
        /// 人员信息查询条件
        /// Personnel information query
        /// </summary>
        public NET_FACERECOGNITION_PERSON_INFO stPerson;
        /// <summary>
        /// 人脸匹配选项
        /// Face Matching Options
        /// </summary>
        public NET_FACE_MATCH_OPTIONS stMatchOptions;
        /// <summary>
        /// 查询过滤条件
        /// Query filters
        /// </summary>
        public NET_FACE_FILTER_CONDTION stFilterInfo;
        /// <summary>
        /// 缓冲地址
        /// Buffer address
        /// </summary>
        public IntPtr pBuffer;
        /// <summary>
        /// 缓冲数据长度
        /// Buffer data length
        /// </summary>
        public int nBufferLen;
        /// <summary>
        /// 人员信息查询条件是否有效, 并使用人员信息扩展结构体
        /// use stPersonInfoEx when bUsePersonInfoEx is true, otherwise use stPersonInfo
        /// </summary>
        public bool bPersonExEnable;
        /// <summary>
        /// 人员信息扩展
        /// expansion of personnel information
        /// </summary>
        public NET_FACERECOGNITION_PERSON_INFOEX stPersonInfoEx;
        /// <summary>
        /// 搜索的目标类型
        /// The type of object
        /// </summary>
        public EM_OBJECT_TYPE emObjectType;
        /// <summary>
        /// 通道有效个数
        /// Channel number(Customized used)
        /// </summary>
        public int nChannelNum;
        /// <summary>
        /// 通道号
        /// Channel ID(Customized used)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512 * 32)]
        public string szChannelString;
        /// <summary>
        /// 以图搜图类型, -1: 未知, 0: 特征值搜索, 1: SMD属性特征搜索
        /// Map search type, - 1: Unknown, 0: Feature value search, 1: SMD attribute feature search
        /// </summary>
        public int nProcessType;
        /// <summary>
        /// 是否使能订阅的TaskID字段
        /// Is the subscription enabled for the TaskID field
        /// </summary>
        public bool bIsUsingTaskID;
        /// <summary>
        /// 订阅的TaskID数组有效个数
        /// The number of valid TaskID arrays subscribed to
        /// </summary>
        public int nTaskIDNum;
        /// <summary>
        /// 订阅的TaskID, bIsUsingTaskID为TRUE,nTaskIDNum为0表示订阅所有任务结果
        /// The subscription's TaskID, bIsUsingTaskID is true, and nTaskIDNum is 0, indicating subscription to all task results
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public uint[] nTaskID;
    }

    /// <summary>
    /// StartMultiFindFaceRecognition out param
    /// StartMultiFindFaceRecognition 接口输出参数
    /// </summary>
    public struct NET_OUT_STARTMULTIFIND_FACERECONGNITION
    {
        public UInt32 dwSize;
        /// <summary>
        /// Record number of returns that match the query criteria;-1 means device is querying,will get lately. use CLIENT_AttachFaceFindState to get status
        /// 返回的符合查询条件的记录个数;-1表示总条数未生成,要推迟获取;使用CLIENT_AttachFaceFindState接口获取状态
        /// </summary>
        public Int32 nTotalCount;
        /// <summary>
        /// Query handle
        /// 查询句柄
        /// </summary>
        public IntPtr lFindHandle;
        /// <summary>
        /// The search token received 
        /// 获取到的查询令牌
        /// </summary>
        public Int32 nToken;
    }

    /// <summary>
    /// face data type
    /// 人脸数据类型
    /// </summary>
    public enum EM_FACE_DB_TYPE
    {
        UNKOWN,
        /// <summary>
        /// History database, storage is to detect the human face information, usually does not contain face corresponding personnel information
        /// 历史数据库,存放的是检测出的人脸信息,一般没有包含人脸对应人员信息
        /// </summary>
        HISTORY,
        /// <summary>
        /// The prohibit database
        /// 禁止名单数据库
        /// </summary>
        BLACKLIST,
        /// <summary>
        /// The WL database
        /// 允许名单数据库,废弃
        /// </summary>
        WHITELIST,
        /// <summary>
        /// Alarm library
        /// 报警库
        /// </summary>
        ALARM,
        /// <summary>
        /// Pedestrian Library
        /// 路人库
        /// </summary>
        NET_FACE_DB_TYPE_PASSERBY,
    }

    /// <summary>
    /// DoFindFaceRecognition Interface input parameters
    /// DoFindFaceRecognition 接口输入参数
    /// </summary>
    public struct NET_IN_DOFIND_FACERECONGNITION
    {
        public UInt32 dwSize;
        /// <summary>
        /// Query handle
        /// 查询句柄
        /// </summary>
        public IntPtr lFindHandle;
        /// <summary>
        /// Queries starting serial number
        /// 查询起始序号
        /// </summary>
        public Int32 nBeginNum;
        /// <summary>
        /// The current number of records you want to search for
        /// 当前想查询的记录条数 
        /// </summary>
        public Int32 nCount;
        /// <summary>
        /// the format of the image returned in the query results
        /// 指定查询结果返回图片的格式
        /// </summary>
        public EM_NEEDED_PIC_RETURN_TYPE emDataType;
    }

    /// <summary>
    /// the format of the image returned in the query results
    /// 查询结果返回图片的格式
    /// </summary>
    public enum EM_NEEDED_PIC_RETURN_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知类型
        /// </summary>
        UNKOWN,
        /// <summary>
        /// http url
        /// 返回图片HTTP链接
        /// </summary>
        HTTP_URL,
        /// <summary>
        /// binary data
        /// 返回图片二进制数据
        /// </summary>
        BINARY_DATA,
        /// <summary>
        /// http url and binary data
        /// 返回二进制和HTTP链接
        /// </summary>
        HTTP_AND_BINARY,
    }

    /// <summary>
    /// DoFindFaceRecognition output param
    /// DoFindFaceRecognition接口输出参数
    /// </summary>
    public struct NET_OUT_DOFIND_FACERECONGNITION
    {
        public uint dwSize;
        /// <summary>
        /// The actual number of candidate information structure returned
        /// 实际返回的候选信息结构体个数
        /// </summary>
        public int nCadidateNum;
        /// <summary>
        /// An array of candidate information
        /// 候选信息数组
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CANDIDATE_INFO[] stCadidateInfo;
        /// <summary>
        /// Buffer address(Picture binary data)
        /// 缓冲地址(图片二进制数据)
        /// </summary>
        public IntPtr pBuffer;
        /// <summary>
        /// Buffer data length
        /// 缓冲数据长度
        /// </summary>
        public int nBufferLen;
        /// <summary>
        /// whether or not to use stuCandidatesEx
        /// 是否使用候选对象扩展结构体,若为TRUE, 则表示使用stuCandidatesEx, 且stuCandidates无效, 否则相反
        /// </summary>
        public bool bUseCandidatesEx;
        /// <summary>
        /// the actual return number of stuCandidatesEx
        /// 实际返回的候选信息结构体个数
        /// </summary>
        public int nCadidateExNum;
        /// <summary>
        /// the expansion of candidate information
        /// 当前人脸匹配到的候选对象信息, 实际返回个数同nCandidateNum
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CANDIDATE_INFOEX[] stuCandidatesEx;
    }

    // 通用信息
    public struct NET_MEDIAFILE_GENERAL_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;                  // 图片文件路径
        public int nObjectUrlNum;                          // ObjectUrls的个数
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 260)]
        public string szObjectUrls;             // 小图路径
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4096)]
        public byte[] byReserved;               // 保留字段
    }

    /// <summary>
    /// corresponding facial recognition service  EM_FILE_QUERY_TYPE.FACE FINDNEXT search returned parameter
    /// EM_FILE_QUERY_TYPE.FACE对应的目标识别服务FINDNEXT查询返回参数
    /// </summary>
    public struct NET_MEDIAFILE_FACERECOGNITION_INFO
    {
        /// <summary>
        /// Structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// The existence panorama
        /// 全景图是否存在
        /// </summary>
        public int bGlobalScenePic;
        /// <summary>
        /// Panoramic image file path
        /// 全景图片文件路径
        /// </summary>
        public NET_PIC_INFO_EX stGlobalScenePic;
        /// <summary>
        /// the target face object information
        /// 目标人脸物体信息
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// the target face file path
        /// 目标人脸文件路径
        /// </summary>
        public NET_PIC_INFO_EX stObjectPic;
        /// <summary>
        /// Face Matching the current number of candidates
        /// 当前人脸匹配到的候选对象数量
        /// </summary>
        public int nCandidateNum;
        /// <summary>
        /// Face candidates to match this informatio
        /// 当前人脸匹配到的候选对象信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_CANDIDATE_INFO[] stuCandidates;
        /// <summary>
        /// The current face matching candidates to the image file path
        /// 当前人脸匹配到的候选对象图片文件路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_CANDIDAT_PIC_PATHS[] stuCandidatesPic;
        /// <summary>
        /// time for an alarm
        /// 报警发生时间 
        /// </summary>
        public NET_TIME stTime;
        /// <summary>
        /// Place for an alarm
        /// 报警发生地点
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szAddress;
        /// <summary>
        /// channel no.
        /// 通道号
        /// </summary>
        public int nChannelId;
        /// <summary>
        /// whether or not to use stuCandidatesEx
        /// 是否使用候选对象扩展结构体,若为TRUE, 则表示使用stuCandidatesEx, 且stuCandidates无效, 否则相反
        /// </summary>
        public bool bUseCandidatesEx;
        /// <summary>
        /// the actual return number of stuCandidatesEx
        /// 当前人脸匹配到的候选对象(扩展结构体) 数量
        /// </summary>
        public int nCandidateExNum;
        /// <summary>
        /// the expansion of candidate information
        /// 当前人脸匹配到的候选对象信息, 实际返回个数同nCandidateNum
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_CANDIDATE_INFOEX[] stuCandidatesEx;
        /// <summary>
        /// 目标人脸信息
        /// </summary>
        public NET_FACE_INFO_OBJECT stuFaceInfoObject;
        /// <summary>
        /// 人脸型心(不是包围盒中心), 0-8191相对坐标, 相对于小图
        /// </summary>
        public NET_POINT stuFaceCenter;
        public NET_MEDIAFILE_GENERAL_INFO stuGeneralInfo; // 通用信息
        /// <summary>
        /// 数据库记录号
        /// Database record number
        /// </summary>
        public int nRecNo;
        /// <summary>
        /// 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示stuStartTimeRealUTC和stuEndTimeRealUTC无效
        /// TRUE means only stuStartTimeRealUTC and stuEndTimeRealUTC are valid (only stuStartTimeRealUTC and stuEndTimeRealUTC are used), FALSE means stuStartTimeRealUTC and stuEndTimeRealUTC are invalid
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
		/// <summary>
		/// 离线补传字段，唯一标识一个事件
        /// EventUUID String
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szEventUUIDStr;
    }

    /// <summary>
    /// file information
    /// 文件信息 
    /// </summary>
    public struct NET_PIC_INFO_EX
    {
        public uint dwSize;
        /// <summary>
        /// file size,unit:bite
        /// 文件大小, 单位:字节
        /// </summary>
        public uint dwFileLenth;
        /// <summary>
        /// file path
        /// 文件路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;
    }

    /// <summary>
    /// candidate's path
    /// 候选对象图片文件路径
    /// </summary>
    public struct NET_CANDIDAT_PIC_PATHS
    {
        public uint dwSize;
        /// <summary>
        /// actual file amount
        /// 实际文件个数
        /// </summary>
        public int nFileCount;
        /// <summary>
        /// file information
        /// 文件信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
        public NET_PIC_INFO_EX[] stFiles;
    }

    /// <summary>
    /// Enquiry jump condition
    /// 查询跳转条件
    /// </summary>
    public struct NET_FINDING_JUMP_OPTION_INFO
    {
        public UInt32 dwSize;
        /// <summary>
        /// 查询结果偏移量, 是相对于当前查询的第一条查询结果的位置偏移
        /// Query results offset relative to the first query results position offset current query
        /// </summary>
        public int nOffset;
    }

    /// <summary>
    /// FindGroupInfo port input parameter
    /// FindGroupInfo接口输入参数
    /// </summary>
    public struct NET_IN_FIND_GROUP_INFO
    {
        public uint dwSize;
        /// <summary>
        /// Group ID, SN staff, as null means search all staff group info 
        /// 人员组ID,唯一标识一组人员,为空表示查询全部人员组信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupId;
    }

    /// <summary>
    /// FindGroupInfo port output parameter
    /// FindGroupInfo接口输出参数
    /// </summary>
    public struct NET_OUT_FIND_GROUP_INFO
    {
        public uint dwSize;
        /// <summary>
        /// staff group info , apply space by user, apply to sizeof(NET_FACERECONGNITION_GROUP_INFO)*nMaxGroupNum
        /// 人员组信息,由用户申请空间,大小为sizeof(NET_FACERECONGNITION_GROUP_INFO)*nMaxGroupNum
        /// </summary>
        public IntPtr pGroupInfos;
        /// <summary>
        /// current applied group size
        /// 当前申请的数组大小
        /// </summary>
        public int nMaxGroupNum;
        /// <summary>
        /// device returned staff group number 
        /// 设备返回的人员组个数
        /// </summary>
        public int nRetGroupNum;
    }

    /// <summary>
    /// staff group info 
    /// 人员组信息
    /// </summary>
    public struct NET_FACERECONGNITION_GROUP_INFO
    {
        public uint dwSize;
        /// <summary>
        /// staff group type ,  see  EM_FACE_DB_TYPE
        /// 人员组类型,详见 EM_FACE_DB_TYPE
        /// </summary>
        public EM_FACE_DB_TYPE emFaceDBType;
        /// <summary>
        /// staff group ID, SN(cannot modify, invalid when adding operation)
        /// 人员组ID,唯一标识一组人员(不可修改,添加操作时无效)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupId;
        /// <summary>
        /// staff group name 
        /// 人员组名称 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szGroupName;
        /// <summary>
        /// staff group remark info 
        /// 人员组备注信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szGroupRemarks;
        /// <summary>
        /// current group staff number
        /// 当前组内人员数
        /// </summary>
        public int nGroupSize;
        /// <summary>
        /// returned similarity count
        /// 实际返回的库相似度阈值个数
        /// </summary>
        public int nRetSimilarityCount;
        /// <summary>
        /// library similarity threshold
        /// 库相似度阈值，人脸比对高于阈值认为匹配成功
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public int[] nSimilarity;
        /// <summary>
        /// returned channel count
        /// 实际返回的通道号个数
        /// </summary>
        public int nRetChnCount;
        /// <summary>
        /// the list of channels
        /// 当前组绑定到的视频通道号列表
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public int[] nChannel;
        /// <summary>
        /// 
        ///人脸组建模状态信息: [0]-准备建模的人员数量，不保证一定建模成功;[1]-建模失败的人员数量，图片不符合算法要求，需要更换图片;[2]-已建模成功人员数量，数据可用于算法进行目标识别;[3]-曾经建模成功，但因算法升级变得不可用的数量，重新建模就可用
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public uint[] nFeatureState;
        /// <summary>
        /// 注册库类型
        /// </summary>
        public EM_REGISTER_DB_TYPE emRegisterDbType;
        /// <summary>
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;
        /// <summary>
        /// 路人库配置（选填）
        /// </summary>
	    public NET_PASSERBY_DB_CONFIG_INFO stuPasserbyDBConfig;
        /// <summary>
        /// 组相似度阈值，人脸比对高于阈值认为匹配成功
        /// Group similarity threshold, face alignment higher than the threshold is considered successful matching
        /// </summary>
        public uint nGroupSimilarity;
        /// <summary>
        /// 库口罩相似度阈值，取值范围0-100，可用于口罩检测
        /// Mask Similarity
        /// </summary>
        public uint nMaskSimilarity;
        /// <summary>
        /// 最大注册数目
        /// Maximum registration number
        /// </summary>
        public uint dwCapacity;
        /// <summary>
        /// 注册库满覆盖策略: 0:未知, 1:满停止, 2:满覆盖
        /// Registry full coverage policy: 0: unknown, 1: full stop, 2: full coverage
        /// </summary>
        public int nOverWrite;

        public override string ToString()
        {
            return szGroupId;
        }
    }

    // 路人库配置（选填）
    public struct NET_PASSERBY_DB_CONFIG_INFO
    {
        public uint dwCapacity;                     // 路人库最大注册数目
        public EM_PASSERBY_DB_OVERWRITE_TYPE emOverWriteType;               // 路人库满时覆盖策略
        public NET_PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO stuDuplicateRemoveConfigInfo;   // 路人库去重策略配置(选填)
        public uint dwFileHoldTime;                 // 设置文件保留天数【范围：0~31】单位：天，超过时间将被删除 0：永不过期			
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;                  // 字节对齐
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;				        // 字节保留
    }

    // 路人库满时覆盖策略
    public enum EM_PASSERBY_DB_OVERWRITE_TYPE
    {
        UNKNOWN = -1,       // 未知
        FULL_STOP,      // 满停止
        FULL_COVERAGE,	// 满覆盖
    }

    // 路人库去重策略配置(选填)
    public struct NET_PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO
    {
        public bool bEnable;                        // 使能开关，TRUE：开 FALSE：关
        public EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE emDuplicateRemoveType;  // 路人库去重策略类型	
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_TSECT_ARRAY[] stuTimeSections;       // 时间段间隔(EM_DUPLICATE_REMOVE_TYPE 为 EM_DUPLICATE_REMOVE_TYPE_TIME_SLOT有效)
        public uint dwInterval;                     // 时间间隔，单位分钟（EM_DUPLICATE_REMOVE_TYPE 为 EM_DUPLICATE_REMOVE_TYPE_TIME有效）
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;                  // 字节保留
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;				// 字节保留
    }

    public struct NET_TSECT_ARRAY
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_TSECT[] stuTimeSection;
    }

    // 路人库去重策略类型
    public enum EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE
    {
        UNKNOWN = -1,   // 未知
        ALL,            // 无条件去重
        TIME,           // 按时间间隔去重
        TIME_SLOT,		// 按时间段间隔去重
    }

    /// <summary>
    /// OperateFaceRecognitionGroup interface input parameter
    /// OperateFaceRecognitionGroup接口输入参数
    /// </summary>
    public struct NET_IN_OPERATE_FACERECONGNITION_GROUP
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// operate group type
        /// 操作类型
        /// </summary>
        public EM_OPERATE_FACERECONGNITION_GROUP_TYPE emOperateType;
        /// <summary>
        /// ADD corresponding to NET_ADD_FACERECONGNITION_GROUP_INFO,MODIFY corresponding to NET_MODIFY_FACERECONGNITION_GROUP_INFO,DELETE corresponding to NET_DELETE_FACERECONGNITION_GROUP_INFO
        /// 若操作类型ADD对应结构体为NET_ADD_FACERECONGNITION_GROUP_INFO,MODIFY对应结构体为NET_MODIFY_FACERECONGNITION_GROUP_INFO,DELETE对应结构体为NET_DELETE_FACERECONGNITION_GROUP_INFO
        /// </summary>
        public IntPtr pOPerateInfo;

    }

    /// <summary>
    /// add staff group info
    /// 添加人员组信息
    /// </summary>
    public struct NET_ADD_FACERECONGNITION_GROUP_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// staff group info
        /// 人员组信息
        /// </summary>
        public NET_FACERECONGNITION_GROUP_INFO stuGroupInfo;
    }

    /// <summary>
    /// modify staff group info
    /// 修改人员组信息
    /// </summary>
    public struct NET_MODIFY_FACERECONGNITION_GROUP_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// staff group info
        /// 人员组信息
        /// </summary>
        public NET_FACERECONGNITION_GROUP_INFO stuGroupInfo;
    }


    /// <summary>
    /// delete staff group info
    /// 删除人员组信息
    /// </summary>
    public struct NET_DELETE_FACERECONGNITION_GROUP_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// staff group ID, SN staff
        /// 人员组ID,唯一标识一组人员
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupId;
    }

    /// <summary>
    /// staff group operation enumeration
    /// 人员组操作枚举
    /// </summary>
    public enum EM_OPERATE_FACERECONGNITION_GROUP_TYPE
    {
        /// <summary>
        /// unknow
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// add staff group info
        /// 添加人员组信息
        /// </summary>
        ADD,
        /// <summary>
        /// modify staff group info 
        /// 修改人员组信息
        /// </summary>
        MODIFY,
        /// <summary>
        /// delete staff group info
        /// 删除人员组信息
        /// </summary>
        DELETE,
    }

    /// <summary>
    /// OperateFaceRecognitionGroup interface output parameter
    /// OperateFaceRecognitionGroup接口输出参数
    /// </summary>
    public struct NET_OUT_OPERATE_FACERECONGNITION_GROUP
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// new record staff group ID, SN staff
        /// 新增记录的人员组ID,唯一标识一组人员
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupId; // 
    }


    #endregion

    #region<<Dev State>>

    /// <summary>
    /// Query the Return Data Structure of the HDD Information
    /// </summary>
    public struct NET_HARDDISK_STATE
    {
        public UInt32 dwDiskNum;				// Amount      
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_DEV_DISKSTATE[] stDisks;                // HDD or subarea information 
    }

    /// <summary>
    /// Device HDD State Information
    /// </summary>
    public struct NET_DEV_DISKSTATE
    {
        public uint dwVolume;				// HDD capacity 
        public uint dwFreeSpace;			// HDD free space 
        public byte dwStatus;				// higher 4 byte instruct hdd type, see the enum struct EM_DISK_TYPE; lower four byte instruct HDD status,0-hiberation,1-active,2-malfucntion and etc.;Devide DWORD into four BYTE
        public byte bDiskNum;				// HDD number
        public byte bSubareaNum;			// Subarea number
        public byte bSignal;				// Symbol. 0:local. 1:remote
    }

    public enum EM_DISK_TYPE
    {
        READ_WRITE,                         // 读写驱动器
        READ_ONLY,                          // 只读驱动器
        BACKUP,                             // 备份驱动器或媒体驱动器
        REDUNDANT,                          // 冗余驱动器
        SNAPSHOT,                           // 快照驱动器
    }

    /// <summary>
    /// Camera property
    /// </summary>
    public struct NET_DEV_CAMERA_INFO
    {
        public byte bBrightnessEn;			// Brightness adjustable;1:adjustable,0:can not be adjusted
        public byte bContrastEn;			// Contrast adjustable
        public byte bColorEn;				// Hue adjustable
        public byte bGainEn;				// Gain adjustable
        public byte bSaturationEn;			// Saturation adjustable
        public byte bBacklightEn;			// Backlight compensation adjustable
        public byte bExposureEn;			// Exposure option adjustable
        public byte bColorConvEn;			// Day/night switch 
        public byte bAttrEn;				// Property option; 1:Enable, 0:unable
        public byte bMirrorEn;				// Mirror;1:support,0:do not support 
        public byte bFlipEn;				// Flip;1:support,0:do not support 
        public byte iWhiteBalance;			// White Balance 1 Support,0 :Do not support
        public byte iSignalFormatMask;		// Signal format mask,Bitwise:0-Inside(Internal input) 1- BT656 2-720p 3-1080i  4-1080p  5-1080sF
        public byte bRotate90;				// 90-degree rotation 1:support,0:do not support 
        public byte bLimitedAutoExposure;   // Support the time limit with automatic exposure 1:support,0:do not support 
        public byte bCustomManualExposure;  // support user-defined manual exposure time 1:support,0:do not support
        public byte bFlashAdjustEn;			// Support the flash lamp adjust
        public byte bNightOptions;			// Support day and night change
        public byte iReferenceLevel;    	// Support electric reference setting
        public byte bExternalSyncInput;     // Support external sync Input
        public ushort usMaxExposureTime;      // Max exposure time, unit:ms         
        public ushort usMinExposureTime;      // Min exposure time, unit:ms
        public byte bWideDynamicRange;      // Wide dynamic range,0-present not support,2~n max supported range value
        public byte bDoubleShutter;         // Double Shutter
        public byte byExposureCompensation; // 1 support, 0 not support
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 109)]
        public byte[] bRev;				    // reserved 
    }

    /// <summary>
    /// struct of motion alarm
    /// </summary>
    public struct NET_CLIENT_MOTIONDETECT_STATE
    {
        public uint dwSize;
        public int channelcount;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public uint[] dwAlarmState;           //DWORD value is the state by bit of 32 channels,0-no alarm,1-alarm
    }

    /// <summary>
    /// struct of blind alarm
    /// </summary>
    public struct NET_CLIENT_VIDEOBLIND_STATE
    {
        public uint dwSize;
        public int channelcount;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public uint[] dwAlarmState;           //DWORD value is the state by bit of 32 channels,0-no alarm,1-alarm
    }

    /// <summary>
    /// the IPC types device supported
    /// </summary>
    public struct NET_DEV_IPC_INFO
    {
        public int nTypeCount;          // The IPC type amount supported
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public EM_IPC_TYPE[] bSupportTypes;             // Enumeration value please refer to EM_IPC_TYPE
    }

    /// <summary>
    /// IPC type
    /// </summary>
    public enum EM_IPC_TYPE : byte
    {
        PRIVATE,                             // private
        AEBELL,                              // AEBell
        PANASONIC,                           // panasonic
        SONY,                                // sony
        DYNACOLOR,                           // Dynacolor
        TCWS = 5,                           // TCWS	
        SAMSUNG,                             // Samsung
        YOKO,                                // YOKO
        AXIS,                                // AXIS
        SANYO,							     // sanyo       
        BOSH = 10,							 // Bosch
        PECLO,								 // PECLO
        PROVIDEO,							 // Provideo
        ACTI,								 // ACTi
        VIVOTEK,							 // Vivotek
        ARECONT = 15,                        // Arecont
        PRIVATEEH,			                 // PrivateEH	
        IMATEK,					             // IMatek
        SHANY,                               // Shany
        VIDEOTREC,                           // videorec
        URA = 20,                            // Ura
        BITICINO,                            // Bticino 
        ONVIF,                               // Onvif protocol type
        SHEPHERD,                            // Shepherd
        YAAN,                                // Yaan
        AIRPOINT = 25,                       // Airpoint
        TYCO,                                // TYCO
        XUNMEI,								 // Xunmei
        HIKVISION,							 // 
        LG,                                  // LG
        AOQIMAN = 30,                        // Aoqiman
        BAOKANG,                             // baokang  
        WATCHNET,                            // Watchnet
        XVISION,                             // Xvision
        FUSITSU,                             // Fisitu
        CANON = 35,							 // Canon
        GE,								     // GE
        Basler,								 // Basler
        Patro,								 // Patro
        CPKNC,								 // CPPLUS K series
        CPRNC = 40,							 // CPPLUS R series
        CPUNC,								 // CPPLUS U series
        CPPLUS,								 // cpplus oem 
        XunmeiS,							 // XunmeiS
        GDDW,								 // guangdong power grid
        PSIA = 45,                           // PSIA
        GB2818,                              // GB2818	
        GDYX,                                // GDYX
        OTHER,                               // custom
        CPUNR,								 // CPPLUS NVR
        CPUAR = 50,							 // CPPLUS DVR
        AIRLIVE,                             // Airlive	
        NPE,								 // NPE	
        AXVIEW,								 // AXVIEW
        DFWL,                                // DFWL
        HYUNDAI = 56,						 // HYUNDAI DVR
        APHD,								 // APHD
        WELLTRANS,							 // WELLTRANS
        CDJF,								 // CDJF
        JVC = 60,						     // JVC
        INFINOVA,							 // INFINOVA
        ADT,								 // ADT
        SIVIDI,								 // SIVIDI
        CPUNP,								 // CPPLUS PTZ
        HX = 65,							 // HX
        TJGS,                                // TJGS
        MULTICAST = 79,                      // Multicast
        RVI = 84,							 // RVi  
    }

    /// <summary>
    /// RAID info
    /// </summary>
    public struct NET_ALARM_RAID_INFO
    {
        /// <summary>
        /// 上报的RAID个数
        /// RAID number
        /// </summary>
        public int nRaidNumber;
        /// <summary>
        /// 异常的RAID信息
        /// RAID info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_RAID_STATE_INFO[] stuRaidInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string reserved;
    }

    /// <summary>
    /// RAID STATE INFO
    /// </summary>
    public struct NET_RAID_STATE_INFO
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szName;					    // Raid name
        public byte byType;						// type 1:Jbod     2:Raid0      3:Raid1     4:Raid5
        public byte byStatus;					// status 0:unknown ,1:active,2:degraded,3:inactive,4:recovering
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        public int nCntMem;					// nMember number
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nMember;				    // 1,2,3,.
        public int nCapacity;					// capacity(G)
        public int nRemainSpace;				// remain space(M)
        public int nTank;						// Tank 0:main,1:tank1,2:tank2 ...
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] reserved;
    }

    /// <summary>
    /// Connect state
    /// </summary>
    public enum EM_CONNECT_STATE
    {
        UNCONNECT = 0,
        CONNECTING,
        CONNECTED,
        ERROR = 255,
    }

    /// <summary>
    /// struct of video loss alarm
    /// </summary>
    public struct NET_CLIENT_VIDEOLOST_STATE
    {
        public uint dwSize;
        public int channelcount;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public uint[] dwAlarmState;           //UINT32 value is the state by bit of 32 channels,0-no alarm,1-alarm
    }

    /// <summary>
    /// struct of mask alarm
    /// </summary>
    public struct NET_CLIENT_MASK_STATE
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] dwAlarmState;           //byte value is the state by byte of 16 channels,0-no mask,1-mask  
    }

    /// <summary>
    /// front IPC disconnect alarm info
    /// </summary>
    public struct NET_ALARM_FRONTDISCONNET_INFO
    {
        public uint dwSize;                           // struct size
        public int nChannelID;                       // channel id
        public int nAction;                          // 0:start 1:stop
        public NET_TIME stuTime;                          // event happen time
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)]
        public byte[] szIpAddress;                      // front IP's address
        public NET_GPS_STATUS_INFO stGPSStatus;                  // GPS info 
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    #endregion

    #region QueryDevInfo

    /// <summary>
    /// QueryDevInfo , NET_QUERY_DEV_STORAGE_INFOS input param
    /// QueryDevInfo , NET_QUERY_DEV_STORAGE_INFOS接口输入参数
    /// </summary>
    public struct NET_IN_STORAGE_DEV_INFOS
    {
        public uint dwSize;
        /// <summary>
        /// volume type to get
        /// 要获取的卷类型
        /// </summary>
        public EM_A_NET_VOLUME_TYPE emVolumeType;
    }

    /// <summary>
    /// 存储分区信息
    /// Storage partition info
    /// </summary>
    public struct NET_STORAGE_PARTITION
    {
        public uint dwSize;
        /// <summary>
        /// 名称
        /// Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 总空间, byte
        /// Total space(MB)
        /// </summary>
        public long nTotalSpace;
        /// <summary>
        /// 剩余空间, byte
        /// free space(MB)
        /// </summary>
        public long nFreeSpace;
        /// <summary>
        /// 挂载点
        /// Mount point
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szMountOn;
        /// <summary>
        /// 文件系统
        /// File system
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szFileSystem;
        /// <summary>
        /// 分区状态, 0-LV不可用, 1-LV可用
        /// partition state, 0-LV not available, 1-LV available
        /// </summary>
        public int nStatus;
        /// <summary>
        /// 设备是否支持当前文件系统, TRUE:支持， FALSE:不支持
        /// Whether the device supports the current file system, TRUE: Yes, FALSE: No
        /// </summary>
        public bool bIsSupportFs;
        /// <summary>
        /// bIsSupportFs字段是否有效，FALSE表示设备是否支持系统未知
        /// Whether the field bIsSupportFs is valid, FALSE means that the device does not support an unknown system
        /// </summary>
        public bool abIsSupportFs;
    }

    ///  存储设备状态 byState：
    /// NET_STORAGE_DEV_OFFLINE                 0                   // 物理硬盘脱机状态
    /// NET_STORAGE_DEV_RUNNING                 1                   // 物理硬盘运行状态
    /// NET_STORAGE_DEV_ACTIVE                  2                   // RAID活动
    /// NET_STORAGE_DEV_SYNC                    3                   // RAID同步
    /// NET_STORAGE_DEV_SPARE                   4                   // RAID热备(局部)
    /// NET_STORAGE_DEV_FAULTY                  5                   // RAID失效
    /// NET_STORAGE_DEV_REBUILDING              6                   // RAID重建
    /// NET_STORAGE_DEV_REMOVED                 7                   // RAID移除
    /// NET_STORAGE_DEV_WRITE_ERROR             8                   // RAID写错误
    /// NET_STORAGE_DEV_WANT_REPLACEMENT        9                   // RAID需要被替换
    /// NET_STORAGE_DEV_REPLACEMENT             10                  // RAID是替代设备
    /// NET_STORAGE_DEV_GLOBAL_SPARE            11                  // 全局热备
    /// NET_STORAGE_DEV_ERROR                   12                  // 错误, 部分分区可用
    /// NET_STORAGE_DEV_RAIDSUB                 13                  // 该盘目前是单盘, 原先是块Raid子盘, 有可能在重启后自动加入Raid
    /// NET_STORAGE_DEV_FATAL                   14                  // 严重错误,全部分区坏(DVR新增错误类型)
    /// NET_STORAGE_DEV_SNAPSHOT_PARENT         15                  // 快照母盘
    /// NET_STORAGE_DEV_SNAPSHOT_CHILD          16                  // 快照子盘
    /// NET_STORAGE_DEV_VOLUMECLONE_PARENT      17                  // 卷克隆母盘
    /// NET_STORAGE_DEV_VOLUMECLONE_CHILD       18                  // 卷克隆子盘
    /// NET_STORAGE_DEV_UNFORMATTED             19                  // 未格式化

    /// <summary>
    /// 存储设备信息
    /// Storage device info
    /// </summary>
    public struct NET_STORAGE_DEVICE
    {
        public uint dwSize;
        /// <summary>
        /// 名称
        /// name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 总空间, byte
        /// Total space, byte
        /// </summary>
        public long nTotalSpace;
        /// <summary>
        /// 剩余空间, byte
        /// free space, byte
        /// </summary>
        public long nFreeSpace;
        /// <summary>
        /// 介质, 0-DISK, 1-CDROM, 2-FLASH
        /// Media, 0-DISK, 1-CDROM, 2-FLASH medium,
        /// </summary>
        public byte byMedia;
        /// <summary>
        /// 总线, 0-ATA, 1-SATA, 2-USB, 3-SDIO, 4-SCSI
        /// BUS, 0-ATA, 1-SATA, 2-USB, 3-SDIO, 4-SCSI main line 0-ATA, 1-SATA, 2-USB, 3-SDIO, 4-SCSI
        /// </summary>
        public byte byBUS;
        /// <summary>
        /// 卷类型, 0-物理卷, 1-Raid卷, 2-VG虚拟卷, 3-ISCSI, 4-独立物理卷, 5-全局热备卷, 6-NAS卷(包括FTP, SAMBA, NFS)
        /// volume type, 0-physics, 1-Raid, 2- VG virtual 3-ISCSI, 4-Invidual Physical Volume, 5-VolumeGroup, 6-NAS ( FTP, SAMBA, NFS), 7-Invidual Raid Volume
        /// </summary>
        public byte byVolume;
        /// <summary>
        /// 物理硬盘状态, 取值为 NET_STORAGE_DEV_OFFLINE 和 NET_STORAGE_DEV_RUNNING 等
        /// Physics disk state, 0-physics disk offline state 1-physics disk 2- RAID activity 3- RAID sync 4-RAID hotspare 5-RAID invalidation 6- RAID re-creation 7- RAID delete
        /// </summary>
        public byte byState;
        /// <summary>
        /// 同类设备存储接口的物理编号
        /// storage interface of devices of same type logic number
        /// </summary>
        public int nPhysicNo;
        /// <summary>
        /// 同类设备存储接口的逻辑编号
        /// storage interface of devices of same type physics number
        /// </summary>
        public int nLogicNo;
        /// <summary>
        /// 上级存储组名称
        /// superior storage group name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szParent;
        /// <summary>
        /// 设备模块
        /// device module
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szModule;
        /// <summary>
        /// 设备序列号
        /// device serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szSerial;
        /// <summary>
        /// 固件版本
        /// Firmware version
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szFirmware;
        /// <summary>
        /// 分区数
        /// partition number
        /// </summary>
        public int nPartitionNum;
        /// <summary>
        /// 分区信息
        /// partition info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_STORAGE_PARTITION[] stuPartitions;
        /// <summary>
        /// RAID信息, 只对RAID有效(byVolume == 1)
        /// Raid info, for RAID use only(byVolume == 1)
        /// </summary>
        public NET_STORAGE_RAID stuRaid;
        /// <summary>
        /// ISCSI信息, 只对ISCSI盘有效(byVolume == 3)
        /// Iscsi info, for iscsi use only (byVolume == 2)
        /// </summary>
        public NET_ISCSI_TARGET stuISCSI;
        /// <summary>
        /// 扩展柜使能
        /// tank enable
        /// </summary>
        public bool abTank;
        /// <summary>
        /// 硬盘所在扩展柜信息, abTank为TRUE时有效
        /// tank info, effective when abTank = TRUE
        /// </summary>
        public NET_STORAGE_TANK stuTank;
        /// <summary>
        /// 硬盘电源状态
        /// hard disk power mode
        /// </summary>
        public EM_STORAGE_DISK_POWERMODE emPowerMode;
        /// <summary>
        /// 硬盘预检状态
        /// pre disk check(EVS)
        /// </summary>
        public EM_STORAGE_DISK_PREDISKCHECK emPreDiskCheck;
        /// <summary>
        /// 设备操作状态: 0: 正常工作状态, 1: 休眠中, 2: 等待格式化, 3: 格式化进行中,
        /// 4: 等待碎片整理, 5: 碎片整理中, 6: 等待创建RAID 7: 创建RAID中, 8: 等待删除RAID, 9: 删除RAID中,
        /// 10: 等待文件系统修复, 11: 文件系统修复中, 12: 等待预检, 13: 正在预检
        /// Equipment operation status: 0: normal working state, 1: sleeping, 2: waiting for formatting, 3: formatting in progress,
        /// 4: waiting for defragmentation, 5: defragmenting, 6: waiting for RAID creation7: In creating raid, 8: waiting to delete raid, 9: deleting raid,
        /// 10: waiting for file system repair, 11: file system repair, 12: waiting for pre inspection, 13: pre inspection
        /// </summary>
        public int nOpState;
    }

    /// <summary>
    /// QueryDevInfo , NET_QUERY_DEV_STORAGE_INFOS output parameter
    /// QueryDevInfo , NET_QUERY_DEV_STORAGE_INFOS 输出参数
    /// </summary>
    public struct NET_OUT_STORAGE_DEV_INFOS
    {
        public uint dwSize;
        /// <summary>
        /// device storage moduleinfo list to get
        /// 获取到设备的存储模块信息列表
        /// </summary>
        public int nDevInfosNum;
        /// <summary>
        /// device info list, dwsize of NET_STORAGE_DEVICE need to assign value
        /// 设备信息列表, NET_STORAGE_DEVICE的dwsize需赋值
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_STORAGE_DEVICE[] stuStoregeDevInfos;
    }

    /// <summary>
    /// RAID Info
    /// RAID信息
    /// </summary>
    public struct NET_STORAGE_RAID
    {
        public uint dwSize;
        /// <summary>
        /// level
        /// 等级  
        /// </summary>
        public int nLevel;
        /// <summary>
        /// RAID state combination NET_RAID_STATE_ACTIVE | NET_RAID_STATE_DEGRADED
        /// RAID状态组合, 如 NET_RAID_STATE_ACTIVE | NET_RAID_STATE_DEGRADED
        /// </summary>
        public int nState;
        /// <summary>
        /// member amount
        /// 成员数量
        /// </summary>
        public int nMemberNum;
        /// <summary>
        /// RAID member
        /// RAID成员
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_STORAGE_NAME_LEN_String[] szMembers;
        /// <summary>
        /// Sync percentage, 0~100, RAID status has"Recovering" or "Resyncing" valid
        /// 同步百分比, 0~100, RAID状态中有"Recovering"或"Resyncing"时有效
        /// </summary>
        public float fRecoverPercent;
        /// <summary>
        /// Sync speed, unit MBps, RAID status has"Recovering" or "Resyncing" valid
        /// 同步速度, 单位MBps, RAID状态中有"Recovering"或"Resyncing"时有效
        /// </summary>
        public float fRecoverMBps;
        /// <summary>
        /// Sync remaining time, unit minute, RAID status has "Recovering" or "Resyncing" valid
        /// 同步剩余时间, 单位分钟, RAID状态中有"Recovering"或"Resyncing"时有效
        /// </summary>
        public float fRecoverTimeRemain;
        /// <summary>
        /// RAID member info
        /// RAID成员信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_RAID_MEMBER_INFO[] stuMemberInfos;
        /// <summary>
        /// The number of RAID device
        /// RAID设备个数
        /// </summary>
        public int nRaidDevices;
        /// <summary>
        /// The total count of RAID device
        /// RAID设备总数
        /// </summary>
        public int nTotalDevices;
        /// <summary>
        /// The number of active device
        /// 活动设备个数
        /// </summary>
        public int nActiveDevices;
        /// <summary>
        /// The number of working device
        /// 工作设备个数
        /// </summary>
        public int nWorkingDevices;
        /// <summary>
        /// The number of failed device
        /// 失败设备个数
        /// </summary>
        public int nFailedDevices;
        /// <summary>
        /// The number of hot-spare device
        /// 热备设备个数    
        /// </summary>
        public int nSpareDevices;

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
        public string szAliasName;// RAID别名,UTF-8编码
        /// <summary>
        /// RAID别名,UTF-8编码
        /// Alias Name,UTF-8 code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAliasNameEx;
    }

    /// <summary>
    /// Store NET_STORAGE_NAME string
    /// 临时放成员名字字符串
    /// </summary>
    public struct NET_STORAGE_NAME_LEN_String
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSTORAGE_NAME;
    }


    /// <summary>
    /// RAID member info
    /// RAID成员信息
    /// </summary>
    public struct NET_RAID_MEMBER_INFO
    {
        public uint dwSize;
        /// <summary>
        /// disk no., may use to describe disk cabinet slot
        /// 磁盘号, 可用于描述磁盘在磁柜的槽位
        /// </summary>
        public uint dwID;
        /// <summary>
        /// partial hot device, true-partial hot device, false-RAID sub disk
        /// 是否局部热备, true-局部热备, false-RAID子盘
        /// </summary>
        public bool bSpare;
    }

    /// <summary>
    /// ISCSI Target Info
    /// ISCSI Target信息
    /// </summary>
    public struct NET_ISCSI_TARGET
    {
        public uint dwSize;
        /// <summary>
        /// Name
        /// 名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// service address
        /// 服务器地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szAddress;
        /// <summary>
        /// user name
        /// 用户名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUser;
        /// <summary>
        /// port
        /// 端口
        /// </summary>
        public int nPort;
        /// <summary>
        /// status, 0- unknow, 1-connected, 2-un connected, 3-connect failed, 4-authentication failed, 5-connect time out	
        /// 状态, 0-未知, 1-已连接, 2-未连接, 3-连接失败, 4-认证失败, 5-连接超时, 6-不存在
        /// </summary>
        public uint nStatus;
    }

    /// <summary>
    /// storage tank info
    /// 扩展柜信息
    /// </summary>
    public struct NET_STORAGE_TANK
    {
        public uint dwSize;
        /// <summary>
        /// level, the host is 0 level
        /// 级别, 主机是第0级,其它下属级别类推
        /// </summary>
        public int nLevel;
        /// <summary>
        /// extend port number from 0
        /// 同一级扩展柜内的扩展口编号, 从0开始
        /// </summary>
        public int nTankNo;
        /// <summary>
        /// Corresponding cabinet board card no., start from 0
        /// 对应主柜上的板卡号, 从0开始编号  
        /// </summary>   
        public int nSlot;
    }

    /// <summary>
    /// access gate information intput parameters
    /// 智能交通外接道闸信息入参
    /// </summary>
    public struct NET_IN_TRAFFIC_SNAP_STROBE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// channel
        /// 通道号
        /// </summary>
        public int nChannel;
    }

    /// <summary>
    /// parkingspace type
    /// 车位类型
    /// </summary>
    public enum EM_PARKINGSPACE_TYPE
    {
        /// <summary>
        /// unkown
        /// 未知
        /// </summary>
        EM_PARKINGSPACE_TYPE_UNKNOWN = -1,
        /// <summary>
        /// parkingspace small_car
        /// 小车车位
        /// </summary>
        EM_PARKINGSPACE_TYPE_SMALL_CAR,
        /// <summary>
        /// parkingspace big_car
        /// 大车车位
        /// </summary>
        EM_PARKINGSPACE_TYPE_BIG_CAR,
    }

    /// <summary>
    /// parking space statistics area status
    /// 区域状态
    /// </summary>
    public struct NET_PARKING_SPACE_AREA_STATUS
    {
        /// <summary>
        /// name
        /// 区域名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
        /// <summary>
        /// all parking space number
        /// 该区域的总车位个数
        /// </summary>
        public uint nCount;
        /// <summary>
        /// parkingspace type
        /// 车位类型
        /// </summary>
        public EM_PARKINGSPACE_TYPE emSpaceType;
        /// <summary>
        /// enable parking space number
        /// 该区域剩余可用的车位个数
        /// </summary>
        public int nRemainCnt;
        /// <summary>
        /// 保留字节
        /// byte reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public char[] szReserved;
    }

    /// <summary>
    /// parking space statistics mode
    /// 统计模式
    /// </summary>
    public enum NET_EM_PARKING_SPACE_STATISTICS_MODE
    {
        /// <summary>
        /// unkown
        /// 未知
        /// </summary>
        EM_PARKING_SPACE_STATISTICS_MODE_UNKNOWN,
        /// <summary>
        /// area mode
        /// 区域模式
        /// </summary>
        EM_PARKING_SPACE_STATISTICS_MODE_AREA_MODE,
        /// <summary>
        /// space mode
        /// 车位模式
        /// </summary>
        EM_PARKING_SPACE_STATISTICS_MODE_SPACE_MODE,
    }

    /// <summary>
    /// parking space type
    /// 车位场景类型
    /// </summary>
    public enum NET_EM_PARKING_SPACE_SCENE_TYPE
    {
        /// <summary>
        /// unkown
        /// 未知
        /// </summary>
        EM_PARKING_SPACE_SCENE_TYPE_UNKNOWN,
        /// <summary>
        /// parking space type
        /// 车位检测类型
        /// </summary>
        EM_PARKING_SPACE_SCENE_TYPE_PARKING_SPACE,
        /// <summary>
        /// parking statistics type
        /// 车位统计类型
        /// </summary>
        EM_PARKING_SPACE_SCENE_TYPE_PARKING_STATISTICS,
    }

    /// <summary>
    /// parking space status
    /// 车位状态
    /// </summary>
    public enum EM_PARKING_SPACE_STATUS
    {
        /// <summary>
        /// unkown
        /// 未知
        /// </summary>
        EM_PARKING_SPACE_UNKNOWN,
        /// <summary>
        /// parkingspace park
        /// 有车
        /// </summary>
        EM_PARKING_SPACE_PARK,
        /// <summary>
        /// parkingspace no park
        /// 无车
        /// </summary>
        EM_PARKING_SPACE_N0_PARK,
    }

    /// <summary>
    /// parking space info
    /// 车位信息
    /// </summary>
    public struct NET_PARKING_SPACE_INFO
    {
        /// <summary>
        /// parking space ID
        /// 车位号
        /// </summary>
        public int nLane;
        /// <summary>
        /// parking space status
        /// 停车状态
        /// </summary>
        public EM_PARKING_SPACE_STATUS emParkStatus;
        /// <summary>
        /// custom park No
        /// 自定义车位号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public char[] szCustomParkNo;
        /// <summary>
        /// parkingspace type
        /// 车位类型
        /// </summary>
        public EM_PARKINGSPACE_TYPE emSpaceType;
        /// <summary>
        /// 保留字节
        /// byte reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] szReserved;
    }

    /// <summary>
    /// NET_QUERY_GET_ALL_PARKING_SPACE_STATUS information intput parameters
    /// QueryDevInfo NET_QUERY_GET_ALL_PARKING_SPACE_STATUS 类型接口输入参数
    /// </summary>
    public struct NET_OUT_GET_ALL_PARKING_SPACE_STATUS_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// reserved
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// parking space info
        /// 车位信息 NET_PARKING_SPACE_INFO（需要用户主动申请内存，在调用前填写）
        /// </summary>
        public IntPtr pstuParkingSpaceInfo;
        /// <summary>
        /// NET_PARKING_SPACE_INFO array number
        /// pstuParkingStatusInfo中分配的NET_PARKING_SPACE_INFO数组个数,需要调用接口前填写
        /// </summary>
        public int nMaxParkingSpace;
        /// <summary>
        /// parking space array number
        /// 实际返回车位数
        /// </summary>
        public int nParkingSpaceNum;
        /// <summary>
        /// scene type
        /// 场景类型
        /// </summary>
        public NET_EM_PARKING_SPACE_SCENE_TYPE emSceneType;
        /// <summary>
        /// statistics mode
        /// 统计模式, emSceneType为EM_PARKING_SPACE_SCENE_TYPE_PARKING_STATISTICS时有效
        /// </summary>
        public NET_EM_PARKING_SPACE_STATISTICS_MODE emStatisticsMode;
        /// <summary>
        /// space area status
        /// 区域状态, emSceneType为EM_PARKING_SPACE_SCENE_TYPE_PARKING_STATISTICS时且emStatisticsMode为EM_PARKING_SPACE_STATISTICS_MODE_AREA_MODE时有效
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_PARKING_SPACE_AREA_STATUS[] stuAreaStatus;
        /// <summary>
        /// area status number
        /// 实际返回区域状态个数
        /// </summary>
        public int nAreaStatusNum;
        /// <summary>
        /// 保留字节
        /// byte reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public char[] szReserved;
    }

    /// <summary>
    /// NET_QUERY_GET_ALL_PARKING_SPACE_STATUS information outtput parameters
    /// QueryDevInfo NET_QUERY_GET_ALL_PARKING_SPACE_STATUS 类型接口输出参数
    /// </summary>
    public struct NET_IN_GET_ALL_PARKING_SPACE_STATUS_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// Working status of intelligent transportation external equipment
    /// 智能交通外接设备工作状态 
    /// </summary>
    public enum EM_TRAFFIC_SNAP_DEVICE_WORK_STATE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
	    EM_TRAFFIC_SNAP_DEVICE_WORK_STATE_UNKNOWN = -1,
        /// <summary>
        /// Fault
        /// 故障
        /// </summary>
	    EM_TRAFFIC_SNAP_DEVICE_WORK_STATE_FAULT,
        /// <summary>
        /// Normal
        /// 正常
        /// </summary>
	    EM_TRAFFIC_SNAP_DEVICE_WORK_STATE_NORMAL,
        /// <summary>
        /// Close
        /// 关闭
        /// </summary>
	    EM_TRAFFIC_SNAP_DEVICE_WORK_STATE_CLOSE
    }

    /// <summary>
    /// Intelligent traffic gate fault code
    /// 智能交通道闸故障代码
    /// </summary>
    public enum EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_UNKNOWN,
        /// <summary>
        /// Encoder signal exception
        /// 编码器信号异常
        /// </summary>
        EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_ENCODER_SIGNAL_EXCEPTION,
        /// <summary>
        /// Running overtime
        /// 电机运行超时
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_MOTOR_RUNNING_OVERTIME,
        /// <summary>
        /// Motor stalling
        /// 电机堵转
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_MOTOR_STALLING,
        /// <summary>
        /// Infrared is blocked by objects
        /// 红外线被物体挡住
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_INFRARED_IS_BLOCKED_BY_OBJECTS,
        /// <summary>
        /// The pressure wave is blocked by an object
        /// 压力波被物体阻挡
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_THE_PRESSURE_WAVE_IS_BLOCKED_BY_AN_OBJECT,
        /// <summary>
        /// Inverter unit protection
        /// 逆变单元保护
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_INVERTER_UNIT_PROTECTION,
        /// <summary>
        /// Accelerated overcurrent
        /// 加速过流
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_ACCELERATED_OVERCURRENT,
        /// <summary>
        /// Deceleration over current
        /// 减速过流
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_DECELERATION_OVER_CURRENT,
        /// <summary>
        /// Constant speed overcurrent
        /// 恒速过流
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_CONSTANT_SPEED_OVERCURRENT,
        /// <summary>
        /// Accelerated overvoltage
        /// 加速过压
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_ACCELERATED_OVERVOLTAGE,
        /// <summary>
        /// Deceleration overpressure
        /// 减速过压
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_DECELERATION_OVERPRESSURE,
        /// <summary>
        /// Constant speed overvoltage
        /// 恒速过压
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_CONSTANT_SPEED_OVERVOLTAGE,
        /// <summary>
        /// Exception braking power supply
        /// 制动电源异常
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_BRAKING_POWER_SUPPLY_EXCEPTION,
        /// <summary>
        /// Under voltage fault
        /// 欠压故障
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_UNDER_VOLTAGE,
        /// <summary>
        /// Frequency converter overload
        /// 变频器过载
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_FREQUENCY_CONVERTER_OVERLOAD,
        /// <summary>
        /// motor overload
        /// 电机过载
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_MOTOR_OVERLOAD,
        /// <summary>
        /// Input phase loss
        /// 输入缺相
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_INPUT_PHASE_LOSS,
        /// <summary>
        /// Output phase loss
        /// 输出缺相
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_OUTPUT_PHASE_LOSS,
        /// <summary>
        /// Module overheating
        /// 模块过热
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_MODULE_OVERHEAT,
        /// <summary>
        /// External fault
        /// 外部故障
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_EXTERNAL_FAULT,
        /// <summary>
        /// exception relay
        /// 继电器异常
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_RELAY_EXCEPTION,
        /// <summary>
        /// exception current detection
        /// 电流检测异常
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_CURRENT_DETECTION_EXCEPTION,
        /// <summary>
        /// exception motor tuning
        /// 电机调谐异常
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_MOTOR_TUNING_EXCEPTION,
        /// <summary>
        /// EEPROM read / write exception
        /// EEPROM 读写异常
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_EEPROM_READ_WRITE_EXCEPTION,
        /// <summary>
        /// Inverter hardware failure
        /// 变频器硬件故障
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_INVERTER_HARDWARE_FAILURE,
        /// <summary>
        /// Motor short circuit to ground
        /// 电机对地短路
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_MOTOR_SHORT_CIRCUIT_TO_GROUND,
        /// <summary>
        /// Run timeout
        /// 运行超时
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_RUN_TIMEOUT,
        /// <summary>
        /// When the gate is opened, it is blocked
        /// 开闸运行时遇阻
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_THE_GATE_IS_BLOCKED,
        /// <summary>
        /// Sensor failure
        /// 传感器故障
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_SENSOR,
        /// <summary>
        /// Limit fault
        /// 限位故障
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_LIMIT,
        /// <summary>
        /// Internal communication fault
        /// 内部通讯故障
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_INTERNAL_COMMUNICATION_FAULT
    }

    /// <summary>
    /// Operation status of intelligent traffic gate
    /// 智能交通道闸运行状态 
    /// </summary>
    public enum EM_TRAFFIC_SNAP_STROBE_RUN_STATE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_RUN_STATE_UNKNOWN = -1,
        /// <summary>
        /// Close
        /// 关
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_RUN_STATE_CLOSE,
        /// <summary>
        /// Open
        /// 开
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_RUN_STATE_OPEN,
        /// <summary>
        /// Opening
        /// 正在开
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_RUN_STATE_OPENING,
        /// <summary>
        /// Closing
        /// 正在关
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_RUN_STATE_CLOSING,
        /// <summary>
        /// Stop
        /// 停
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_RUN_STATE_STOP
    }

    /// <summary>
    /// Reason of last opening and closing of intelligent traffic gate
    /// 智能交通道闸上次开关闸原因 
    /// </summary>
    public enum EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_UNKNOWN,
        /// <summary>
        /// Remote sensor opening
        /// 遥感器开闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_CONTROL_SWITCH_ON,
        /// <summary>
        /// Remote sensor switch off
        /// 遥感器关闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_CONTROL_SWITCH_OFF,
        /// <summary>
        /// Ground sensor loop1 automatically triggers opening
        /// 地感LOOP1自动触发开闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_LOOP_LOOP1_OPEN,
        /// <summary>
        /// Ground sensor loop1 automatically triggers the switch off
        /// 地感LOOP1自动触发关闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_LOOP_LOOP1_CLOSE,
        /// <summary>
        /// Ground sensor loop2 automatically triggers opening
        /// 地感LOOP2自动触发开闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_LOOP_LOOP2_OPEN,
        /// <summary>
        /// External switch opening
        /// 外部开关开闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_EXTERNAL_SWITCH_OPEN,
        /// <summary>
        /// External switch closing
        /// 外部开关关闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_EXTERNAL_SWITCH_CLOSE,
        /// <summary>
        /// Internal switch opening
        /// 内部开关开闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_INTERNAL_SWITCH_OPEN,
        /// <summary>
        /// Internal switch closing
        /// 内部开关关闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_INTERNAL_SWITCH_CLOSE,
        /// <summary>
        /// Automatic delay closing
        /// 自动延时关闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_AUTOMATIC_DELAY_CLOSE,
        /// <summary>
        /// Automatic delay closing and rebound opening in case of resistance
        /// 遇阻反弹开闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_OBSTACLE_REBOUND_TO_OPEN,
        /// <summary>
        /// Infrared anti smash brake
        /// 红外防砸开闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_INFRARED_ANTI_SMASHING_OPEN,
        /// <summary>
        /// Infrared blocking switch off
        /// 红外防砸关闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_INFRARED_ANTI_SMASHING_CLOSE,
        /// <summary>
        /// Pressure wave opening
        /// 压力波开闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_PRESSURE_WAVE_OPEN,
        /// <summary>
        /// Pressure wave closing
        /// 压力波关闸
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_PRESSURE_WAVE_CLOSE
    }

    /// <summary>
    /// Input state of ground sensing for Intelligent Transportation
    /// 智能交通地感输入状态 
    /// </summary>
    public enum EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
	    EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE_UNKNOWN = -1,
        /// <summary>
        /// No car
        /// 无车
        /// </summary>
	    EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE_NO_CAR,
        /// <summary>
        /// Car
        /// 有车
        /// </summary>
	    EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE_CAR,
        /// <summary>
        /// No support
        /// 不支持
        /// </summary>
	    EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE_NO_SUPPORT = 255
    }

    /// <summary>
    /// Input status of intelligent traffic gate
    /// 智能交通道闸输入状态 
    /// </summary>
    public enum EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE_UNKNOWN = -1,
        /// <summary>
        /// To break off
        /// 断开
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE_TO_BREAK_OFF,
        /// <summary>
        /// Close
        /// 闭合
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE_CLOSE,
        /// <summary>
        /// No support
        /// 不支持
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE_NO_SUPPORT = 255
    }

    /// <summary>
    /// Status of intelligent transportation railings
    /// 智能交通栏杆状态 
    /// </summary>
    public enum EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE_UNKNOWN = -1,
        /// <summary>
        /// Normal
        /// 正常
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE_NORMAL,
        /// <summary>
        /// Fall off
        /// 脱落
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE_FALL_OFF,
        /// <summary>
        /// No support
        /// 不支持
        /// </summary>
	    EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE_NO_SUPPORT = 255
    }

    /// <summary>
    /// intelligent transportation external access gate information output parameters
    /// 智能交通外接道闸信息出参
    /// </summary>
    public struct NET_OUT_TRAFFIC_SNAP_STROBE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// Serial no
        /// 设备编号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSerialNo;
        /// <summary>
        /// Vendor
        /// 生产长商
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVendor;
        /// <summary>
        /// Device type
        /// 设备型号 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDevType;
        /// <summary>
        /// Wrok state
        /// 工作状态 
        /// </summary>
        public EM_TRAFFIC_SNAP_DEVICE_WORK_STATE emWorkState;
        /// <summary>
        /// Fault code
        /// 故障代码
        /// </summary>
        public EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE emFaultCode;
        /// <summary>
        /// Operation times of opening the gate after leaving the factory (once opening, not closing)
        /// 出长后开闸运行次数(开闸算一次，关闸不算)
        /// </summary>
        public uint nOpenStrobeCount;
        /// <summary>
        /// Run state
        /// 运行状态
        /// </summary>
        public EM_TRAFFIC_SNAP_STROBE_RUN_STATE emRunState;
        /// <summary>
        /// Reasons for gate opening and closing
        /// 道闸开关闸原因
        /// </summary>
	    public EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE emStrobeActionReason;
        /// <summary>
        /// Strong relay status
        /// 强继电器状态
        /// </summary>
        public EM_RELAY_STATE_TYPE emHeavyCurrentRelayState;
        /// <summary>
        /// Signal relay1
        /// 信号继电器1
        /// </summary>
        public EM_RELAY_STATE_TYPE emSignalRelay1State;
        /// <summary>
        /// Signal relay2
        /// 信号继电器2
        /// </summary>
        public EM_RELAY_STATE_TYPE emSignalRelay2State;
        /// <summary>
        /// Ground sensing input signal
        /// 地感输入信号
        /// </summary>
        public EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE emGroundSenseInState;
        /// <summary>
        /// channel
        /// Opening input state
        /// </summary>
	    public EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE emStrobeInPutState;
        /// <summary>
        /// Railing status
        /// 栏杆状态
        /// </summary>
	    public EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE emRailState;
        /// <summary>
        /// Serial port number (port number connected to the camera)
        /// 串口号（连接相机的端口号）
        /// </summary>
        public uint nCommPort;
        /// <summary>
        /// Reserved bytes
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    #endregion

    #region OSD Config

    /// <summary>
    /// Get/Set OSD Config
    /// OSD配置
    /// </summary>
    public enum EM_CFG_OSD_TYPE
    {
        /// <summary>
        /// Encode widget-channel title config, corresponding to struct NET_OSD_CHANNEL_TITLE, emOsdBlendType in struct must be set
        /// 叠加通道标题属性配置，对应结构体 NET_OSD_CHANNEL_TITLE,其中结构体中的emOsdBlendType为必填参数
        /// </summary>
        CHANNELTITLE = 1000,
        /// <summary>
        /// Encode widget-Time title config, corresponding to NET_OSD_TIME_TITLE, emOsdBlendType in struct must be set
        /// 叠加时间标题属性配置，对应结构体 NET_OSD_TIME_TITLE,其中结构体中的emOsdBlendType为必填参数
        /// </summary>
        TIMETITLE,
        /// <summary>
        /// Encode widget-Self-defined title config, corresponding to NET_OSD_CUSTOM_TITLE, emOsdBlendType  in struct must be set
        /// 叠加自定义标题属性配置，对应结构体 NET_OSD_CUSTOM_TITLE,其中结构体中的stuCustomTitle.emOsdBlendType为必填参数
        /// </summary>
        CUSTOMTITLE,
        /// <summary>
        /// Encode widget-Self-defined title alignment config, corresponding to NET_OSD_CUSTOM_TITLE_TEXT_ALIGN
        /// 叠加自定义标题对齐方式属性配置，对应结构体 NET_OSD_CUSTOM_TITLE_TEXT_ALIGN
        /// </summary>
        CUSTOMTITLETEXTALIGN,
        /// <summary>
        /// Encode widget-common info config, corresponding to NET_OSD_COMM_INFO
        /// 叠加公共属性配置，对应结构体 NET_OSD_COMM_INFO
        /// </summary>
        COMMONINFO,
        /// <summary>
        /// Encode widget-PTZ zoom config, corresponding to NET_OSD_PTZZOOM_INFO
        /// 变倍叠加配置，对应结构体 NET_OSD_PTZZOOM_INFO
        /// </summary>
        PTZZOOM,
        /// <summary>
        /// Encode widget-GPS title,corresponding to NET_OSD_GPS_TITLE
        /// 叠加GPS标题显示配置，对应结构体 NET_OSD_GPS_TITLE
        /// </summary>
        GPSTITLE,
        /// <summary>
        /// Configuration of the statistical plane,which about number of people,  use this config when Class type is NumberStatPlan, correspinding to NET_OSD_NUMBER_PLAN
        /// 人数统计计划叠加OSD配置, 支持NumberStatPlan算法大类时(球机)使用，对应结构体NET_OSD_NUMBER_STATPLAN
        /// </summary>
        NUMBERSTATPLAN,
        /// <summary>
        /// GPS Start number OSD config, , corresponding to NET_CFG_GPSSTARNUM_OSD_INFO
        /// GPS搜星数OSD配置,  对应结构体 NET_CFG_GPSSTARNUM_OSD_INFO
        /// </summary>
        GPSSTARNUM,
    }

    /// <summary>
    /// Overlay Type
    /// 叠加类型
    /// </summary>
    public enum EM_OSD_BLEND_TYPE
    {
        /// <summary>
        /// unknow overlay type
        /// 未知类型
        /// </summary>
        UNKNOW = 0,
        /// <summary>
        /// Overlay to main stream
        /// 叠加到主码流
        /// </summary>
        MAIN,
        /// <summary>
        /// Overlay to extra stream 1
        /// 叠加到辅码流1
        /// </summary>
        EXTRA1,
        /// <summary>
        /// Overlay to extra stream 2
        /// 叠加到辅码流2
        /// </summary>
        EXTRA2,
        /// <summary>
        /// Overlay to extra stream 3
        /// 叠加到辅码流3
        /// </summary>
        EXTRA3,
        /// <summary>
        /// Overlay to snap
        /// 叠加到抓图
        /// </summary>
        SNAPSHOT,
        /// <summary>
        /// Overlay to preview mode
        /// 叠加到预览视频
        /// </summary>
        PREVIEW
    }

    /// <summary>
    /// Encode widget-channel title
    /// 通道标题OSD配置
    /// </summary>
    public struct NET_OSD_CHANNEL_TITLE
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Overlay Type, should set the value whether getting config  or setting config
        /// 叠加类型
        /// </summary>
        public EM_OSD_BLEND_TYPE emOsdBlendType;
        /// <summary>
        /// Overlay or not
        /// 是否叠加
        /// </summary>
        public bool bEncodeBlend;
        /// <summary>
        /// Foreground color
        /// 前景色
        /// </summary>
        public NET_COLOR_RGBA stuFrontColor;
        /// <summary>
        /// Background color
        /// 背景色
        /// </summary>
        public NET_COLOR_RGBA stuBackColor;
        /// <summary>
        /// Zone. The coordinates value ranges from  0 to 8191. Only use left value and top value.The point (left,top) shall be the same as the point(right,bottom).
        /// 区域, 坐标取值[0~8191], 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
        /// </summary>
        public NET_RECT stuRect;
        /// <summary>
        /// 文本对齐方式
        /// Text alignment
        /// </summary>
        public EM_TITLE_TEXT_ALIGNTYPE emTextAlign;
    }

    /// <summary>
    /// Encode widget-Time title
    /// 时间标题
    /// </summary>
    public struct NET_OSD_TIME_TITLE
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Overlay Type, should set the value whether getting config  or setting config
        /// 叠加类型
        /// </summary>
        public EM_OSD_BLEND_TYPE emOsdBlendType;
        /// <summary>
        /// Overlay or not
        /// 是否叠加
        /// </summary>
        public bool bEncodeBlend;
        /// <summary>
        /// Foreground color
        /// 前景色
        /// </summary>
        public NET_COLOR_RGBA stuFrontColor;
        /// <summary>
        /// Background color
        /// 背景色
        /// </summary>
        public NET_COLOR_RGBA stuBackColor;
        /// <summary>
        /// Zone. The coordinates value ranges from  0 to 8191. Only use left value and top value.The point (left,top) shall be the same as the point(right,bottom).
        /// 区域, 坐标取值[0~8191], 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
        /// </summary>
        public NET_RECT stuRect;
        /// <summary>
        /// Display week or not
        /// 是否显示星期
        /// </summary>
        public bool bShowWeek;
    }

    /// <summary>
    /// Encode widget-User-defined title information
    /// 自定义标题信息
    /// </summary>
    public struct NET_CUSTOM_TITLE_INFO
    {
        /// <summary>
        /// Overlay or not
        /// 是否叠加
        /// </summary>
        public bool bEncodeBlend;
        /// <summary>
        /// Foreground color
        /// 前景色
        /// </summary>
        public NET_COLOR_RGBA stuFrontColor;
        /// <summary>
        /// Background color
        /// 背景色
        /// </summary>
        public NET_COLOR_RGBA stuBackColor;
        /// <summary>
        /// Zone. The coordinates value ranges from  0 to 8191. Only use left value and top value.The point (left,top) shall be the same as the point(right,bottom).
        /// 区域, 坐标取值[0~8191], 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
        /// </summary>
        public NET_RECT stuRect;
        /// <summary>
        /// Title contents
        /// 标题内容
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szText;
        /// <summary>
        /// reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Encode widget-User-defined title
    /// 自定义标题
    /// </summary>
    public struct NET_OSD_CUSTOM_TITLE
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Overlay Type, should set the value whether getting config  or setting config
        /// 叠加类型
        /// </summary>
        public EM_OSD_BLEND_TYPE emOsdBlendType;
        /// <summary>
        /// User-defined title amount
        /// 自定义标题数量
        /// </summary>
        public int nCustomTitleNum;
        /// <summary>
        /// User-defined title
        /// 自定义标题
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CUSTOM_TITLE_INFO[] stuCustomTitle;
    }

    /// <summary>
    /// User-defined title text alignment
    /// 自定义标题文本对齐
    /// </summary>
    public struct NET_OSD_CUSTOM_TITLE_TEXT_ALIGN
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// User-defined title amount
        /// 自定义标题数量
        /// </summary>
        public int nCustomTitleNum;
        /// <summary>
        /// User-defined title alignment info
        /// 自定义标题文本对齐方式
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public EM_TITLE_TEXT_ALIGNTYPE[] emTextAlign;
    }

    /// <summary>
    /// title text alignment type
    /// 标题文本对齐方式
    /// </summary>
    public enum EM_TITLE_TEXT_ALIGNTYPE
    {
        /// <summary>
        /// Invalid alignment mathod
        /// 无效的对齐方式
        /// </summary>
        INVALID,
        /// <summary>
        /// Left alignment
        /// 左对齐
        /// </summary>
        LEFT,
        /// <summary>
        /// X coordinate alignment
        /// X坐标中对齐
        /// </summary>
        XCENTER,
        /// <summary>
        /// Y coordinate alignment
        /// Y坐标中对齐
        /// </summary>
        YCENTER,
        /// <summary>
        /// Center
        /// 居中
        /// </summary>
        CENTER,
        /// <summary>
        /// Right alignment
        /// 右对齐
        /// </summary>
        RIGHT,
        /// <summary>
        /// By top alignment
        /// 按照顶部对齐
        /// </summary>
        TOP,
        /// <summary>
        /// By bottom alignment
        /// 按照底部对齐
        /// </summary>
        BOTTOM,
        /// <summary>
        /// By upper left alignment
        /// 按照左上角对齐
        /// </summary>
        LEFTTOP,
        /// <summary>
        /// Next row alignment 
        /// 换行对齐
        /// </summary>
        CHANGELINE,
    }

    /// <summary>
    /// OSD中的字体方案
    /// Font schemes in OSD
    /// </summary>
    public enum EM_OSD_FONT_SOLUTION
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_OSD_FONT_SOLUTION_UNKNOWN,
        /// <summary>
        /// 默认字体 "default-font"
        /// "default-font"
        /// </summary>
        EM_OSD_FONT_SOLUTION_DFAULT,
        /// <summary>
        /// 楷体 "simkai"
        /// "simkai"
        /// </summary>
        EM_OSD_FONT_SOLUTION_SIMKAI,
        /// <summary>
        /// 宋体"simsun"
        /// "simsun"
        /// </summary>
        EM_OSD_FONT_SOLUTION_SIMSUN,
    }

    /// <summary>
    /// Encode widget common info
    /// 公共配置信息
    /// </summary>
    public struct NET_OSD_COMM_INFO
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// overlay font size scale
        /// 叠加字体大小放大比例
        /// </summary>
        public double fFontSizeScale;
        /// <summary>
        /// global font size overlay to main stream, unit px, default is 24
        /// 叠加到主码流上的全局字体大小
        /// </summary>
        public int nFontSize;
        /// <summary>
        /// global font size overlay to sub stream 1, unit px
        /// 叠加到辅码流1上的全局字体大小
        /// </summary>
        public int nFontSizeExtra1;
        /// <summary>
        /// global font size overlay to sub stream 2, unit px
        /// 叠加到辅码流2上的全局字体大小
        /// </summary>
        public int nFontSizeExtra2;
        /// <summary>
        /// global font size overlay to sub stream 3, unit px
        /// 叠加到辅码流3上的全局字体大小
        /// </summary>
        public int nFontSizeExtra3;
        /// <summary>
        /// global font size overlay to snapshot stream, unit px
        /// 叠加到抓图流上的全局字体大小
        /// </summary>
        public int nFontSizeSnapshot;
        /// <summary>
        /// combination picture overlay to snapshot stream, unit px
        /// 叠加到抓图流上合成图片的字体大小
        /// </summary>
        public int nFontSizeMergeSnapshot;
        /// <summary>
        /// 叠加到主码流上的字体方案
        /// Font scheme superimposed on the main stream
        /// </summary>
        public EM_OSD_FONT_SOLUTION emFontSolution;
        /// <summary>
        /// 叠加到辅码流1上的字体方案
        /// Font scheme superimposed on sub-stream 1
        /// </summary>
        public EM_OSD_FONT_SOLUTION emFontSolutionExtra1;
        /// <summary>
        /// 叠加到辅码流2上的字体方案
        /// Font scheme superimposed on sub-stream 2
        /// </summary>
        public EM_OSD_FONT_SOLUTION emFontSolutionExtra2;
        /// <summary>
        /// 叠加到辅码流3上的字体方案
        /// Font scheme superimposed on sub-stream 3
        /// </summary>
        public EM_OSD_FONT_SOLUTION emFontSolutionExtra3;
        /// <summary>
        /// 叠加到抓图码流上的字体方案
        /// Font scheme superimposed on the screenshot stream
        /// </summary>
        public EM_OSD_FONT_SOLUTION emFontSolutionSnapshot;
        /// <summary>
        /// 叠加到合成抓图流上的字体方案
        /// Font scheme overlaid on composite capture stream
        /// </summary>
        public EM_OSD_FONT_SOLUTION emFontSolutionMergeSnapshot;
    }
    #endregion

    #region encode config
    /// <summary>
    /// the configuration about Encode
    /// encode 相关配置
    /// </summary>
    public enum EM_CFG_ENCODE_TYPE
    {
        /// <summary>
        /// Encode-video options config, corresponding to NET_ENCODE_VIDEO_INFO
        /// 编码视频格式属性配置，对应结构体 NET_ENCODE_VIDEO_INFO
        /// </summary>
        VIDEO = 1100,
        /// <summary>
        /// Encode-video pack options config, corresponding to NET_ENCODE_VIDEO_PACK_INFO
        /// 编码视频格式打包模式配置，对应结构体 NET_ENCODE_VIDEO_PACK_INFO
        /// </summary>
        VIDEO_PACK,
        /// <summary>
        /// Encode-video SVC options config, corresponding to NET_ENCODE_VIDEO_SVC_INFO
        /// 编码视频格式SVC配置，对应结构体 NET_ENCODE_VIDEO_SVC_INFO
        /// </summary>
        VIDEO_SVC,
        /// <summary>
        /// Encode-video profile options config, corresponding to NET_ENCODE_VIDEO_PROFILE_INFO
        /// 编码视频格式profile配置，对应结构体 NET_ENCODE_VIDEO_PROFILE_INFO
        /// </summary>
        VIDEO_PROFILE,
        /// <summary>
        /// Encode-video audio compression options config, corresponding to NET_ENCODE_AUDIO_COMPRESSION_INFO
        /// 编码音频压缩格式配置，对应结构体 NET_ENCODE_AUDIO_COMPRESSION_INFO
        /// </summary>
        AUDIO_COMPRESSION,
        /// <summary>
        /// Encode-video audio options config, corresponding to NET_ENCODE_AUDIO_INFO
        /// 编码音频格式配置，对应结构体 NET_ENCODE_AUDIO_INFO
        /// </summary>
        AUDIO_INFO,
        /// <summary>
        /// Encode-video snap options config, corresponding to NET_ENCODE_SNAP_INFO
        /// 编码抓图配置，对应结构体 NET_ENCODE_SNAP_INFO
        /// </summary>
        SNAP_INFO,
        /// <summary>
        /// Encode-video snap time options config, corresponding to NET_ENCODE_SNAP_TIME_INFO
        /// 编码抓图时间相关配置，对应结构体 NET_ENCODE_SNAP_TIME_INFO
        /// </summary>
        SNAPTIME,
        /// <summary>
        /// Encode-video channel title options config, corresponding to NET_ENCODE_CHANNELTITLE_INFO
        /// 通道名称配置，对应结构体 NET_ENCODE_CHANNELTITLE_INFO
        /// </summary>
        CHANNELTITLE,
    }

    /// <summary>
    /// channel title info
    /// 通道名称配置
    /// </summary>
    public struct NET_ENCODE_CHANNELTITLE_INFO
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel title
        /// 通道名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szChannelName;
    }


    #endregion

    public enum EM_CFG_OPERATE_TYPE
    {
        SNAP_MODE,                   // 抓图模式配置,对应结构体 NET_SNAP_MODE
        DEV_CAR_COACH,               // 铁路记录配置, 对应结构体 NET_DEV_CAR_COACH_INFO
        YUEQING_SUPPLYLIGHTING,      // 乐清外接灯光配置, 对应结构体 NET_YUEQING_SUPPLYLIGHTING_INFO
        MEDIA_GLOBAL,                // 媒体组件全局配置, 对应结构体 NET_MEDIA_GLOBAL_INFO
        PARKINGSPACECELL_STATUS,     // 车位设置(专有车位和普通车位的设置), 对应结构体 NET_PARKINGSPACECELL_STATUS_INFO
        PARKINGSPACELIGHT_STATE,     // 车位状态对应的车位指示灯, 对应结构体 NET_PARKINGSPACELIGHT_STATE_INFO
        COAXIAL_LIGHT,               // 白光灯视频通道配置, 对应结构体 NET_CFG_COAXIAL_LIGHT_INFO
        VIDEO_OUT,                   // 	视频输出配置, 对应结构体 NET_CFG_VIDEO_OUT_INFO

        MEDIA_ENCRYPT = 9,           // 媒体数据加密配置,对应结构体 NET_MEDIA_ENCRYPT_INFO,与通道不相关,通道号需要填成-1
        COUNTRY,                     // 国家/地区配置, 对应结构体 NET_CFG_COUNTRY_INFO,与通道不相关,通道号需要填成-1
        VIDEOSTANDARD,               // 视频制式配置, 对应结构体 NET_CFG_VIDEOSTANDARD_INFO,与通道不相关,通道号需要填成-1, 目前设备不支持配置SECAM制式
        SERIAL_PUSH_LOG,             // 串口服务器推送日志配置， 对应结构体 NET_CFG_SERIALPUSHLOG_INFO，与通道不相关需要填成-1
        PRESET_SNAP_PICTURE_NUM,     // 预置点抓拍图片数量配置,对应结构体 NET_CFG_PRESET_SNAP_PICTURE_NUM
        DOWNLOAD_ENCRYPT,            // 下载数据加密配置, 对应结构体 NET_DOWNLOAD_ENCRYPT_INFO,与通道不相关,通道号需要填成-1
        LIFT_CONTROL_OPTION,         // 梯控功能全局配置，对应结构体 NET_CFG_LIFTCONTROL_OPTION,与通道不相关,通道号需要填成-1
        HEALTH_CODE,                 // 健康码使能配置，对应结构体 NET_CFG_HEALTH_CODE_INFO, 与通道不相关,通道号需要填成-1
        RTMP,                        // RTMP 配置，对应结构体 NET_CFG_RTMP_INFO，与通道不相关,通道号需要填成-1
        HUMAN_THERMOMETRY_COMPENSATE,// 人体测温补偿配置(可见光通道有效), 对应结构体 NET_CFG_HUMAN_THERMOMETRY_COMPENSATE_INFO
        LOCAL_HEAT_IMAGE_THERMOMETRY,// NVR本地温度配置，对应结构体 NET_CFG_LOCAL_HEAT_IMAGE_THERMOMETRY_INFO, 与通道不相关,通道号需要填成-1
        ACCESSCONTROL_MEASURE_TEMP,  // 门禁测温配置, 对应结构体 NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO, 与通道不相关,通道号需要填成-1
        DEBUGINFO_REDIR,             // 串口日志重定向配置, 对应结构体 NET_CFG_DEBUGINFO_REDIR_INFO

        JT_SERVER,                   // 部标注册参数配置, 对应结构体 NET_CFG_JT_SERVER_INFO, 与通道不相关,通道号需要填成-1
        REMOTE_DEVICE_TIME_SYNC,     // 同步时间到前端远程设备, 对应结构体  NET_CFG_REMOTE_DEVICE_TIME_SYNC_INFO, 与通道不相关,通道号需要填成-1

        REMOTE_ALARM_OUT,            // 远程报警输出配置,  对应结构体 NET_CFG_REMOTE_ALARMOUT_INFO
        REMAINDER_TIME_WARN,         // 制冷机剩余时间提示,对应的结构体 NET_CFG_REMAINDER_TIME_WARN_INFO
        QR_CODE,                     // 配置二维码有效时间, 对应的结构体 NET_CFG_QR_CODE_INFO , 通道号需要填成-1
        NMP_GLOBAL,                  // NMP系统全局管理配置,  对应结构体NET_CFG_NMP_GLOBAL_INFO, 与通道不相关,通道号需要填成-1
        HEAT_IMAGING_TEMPER = 28,    // 热成像测温点温度异常报警配置, 对应结构体NET_CFG_HEAT_IMAGING_TEMPER_INFO
        IP_TABLE_FILTER,             // 防火墙规则过滤配置, 对应结构体NET_CFG_IP_TABLE_FILTER_INFO, 与通道不相关,通道号需要填成-1
        HB_ECOLOGY_INFO,             // 门禁编号及用户开门唯一标识码配置, 对应结构体 NET_CFG_HB_ECOLOGY_INFO, 与通道不相关,通道号需要填成-1
        LOSS_FRAME_ALARM,            // 录像丢帧报警配置, 对应结构体NET_CFG_LOSS_FRAME_ALARM_INFO
        ALARMIN,                      // 外部报警配置,对应结构体NET_CFG_ALARMIN_INFO
                                      // GetOperateConfig/SetOperateConfig的接口参数lChannel在此枚举下的含义为报警通道，而非视频通道。
                                      // 报警通道个数可以通过登录接口返回的设备信息结构体NET_DEVICEINFO_Ex中的nAlarmInPortNum字段获取,报警通道从0开始。
                                      /// <summary>
                                      /// Disarm white light alarm linkage item configuration, corresponding to structure net_ CFG_ DISABLE_ LIGHTING_ LINKAGE_ Info, not related to the channel, and the channel number needs to be filled with -1
                                      /// 撤防白光灯报警联动项配置, 对应结构体 NET_CFG_DISABLE_LIGHTING_LINKAGE_INFO,与通道不相关,通道号需要填成-1
                                      /// </summary>
        NET_EM_CFG_DISABLE_LIGHTING_LINKAGE = 36,
        /// <summary>
        /// Disarm voice alarm linkage item configuration, corresponding to structure net_ CFG_ DISABLE_ VOICE_ LINKAGE_ Info, not related to the channel, and the channel number needs to be filled with -1
        /// 撤防语音报警联动项配置, 对应结构体 NET_CFG_DISABLE_VOICE_LINKAGE_INFO, 与通道不相关,通道号需要填成-1
        /// </summary>
        NET_EM_CFG_DISABLE_VOICE_LINKAGE = 37,
        /// <summary>
        /// Dynamic detection alarm configuration, corresponding to structure NET_CFG_MOTION_DETECT_INFO
        /// 动态检测报警配置, 对应结构体 NET_CFG_MOTION_DETECT_INFO
        /// </summary>
        NET_EM_CFG_MOTION_DETECT = 38,
        /// <summary>
        /// Snapshot plan configuration, corresponding structure, corresponding to structure NET_CFG_SNAP_FPS
        /// 抓图计划配置，对应结构体 NET_CFG_SNAP_FPS
        /// </summary>
        NET_EM_CFG_SNAP_FPS = 39,
        /// <summary>
        /// Pull flow control configuration, corresponding to structure NET_CFG_STREAM_LOCK_INFO
        /// 拉流控制配置, 对应结构体 NET_CFG_STREAM_LOCK_INFO, 与通道不相关,通道号需要填成-1
        /// </summary>
        NET_EM_CFG_STREAM_LOCK = 40,
        /// <summary>
        /// Pull flow control configuration, corresponding to structure NET_CFG_CAMERA_STREAM_LOCK_INFO
        /// 拉流控制配置, 对应结构体 NET_CFG_CAMERA_STREAM_LOCK_INFO
        /// </summary>
        NET_EM_CFG_CAMERA_STREAM_LOCK = 41,
        /// <summary>
        /// EAS RF detection configuration, corresponding to structure NET_CFG_EAR_DETECTION_CONFIG_INFO
        /// EAS RF款检测配置, 对应结构体 NET_CFG_EAR_DETECTION_CONFIG_INFO
        /// </summary>
        NET_EM_CFG_EAR_DETECTION_CONFIG,
        /// <summary>
        /// Voice configuration, corresponding to structure NET_CFG_SOUND_CONFIG_INFO
        /// 声音配置, 对应结构体 NET_CFG_SOUND_CONFIG_INFO
        /// </summary>
        NET_EM_CFG_SOUND_CONFIG,
        /// <summary>
        /// Early warning configuration of boarding and disembarking passenger flow configuration, corresponding to structure NET_CFG_PASSENGER_FLOW_CONFIG_INFO
        /// 上下客客流预警配置, 对应结构体 NET_CFG_PASSENGER_FLOW_CONFIG_INFO
        /// </summary>
        NET_EM_CFG_PASSENGER_FLOW_CONFIG,
        /// <summary>
        /// Time interval configuration, corresponding to structure NET_CFG_TRAFFIC_LAMP_CONFIG_INFO
        /// 时间间隔配置, 对应结构体 NET_CFG_TRAFFIC_LAMP_CONFIG_INFO, 与通道不相关,通道号需要填成-1
        /// </summary>
        NET_EM_CFG_TRAFFIC_LAMP_CONFIG,
        /// <summary>
        /// Room number, building unit and other information, corresponding to structure NET_CFG_LOCAL_INFO
        /// 房间号、楼幢单元等信息配置, 对应结构体 NET_CFG_LOCAL_INFO
        /// </summary>
        NET_EM_CFG_LOCAL_INFO,
        /// <summary>
        /// Enable configuration of anti-buzzer linkage item, corresponding to structure NET_CFG_DISABLE_BEEP_LINKAGE_INFO
        /// 防蜂鸣联动项使能配置, 对应结构体 NET_CFG_DISABLE_BEEP_LINKAGE_INFO, 与通道不相关,通道号需要填成-1
        /// </summary>
        NET_EM_CFG_DISABLE_BEEP_LINKAGE,
        /// <summary>
        /// Area deployment and removal configuration, corresponding to structure NET_CFG_AREA_ARM_MODE_INFO
        /// Area布撤防配置, 对应结构体 NET_CFG_AREA_ARM_MODE_INFO, 与通道不相关,通道号需要填成-1
        /// </summary>
        NET_EM_CFG_AREA_ARM_MODE,
        NET_EM_CFG_STORE_ENCRYPT,                       // 录像存储加密配置, 对应结构体 NET_STORE_ENCRYPT_INFO,与通道不相关,通道号需要填成-1
        NET_EM_CFG_VEHICLE_ALARM_LINK_PARAM,            // 车载设备报警关联配置, 对应结构体 NET_CFG_VEHICLE_ALARM_LINK_PARAM_INFO,与通道不相关,通道号需要填成-1
        NET_EM_CFG_MOBILE_PHONE_APPLICATION,            // 手机push notification配置, 对应结构体 NET_CFG_MOBILE_PHONE_APPLICATION_INFO,与通道不相关,通道号需要填成-1
        NET_EM_CFG_VSP_CGI,                             // CGI服务开关控制配置, 对应结构体 NET_CFG_VSP_CGI_INFO,与通道不相关,通道号需要填成-1
        NET_EM_CFG_VSP_NTP_SERVER,                      // NTP Server服务开关控制配置, 对应结构体 NET_CFG_CFG_VSP_NTP_SERVER_INFO,与通道不相关,通道号需要填成-1
        NET_EM_CFG_DEVICE_DISCOVERY,                    // 设备搜索配置, 对应结构体 NET_CFG_DEVICE_DISCOVERY_INFO,与通道不相关,通道号需要填成-1
        NET_EM_CFG_LLDP_GLOBAL,                         // LLDPConfig 全局配置, 对应结构体 NET_CFG_LLDP_GLOBAL_INFO,与通道不相关,通道号需要填成-1
        NET_EM_CFG_LOGIN_AUTH_CTRL,                     // 登录安全等级控制配置, 对应结构体 NET_CFG_LOGIN_AUTH_CTRL_INFO,与通道不相关,通道号需要填成-1
        /// <summary>
        /// Elevator floor table configuration, corresponding to NET_CFG_ELEVATOR_FLOOR_TABLE_INFO
        /// 电梯楼层表配置，对应结构体 NET_CFG_ELEVATOR_FLOOR_TABLE_INFO
        /// </summary>
        ELEVATOR_FLOOR_TABLE = 96,
        /// <summary>
        /// Send image configuration, corresponding to NET_CFG_SEND_PICTURE_CONFIG_INFO, Not related to the channel, the channel number needs to be filled in as -1
        /// 发送图片配置，对应结构体 NET_CFG_SEND_PICTURE_CONFIG_INFO, 与通道不相关，通道号需要填成-1
        /// </summary>
        SEND_PICTURE_CONFIG = 110,
        /// <summary>
        /// Equipment channel allocation configuration, corresponding to NET_CFG_DEVICE_CHANNEL_ALLOCATION_INFO, not related to the channel, the channel number needs to be filled in as -1
        /// 设备通道分配配置, 对应结构体 NET_CFG_DEVICE_CHANNEL_ALLOCATION_INFO, 与通道不相关，通道号需要填成-1
        /// </summary>
        DEVICE_CHANNEL_ALLOCATION = 113,
        /*********OSD叠加相关配置*********/
        /// <summary>
        /// Encode widget-channel title config, corresponding to struct NET_OSD_CHANNEL_TITLE, emOsdBlendType in struct must be set
        /// 叠加通道标题属性配置，对应结构体 NET_OSD_CHANNEL_TITLE,其中结构体中的emOsdBlendType为必填参数
        /// </summary>
        CFG_CHANNELTITLE = 1000,
        /// <summary>
        /// Encode widget-Time title config, corresponding to NET_OSD_TIME_TITLE, emOsdBlendType in struct must be set
        /// 叠加时间标题属性配置，对应结构体 NET_OSD_TIME_TITLE,其中结构体中的emOsdBlendType为必填参数
        /// </summary>
        TIMETITLE,
        /// <summary>
        /// Encode widget-Self-defined title config, corresponding to NET_OSD_CUSTOM_TITLE, emOsdBlendType  in struct must be set
        /// 叠加自定义标题属性配置，对应结构体 NET_OSD_CUSTOM_TITLE,其中结构体中的stuCustomTitle.emOsdBlendType为必填参数
        /// </summary>
        CUSTOMTITLE,
        /// <summary>
        /// Encode widget-Self-defined title alignment config, corresponding to NET_OSD_CUSTOM_TITLE_TEXT_ALIGN
        /// 叠加自定义标题对齐方式属性配置，对应结构体 NET_OSD_CUSTOM_TITLE_TEXT_ALIGN
        /// </summary>
        CUSTOMTITLETEXTALIGN,
        /// <summary>
        /// Encode widget-common info config, corresponding to NET_OSD_COMM_INFO
        /// 叠加公共属性配置，对应结构体 NET_OSD_COMM_INFO
        /// </summary>
        COMMONINFO,
        /// <summary>
        /// Encode widget-PTZ zoom config, corresponding to NET_OSD_PTZZOOM_INFO
        /// 变倍叠加配置，对应结构体 NET_OSD_PTZZOOM_INFO
        /// </summary>
        PTZZOOM,
        /// <summary>
        /// Encode widget-GPS title,corresponding to NET_OSD_GPS_TITLE
        /// 叠加GPS标题显示配置，对应结构体 NET_OSD_GPS_TITLE
        /// </summary>
        GPSTITLE,
        /// <summary>
        /// Configuration of the statistical plane,which about number of people,  use this config when Class type is NumberStatPlan, correspinding to NET_OSD_NUMBER_PLAN
        /// 人数统计计划叠加OSD配置, 支持NumberStatPlan算法大类时(球机)使用，对应结构体NET_OSD_NUMBER_STATPLAN
        /// </summary>
        NUMBERSTATPLAN,
        /// <summary>
        /// GPS Start number OSD config,  , corresponding to NET_CFG_GPSSTARNUM_OSD_INFO
        /// GPS搜星数OSD配置,  对应结构体 NET_CFG_GPSSTARNUM_OSD_INFO
        /// </summary>
        GPSSTARNUM,

        PICTURETITLE,                // 图片标题,对应结构体 NET_OSD_PICTURE_TITLE
        OSD_FACEFLOWSTAT,            // 人脸数量统计OSD配置，对应结构体 NET_OSD_FACEFLOWSTAT_INFO 

        PTZ_PRESET,                  // 预置点信息叠加,对应结构体 NET_OSD_CFG_PTZ_PRESET
        PTZ_PATTERN,                 // 显示巡迹百分比叠加配置,对应结构体 NET_OSD_CFG_PTZ_PATTERN
        PTZ_RS485_DETECT,            // 显示RS485检测结果的叠加配置,对应结构体 NET_OSD_CFG_PTZ_RS485_DETECT
        PTZ_COORDINATES,             // 显示云台坐标的叠加配置,对应结构体 NET_OSD_CFG_PTZ_COORDINATES
        PTZ_DIRECTION,               // 显示云台方向的叠加配置,对应结构体 NET_OSD_CFG_PTZ_DIRECTION
        TEMPERATURE,                 // 显示环境温度的叠加配置,对应结构体 NET_OSD_CFG_TEMPERATURE
        COVERS,                      // 区域覆盖,对应结构体 NET_OSD_CFG_COVERS
        USER_DEF_TITLE,              // 用户自定义OSD标题，对应结构体 NET_OSD_USER_DEF_TITLE  DHOP专用
        SNAP_OSD,                    // 抓拍OSD配置, 对应结构体 NET_CFG_SNAP_OSD
		OBJECT_DETECT_SNAP_SHOT,     // IPC物体检测(机非人)抓图叠加OSD配置
		
		/// <summary>
        /// Video OSD GB mode configuration, corresponding to the enumeration NET_EM_CFG_GBMODE
        /// 视频OSD国标模式配置， 对应结构体NET_CFG_GBMODE_INFO
        /// </summary>
		GBMODE, 

        /*********Encode 相关配置*********/
        /// <summary>
        /// Encode-video options config, corresponding to NET_ENCODE_VIDEO_INFO
        /// 编码视频格式属性配置，对应结构体 NET_ENCODE_VIDEO_INFO
        /// </summary>
        VIDEO = 1100,
        /// <summary>
        /// Encode-video pack options config, corresponding to NET_ENCODE_VIDEO_PACK_INFO
        /// 编码视频格式打包模式配置，对应结构体 NET_ENCODE_VIDEO_PACK_INFO
        /// </summary>
        VIDEO_PACK,
        /// <summary>
        /// Encode-video SVC options config, corresponding to NET_ENCODE_VIDEO_SVC_INFO
        /// 编码视频格式SVC配置，对应结构体 NET_ENCODE_VIDEO_SVC_INFO
        /// </summary>
        VIDEO_SVC,
        /// <summary>
        /// Encode-video profile options config, corresponding to NET_ENCODE_VIDEO_PROFILE_INFO
        /// 编码视频格式profile配置，对应结构体 NET_ENCODE_VIDEO_PROFILE_INFO
        /// </summary>
        VIDEO_PROFILE,
        /// <summary>
        /// Encode-video audio compression options config, corresponding to NET_ENCODE_AUDIO_COMPRESSION_INFO
        /// 编码音频压缩格式配置，对应结构体 NET_ENCODE_AUDIO_COMPRESSION_INFO
        /// </summary>
        AUDIO_COMPRESSION,
        /// <summary>
        /// Encode-video audio options config, corresponding to NET_ENCODE_AUDIO_INFO
        /// 编码音频格式配置，对应结构体 NET_ENCODE_AUDIO_INFO
        /// </summary>
        AUDIO_INFO,
        /// <summary>
        /// Encode-video snap options config, corresponding to NET_ENCODE_SNAP_INFO
        /// 编码抓图配置，对应结构体 NET_ENCODE_SNAP_INFO
        /// </summary>
        SNAP_INFO,
        /// <summary>
        /// Encode-video snap time options config, corresponding to NET_ENCODE_SNAP_TIME_INFO
        /// 编码抓图时间相关配置，对应结构体 NET_ENCODE_SNAP_TIME_INFO
        /// </summary>
        SNAPTIME,
        /// <summary>
        /// Encode-video channel title options config, corresponding to NET_ENCODE_CHANNELTITLE_INFO
        /// 通道名称配置，对应结构体 NET_ENCODE_CHANNELTITLE_INFO
        /// </summary>
        ENCODE_CHANNELTITLE,

        /**********音频相关配置***************************************************************************************************/
        AUDIOIN_SOURCE = 1200,       // 音频输入类型配置，对应结构体 NET_ENCODE_AUDIO_SOURCE_INFO
        AUDIOIN_DENOISE,             // 音频降噪配置，对应结构体 NET_AUDIOIN_DENOISE_INFO
        AUDIOIN_VOLUME,              // 音频输入音量配置，对应结构体 NET_AUDIOIN_VOLUME_INFO
        AUDIOOUT_VOLUME,             // 音频输出音量配置，对应结构体 NET_AUDIOOUT_VOLUME_INFO
        AUDIOOUT_MODE,               // 音频输出模式配置, 对应结构体 NET_AUDIOOUT_MODE_INFO
        LOOPPLAYBACK_AUDIOALARM,     // 音频循环播放报警配置，对应结构体 NET_LOOPPLAYBACK_AUDIOALARM_INFO,与通道不相关,通道号需要填成-1

        /**********videoin 相关配置***********************************************************************************************/
        /// <summary>
        /// VideoIn-switch mode config, corresponding to NET_VIDEOIN_SWITCH_MODE_INFO
        /// 切换模式配置，对应结构体 NET_VIDEOIN_SWITCH_MODE_INFO
        /// </summary>
        VIDEOIN_SWITCHMODE = 1300,
        /// <summary>
        /// VideoIn-color options config, corresponding to NET_VIDEOIN_COLOR_INFO
        /// 视频输入颜色配置，对应结构体 NET_VIDEOIN_COLOR_INFO
        /// </summary>
        VIDEOIN_COLOR,
        /// <summary>
        /// VideoIn-image options config, corresponding to NET_VIDEOIN_IMAGE_INFO
        /// 图像属性配置，对应结构体 NET_VIDEOIN_IMAGE_INFO
        /// </summary>
        VIDEOIN_IMAGE_OPT,
        /// <summary>
        /// VideoIn-stable config, corresponding to NET_VIDEOIN_STABLE_INFO
        /// 图像防抖配置，对应结构体 NET_VIDEOIN_STABLE_INFO
        /// </summary>
        VIDEOIN_STABLE,
        /// <summary>
        /// VideoIn-auto  config-, corresponding to NET_VIDEOIN_IRISAUTO_INFO
        /// 自动光圈配置，对应结构体 NET_VIDEOIN_IRISAUTO_INFO
        /// </summary>
        VIDEOIN_IRISAUTO,
        /// <summary>
        /// VideoIn-image enhancement config, corresponding to NET_VIDEOIN_IMAGEENHANCEMENT_INFO
        /// 图像增强配置，对应结构体 NET_VIDEOIN_IMAGEENHANCEMENT_INFO
        /// </summary>
        VIDEOIN_IMAGEENHANCEMENT,
        /// <summary>
        /// VideoIn-normal exposure config, corresponding to NET_VIDEOIN_EXPOSURE_NORMAL_INFO
        /// 曝光通用属性配置，对应结构体 NET_VIDEOIN_EXPOSURE_NORMAL_INFO
        /// </summary>
        VIDEOIN_EXPOSURE_NORMAL,
        /// <summary>
        /// VideoIn-other exposure config, corresponding to NET_VIDEOIN_EXPOSURE_OTHER_INFO
        /// 其他曝光属性配置，对应结构体 NET_VIDEOIN_EXPOSURE_OTHER_INFO
        /// </summary>
        VIDEOIN_EXPOSURE_OTHER,
        /// <summary>
        /// VideoIn-exposure shutter config, corresponding to NET_VIDEOIN_EXPOSURE_SHUTTER_INFO
        /// 曝光快门配置，对应结构体 NET_VIDEOIN_EXPOSURE_SHUTTER_INFO
        /// </summary>
        VIDEOIN_EXPOSURE_SHUTTER,
        /// <summary>
        /// VideoIn-back light config, corresponding to NET_VIDEOIN_BACKLIGHT_INFO
        /// 背光配置，对应结构体 NET_VIDEOIN_BACKLIGHT_INFO
        /// </summary>
        VIDEOIN_BACKLIGHT,
        /// <summary>
        /// VideoIn-Intensity config, corresponding to NET_VIDEOIN_INTENSITY_INFO
        /// 场景自适应对比度强度配置，对应结构体 NET_VIDEOIN_INTENSITY_INFO
        /// </summary>
        VIDEOIN_INTENSITY,
        /// <summary>
        /// VideoIn-lighting config, corresponding to NET_VIDEOIN_LIGHTING_INFO
        /// 补光灯配置，对应结构体 NET_VIDEOIN_LIGHTING_INFO
        /// </summary>
        VIDEOIN_LIGHTING,
        /// <summary>
        /// VideoIn-defog config, corresponding to NET_VIDEOIN_DEFOG_INFO
        /// 透雾配置，对应结构体 NET_VIDEOIN_DEFOG_INFO
        /// </summary>
        VIDEOIN_DEFOG,
        /// <summary>
        /// VideoIn-focus mode config, corresponding to NET_VIDEOIN_FOCUSMODE_INFO
        /// 聚焦模式配置，对应结构体 NET_VIDEOIN_FOCUSMODE_INFO
        /// </summary>
        VIDEOIN_FOCUSMODE,
        /// <summary>
        /// VideoIn-focus options config, corresponding to NET_VIDEOIN_FOCUSVALUE_INFO
        /// 聚焦信息配置，对应结构体 NET_VIDEOIN_FOCUSVALUE_INFO
        /// </summary>
        VIDEOIN_FOCUSVALUE,
        /// <summary>
        /// VideoIn-white balance config, corresponding to NET_VIDEOIN_WHITEBALANCE_INFO
        /// 白平衡配置，对应结构体 NET_VIDEOIN_WHITEBALANCE_INFO
        /// </summary>
        VIDEOIN_WHITEBALANCE,
        /// <summary>
        /// VideoIn-day night config, corresponding to NET_VIDEOIN_DAYNIGHT_INFO
        /// 日夜模式配置，对应结构体 NET_VIDEOIN_DAYNIGHT_INFO
        /// </summary>
        VIDEOIN_DAYNIGHT,
        /// <summary>
        /// VideoIn-ICR config, corresponding to NET_VIDEOIN_DAYNIGHT_ICR_INFO
        /// 日夜模式ICR切换类型配置，对应结构体 NET_VIDEOIN_DAYNIGHT_ICR_INFO
        /// </summary>
        VIDEOIN_DAYNIGHT_ICR,
        /// <summary>
        /// VideoIn-shrpness config, corresponding to NET_VIDEOIN_SHARPNESS_INFO
        /// 锐度配置，对应结构体 NET_VIDEOIN_SHARPNESS_INFO
        /// </summary>
        VIDEOIN_SHARPNESS,
        /// <summary>
        /// VideoIn-comm denoise config, corresponding to NET_VIDEOIN_DENOISE_INFO
        /// 通用降噪配置，对应结构体 NET_VIDEOIN_DENOISE_INFO
        /// </summary>
        VIDEOIN_COMM_DENOISE,
        /// <summary>
        /// VideoIn-3D denoise config, corresponding to NET_VIDEOIN_3D_DENOISE_INFO
        /// 3D 降噪配置，对应结构体 NET_VIDEOIN_3D_DENOISE_INFO
        /// </summary>
        VIDEOIN_3D_DENOISE,
        /// <summary>
        /// VideoIn-foucus on extended configuratio corresponding to NET_VIDEOIN_FOCUS_INFO_EX
        /// 聚焦扩展配置，对应结构体 NET_VIDEOIN_FOCUS_INFO_EX
        /// </summary>
        VIDEOIN_FOCUSEX,
        /// <summary>
        /// Extension of supplementary lamp configuration,corresponding to NET_VIDEOIN_LIGHTINGEX_INFO
        /// 补光灯配置的扩展，对应结构体 NET_VIDEOIN_LIGHTINGEX_INFO
        /// </summary>
        VIDEOIN_LIGHTINGEX,
        /// <summary>
        /// VideoIn-ViewRangeStatus config,corresponding to NET_CFG_VIDEOIN_VIEWRANGESTATUS_INFO
        /// 可视域状态信息，对应结构体 NET_CFG_VIDEOIN_VIEWRANGESTATUS_INFO
        /// </summary>
        VIDEOIN_VIEWRANGESTATUS,
        /// <summary>
        /// VideoIn Lighting, corresponding to NET_CFG_VIDEOIN_LIGHTING_SCHEME_INFO
        /// 灯光方案, 对应结构体 NET_CFG_VIDEOIN_LIGHTING_SCHEME_INFO
        /// </summary>
        VIDEOIN_LIGHTING_SCHEME,
        /// <summary>
        /// Alarm Lighting, corresponding to NET_CFG_VIDEOIN_ALARM_LIGHTING_INFO
        /// 警戒灯光, 对应结构体 NET_CFG_VIDEOIN_ALARM_LIGHTING_INFO
        /// </summary>
        VIDEOIN_ALARM_LIGHTING,
        /// <summary>
        /// auto exposure, corresponding to NET_CFG_VIDEOIN_FACE_AUTOEXPOSURE_INFO
        /// 智能规则检测人脸，根据检测区域自动曝光, 对应结构体 NET_CFG_VIDEOIN_FACE_AUTOEXPOSURE_INFO
        /// </summary>
        VIDEOIN_FACE_AUTOEXPOSURE,

        /**********报警网关相关配置**************************************************************************************/
        ALARM_SOUND = 1500,          // 报警网关语音配置, 对应结构体 NET_ALARM_SOUND_INFO 
        LOCAL_EXT_ALARM = 1501,      // 报警盒子配置,对应结构体 NET_LOCAL_EXT_ALARM_INFO,通道无关
        REMOTE_ALARM_BELL = 1502,     // 前端相机警号配置, 对应结构体 NET_CFG_REMOTE_ALARM_BELL_INFO
        FIRE_WARNINGMODE = 1503,      // 火灾预警模式, 对应结构体 NET_FIREWARNING_MODE_INFO
        FIRE_WARNING = 1504,          // 火灾预警配置(与火灾预警模式配置配合使用), 对应的结构体 NET_FIRE_WARNING_INFO
        HOT_COLD_SPOT_WARNING = 1505, // 热冷点报警配置, 对应的结构体 NET_HOT_COLD_SPOT_WARNING_INFO
        COAXIAL_ALARMLOCAL,           // CVI 外部报警配置，对应结构体 NET_COAXIAL_ALARMLOCAL_INFO

        /**************NetApp配置需求*************************************************************************************/
        NET_EM_CFG_NETAPP_LINK_LAYER_VPN = 1900,        // 链路层VPN设置,对应结构体 NET_NETAPP_LINK_LAYER_VPN_CFG
        NET_EM_CFG_NETAPP_SSHD,                         // SSH服务端配置,对应结构体 NET_NETAPP_SSHD_CFG
        NET_EM_CFG_NETAPP_COMMUNICATION_LIST,           // 通讯录配置, 对应结构体 NET_NETAPP_COMMUNICATION_LIST_CFG, 与通道不相关,通道号需要填成-1  
        NET_EM_CFG_NETAPP_WEB,

        /**********智能相关配置*******************************************************************************************/
        STEREO_CALIBRATE = 2100,             // 双目标定结果, 对应结构体NET_STEREO_CALIBRATE_INFO
        STEREO_CALIBRATEMATRIX_MULTISENSOR,  // 多目相机标定配置CalibrateMatrix(MultiSensor), 对应的结构体 NET_MULTI_SENSOR_INFO
        CROWDDISTRIMAP_CALIBRATE,            // 人群分布图标定配置, 对应的结构体 NET_CROWDDISTRIMAP_CALIBRATE_INFO
        TRAFFIC_NOPASSING,                   // 交通禁行配置, 对应的结构体 NET_TRAFFIC_NOPASSING_INFO
        FIGHT_CALIBRATE,                     // 打架标定配置, 对应的结构体 NET_FIGHT_CALIBRATE_INFO
        FACE_RECOGNITION_ALARM,              // 目标识别联动报警通道配置, 对应结构体 NET_FACE_RECOGNITION_ALARM_INFO
        STEREO_CALIBRATEMATRIX_MULTIMODE,    // 灵瞳相机的标定方式 CalibrateMatrix(MultiMode), 对应的结构体 NET_CALIBRATEMATRIX_MULTIMODE_INFO
        AUTO_SNAP_SCHEDULE,                  // 智能养殖定时抓图配置, 对应结构体 NET_CFG_AUTO_SNAP_SCHEDULE_INFO
        PARKING_TIMEOUT_DETECT,              // 停车超时检测配置, 对应结构体 NET_CFG_PARKING_TIMEOUT_DETECT

        SMART_MOTION_DETECT,                 // 智能动态检测配置, 对应结构体 NET_CFG_SMART_MOTION_DETECT
        EXTERNAL_ANALYSE_TASK_CAPS,          // 外部智能做任务调度配置, 对应结构体 NET_CFG_EXTERNAL_ANALYSE_TASK_CAPS, 对应通道为-1
        DOOR_STATE_DETECTION,				/// 开关门检测配置,对应结构体 NET_CFG_DOOR_STATE_DETECTION_INFO
   		OPEN_CLOSE_DOOR_DETECTION,			/// 反复开关门检测配置,对应结构体 NET_CFG_OPEN_CLOSE_DOOR_DETECTION_INFO
    	TRAPPED_IN_LIFT_DETECTION,			/// 电梯困人检测配置,对应结构体 NET_CFG_TRAPPED_IN_LIFT_DETECTION_INFO

        /***********门禁相关配置*********/
        BLACKLIST = 3900,          // 门禁禁止名单报警配置，对应结构体 NET_CFG_ACCESSCTL_BLACKLIST
        BLACKLIST_LINK = 3901,         // 门禁禁止名单报警联动配置,对应结构体 NET_CFG_ALARM_MSG_HANDLE
        SPECIALDAY_GROUP = 3902,   // 门禁节假日组配置, 对应结构体 NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO
        SPECIALDAYS_SCHEDULE = 3903,   // 门禁节假日计划配置, 对应结构体 NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO
        AUTH_MODE = 3904,         // 在离线开门认证模式配置，对应结构体NET_CFG_ACCESSCTL_AUTH_MODE
        FACE_RECOGNITION_SCHEME = 3905,     //  门禁目标识别相关配置,对应结构体 NET_CFG_ACS_FACE_RECOGNITION_SCHEME
        FORBIDDEN_ADVERT_PLAY = 3906,           // 广告禁用时段配置, 对应结构体 NET_CFG_FORBIDDEN_ADVERT_PLAY
        BGY_CUSTOMERCFG = 3907,                 // 设备的当前模式配置, 对应结构体 NET_CFG_BGY_CUSTOMERCFG
        ACCESSCTL_KEYBINDINGINFOCFG = 3908,     // 不同数字按钮对应的信息配置, 对应结构体 NET_CFG_ACCESSCTL_KEYBINDINGINFOCFG, 通道无关，通道号填-1

        /***********配置*********/
        LEASE_RULES = 4022,						// 租赁规则配置, 对应结构体 NET_CFG_LEASE_RULES_INFO, 与通道不相关, 通道号需要填成-1
        COMMPORT_COMM = 4023,                   // 串口管理器组件属性配置, 对应结构体 NET_CFG_COMMPORT_COMM_INFO
        ELEVATOR_ALARM_CONFIG = 4026,     /// 电梯楼层报警相关配置, 对应结构体 NET_CFG_ELEVATOR_ALARM_CONFIG_INFO, 与通道不相关，通道号需要填成-1

        /***********雷球联动配置************************************************************************************************/
        //在调用 CLIENT_SetConfig 时,restart字段无效
        RADAR_MAPPARA = 6000,           // 雷达地图参数配置, 对应结构体 NET_CFG_RADAR_MAPPARA_INFO
        RADAR_CALIBRATION = 6001,		// 雷球校准配置, 对应结构体 NET_CFG_RADAR_CALIBRATION_INFO
        RADAR_LINKSD = 6002,            // 雷达联动球机使能配置, 对应结构体 NET_CFG_RADAR_LINKSD_INFO
        RADAR_RULELINE = 6003,          // 雷达规则线配置, 对应结构体 NET_CFG_RADAR_RULELINE_INFO
        RADAR_ANALYSERULE = 6004,       // 雷达报警联动配置, 对应结构体 NET_CFG_RADAR_ANALYSERULE_INFO
        RADAR_TRACKGLOBALCONFIG = 6005, // 雷达跟踪全局配置, 对应结构体 NET_CFG_RADAR_TRACKGLOBALCONFIG_INFO
        RADAR_RADARPARA = 6006,         // 雷达功能设置, 对应结构体 NET_CFG_RADAR_RADARPARA_INFO
        RADAR_REMOTESDLINK = 6007,      // 雷达远程球机联动使能配置, 对应结构体 NET_CFG_RADAR_REMOTESDLINK_INFO
        RADAR_RADARLINKDEVICE = 6008,   // 雷达远程联动球机配置, 对应结构体 NET_CFG_RADAR_RADARLINKDEVICE_INFO
        RADAR_MAPOSDPARA = 6009,        // 雷达地图OSD叠加配置, 对应结构体 NET_CFG_RADAR_MAPOSDPARA_INFO

        /***********云台相关配置************************************************************************************************/
        PTZ_SPEED = 7000,		// 云台速度配置 对应结构体 NET_CFG_PTZ_SPEED
        PTZ_HORIZONTAL_ROTATION_GROUP_SCAN = 7001,		// 云台水平旋转组扫描 对应结构体 NET_CFG_HORIZONTAL_ROTATION_GROUP_SCAN_INFO 
        AUTOSCAN = 7002,     // 自动线扫设置 对应结构体 NET_CFG_AUTOSCAN_INFO 

        /***********第三方配置************************************************************************************************/
        NET_EM_CFG_VSP_PAAS = 9000,     // 乐橙云注册配置修改, 对应结构体 NET_CFG_VSP_PAAS_INFO
        NET_EM_CFG_VSP_GAYS_SERVER = 9001,      // 公安一所平台接入配置(国标服务端),对应结构体 NET_CFG_VSP_GAYS_SERVER_INFO,对应通道为-1
        NET_EM_CFG_VSP_CO_SIGN_SERVER = 9002,       // 协同签名服务器配置,对应结构体NET_CFG_VSP_CO_SIGN_SERVER_INFO,对应通道为-1
        NET_EM_CFG_VSP_GAVI = 9003,     // 公安视频图像信息应用系统接入配置,对应结构体 NET_CFG_VSP_GAVI_INFO,对应通道为-1
        NET_EM_CFG_VSP_ONVIF = 9004,     // ONVIF服务配置, 对应结构体 NET_CFG_VSP_ONVIF_INFO, 对应通道为-1
        NET_EM_CFG_VSP_LRLXXF_MODULE = 9005,     // 目标离线消费基本配置, 对应结构体 NET_CFG_VSP_LRLXXF_MODULE_INFO, 对应通道为-1
        NET_EM_CFG_VSP_LRLXXF_CUSTOM = 9006,     // 目标离线消费个性化配置, 对应结构体 NET_CFG_VSP_LRLXXF_CUSTOM_INFO, 对应通道为-1
        NET_EM_CFG_VSP_TERMINAL_REGISTER_INFO,  // 终端注册到视频会议服务器的配置, 对应结构体 NET_CFG_VSP_TERMINAL_REGISTER_INFO, 对应通道为-1

        /// <summary>
        /// 道闸配置, 对应结构体 NET_CFG_TRAFFICSTROBE_INFO
        /// TRAFFICSTROBE, < NET_CFG_TRAFFICSTROBE_INFO >
        /// </summary>
        NET_EM_CFG_TRAFFICSTROBE = 9100,

        /***********Traffic相关配置*******/
        LATTICE_SCREEN = 10000,  // 点阵屏显示信息配置, 对应结构体 NET_CFG_TRAFFIC_LATTICE_SCREEN_INFO
        VOICE_BROADCAST = 10001, // 智能交通语音播报配置， 对应结构体 NET_CFG_TRAFFIC_VOICE_BROADCAST_INFO
        SNAP_SHOT_WITH_RULE2 = 10002, // 场景抓拍设置， 对应结构体 NET_CFG_SCENE_SNAP_SHOT_WITH_RULE2_INFO

        /***********热成像相关配置******/
        RADIO_REGULATOR = 11102,        // 人体测温标准黑体配置, 对应结构体 NET_CFG_RADIO_REGULATOR，通道号不能为-1
        /// <summary>
        /// The temperature shield area, corresponding to NET_CFG_THERMOMETRY_SHIELD_INFO
        /// 测温屏蔽区配置，对应结构体 NET_CFG_THERMOMETRY_SHIELD_INFO
        /// </summary>
        THERMOMETRY_SHIELD = 11106,
        /// <summary>
        /// Second Calibrate Temperate Params, corresponding to NET_CFG_SECOND_CALI_TEMP_PARAMS_INFO , Channel must be Thermal imaging channel
        /// 二次标定温度校准系数配置 对应结构体 NET_CFG_SECOND_CALI_TEMP_PARAMS_INFO ，通道号填写热成像通道号
        /// </summary>
        SECOND_CALI_TEMP_PARAMS = 11109,

        /***********声音配置******************************************************************************************/
        /// <summary>
        /// Sound Configuration, corresponding NET_CFG_SOUND
        /// 声音配置, 对应结构体 NET_CFG_SOUND
        /// </summary>
        NET_EM_CFG_SOUND = 12600,
        /// <summary>
        /// Voice time plan configuration, corresponding NET_CFG_VOICE_PLAY_PLAN  
        /// 语音时间预案配置, 对应结构体 NET_CFG_VOICE_PLAY_PLAN，与通道无关, 通道号需填成-1
        /// </summary>
        NET_EM_CFG_VOICE_PLAY_PLAN,
        /// <summary>
        /// Sound detection configuration, corresponding NET_CFG_SMART_SOUND_DETECT
        /// 声音检测配置，对应结构体 NET_CFG_SMART_SOUND_DETECT,下标对应音频通道号
        /// </summary>
        NET_EM_CFG_SMART_SOUND_DETECT,
    }

    /// <summary>
    /// Video split operation type
    /// 视频分割操作类型
    /// </summary>
    public enum EM_NET_SPLIT_OPERATE_TYPE
    {
        /// <summary>
        /// Set background, corresponding NET_IN_SPLIT_SET_BACKGROUND  and NET_OUT_SPLIT_SET_BACKBROUND
        /// 设置背景图片, 对应 NET_IN_SPLIT_SET_BACKGROUND 和 NET_OUT_SPLIT_SET_BACKBROUND
        /// </summary>
        SET_BACKGROUND,
        /// <summary>
        /// get background, corresponding NET_IN_SPLIT_GET_BACKGROUND  and NET_OUT_SPLIT_GET_BACKGROUND
        /// 获取背景图片, 对应 NET_IN_SPLIT_GET_BACKGROUND 和 NET_OUT_SPLIT_GET_BACKGROUND
        /// </summary>
        GET_BACKGROUND,
        /// <summary>
        /// set pre stream srouce, corresponding to NET_IN_SPLIT_SET_PREPULLSRC and NET_OUT_SPLIT_SET_PREPULLSRC
        /// 设置预拉流源, 对应 NET_IN_SPLIT_SET_PREPULLSRC 和 NET_OUT_SPLIT_SET_PREPULLSRC
        /// </summary>
        SET_PREPULLSRC,
        /// <summary>
        /// set source frame brightness switch, corresponding to NET_IN_SPLIT_SET_HIGHLIGHT and NET_OUT_SPLIT_SET_HIGHLIGHT
        /// 设置源边框高亮使能开关, 对应 NET_IN_SPLIT_SET_HIGHLIGHT 和 NET_OUT_SPLIT_SET_HIGHLIGHT
        /// </summary>
        SET_HIGHLIGHT,
        /// <summary>
        /// adjust window Z order, corresponding to NET_IN_SPLIT_SET_ZORDER  and  NET_OUT_SPLIT_SET_ZORDER
        /// 调整窗口Z序, 对应 NET_IN_SPLIT_SET_ZORDER 和 NET_OUT_SPLIT_SET_ZORDER
        /// </summary>
        SET_ZORDER,
        /// <summary>
        /// window tour control, corresponding to NET_IN_SPLIT_SET_TOUR  and  NET_OUT_SPLIT_SET_TOUR
        /// 窗口轮巡控制, 对应 NET_IN_SPLIT_SET_TOUR 和 NET_OUT_SPLIT_SET_TOUR
        /// </summary>
        SET_TOUR,
        /// <summary>
        /// Get window tour status , corresponding to NET_IN_SPLIT_GET_TOUR_STATUS  and  NET_OUT_SPLIT_GET_TOUR_STATUS
        /// 获取窗口轮巡状态, 对应 NET_IN_SPLIT_GET_TOUR_STATUS 和 NET_OUT_SPLIT_GET_TOUR_STATUS
        /// </summary>
        GET_TOUR_STATUS,
        /// <summary>
        /// Get screen window info , corresponding to NET_IN_SPLIT_GET_SCENE  and  NET_OUT_SPLIT_GET_SCENE
        /// 获取屏内窗口信息, 对应 NET_IN_SPLIT_GET_SCENE 和 NET_OUT_SPLIT_GET_SCENE
        /// </summary>
        GET_SCENE,
        /// <summary>
        /// batch window, corresponding to NET_IN_SPLIT_OPEN_WINDOWS  and  NET_OUT_SPLIT_OPEN_WINDOWS
        /// 批量开窗, 对应 NET_IN_SPLIT_OPEN_WINDOWS 和 NET_OUT_SPLIT_OPEN_WINDOWS
        /// </summary>
        OPEN_WINDOWS,
        /// <summary>
        /// set work mode , corresponding to NET_IN_SPLIT_SET_WORK_MODE  and  NET_OUT_SPLIT_SET_WORK_MODE
        /// 设置工作模式, 对应 NET_IN_SPLIT_SET_WORK_MODE 和 NET_OUT_SPLIT_SET_WORK_MODE
        /// </summary>
        SET_WORK_MODE,
        /// <summary>
        /// Get player example, corresponding to NET_IN_SPLIT_GET_PLAYER  and  NET_OUT_SPLIT_GET_PLAYER
        /// 获取播放器实例,对应 NET_IN_SPLIT_GET_PLAYER 和 NET_OUT_SPLIT_GET_PLAYER
        /// </summary>
        GET_PLAYER,
        /// <summary>
        /// Set window working mode, corresponding  NET_IN_WM_SET_WORK_MODE and NET_OUT_WM_SET_WORK_MODE
        /// 设置窗口工作模式,对应 NET_IN_WM_SET_WORK_MODE 和 NET_OUT_WM_SET_WORK_MODE
        /// </summary>
        SET_WM_WORK_MODE,
        /// <summary>
        /// Get window working mode, corresponding  NET_IN_WM_GET_WORK_MODE and NET_OUT_WM_GET_WORK_MODE
        /// 获取窗口工作模式,对应 NET_IN_WM_GET_WORK_MODE 和 NET_OUT_WM_GET_WORK_MODE
        /// </summary>
        GET_WORK_MODE,
        /// <summary>
        /// close batch windows NET_IN_SPLIT_CLOSE_WINDOWS o,a NET_OUT_SPLIT_CLOSE_WINDOWS
        /// 批量关窗, 对应 NET_IN_SPLIT_CLOSE_WINDOWS 和 NET_OUT_SPLIT_CLOSE_WINDOWS
        /// </summary>
        CLOSE_WINDOWS,
        /// <summary>
        /// set the output rules of the fish eyes, corresponding NET_IN_WM_SET_FISH_EYE_PARAM and NET_OUT_WM_SET_FISH_EYE_PARAM
        /// 设置输出屏的鱼眼矫正规则 , 对应NET_IN_WM_SET_FISH_EYE_PARAM 和 NET_OUT_WM_SET_FISH_EYE_PARAM
        /// </summary>
        SET_FISH_EYE_PARAM,
        /// <summary>
        /// set the corridor mode of the window, corresponding NET_IN_WM_SET_CORRIDOR_MODE and NET_OUT_WM_SET_CORRIDOR_MODE
        /// 设置窗口走廊模式，对应NET_IN_WM_SET_CORRIDOR_MODE和NET_OUT_WM_SET_CORRIDOR_MODE
        /// </summary>
        SET_CORRIDOR_MODE,
        /// <summary>
        /// get the corridor mode of the window, corresponding NET_IN_WM_GET_CORRIDOR_MODE and NET_OUT_WM_GET_CORRIDOR_MODE
        /// 获取窗口走廊模式，对应NET_IN_WM_GET_CORRIDOR_MODE和NET_OUT_WM_GET_CORRIDOR_MODE
        /// </summary>
        GET_CORRIDOR_MODE,
        /// <summary>
        /// set volume column enable, corresponding NET_IN_WM_SET_VOLUME_COLUMN and NET_OUT_WM_SET_VOLUME_COLUMN
        /// 设置显示音量柱使能模式，对应NET_IN_WM_SET_VOLUME_COLUMN和NET_OUT_WM_SET_VOLUME_COLUMN
        /// </summary>
        SET_VOLUME_COLUMN,
        /// <summary>
        /// get volume column enable, corresponding NET_IN_WM_GET_VOLUME_COLUMN and NET_OUT_WM_GET_VOLUME_COLUMN
        /// 获取显示音量柱使能模式，对应NET_IN_WM_GET_VOLUME_COLUMN和NET_OUT_WM_GET_VOLUME_COLUMN
        /// </summary>
        GET_VOLUME_COLUMN,
        /// <summary>
        /// set the background of window, corresponding NET_IN_WM_SET_BACKGROUND and NET_OUT_WM_SET_BACKGROUND
        /// 设置窗口背景图片，对应NET_IN_WM_SET_BACKGROUND和NET_OUT_WM_SET_BACKGROUND
        /// </summary>
        SET_WM_BACKGROUND,
        /// <summary>
        /// get the background of window, corresponding NET_IN_WM_GET_BACKGROUND and NET_OUT_WM_GET_BACKGROUND
        /// 获取窗口背景图片，对应NET_IN_WM_GET_BACKGROUND和NET_OUT_WM_GET_BACKGROUND
        /// </summary>
        GET_WM_BACKGROUND,
    }

    /// <summary>
    /// Window Working Mode
    /// 窗口工作模式
    /// </summary>
    public enum EM_NET_WM_WORK_MODE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// Preview mode
        /// 预览模式
        /// </summary>
        DISPLAY,
        /// <summary>
        /// Playback mode
        /// 回放模式
        /// </summary>
        REPLAY,
    }

    // 设置窗口工作模式输入参数
    public struct NET_IN_WM_SET_WORK_MODE
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Output channel no. or cubeless video wall virtual channel no., when pszCompositeID is NULL. valid
        /// 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效
        /// </summary>
        public int nChannel;
        /// <summary>
        /// Cubeless video wall ID
        /// 融合屏ID
        /// </summary>
        public IntPtr pszCompositeID;
        /// <summary>
        /// Window no.
        /// 窗口号
        /// </summary>
        public int nWindow;
        /// <summary>
        /// Window working mode
        /// 窗口工作模式
        /// </summary>
        public EM_NET_WM_WORK_MODE emMode;
    }

    /// <summary>
    /// Set window working mode output parameter
    /// 设置窗口工作模式输出参数
    /// </summary>
    public struct NET_OUT_WM_SET_WORK_MODE
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// player type
    /// 播放器类型
    /// </summary>
    public enum EM_NET_SPLIT_PLAYER_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// file list player
        /// 文件列表播放器
        /// </summary>
        FILE_LIST,
        /// <summary>
        /// file player
        /// 文件播放器
        /// </summary>
        FILE,
    }

    /// <summary>
    /// Get player actual input parameter
    /// 获取播放器实例输入参数
    /// </summary>
    public struct NET_IN_SPLIT_GET_PLAYER
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// output channel no. or cubeless video wall virtual channel no., pszCompositeID is NULL is valid
        /// 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效
        /// </summary>
        public int nChannel;
        /// <summary>
        /// cubeless video wall ID
        /// 融合屏ID
        /// </summary>
        public IntPtr pszCompositeID;
        /// <summary>
        /// player type 
        /// 播放器类型
        /// </summary>
        public EM_NET_SPLIT_PLAYER_TYPE emType;
        /// <summary>
        /// player window no.
        /// 播放器所在的窗口号
        /// </summary>
        public int nWindow;
    }

    /// <summary>
    /// Get player actual output parameter
    /// 获取播放器实例输出参数
    /// </summary>
    public struct NET_OUT_SPLIT_GET_PLAYER
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// player actual ID
        /// 播放器实例ID
        /// </summary>
        public IntPtr lPlayerID;
    }


    /// <summary>
    /// split window play operaton type 
    /// 分割窗口播放操作类型
    /// </summary>
    public enum EM_NET_PLAYER_OPERATE_TYPE
    {
        /// <summary>
        /// open playuer,NET_IN_PLAYER_OPEN
        /// 打开播放器，NET_IN_PLAYER_OPEN
        /// </summary>
        OPEN,
        /// <summary>
        /// close player,NET_IN_PLAYER_CLOSE
        /// 关闭播放器，NET_IN_PLAYER_CLOSE
        /// </summary>
        CLOSE,
        /// <summary>
        /// start play,NET_IN_PLAYER_START
        /// 开始播放，NET_IN_PLAYER_START
        /// </summary>
        START,
        /// <summary>
        /// stop play,NET_IN_PLAYER_STOP
        /// 停止播放，NET_IN_PLAYER_STOP
        /// </summary>
        STOP,
        /// <summary>
        /// pause/restore play,NET_IN_PLAYER_PAUSE
        /// 暂停/恢复播放，NET_IN_PLAYER_PAUSE
        /// </summary>
        PAUSE,
        /// <summary>
        /// go to specific time play,NET_IN_PLAYER_SEEK_TIME
        /// 跳转到指定时间播放，NET_IN_PLAYER_SEEK_TIME
        /// </summary>
        SEEK_TIME,
        /// <summary>
        /// single frame playback, need to be used after pause,NET_IN_PLAYER_STEP_FRAME
        /// 单帧回放, 需要暂停后使用，NET_IN_PLAYER_STEP_FRAME
        /// </summary>
        STEP_FRAME,
        /// <summary>
        /// take current playback status,NET_IN_PLAYER_GET_STATE
        /// 取当前回放状态，NET_IN_PLAYER_GET_STATE
        /// </summary>
        GET_STATE,
        /// <summary>
        /// Get  current playback time,NET_IN_PLAYER_GET_TIME and NET_OUT_PLAYER_GET_TIME
        /// 获取当前回放时间，NET_IN_PLAYER_GET_TIME与NET_OUT_PLAYER_GET_TIME
        /// </summary>
        GET_TIME,
        /// <summary>
        /// Get play speed,NET_IN_PLAYER_GET_SPEED and NET_OUT_PLAYER_GET_SPEED
        /// 获取播放速度，NET_IN_PLAYER_GET_SPEED与NET_OUT_PLAYER_GET_SPEED
        /// </summary>
        GET_SPEED,
        /// <summary>
        /// Set play speed,NET_IN_PLAYER_SET_SPEED
        /// 设置播放速度，NET_IN_PLAYER_SET_SPEED
        /// </summary>
        SET_SPEED,
        /// <summary>
        /// Get volume,NET_IN_PLAYER_GET_VOLUME and NET_OUT_PLAYER_GET_VOLUME
        /// 获取音量，NET_IN_PLAYER_GET_VOLUME与NET_OUT_PLAYER_GET_VOLUME
        /// </summary>
        GET_VOLUME,
        /// <summary>
        /// Set volume,NET_IN_PLAYER_SET_VOLUME
        /// 设置音量，NET_IN_PLAYER_SET_VOLUME
        /// </summary>
        SET_VOLUME,
        /// <summary>
        /// Get file list,NET_IN_PLAYER_GET_PLAYLIST and NET_OUT_PLAYER_GET_PLAYLIST
        /// 获取文件列表，NET_IN_PLAYER_GET_PLAYLIST与NET_OUT_PLAYER_GET_PLAYLIST
        /// </summary>
        GET_PLAYLIST,
        /// <summary>
        /// Get current file list all period info,NET_IN_PLAYER_GET_PLAYLIST_TS and NET_OUT_PLAYER_GET_PLAYLIST_TS
        /// 获取当前文件列表全部时间段信息，NET_IN_PLAYER_GET_PLAYLIST_TS与NET_OUT_PLAYER_GET_PLAYLIST_TS
        /// </summary>
        GET_PLAYLIST_TS,
    }

    /// <summary>
    /// start  play input parameter
    /// 开始播放输入参数
    /// </summary>
    public struct NET_IN_PLAYER_START
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// play example ID
        /// 播放实例ID
        /// </summary>
        public IntPtr lPlayerID;                      // 播放实例ID
    }

    /// <summary>
    /// start  play  output parameter
    /// 开始播放输出参数
    /// </summary>
    public struct NET_OUT_PLAYER_START
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// pause /recover  play input parameter
    /// 暂停/恢复播放输入参数
    /// </summary>
    public struct NET_IN_PLAYER_PAUSE
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// play example ID
        /// 播放实例ID
        /// </summary>
        public IntPtr lPlayerID;
        /// <summary>
        /// pause or not, TRUE- pause  play , FALSE-recover  play
        /// 是否暂停, TRUE-暂停播放, FALSE-恢复播放
        /// </summary>
        public bool bPause;
    }

    /// <summary>
    /// pause /recover  play  output parameter 
    /// 暂停/恢复播放输出参数
    /// </summary>
    public struct NET_OUT_PLAYER_PAUSE
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// set play speedinput parameter
    /// 设置播放速度输入参数
    /// </summary>
    public struct NET_IN_PLAYER_SET_SPEED
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// play example ID
        /// 播放实例ID
        /// </summary>
        public IntPtr lPlayerID;
        /// <summary>
        /// play speed, >0 positive direction  play , <0 direction  play   absolute value means speed, =1 normal speed, >1 quick, <1 slow
        /// 播放速度, >0正向播放, <0方向播放、绝对值表示速度, =1正常速度, >1快放, <1慢放
        /// </summary>
        public float fSpeed;
    }

    /// <summary>
    /// set play speed output parameter
    /// 设置播放速度输出参数
    /// </summary>
    public struct NET_OUT_PLAYER_SET_SPEED
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// stop play input parameter
    /// 停止播放输入参数
    /// </summary>
    public struct NET_IN_PLAYER_STOP
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// play example ID
        /// 播放实例ID
        /// </summary>
        public IntPtr lPlayerID;
    }

    /// <summary>
    /// stop play  output parameter
    /// 停止播放输出参数
    /// </summary>
    public struct NET_OUT_PLAYER_STOP
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// single frame play input parameter
    /// 单帧播放输入参数
    /// </summary>
    public struct NET_IN_PLAYER_STEP_FRAME
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// play example ID
        /// 播放实例ID
        /// </summary>
        public IntPtr lPlayerID;
        /// <summary>
        /// positive direction, TRUE-positive direction, FALSE-negative direction
        /// 是否正向, TRUE-正向, FALSE-反向
        /// </summary>
        public bool bForward;
    }

    /// <summary>
    /// single frame play  output parameter
    /// 单帧播放输出参数
    /// </summary>
    public struct NET_OUT_PLAYER_STEP_FRAME
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// go to specific time play input parameter
    /// 跳转到指定时间播放输入参数
    /// </summary>
    public struct NET_IN_PLAYER_SEEK_TIME
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// play example ID
        /// 播放实例ID
        /// </summary>
        public IntPtr lPlayerID;
        /// <summary>
        /// go to time
        /// 跳转时间
        /// </summary>
        public NET_TIME stuTime;
    }

    /// <summary>
    /// go to specific time play  output parameter
    /// 跳转到指定时间播放输出参数
    /// </summary>
    public struct NET_OUT_PLAYER_SEEK_TIME
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// Get current file list all time period info input parameter
    /// 获取当前文件列表全部时间段信息输入参数
    /// </summary>
    public struct NET_IN_PLAYER_GET_PLAYLIST_TS
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// play example ID
        /// 播放实例ID
        /// </summary>
        public IntPtr lPlayerID;
    }

    /// <summary>
    /// time period info
    /// 时间段信息
    /// </summary>
    public struct NET_PLAYLIST_TIMESECTION
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Record event type,  currently have EVENT_ALARM_COMMON, EVENT_ALARM_VIDEOBLIND, EVENT_ALARM_VIDEOLOSS,EVENT_ALARM_MOTIONDETECT, EVENT_ALARM_LOCALALARM
        /// 录像事件类型, 目前有 EVENT_ALARM_COMMON, EVENT_ALARM_VIDEOBLIND, EVENT_ALARM_VIDEOLOSS,EVENT_ALARM_MOTIONDETECT, EVENT_ALARM_LOCALALARM
        /// </summary>
        public int nEvent;
        /// <summary>
        /// Time period info   NET_TSECT
        /// 时间段信息  NET_TSECT
        /// </summary>
        public IntPtr pstuTSs;
        /// <summary>
        /// Time period max number
        /// 时间段最大个数
        /// </summary>
        public uint unMaxTS;
        /// <summary>
        /// Actual returned time period number
        /// 实际返回的时间段个数
        /// </summary>
        public uint unRetTS;
    }

    /// <summary>
    /// Get current file list all time period info output parameters
    /// 获取当前文件列表全部时间段信息输出参数
    /// </summary>
    public struct NET_OUT_PLAYER_GET_PLAYLIST_TS
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Record type count
        /// 录像类型数量
        /// </summary>
        public uint dwEventNum;
        /// <summary>
        /// Current playback list time period info
        /// 当前回放列表的时间段信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_PLAYLIST_TIMESECTION[] stuTS;
    }

    /// <summary>
    /// Time period structure
    /// 时间段结构
    /// </summary>                                                   
    public struct NET_TSECT
    {
        /// <summary>
        /// Current record period . Bit means the four Enable functions. From the low bit to the high bit:Motion detection record, alarm record and general record, when Motion detection and alarm happened at the same time can record.used in NET_POS_EVENT_LINK, it means enable;
        /// 当表示录像时间段时,按位表示四个使能,从低位到高位分别表示动检录象、报警录象、普通录象、动检和报警同时发生才录像.当表示布撤防时间段时, 表示使能
        /// </summary>
        public int bEnable;
        /// <summary>
        /// BeginHour
        /// 开始小时
        /// </summary>
        public int iBeginHour;
        /// <summary>
        /// BeginMin
        /// 开始分
        /// </summary>
        public int iBeginMin;
        /// <summary>
        /// BeginSec
        /// 开始秒
        /// </summary>
        public int iBeginSec;
        /// <summary>
        /// EndHour
        /// 结束小时
        /// </summary>
        public int iEndHour;
        /// <summary>
        /// EndMin
        /// 结束分
        /// </summary>
        public int iEndMin;
        /// <summary>
        /// EndSec
        /// 结束秒
        /// </summary>
        public int iEndSec;
    }

    /// <summary>
    /// play status 
    /// 播放状态
    /// </summary>
    public enum EM_NET_PLAYER_STATE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// error occur
        /// 有错误发生
        /// </summary>
        ERROR,
        /// <summary>
        /// ready, may start palyabck
        /// 就绪, 可以开启回放
        /// </summary>
        READING,
        /// <summary>
        /// current file playback stop, only can start playback from beginningart
        /// 当前文件回放停止, 只能从头开始重新回放
        /// </summary>
        STANDBY,
        /// <summary>
        /// running
        /// 运行中
        /// </summary>
        RUNNING,
        /// <summary>
        /// paused , may continue from pause point
        /// 已暂停, 可以从暂停点继续回放
        /// </summary>
        PAUSED,
        /// <summary>
        /// closed, cannot play, must open and enter Reading status again
        /// 已关闭, 无法播放, 必须重新open进入Reading状态后才能回放
        /// </summary>
        CLOSED,
    }

    /// <summary>
    /// search  play status input parameter
    /// 查询播放状态输入参数
    /// </summary>
    public struct NET_IN_PLAYER_GET_STATE
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// play example ID
        /// 播放实例ID
        /// </summary>
        public IntPtr lPlayerID;
    }

    /// <summary>
    /// search  play status  output parameter
    /// 查询播放状态输出参数
    /// </summary>
    public struct NET_OUT_PLAYER_GET_STATE
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// status
        /// 状态
        /// </summary>
        public EM_NET_PLAYER_STATE emState;
    }

    /// <summary>
    /// Get  current  playback timeinput parameter
    /// 获取当前回放时间输入参数
    /// </summary>
    public struct NET_IN_PLAYER_GET_TIME
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// play example ID
        /// 播放实例ID
        /// </summary>
        public IntPtr lPlayerID;
    }

    /// <summary>
    /// Get  current  playback time output parameter
    /// 获取当前回放时间输出参数
    /// </summary>
    public struct NET_OUT_PLAYER_GET_TIME
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// current  play time
        /// 当前播放时间
        /// </summary>
        public NET_TIME stuTime;
    }

    /// <summary>
    /// Get  play speed input parameter
    /// 获取播放速度输入参数
    /// </summary>
    public struct NET_IN_PLAYER_GET_SPEED
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// play example ID
        /// 播放实例ID
        /// </summary>
        public IntPtr lPlayerID;
    }

    /// <summary>
    /// Get  play speed output parameter
    /// 获取播放速度输出参数
    /// </summary>
    public struct NET_OUT_PLAYER_GET_SPEED
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// play speed, >0 positive direction  play , <0 direction  play   absolute value means speed, =1 nornal speed, >1 quick, <1 slow
        /// 播放速度, >0正向播放, <0方向播放  绝对值表示速度, =1正常速度, >1快放, <1慢放
        /// </summary>
        public float fSpeed;
    }

    /// <summary>
    /// video stream type
    /// 视频码流类型
    /// </summary>
    public enum EM_NET_STREAM_TYPE
    {
        /// <summary>
        /// Others
        /// 其它
        /// </summary>
        ERR,
        /// <summary>
        /// Main
        /// 主码流
        /// </summary>
        MAIN,
        /// <summary>
        /// Extra1
        /// 辅码流1
        /// </summary>
        EXTRA_1,
        /// <summary>
        /// Extra2
        /// 辅码流2
        /// </summary>
        EXTRA_2,
        /// <summary>
        /// Extra3
        /// 辅码流3
        /// </summary>
        EXTRA_3,
        /// <summary>
        /// Snapshot
        /// 抓图码流
        /// </summary>
        SNAPSHOT,
        /// <summary>
        /// Object
        /// 物体流
        /// </summary>
        OBJECT,
        /// <summary>
        /// Auto
        /// 自动选择合适码流
        /// </summary>
        AUTO,
        /// <summary>
        /// Preview
        /// 预览裸数据码流
        /// </summary>
        PREVIEW,
        /// <summary>
        /// No video stream
        /// 无视频码流
        /// </summary>
        NONE,
    }

    /// <summary>
    /// play criteria
    /// 播放条件
    /// </summary>
    public struct NET_PLAYER_OPEN_CONDITION
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// point remote device
        /// 指明远端的设备
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDevice;
        /// <summary>
        /// channel no.
        /// 通道号
        /// </summary>
        public int nChannel;
        /// <summary>
        /// start time
        /// 起始时间
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// end time
        /// 结束时间
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// stream type 
        /// 码流类型
        /// </summary>
        public EM_NET_STREAM_TYPE emStreamType;
        /// <summary>
        /// Event type number
        /// 事件类型个数
        /// </summary>
        public int nEventNum;
        /// <summary>
        /// Event type
        /// 事件类型
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nEvent;
    }

    /// <summary>
    /// stream transmission mode
    /// 窗口码流发送模式
    /// </summary>
    public enum EM_SPLIT_TRANS_MODE
    {
        /// <summary>
        /// direct
        /// 直连
        /// </summary>
        DIRECT,
        /// <summary>
        /// transfer
        /// 转发
        /// </summary>
        TRANSFER,
    }

    /// <summary>
    /// remotevice of matrix device connect type
    /// 矩阵前端设备连接方式
    /// </summary>
    public enum EM_SPLIT_CONNECT_TYPE
    {
        /// <summary>
        /// tcp
        /// </summary>
        TCP,
        /// <summary>
        /// udp
        /// </summary>
        UDP,
    }

    /// <summary>
    /// open player input parameter
    /// 打开播放器输入参数
    /// </summary>
    public struct NET_IN_PLAYER_OPEN
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// play example ID
        /// 播放实例ID
        /// </summary>
        public IntPtr lPlayerID;
        /// <summary>
        /// take record from local or remote end, as null represents to take record from local,it is valid when bDeviceInfo is FALSE.if from remote device, need to maintain with NET_PLAYER_OPEN_CONDITION szDevice identical
        /// 指明从本地还是远端取录像, 为null代表从本地取录像,bDeviceInfo为FALSE时有效,如果是从远端设备取,需要保持与NET_PLAYER_OPEN_CONDITION的szDevice一致
        /// </summary>
        public IntPtr pszDevice;
        /// <summary>
        /// search criteria 
        /// 查询条件
        /// </summary>
        public NET_PLAYER_OPEN_CONDITION stuCondition;
        /// <summary>
        /// it means that the "stuDeviceInfo" is valid or not
        /// 表示stuDeviceInfo是否有效
        /// </summary>
        public bool bDeviceInfo;
        /// <summary>
        /// device info, it is valid when bDeviceInfo is TRUE
        /// 设备信息, bDeviceInfo为TRUE时deviceInfo有效
        /// </summary>
        public NET_REMOTE_DEVICE stuDeviceInfo;
        /// <summary>
        /// stream transmission mode
        /// 窗口码流发送模式
        /// </summary>
        public EM_SPLIT_TRANS_MODE emTransferMode;
        /// <summary>
        /// connect type, it is effective when emTransferMode is NET_EM_SPLIT_TRANS_TRANSFER, otherwise using pull stream mode
        /// 矩阵前端设备连接类型, 码流发送模式为转发模式下有效, 直连模式下采用默认拉流方式
        /// </summary>
        public EM_SPLIT_CONNECT_TYPE emConnectType;
        /// <summary>
        /// stream type, it is effective when emTransferMode is NET_EM_SPLIT_TRANS_TRANSFER, and emConnectType is TCP or UDP
        /// 推流方式的码流类型,码流发送模式为转发模式, 并且连接类型为TCP或者UDP时有效
        /// </summary>
        public EM_SRC_PUSHSTREAM_TYPE emPushStream;
    }

    /// <summary>
    /// open player  output parameter
    /// 打开播放器输出参数
    /// </summary>
    public struct NET_OUT_PLAYER_OPEN
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// GetSplitWindowsInfo's interface input param
    /// GetSplitWindowsInfo接口输入参数
    /// </summary>
    public struct NET_IN_SPLIT_GET_WINDOWS
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel
        /// 通道号
        /// </summary>
        public int nChannel;
    }

    /// <summary>
    /// GetSplitWindowsInfo's interface output param
    /// GetSplitWindowsInfo接口输出参数
    /// </summary>
    public struct NET_OUT_SPLIT_GET_WINDOWS
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// windows info
        /// 窗口信息
        /// </summary>
        public NET_BLOCK_COLLECTION stuWindows;
    }

    /// <summary>
    /// areas collection
    /// 区块收藏
    /// </summary>
    public struct NET_BLOCK_COLLECTION
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// split mode
        /// 分割模式
        /// </summary>
        public EM_SPLIT_MODE emSplitMode;
        /// <summary>
        /// window info array
        /// 窗口信息数组
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_WINDOW_COLLECTION[] stuWnds;
        /// <summary>
        /// count of window
        /// 窗口数量
        /// </summary>
        public int nWndsCount;
        /// <summary>
        /// favorites name
        /// 收藏夹名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// The output channel number, including the splicing screen
        /// 输出通道号, 包括拼接屏
        /// </summary>
        public int nScreen;
        /// <summary>
        /// splicing video wall ID
        /// 拼接屏ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCompositeID;
        /// <summary>
        /// Windows information array pointer, the memory assigned by user. Use when the size of stuWnds array is not enough. 
        /// 窗口信息数组指针, 由用户分配内存. 当stuWnds数组大小不够用时可以使用 NET_WINDOW_COLLECTION
        /// </summary>
        public IntPtr pstuWndsEx;
        /// <summary>
        /// The maximum number of windows, filled by user. pstuWndsEx the muber of the array element.
        /// 最大窗口数量, 用户填写. pstuWndsEx数组的元素个数
        /// </summary>
        public int nMaxWndsCountEx;
        /// <summary>
        /// The number of return windows.
        /// 返回窗口数量
        /// </summary>
        public int nRetWndsCountEx;
        /// <summary>
        /// Number of split OSD
        /// OSD的个数
        /// </summary>
        public int nSplitOsdCount;
        /// <summary>
        /// Split OSD
        /// 拼接区OSD叠加信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_SPLIT_OSD[] stuSplitOsd;
        /// <summary>
        /// Background information of mosaic area.Currently only used for plan acquisition
        /// 拼接区底图信息，目前仅预案获取时使用
        /// </summary>
        public NET_SCREEEN_BACKGROUD stuScreenBackground;
    }

    /// <summary>
    /// Device details
    /// 设备详细信息
    /// </summary>
    public struct NET_MONITOR_WALL_DEVICE_INFO
    {
        /// <summary>
        /// machine name
        /// 机器名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// password
        /// 密码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassword;
        /// <summary>
        /// username
        /// 用户名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUserName;
        /// <summary>
        /// port
        /// 端口
        /// </summary>
        public uint nPort;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// information window areas
    /// 区块窗口信息
    /// </summary>
    public struct NET_WINDOW_COLLECTION
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// window ID
        /// 窗口ID
        /// </summary>
        public int nWindowID;
        /// <summary>
        /// enable
        /// 窗口是否有效
        /// </summary>
        public bool bWndEnable;
        /// <summary>
        /// rect, effect when free split mode
        /// 窗口区域, 自由分割模式下有效
        /// </summary>
        public NET_A_RECT_EX stuRect;
        /// <summary>
        /// coordinate whether meet the conditions
        /// 坐标是否满足直通条件
        /// </summary>
        public bool bDirectable;
        /// <summary>
        /// z order
        /// 窗口Z次序
        /// </summary>
        public int nZOrder;
        /// <summary>
        /// source enable
        /// 显示源是否有效
        /// </summary>
        public bool bSrcEnable;
        /// <summary>
        /// device ID
        /// 设备ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// video channel
        /// 视频通道号
        /// </summary>
        public int nVideoChannel;
        /// <summary>
        /// video stream type
        /// 视频码流类型
        /// </summary>
        public int nVideoStream;
        /// <summary>
        /// audio channel
        /// 音频通道
        /// </summary>
        public int nAudioChannel;
        /// <summary>
        /// audio stream type
        /// 音频码流类型
        /// </summary>
        public int nAudioStream;
        /// <summary>
        /// unique channel
        /// 设备内统一编号的唯一通道号
        /// </summary>
        public int nUniqueChannel;
        /// <summary>
        /// Device details
        /// 设备详细信息
        /// </summary>
        public NET_MONITOR_WALL_DEVICE_INFO stuDeviceInfo;
        /// <summary>
        /// polling time interval, in seconds (window polling is valid, otherwise ignored)
        /// 轮巡时间间隔,单位秒 (窗口轮巡有效，否则忽略)
        /// </summary>
        public int nInterval;
        /// <summary>
        /// / 设备详细信息扩展
        /// Device Details Extension
        /// </summary>
        public NET_REMOTE_DEVICE stuDeviceInfoEx;
    }

    /// <summary>
    /// input parameter of interface WindowRegionEnlarge
    /// WindowRegionEnlarge接口输入参数
    /// </summary>
    public struct NET_IN_WINDOW_REGION_ENLARGE
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// video out channel or virtual channel
        /// 输出通道号或融合屏虚拟通道号
        /// </summary>
        public int nChannel;
        /// <summary>
        /// window ID
        /// 窗口ID
        /// </summary>
        public int nWindowID;
        /// <summary>
        /// area of windw magnification, the coordinate system is virtual coodinate system.[0~8192]
        /// 画面放大区域，坐标系为虚拟坐标系，0~8192
        /// </summary>
        public NET_RECT stuRect;
    }

    /// <summary>
    /// out parameter of interface WindowRegionEnlarge
    /// WindowRegionEnlarge接口输出参数
    /// </summary>
    public struct NET_OUT_WINDOW_REGION_ENLARGE
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// input parameter of interface WindowEnlargeReduction
    /// WindowEnlargeReduction接口输入参数
    /// </summary>
    public struct NET_IN_WINDOW_ENLARGE_REDUCTION
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// video out channel or virtual channel
        /// 输出通道号或融合屏虚拟通道号
        /// </summary>
        public int nChannel;
        /// <summary>
        /// window ID
        /// 窗口ID
        /// </summary>
        public int nWindowID;
    }

    /// <summary>
    /// outparameter of interface WindowEnlargeReduction
    /// WindowEnlargeReduction接口输出参数
    /// </summary>
    public struct NET_OUT_WINDOW_ENLARGE_REDUCTION
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// Matrix sub card type. Various setups.
    /// 矩阵子卡类型,多种类型可以组合
    /// </summary>
    [Flags]
    public enum EM_MATRIX_CARD_TYPE
    {
        /// <summary>
        /// main card
        /// 主卡
        /// </summary>
        MAIN = 0x10000000,
        /// <summary>
        /// input card 
        /// 输入卡
        /// </summary>
        INPUT = 0x00000001,
        /// <summary>
        /// output card
        /// 输出卡
        /// </summary>
        OUTPUT = 0x00000002,
        /// <summary>
        /// encode card
        /// 编码卡
        /// </summary>
        ENCODE = 0x00000004,
        /// <summary>
        /// decode card
        /// 解码卡
        /// </summary>
        DECODE = 0x00000008,
        /// <summary>
        /// cascade card
        /// 级联卡
        /// </summary>
        CASCADE = 0x00000010,
        /// <summary>
        /// intelligent card
        /// 智能卡
        /// </summary>
        INTELLIGENT = 0x00000020,
        /// <summary>
        /// alarm card
        /// 报警卡
        /// </summary>
        ALARM = 0x00000040,
        /// <summary>
        /// Hdd Raid Card
        /// 硬Raid卡
        /// </summary>
        RAID = 0x00000080,
        /// <summary>
        /// net decode card
        /// 网络解码卡
        /// </summary>
        NET_DECODE = 0x00000100,
    }

    /// <summary>
    /// Query Conditions Of Traffic Black And WL Account Records 
    /// 交通黑允许名单账户记录查询条件
    /// </summary>
    public struct NET_FIND_RECORD_TRAFFICREDLIST_CONDITION
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// License Plate Number
        /// 车牌号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szPlateNumber;
        /// <summary>
        /// License Plate Number Fuzzy Query 
        /// 车牌号码模糊查询
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szPlateNumberVague;
        /// <summary>
        /// Offset in the query results of first results returned
        /// 第一个条返回结果在查询结果中的偏移量
        /// </summary>
        public int nQueryResultBegin;
        /// <summary>
        /// Whether support the quick query, TRUE: for quick, quick query time don't wait for all add, delete, change operation is completed. The default is non-quick query 
        /// 是否快速查询, TRUE:为快速,快速查询时不等待所有增、删、改操作完成。默认为非快速查询
        /// </summary>
        public bool bRapidQuery;
        /// <summary>
        /// / 省份类型
        /// Province
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProvince;
        /// <summary>
        /// / 车牌类型
        /// License Plate Type
        /// </summary>
        public EM_NET_PLATE_TYPE emPlateType;
    }

    /// <summary>
    /// Information of recorded in transportation black and WL
    /// 交通禁止允许名单记录信息
    /// </summary>
    public struct NET_TRAFFIC_LIST_RECORD
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Queried Record Number
        /// 之前查询到的记录号
        /// </summary>
        public int nRecordNo;
        /// <summary>
        /// Car Owner's Name
        /// 车主姓名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szMasterofCar;
        /// <summary>
        /// License Plate Number
        /// 车牌号码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szPlateNumber;
        /// <summary>
        /// License Plate Type 
        /// 车牌类型
        /// </summary>
        public EM_NET_PLATE_TYPE emPlateType;
        /// <summary>
        /// License Plate Color 
        /// 车牌颜色
        /// </summary>
        public EM_NET_PLATE_COLOR_TYPE emPlateColor;
        /// <summary>
        /// Vehicle Type
        /// 车辆类型
        /// </summary>
        public EM_NET_VEHICLE_TYPE emVehicleType;
        /// <summary>
        /// Car Body Color
        /// 车身颜色
        /// </summary>
        public EM_NET_VEHICLE_COLOR_TYPE emVehicleColor;
        /// <summary>
        /// Start Time 
        /// 开始时间
        /// </summary>
        public NET_TIME stBeginTime;
        /// <summary>
        /// Undo Time
        /// 撤销时间
        /// </summary>
        public NET_TIME stCancelTime;
        /// <summary>
        /// Permission Number
        /// 权限个数
        /// </summary>
        public int nAuthrityNum;
        /// <summary>
        /// Permissions List, WL Only
        /// 权限列表 , 允许名单仅有
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_AUTHORITY_TYPE[] stAuthrityTypes;
        /// <summary>
        /// Monitor Type, BL Only
        /// 布控类型 ,禁止名单仅有
        /// </summary>
        public EM_NET_TRAFFIC_CAR_CONTROL_TYPE emControlType;
        /// <summary>
        /// Control line ID
        /// 布控路线ID
        /// </summary>
        public uint nControlledRouteID;
        /// <summary>
        /// 车辆所处位置
        /// Vehicle location
        /// </summary>
        public uint nLocation;
        /// <summary>
        /// 车辆所处位置是否下发，TRUE:下发，FALSE:不下发
        /// Is the nLocation valid? TRUE:YES, FALSE:NO
        /// </summary>
        public bool bLocation;
        /// <summary>
        /// 自定义车位号，适用于车检器场景
        /// Customized parking lot number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCustomParkNo;
        /// <summary>
        /// 省份类型
        /// Province type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProvince;
        /// <summary>
        /// 车主姓名(拓展)
        /// Owner Name (Extended)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szMasterOfCarEx;
        /// <summary>
        /// 是否使用szMasterOfCarEx下发
        /// Whether to use szMasterOfCarEx for distribution
        /// </summary>
        public bool bIsMasterOfCarExValid;
        /// <summary>
        /// / 车主备注信息
        /// Owner's note information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szOwnerRemark;
        /// <summary>
        /// / 车主所在部门
        /// Owner's department
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDepartMent;
        /// <summary>
        /// / 刷卡开闸的卡号。只有在开闸权限OpenGate为true的情况下，刷卡开闸才有效
        /// The card number for swiping the card to open the gate. Card swiping is only effective when the gate opening permission OpenGate is true
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardID;
        /// <summary>
        /// / 车主联系方式
        /// Car owner's contact information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szTelephoneNumber;
    }

    /// <summary>
    /// License plate type
    /// 车牌类型
    /// </summary>
    public enum EM_NET_PLATE_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// Normal
        /// 蓝牌黑牌
        /// </summary>
        NORMAL,
        /// <summary>
        /// Yellow
        /// 黄牌
        /// </summary>
        YELLOW,
        /// <summary>
        /// DoubleYellow
        /// 双层黄尾牌
        /// </summary>
        DOUBLEYELLOW,
        /// <summary>
        /// Police
        /// 警牌
        /// </summary>
        POLICE,
        NET_PLATE_TYPE_WJ,
        NET_PLATE_TYPE_OUTERGUARD,
        NET_PLATE_TYPE_DOUBLEOUTERGUARD,
        /// <summary>
        /// SAR
        /// 港澳特区号牌
        /// </summary>
        SAR,
        /// <summary>
        /// Trainning
        /// 教练车号牌
        /// </summary>
        TRAINNING,
        /// <summary>
        /// Personal
        /// 个性号牌
        /// </summary>
        PERSONAL,
        /// <summary>
        /// Agri
        /// 农用牌
        /// </summary>
        AGRI,
        /// <summary>
        /// Embassy
        /// 使馆号牌
        /// </summary>
        EMBASSY,
        /// <summary>
        /// Moto
        /// 摩托车号牌
        /// </summary>
        MOTO,
        /// <summary>
        /// Tractor
        /// 拖拉机号牌
        /// </summary>
        TRACTOR,
        /// <summary>
        /// OfficialCar
        /// 公务车
        /// </summary>
        OFFICIALCAR,
        /// <summary>
        /// PersonalCar
        /// 私家车
        /// </summary>
        PERSONALCAR,
        /// <summary>
        /// WarCar
        /// 军用
        /// </summary>
        WARCAR,
        /// <summary>
        /// Other
        /// 其他号牌
        /// </summary>
        OTHER,
        /// <summary>
        /// Civilaviation
        /// 民航号牌
        /// </summary>
        CIVILAVIATION,
        /// <summary>
        /// Black
        /// 黑牌
        /// </summary>
        BLACK,
        /// <summary>
        /// PureNewEnergyMicroCar
        /// 纯电动新能源小车
        /// </summary>
        PURENEWENERGYMICROCAR,
        /// <summary>
        /// MixedNewEnergyMicroCar
        /// 混合新能源小车
        /// </summary>
        MIXEDNEWENERGYMICROCAR,
        /// <summary>
        /// PureNewEnergyLargeCar
        /// 纯电动新能源大车
        /// </summary>
        PURENEWENERGYLARGECAR,
        /// <summary>
        /// MixedNewEnergyLargeCar
        /// 混合新能源大车
        /// </summary>
        MIXEDNEWENERGYLARGECAR,
        /// <summary>
        /// / "Hongkong" 香港号牌
        /// "Hongkong" Hong Kong number plate
        /// </summary>
        HONGKONG,
        /// <summary>
        /// / "Makao" 澳门号牌
        /// "Makao" Macao number plate
        /// </summary>
        MAKAO,
        /// <summary>
        /// / "NewEnergy" 新能源车牌
        /// "NewEnergy" new energy license plate
        /// </summary>
        NEWENERGY,
        /// <summary>
        /// / "Emergency" 应急号牌
        /// "Emergency" emergency number
        /// </summary>
        EMERGENCY,
        /// <summary>
        /// / "RiGang" 日钢号牌
        /// "RiGang" Japanese steel plate
        /// </summary>
        RIGANG,
        /// <summary>
        /// / "Private" 私家车车牌
        /// "Private" private car license plate
        /// </summary>
        PRIVATE,
        /// <summary>
        /// / "Transport" 运输车车牌
        /// "Transport" transport vehicle license plate
        /// </summary>
        TRANSPORT,
        /// <summary>
        /// / "Taxi" 出租车
        /// "Taxi" taxi
        /// </summary>
        TAXI,
        /// <summary>
        /// / "Government" ZF车辆
        /// "Government" ZF vehicle
        /// </summary>
        GOV,
        /// <summary>
        /// / "ISF" 卡塔尔ISF车牌
        /// "ISF" Qatar ISF license plate
        /// </summary>
        ISF,
        /// <summary>
        /// / "Export" 中东出口车车牌
        /// "Export" Middle East export vehicle license plate
        /// </summary>
        EXPORT,
        /// <summary>
        /// / "Trailer" 中东拖车车牌
        /// "Trailer" Middle East trailer license plate
        /// </summary>
        TRAILER,
        /// <summary>
        /// / "UnderExpe" 中东UNDER_EXPE车牌
        /// "UnderExpe" Indicates the UNDER_EXPE license plate of the Middle East
        /// </summary>
        UNDEREXPE,
        /// <summary>
        /// / "TempTransport" 中东Temp Transport车牌
        /// "TempTransport" Middle East TempTransport license plate
        /// </summary>
        TEMPTRANSPORT,
        /// <summary>
        /// / "PublicTransport" 中东Public Transport车牌
        /// "PublicTransport" Middle East PublicTransport license plate
        /// </summary>
        PUBLICTRANSPORT,
        /// <summary>
        /// / "Askari" 中东Askari车牌
        /// "Askari" Middle Eastern Askari license plate
        /// </summary>
        ASKARI,
        /// <summary>
        /// / "EmiriGuard" 中东Emiri Guard车牌
        /// "EmiriGuard" EmiriGuard license plate of the Middle East
        /// </summary>
        ENIRIGUARD,
        /// <summary>
        /// / "UN" 中东UN车牌
        /// "UN" Middle East UN license plate
        /// </summary>
        UN,
        /// <summary>
        /// / "Limousine" 中东Limousine车牌
        /// "Limousine" Middle East Limousine license plate
        /// </summary>
        LIMOUSINE,
    }

    /// <summary>
    /// plate color type
    /// 车牌颜色
    /// </summary>
    public enum EM_NET_PLATE_COLOR_TYPE
    {
        /// <summary>
        /// Other
        /// 其他颜色
        /// </summary>
        OTHER,
        /// <summary>
        /// Blue
        /// 蓝色
        /// </summary>
        BLUE,
        /// <summary>
        /// Yellow
        /// 黄色
        /// </summary>
        YELLOW,
        /// <summary>
        /// White
        /// 白色
        /// </summary>
        WHITE,
        /// <summary>
        /// Black
        /// 黑色
        /// </summary>
        BLACK,
        /// <summary>
        /// YellowbottomBlackText
        /// 黄底黑字
        /// </summary>
        YELLOW_BOTTOM_BLACK_TEXT,
        /// <summary>
        /// BluebottomWhiteText
        /// 蓝底白字
        /// </summary>
        BLUE_BOTTOM_WHITE_TEXT,
        /// <summary>
        /// BlackBottomWhiteText
        /// 黑底白字
        /// </summary>
        BLACK_BOTTOM_WHITE_TEXT,
        /// <summary>
        /// ShadowGreen
        /// 渐变绿
        /// </summary>
        SHADOW_GREEN,
        /// <summary>
        /// YellowGreen
        /// 黄绿双拼
        /// </summary>
        YELLOW_GREEN,
        /// <summary>
        /// Unknow color
        /// 未知颜色
        /// </summary>
        UNKNOW,
        /// <summary>
        /// Green
        /// 绿色
        /// </summary>
        GREEN,
        /// <summary>
        /// Red
        /// 红色
        /// </summary>
        RED,
        /// <summary>
        /// Orange
        /// 橙色
        /// </summary>
        ORANGE,
    }

    /// <summary>
    /// vehicle type
    /// 车辆类型
    /// </summary>
    public enum EM_NET_VEHICLE_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知类型
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// Motor
        /// 机动车
        /// </summary>
        MOTOR,
        /// <summary>
        /// Non-Motor
        /// 非机动车
        /// </summary>
        NON_MOTOR,
        /// <summary>
        /// Bus
        /// 公交车
        /// </summary>
        BUS,
        /// <summary>
        /// Bicycle
        /// 自行车
        /// </summary>
        BICYCLE,
        /// <summary>
        /// Motorcycle
        /// 摩托车
        /// </summary>
        MOTORCYCLE,
        /// <summary>
        /// UnlicensedMotor
        /// 无牌机动车
        /// </summary>
        UNLICENSEDMOTOR,
        /// <summary>
        /// LargeCar
        /// 大型汽车
        /// </summary>
        LARGECAR,
        /// <summary>
        /// MicroCar
        /// 小型汽车
        /// </summary>
        MICROCAR,
        /// <summary>
        /// EmbassyCar
        /// 使馆汽车
        /// </summary>
        EMBASSYCAR,
        /// <summary>
        /// MarginalCar
        /// 领馆汽车
        /// </summary>
        MARGINALCAR,
        /// <summary>
        /// AreaoutCar
        /// 境外汽车
        /// </summary>
        AREAOUTCAR,
        /// <summary>
        /// ForeignCar
        /// 外籍汽车
        /// </summary>
        FOREIGNCAR,
        /// <summary>
        /// DualTriWheelMotorcycle
        /// 两、三轮摩托车
        /// </summary>
        DUALTRIWHEELMOTORCYCLE,
        /// <summary>
        /// LightMotorcycle
        /// 轻便摩托车
        /// </summary>
        LIGHTMOTORCYCLE,
        /// <summary>
        /// EmbassyMotorcycle
        /// 使馆摩托车
        /// </summary>
        EMBASSYMOTORCYCLE,
        /// <summary>
        /// MarginalMotorcycle
        /// 领馆摩托车
        /// </summary>
        MARGINALMOTORCYCLE,
        /// <summary>
        /// AreaoutMotorcycle
        /// 境外摩托车
        /// </summary>
        AREAOUTMOTORCYCLE,
        /// <summary>
        /// ForeignMotorcycle
        /// 外籍摩托车
        /// </summary>
        FOREIGNMOTORCYCLE,
        /// <summary>
        /// FarmTransmitCar
        /// 农用运输车
        /// </summary>
        FARMTRANSMITCAR,
        /// <summary>
        /// Tractor
        /// 拖拉机
        /// </summary>
        TRACTOR,
        /// <summary>
        /// Trailer
        /// 挂车
        /// </summary>
        TRAILER,
        /// <summary>
        /// CoachCar
        /// 教练汽车
        /// </summary>
        COACHCAR,
        /// <summary>
        /// CoachMotorcycle
        /// 教练摩托车
        /// </summary>
        COACHMOTORCYCLE,
        /// <summary>
        /// TrialCar
        /// 试验汽车
        /// </summary>
        TRIALCAR,
        /// <summary>
        /// TrialMotorcycle
        /// 试验摩托车
        /// </summary>
        TRIALMOTORCYCLE,
        /// <summary>
        /// TemporaryEntryCar
        /// 临时入境汽车
        /// </summary>
        TEMPORARYENTRYCAR,
        /// <summary>
        /// TemporaryEntryMotorcycle
        /// 临时入境摩托车
        /// </summary>
        TEMPORARYENTRYMOTORCYCLE,
        /// <summary>
        /// TemporarySteerCar
        /// 临时行驶车
        /// </summary>
        TEMPORARYSTEERCAR,
        /// <summary>
        /// PassengerCar
        /// 客车
        /// </summary>
        PASSENGERCAR,
        /// <summary>
        /// LargeTruck
        /// 大货车
        /// </summary>
        LARGETRUCK,
        /// <summary>
        /// MidTruck
        /// 中货车
        /// </summary>
        MIDTRUCK,
        /// <summary>
        /// SaloonCar
        /// 轿车
        /// </summary>
        SALOONCAR,
        /// <summary>
        /// Microbus
        /// 面包车
        /// </summary>
        MICROBUS,
        /// <summary>
        /// MicroTruck
        /// 小货车
        /// </summary>
        MICROTRUCK,
        /// <summary>
        /// Tricycle
        /// 三轮车
        /// </summary>
        TRICYCLE,
        /// <summary>
        /// Passerby
        /// 行人
        /// </summary>
        PASSERBY,
    }

    /// <summary>
    /// vehicle color type
    /// 车身颜色
    /// </summary>
    public enum EM_NET_VEHICLE_COLOR_TYPE
    {
        /// <summary>
        /// Other
        /// 其他颜色
        /// </summary>
        OTHER,
        /// <summary>
        /// White
        /// 白色
        /// </summary>
        WHITE,
        /// <summary>
        /// Black
        /// 黑色
        /// </summary>
        BLACK,
        /// <summary>
        /// Red
        /// 红色
        /// </summary>
        RED,
        /// <summary>
        /// Yellow
        /// 黄色
        /// </summary>
        YELLOW,
        /// <summary>
        /// Gray
        /// 灰色
        /// </summary>
        GRAY,
        /// <summary>
        /// Blue
        /// 蓝色
        /// </summary>
        BLUE,
        /// <summary>
        /// Green
        /// 绿色
        /// </summary>
        GREEN,
        /// <summary>
        /// Pink
        /// 粉红色
        /// </summary>
        PINK,
        /// <summary>
        /// Purple
        /// 紫色
        /// </summary>
        PURPLE,
        /// <summary>
        /// Brown
        /// 棕色
        /// </summary>
        BROWN,
    }

    /// <summary>
    /// Authority type
    /// 权限类型
    /// </summary>
    public struct NET_AUTHORITY_TYPE
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Permission Types
        /// 权限类型
        /// </summary>
        public EM_NET_AUTHORITY_TYPE emAuthorityType;
        /// <summary>
        /// Permission Enabled
        /// 权限使能
        /// </summary>
        public bool bAuthorityEnable;
    }

    /// <summary>
    /// Authority type
    /// 权限类型
    /// </summary>
    public enum EM_NET_AUTHORITY_TYPE
    {
        /// <summary>
        /// UNKNOWN
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// OPEN GATE
        /// 开闸权限
        /// </summary>
        OPEN_GATE,
    }

    /// <summary>
    /// control type
    /// 布控类型
    /// </summary>
    public enum EM_NET_TRAFFIC_CAR_CONTROL_TYPE
    {
        /// <summary>
        /// other
        /// 其他
        /// </summary>
        OTHER,
        /// <summary>
        /// OverdueNoCheck
        /// 过期未检
        /// </summary>
        OVERDUE_NO_CHECK,
        /// <summary>
        /// BrigandageCar
        /// 盗抢车辆
        /// </summary>
        BRIGANDAGE_CAR,
        /// <summary>
        /// Breaking
        /// 违章
        /// </summary>
        BREAKING,
        /// <summary>
        /// 
        /// 
        /// </summary>
        CAUSETROUBLE_ESCAPE,
    }

    /// <summary>
    /// operate traffic list
    /// 操作交通列表
    /// </summary>
    public struct NET_IN_OPERATE_TRAFFIC_LIST_RECORD
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Operate Type
        /// 操作类型
        /// </summary>
        public EM_RECORD_OPERATE_TYPE emOperateType;
        /// <summary>
        /// record type to operate (Just NET_RECORD_TRAFFICREDLIST and NET_RECORD_TRAFFICBLACKLIST is valid)
        /// 要操作的记录信息类型（仅 NET_RECORD_TRAFFICREDLIST 和 NET_RECORD_TRAFFICBLACKLIST 有效）
        /// </summary>
        public EM_NET_RECORD_TYPE emRecordType;
        /// <summary>
        /// the space application by the user,please refer to emOperateType to ensure corresponding structure,then ensure memory size
        /// 由用户申请内存，参照操作类型emOperateType，得到操作类型对应的结构体，进而确定对应的内存大小
        /// </summary>
        public IntPtr pstOpreateInfo;

    }

    /// <summary>
    /// operate traffic list interface outparamter
    /// 现阶段实现的操作接口中,只有返回nRecordNo的操作,stRetRecord暂时不可用
    /// </summary>
    public struct NET_OUT_OPERATE_TRAFFIC_LIST_RECORD
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Record Number
        /// 记录号
        /// </summary>
        public int nRecordNo;
    }

    /// <summary>
    /// 
    /// 黑允许名单操作类型
    /// </summary>
    public enum EM_RECORD_OPERATE_TYPE
    {
        /// <summary>
        /// insert NET_INSERT_RECORD_INFO 
        /// 增加记录操作 NET_INSERT_RECORD_INFO
        /// </summary>
        INSERT,
        /// <summary>
        /// update NET_UPDATE_RECORD_INFO
        /// 更新记录操作 NET_UPDATE_RECORD_INFO
        /// </summary>
        UPDATE,
        /// <summary>
        /// delete NET_REMOVE_RECORD_INFO
        /// 删除记录操作 NET_REMOVE_RECORD_INFO
        /// </summary>
        REMOVE,
        MAX,
    }

    /// <summary>
    /// file transmit type
    /// 文件传输类型
    /// </summary>
    public enum EM_FIELTRANSMIT_TYPE
    {
        /// <summary>
        /// Begin sending update file(Corresponding structure NET_DEV_UPGRADE_FILE_INFO)
        /// 开始升级文件上传(对应结构体 NET_DEV_UPGRADE_FILE_INFO)
        /// </summary>
        UPGRADEFILETRANS_START = 0x0000,
        /// <summary>
        /// Send update file
        /// 发送升级文件
        /// </summary>
        UPGRADEFILETRANS_SEND = 0x0001,
        /// <summary>
        /// Stop sending update file
        /// 停止发送升级文件
        /// </summary>
        UPGRADEFILETRANS_STOP = 0x0002,
        /// <summary>
        /// begin to send blackWL(Corresponding structure NET_DEV_BLACKWHITE_LIST_INFO)
        /// 开始发送黑允许名单(对应结构体 NET_DEV_BLACKWHITE_LIST_INFO)
        /// </summary>
        BLACKWHITETRANS_START = 0x0003,
        /// <summary>
        /// send blackWL
        /// 发送黑允许名单
        /// </summary>
        BLACKWHITETRANS_SEND = 0x0004,
        /// <summary>
        /// stop to send blackWL
        /// 停止发送黑允许名单
        /// </summary>
        BLACKWHITETRANS_STOP = 0x0005,
        /// <summary>
        /// blackWL load (Corresponding structure NET_DEV_LOAD_BLACKWHITE_LIST_INFO)
        /// 下载黑允许名单(对应结构体NET_DEV_LOAD_BLACKWHITE_LIST_INFO)
        /// </summary>
        BLACKWHITE_LOAD = 0x0006,
        /// <summary>
        /// blackWL load stop
        /// 停止下载黑允许名单
        /// </summary>
        BLACKWHITE_LOAD_STOP = 0x0007,
        /// <summary>
        /// Stop file upload
        /// 停止文件上传
        /// </summary>
        FILETRANS_STOP = 0x002B,
        /// <summary>
        /// Burn File Upload
        /// 刻录文件上传
        /// </summary>
        FILETRANS_BURN = 0x002C,
    }

    /// <summary>
    /// upload black-WL
    /// 黑允许名单上传
    /// </summary>
    public struct NET_DEV_BLACKWHITE_LIST_INFO
    {
        /// <summary>
        /// path of file
        /// 黑允许名单文件路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 240)]
        public string szFile;
        /// <summary>
        /// size of upgrade file
        /// 升级文件大小
        /// </summary>
        public int nFileSize;
        /// <summary>
        /// type of file.0-BL,1-WL
        /// 当前文件类型,0-禁止名单,1-允许名单
        /// </summary>
        public byte byFileType;
        /// <summary>
        /// action,0-overload,1-additional
        /// 动作,0-覆盖,1-追加
        /// </summary>
        public byte byAction;
        /// <summary>
        /// reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 126)]
        public byte[] byReserved;
    }

    /// <summary>
    /// download black-WL
    /// 黑允许名单下载
    /// </summary>
    public struct NET_DEV_LOAD_BLACKWHITE_LIST_INFO
    {
        /// <summary>
        /// path of file
        /// 黑允许名单文件保存路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 240)]
        public string szFile;
        /// <summary>
        /// type of file,0-BL,1-white of list
        /// 当前文件类型,0-禁止名单,1-允许名单
        /// </summary>
        public byte byFileType;
        /// <summary>
        /// reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 127)]
        public byte[] byReserved;
    }

    public struct NET_INSERT_RECORD_INFO
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Record the content information,the space application by the user,apply to sizeof(NET_TRAFFIC_LIST_RECORD)
        /// 记录内容信息,由用户分配内存，大小为sizeof(NET_TRAFFIC_LIST_RECORD)  
        /// </summary>
        public IntPtr pRecordInfo;
    }

    public struct NET_UPDATE_RECORD_INFO
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Record the content information,the space application by the user,apply to sizeof(NET_TRAFFIC_LIST_RECORD)
        /// 记录内容信息,由用户分配内存，大小为sizeof(NET_TRAFFIC_LIST_RECORD) 
        /// </summary>
        public IntPtr pRecordInfo;
    }

    public struct NET_REMOVE_RECORD_INFO
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Queried Record Number
        /// 之前查询到的记录号
        /// </summary>
        public int nRecordNo;
    }

    /// <summary>
    /// User info list
    /// 用户信息表
    /// </summary>
    public struct NET_USER_MANAGE_INFO_NEW
    {
        public uint dwSize;
        /// <summary>
        /// Rights info
        /// 权限信息
        /// </summary>
        public uint dwRightNum;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_OPR_RIGHT_NEW[] rightList;
        public uint dwGroupNum;
        /// <summary>
        /// User group info
        /// 用户组信息,此参数废弃,请使用groupListEx
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_USER_GROUP_INFO_NEW[] groupList;
        /// <summary>
        /// User info
        /// 用户信息
        /// </summary>
        public uint dwUserNum;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)]
        public NET_USER_INFO_NEW[] userList;
        /// <summary>
        /// Sub mask; 0x00000001 - Support account reusable,0x00000002 - Verification needed when change password
        /// 掩码；0x00000001 - 支持用户复用,0x00000002 - 密码修改需要校验
        /// </summary>
        public uint dwFouctionMask;
        /// <summary>
        /// Max user name length supported
        /// 支持的用户名最大长度
        /// </summary>
        public byte byNameMaxLength;
        /// <summary>
        /// Max password length supported
        /// 支持的密码最大长度
        /// </summary>
        public byte byPSWMaxLength;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 254)]
        public byte[] byReserve;
        /// <summary>
        /// User Group Information Expand
        /// 用户组信息扩展
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_USER_GROUP_INFO_EX2[] groupListEx;
    }

    /// <summary>
    /// Rights info
    /// 权限信息
    /// </summary>
    public struct NET_OPR_RIGHT_NEW
    {
        public uint dwSize;
        public uint dwID;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string name;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string memo;

        public override string ToString()
        {
            return name;
        }
    }

    /// <summary>
    /// User group info
    /// 用户组信息
    /// </summary>
    public struct NET_USER_GROUP_INFO_NEW
    {
        public uint dwSize;
        public uint dwID;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string name;
        public uint dwRightNum;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public uint[] rights;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string memo;
    }

    /// <summary>
    /// User info
    /// 用户信息
    /// </summary>
    public struct NET_USER_INFO_NEW
    {
        public uint dwSize;
        public uint dwID;
        public uint dwGroupID;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string name;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string passWord;
        public uint dwRightNum;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public uint[] rights;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string memo;
        /// <summary>
        /// Sub mask,0x00000001 - Support account reusable
        /// 掩码,0x00000001 - 支持用户复用
        /// </summary>
        public uint dwFouctionMask;
        /// <summary>
        /// Last Revise Time
        /// 最后修改时间
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// Whether Can Be Anonymous Login,0=Can't Be Anonymous Login,1=Can be Anonymous Login
        /// 是否可以匿名登录, 0:不可匿名登录, 1: 可以匿名登录
        /// </summary>
        public byte byIsAnonymous;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]
        public byte[] byReserve;

        public override string ToString()
        {
            return name;
        }
    }

    /// <summary>
    /// user group information expand,user group lengthen
    /// 用户组信息扩展,用户组名加长
    /// </summary>
    public struct NET_USER_GROUP_INFO_EX2
    {
        public uint dwSize;
        public uint dwID;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string name;
        public uint dwRightNum;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public uint[] rights;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string memo;

        public override string ToString()
        {
            return name;
        }
    }

    /// <summary>
    /// CLIENT_OperateUserInfoNew接口参数 nOperateType 对应的值含义
    /// CLIENT_OperateUserInfoNew'param nOperateType
    /// </summary>
    public enum EM_OPERATE_USER_TYPE
    {
        /// <summary>
        /// 增加用户,opParam对应结构体 NET_USER_INFO_NEW
        /// add user,opParam corresponding to NET_USER_INFO_NEW
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_ADD_USER = 3,
        /// <summary>
        /// 删除用户,opParam对应结构体 NET_USER_INFO_NEW
        /// delete user,opParam corresponding to NET_USER_INFO_NEW
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_DEL_USER,
        /// <summary>
        /// 修改用户,opParam为修改后的用户信息 对应结构体 NET_USER_INFO_NEW, subParam为原始用户信息 对应结构体 NET_USER_INFO_NEW
        /// modify user,opParam is modified user info, corresponding to NET_USER_INFO_NEW; subParam is original user info, corresponding to NET_USER_INFO_NEW
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_MODIFY_USER,
        /// <summary>
        /// 修改密码,opParam为修改后的密码 对应结构体 NET_USER_INFO_NEW, subParam为原始密码 对应结构体 NET_USER_INFO_NEW
        /// modify password,opParam is modified password, corresponding to NET_USER_INFO_NEW; subParamis original password, corresponding to NET_USER_INFO_NEW
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_MODIFY_PWD,
        /// <summary>
        /// 增加用户组,opParam对应结构体 NET_USER_GROUP_INFO_EX2
        /// add user group,opParam corresponding to NET_USER_GROUP_INFO_EX2
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_ADD_GROUP,
        /// <summary>
        /// 删除用户组,opParam对应结构体 NET_USER_GROUP_INFO_EX2
        /// delete user group,opParam corresponding to NET_USER_GROUP_INFO_EX2
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_DEL_GROUP,
        /// <summary>
        /// 修改用户组,opParam为修改后的用户组信息 对应结构体 NET_USER_GROUP_INFO_EX2,subParam为原始用户组信息 对应结构体 NET_USER_GROUP_INFO_EX2
        /// 权限列表长度 3072
        /// modify user group,opParam is modified user group info, corresponding to NET_USER_GROUP_INFO_EX2,subParam is original user group info, corresponding to NET_USER_GROUP_INFO_EX2
        /// right list size is 3072
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_MODIFY_GROUP,
        /// <summary>
        /// 增加用户扩展,opParam对应结构体 NET_USER_INFO_NEW_EX
        /// add user expand,opParam corresponding to NET_USER_INFO_NEW_EX
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_ADD_USER_EX = 10,
        /// <summary>
        /// 删除用户扩展,opParam对应结构体 NET_USER_INFO_NEW_EX
        /// delete user expand,opParam corresponding to NET_USER_INFO_NEW_EX
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_DEL_USER_EX,
        /// <summary>
        /// 修改用户扩展,opParam为修改后的用户信息 对应结构体 NET_USER_INFO_NEW_EX, subParam为原始用户信息 对应结构体 NET_USER_INFO_NEW_EX
        /// modify user expand,opParam is modified user info, corresponding to NET_USER_INFO_NEW_EX; subParam is original user info, corresponding to NET_USER_INFO_NEW_EX
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_MODIFY_USER_EX,
        /// <summary>
        /// 修改密码扩展,opParam为修改后的密码 对应结构体 NET_USER_INFO_NEW_EX, subParam为原始密码 对应结构体 NET_USER_INFO_NEW_EX
        /// modify password expand,opParam is modified password, corresponding to NET_USER_INFO_NEW_EX; subParam is original password, corresponding to NET_USER_INFO_NEW_EX
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_MODIFY_PWD_EX,
        /// <summary>
        /// 增加用户组扩展,opParam对应结构体 NET_USER_GROUP_INFO_EX3
        /// add user group expand,opParam corresponding to NET_USER_GROUP_INFO_EX3
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_ADD_GROUP_EX,
        /// <summary>
        /// 删除用户组扩展,opParam对应结构体 NET_USER_GROUP_INFO_EX3
        /// delete user group expand,opParam corresponding to NET_USER_GROUP_INFO_EX3
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_DEL_GROUP_EX,
        /// <summary>
        /// 修改用户组扩展,opParam为修改后的用户组信息 对应结构体 NET_USER_GROUP_INFO_EX3,subParam为原始用户组信息 对应结构体 NET_USER_GROUP_INFO_EX3
        /// modify user group expand,opParam is modified user group info, corresponding to NET_USER_GROUP_INFO_EX3; subParam is original user group info, corresponding to NET_USER_GROUP_INFO_EX3
        /// </summary>
        EM_OPERATE_USERINFO_TYPE_MODIFY_GROUP_EX,
    }

    public struct DEVICE_NET_INFO_EX
    {
        /// <summary>
        /// 4 for IPV4, 6 for IPV6
        /// 4 for IPV4, 6 for IPV6
        /// </summary>
        public int iIPVersion;
        /// <summary>
        /// IP IPV4 like"192.168.0.1" IPV6 like "2008::1/64"
        /// IP IPV4形如"192.168.0.1" IPV6形如"2008::1/64"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szIP;
        /// <summary>
        /// port
        /// tcp端口
        /// </summary>
        public int nPort;
        /// <summary>
        /// Subnet mask(IPV6 do not have subnet mask)
        /// 子网掩码 IPV6无子网掩码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSubmask;
        /// <summary>
        /// Gateway
        /// 网关
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGateway;
        /// <summary>
        /// MAC address
        /// MAC地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szMac;
        /// <summary>
        /// Device type
        /// 设备类型
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDeviceType;
        /// <summary>
        /// device manufactory, see EM_IPC_TYPE
        /// 目标设备的生产长商,具体参考EM_IPC_TYPE类
        /// </summary>
        public byte byManuFactory;
        /// <summary>
        /// 1-Standard definition 2-High definition
        /// 1-标清 2-高清
        /// </summary>
        public byte byDefinition;
        /// <summary>
        /// Dhcp, true-open, false-close
        /// Dhcp使能状态, true-开, false-关
        /// </summary>
        public byte bDhcpEn;
        /// <summary>
        /// reserved
        /// 字节对齐
        /// </summary>
        public byte byReserved1;
        /// <summary>
        /// ECC data 
        /// 校验数据 通过异步搜索回调获取(在修改设备IP时会用此信息进行校验)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 88)]
        public string verifyData;
        /// <summary>
        /// serial number
        /// 序列号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szSerialNo;
        /// <summary>
        /// device software version    
        /// 设备软件版本号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDevSoftVersion;
        /// <summary>
        /// device detail type
        /// 设备型号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDetailType;
        /// <summary>
        /// OEM type
        /// OEM客户类型
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szVendor;
        /// <summary>
        /// device name
        /// 设备名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDevName;
        /// <summary>
        /// user name for log in device(it need be filled when modify device ip)
        /// 登陆设备用户名（在修改设备IP时需要填写）
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szUserName;
        /// <summary>
        /// password for log in device(it need be filled when modify device ip)
        /// 登陆设备密码（在修改设备IP时需要填写）
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPassWord;
        /// <summary>
        /// HTTP server port
        /// HTTP服务端口号
        /// </summary>
        public ushort nHttpPort;
        /// <summary>
        /// count of video input channel
        /// 视频输入通道数
        /// </summary>
        public ushort wVideoInputCh;
        /// <summary>
        /// count of remote video input
        /// 远程视频输入通道数
        /// </summary>
        public ushort wRemoteVideoInputCh;
        /// <summary>
        /// count of video output channel 
        /// 视频输出通道数
        /// </summary>
        public ushort wVideoOutputCh;
        /// <summary>
        /// count of alarm input
        /// 报警输入通道数
        /// </summary>
        public ushort wAlarmInputCh;
        /// <summary>
        /// count of alarm output
        /// 报警输出通道数
        /// </summary>
        public ushort wAlarmOutputCh;
        /// <summary>
        /// TRUE:szNewPassWord Enable
        /// TRUE使用新密码字段szNewPassWord
        /// </summary>
        public bool bNewWordLen;
        /// <summary>
        /// password for log in device(it need be filled when modify device ip)
        /// 登陆设备密码（在修改设备IP时需要填写）
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNewPassWord;
        /// <summary>
        /// init status
        /// bit0~1：0-old device, can not be init; 1-not init; 2-already init
        /// bit2~3：0-old device,reserved; 1-connect to public network unable; 2-connect to public network enable
        /// bit4~5：0-old device,reserved; 1-connect to cellphone unable; 2-connect to cellphone enable
        /// 设备初始化状态，按位确定初始化状态
        /// bit0~1：0-老设备，没有初始化功能 1-未初始化账号 2-已初始化账户
        /// bit2~3：0-老设备，保留 1-公网接入未使能 2-公网接入已使能
        /// bit4~5：0-老设备，保留 1-手机直连未使能 2-手机直连使能
        /// </summary>
        public byte byInitStatus;
        /// <summary>
        /// the way supported for reset password:make sense when the device is init
        /// bit0-support reset password by cellphone; bit1-support reset password by mail
        /// 支持密码重置方式：按位确定密码重置方式，只在设备有初始化账号时有意义
        /// bit0-支持预置手机号 bit1-支持预置邮箱 
        /// </summary>
        public byte byPwdResetWay;
        /// <summary>
        /// special ability of device ,high eight bit, bit0-2D Code:0 support  1 no support, bit1-PN:0 support  1 no support
        /// 设备初始化能力，按位确定初始化能力,高八位 bit0-2D Code修改IP: 0 不支持 1 支持, bit1-PN制:0 不支持 1支持
        /// </summary>						
        public byte bySpecialAbility;
        /// <summary>
        /// device detail type 
        /// 设备型号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNewDetailType;
        /// <summary>
        /// TRUE:szNewUserName enable
        /// TRUE表示使用新用户名(szNewUserName)字段
        /// </summary>
        public bool bNewUserName;
        /// <summary>
        /// new user name for login device(it need be filled when modify device ip)
        /// 登陆设备用户名（在修改设备IP时需要填写）
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNewUserName;
        /// <summary>
        /// 密码找回的版本号
        /// 0-设备使用的是老方案的密码重置版本;1-支持预留联系方式进行密码重置操作;
        /// 2-支持更换联系方式进行密码重置操作;
        /// </summary>
        public byte byPwdFindVersion;
        /// <summary>
        /// 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
        public string szDeviceID;
        /// <summary>
        /// 未登陆功能掩码
        /// Bit0 Wifi列表扫描及WLan设置
        /// Bit1 支持会话外修改过期密码
        /// </summary>
        public uint dwUnLoginFuncMask;
        /// <summary>
        /// 设备分组
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szMachineGroup;
        /// <summary>
        /// 扩展字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
        public byte[] cReserved;
    }

    /// <summary>
    /// DownloadRemoteFile Interface Input Parameters (the file download)
    /// DownloadRemoteFile 接口输入参数(文件下载)
    /// </summary>
    public struct NET_IN_DOWNLOAD_REMOTE_FILE
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// File Name Needs to Download
        /// 需要下载的文件名
        /// </summary>
        public IntPtr pszFileName;
        /// <summary>
        /// File Path
        /// 存放文件路径
        /// </summary>
        public IntPtr pszFileDst;
    }

    /// <summary>
    /// DownloadRemoteFile Interface Output Parameters (the file download) 
    /// DownloadRemoteFile 接口输出参数(文件下载)
    /// </summary>
    public struct NET_OUT_DOWNLOAD_REMOTE_FILE
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// The size of pstFileBuf, it is specified by user
        /// 文件缓存区pstFileBuf的大小, 由用户指定
        /// </summary>
        public uint dwMaxFileBufLen;
        /// <summary>
        /// File buf, application an release by user
        /// 文件缓存区, 由用户申请和释放
        /// </summary>
        public IntPtr pstFileBuf;
        /// <summary>
        /// The actual size of the file
        /// 缓存区中返回的实际文件数据大小
        /// </summary>
        public uint dwRetFileBufLen;
        /// <summary>
        /// Alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Input parameters of interface DoFindFaceRecognitionRecordEx
    /// DoFindFaceRecognitionRecordEx 输入参数(对应的开始识别人脸多通道查询)
    /// </summary>
    public struct NET_IN_DOFIND_FACERECONGNITIONRECORD_EX
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// The count of needs to be obtained each time
        /// 查询条件的记录个数,-1表示总条数未生成,要推迟获取使用AttachFaceFindState接口状态
        /// </summary>
        public int nTotalCount;
        /// <summary>
        /// Query handle
        /// 查询句柄
        /// </summary>
        public IntPtr lFindHandle;
        /// <summary>
        /// The begin number, it means that start query record from beginNumber, and get nTotalCount records
        /// 查询起始序号，表示从beginNumber条记录开始，取count条记录返回；
        /// </summary>
        public int nBeginNumber;
    }

    /// <summary>
    /// Target recognition data
    /// 目标识别信息数据扩展
    /// </summary>
    public struct NET_DOFIND_FACERECONGNITIONRECORD_INFO_EX
    {
        /// <summary>
        /// Dose the global scene picture exist
        /// 全景图是否存在
        /// </summary>
        public bool bGlobalScenePic;
        /// <summary>
        /// The path of the global scene picture
        /// 全景图片文件路径
        /// </summary>
        public NET_PIC_INFO_CPP stGlobalScenePic;
        /// <summary>
        /// The target face object information
        /// 目标人脸物体信息
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// The target face file path
        /// 目标人脸文件路径
        /// </summary>
        public NET_PIC_INFO_CPP stObjectPic;
        /// <summary>
        /// Face Matching the current number of candidates
        /// 当前人脸匹配到的候选对象数量
        /// </summary>
        public int nCandidateNum;
        /// <summary>
        /// Face candidates to match this informatio
        /// 当前人脸匹配到的候选对象信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_CANDIDATE_INFOEX[] stuCandidates;
        /// <summary>
        /// The current face matching candidates to the image file path
        /// 当前人脸匹配到的候选对象图片文件路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_CANDIDAT_PIC_PATHS_EX[] stuCandidatesPic;
        /// <summary>
        /// Time for an alarm
        /// 报警发生时间
        /// </summary>
        public NET_TIME stTime;
        /// <summary>
        /// Place for an alarm
        /// 报警发生地点
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szAddress;
        /// <summary>
        /// Channel no 
        /// 通道号
        /// </summary>
        public int nChannelId;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    public struct NET_CANDIDAT_PIC_PATHS_EX
    {
        /// <summary>
        /// actual file amount
        /// 实际文件个数
        /// </summary>
        public int nFileCount;
        /// <summary>
        /// file information
        /// 文件信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
        public NET_PIC_INFO_CPP[] stFiles;
        /// <summary>
        /// reserved
        /// 保留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] bReserved;
    }

    /// <summary>
    /// Output parameters of interface DoFindFaceRecognitionRecordEx
    /// DoFindFaceRecognitionRecordEx 输出参数(对应的开始识别人脸多通道查询)
    /// </summary>
    public struct NET_OUT_DOFIND_FACERECONGNITIONRECORD_EX
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Face recongnition data returned(the memory is applied and released by user)
        /// 返回的目标识别信息数据(内存申请释放由用户管理) 对应该结构体NET_DOFIND_FACERECONGNITIONRECORD_INFO_EX数组
        /// </summary>
        public IntPtr pstResults;
        /// <summary>
        /// The number of memory applications for Target recognition information
        /// 申请的目标识别信息的内存个数
        /// </summary>
        public int nMaxResultNum;
        /// <summary>
        /// Actual number of returns
        /// 实际返回个数
        /// </summary>
        public int nRetResultNum;
    }

    /// <summary>
    /// input parameter of FaceRecognitionPutDisposition
    /// FaceRecognitionPutDisposition 接口输入参数
    /// </summary>
    public struct NET_IN_FACE_RECOGNITION_PUT_DISPOSITION_INFO
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// group ID
        /// 人员组ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupId;
        /// <summary>
        /// count of disposition channels
        /// 布控视频通道个数
        /// </summary>
        public int nDispositionChnNum;
        /// <summary>
        /// info of disposition channels
        /// 布控视频通道信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_DISPOSITION_CHANNEL_INFO[] stuDispositionChnInfo;
    }

    /// <summary>
    /// info of disposition channel
    /// 布控的视频通道信息
    /// </summary>
    public struct NET_DISPOSITION_CHANNEL_INFO
    {
        /// <summary>
        /// channel ID
        /// 视频通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// similary, 0-100
        /// 相似度阈值, 0-100
        /// </summary>
        public int nSimilary;
        /// <summary>
        /// Reserved
        /// 保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] bReserved;
    }

    /// <summary>
    /// output parameter of FaceRecognitionPutDisposition
    /// FaceRecognitionPutDisposition 接口输出参数
    /// </summary>
    public struct NET_OUT_FACE_RECOGNITION_PUT_DISPOSITION_INFO
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// the result count
        /// 通道布控结果个数
        /// </summary>
        public int nReportCnt;
        /// <summary>
        /// the result, TRUE-success, FALSE-failed
        /// 通道布控结果, TRUE追加成功, FALSE追加失败
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public bool[] bReport;
    }

    /// <summary>
    /// input parameter ofFaceRecognitionDelDisposition
    /// FaceRecognitionDelDisposition 接口输入参数
    /// </summary>
    public struct NET_IN_FACE_RECOGNITION_DEL_DISPOSITION_INFO
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// group ID
        /// 人员组ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupId;
        /// <summary>
        /// the count of disposition channels
        /// 撤控视频通道个数
        /// </summary>
        public int nDispositionChnNum;
        /// <summary>
        /// the list of disposition channels
        /// 撤控视频通道列表
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public int[] nDispositionChn;
    }

    /// <summary>
    /// output parameter of FaceRecognitionDelDisposition
    /// FaceRecognitionDelDisposition 接口输出参数
    /// </summary>
    public struct NET_OUT_FACE_RECOGNITION_DEL_DISPOSITION_INFO
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// the result count
        /// 通道布控结果个数
        /// </summary>
        public int nReportCnt;
        /// <summary>
        /// the result, TRUE-success, FALSE-falied
        /// 通道布控结果, TRUE删除成功, FALSE删除失败
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public bool[] bReport;
    }

    // 以下结构体只在工程EncodingConfig中使用

    /// <summary>
    /// Video compression format 
    /// 视频压缩格式
    /// </summary>
    public enum NET_CFG_VIDEO_COMPRESSION
    {
        /// <summary>
        /// MPEG4
        /// </summary>
        MPEG4,

        /// <summary>
        /// MS-MPEG4
        /// </summary>
        MS_MPEG4,

        /// <summary>
        /// MPEG2
        /// </summary>
        MPEG2,

        /// <summary>
        /// MPEG1
        /// </summary>
        MPEG1,

        /// <summary>
        /// H.263
        /// </summary>
        H263,

        /// <summary>
        /// MJPG
        /// </summary>
        MJPG,

        /// <summary>
        /// FCC-MPEG4
        /// </summary>
        FCC_MPEG4,

        /// <summary>
        /// H.264
        /// </summary>
        H264,

        /// <summary>
        /// H.265
        /// </summary>
        H265,

        /// <summary>
        /// SVAC
        /// </summary>
        SVAC,
    }

    /// <summary>
    /// Bit stream control mode 
    /// 码流控制模式
    /// </summary>
    public enum NET_CFG_BITRATE_CONTROL
    {
        /// <summary>
        /// Constant bit rate (CBR)
        /// 固定码流
        /// </summary>
        CBR,

        /// <summary>
        /// Variable bit rate (VBR)
        /// 可变码流
        /// </summary>
        VBR,
    }

    /// <summary>
    /// Image quality
    /// 画质
    /// </summary>
    public enum EM_CFG_IMAGE_QUALITY
    {
        /// <summary>
        /// Image quality 10%
        /// 图像质量10%
        /// </summary>
        Q10 = 1,

        /// <summary>
        /// Image quality 30%
        /// 图像质量30%
        /// </summary>
        Q30,

        /// <summary>
        /// Image quality 50%
        /// 图像质量50%
        /// </summary>
        Q50,

        /// <summary>
        /// Image quality 60%
        /// 图像质量60%
        /// </summary>
        Q60,

        /// <summary>
        /// Image quality 80%
        /// 图像质量80%
        /// </summary>
        Q80,

        /// <summary>
        /// Image quality 100%
        /// 图像质量100%
        /// </summary>
        Q100,
    }

    /// <summary>
    /// H264 Encode Level
    /// H264 编码级别
    /// </summary>
    public enum EM_CFG_H264_PROFILE_RANK
    {
        /// <summary>
        /// Offer I/P Frame, Only support progressive(Progressive Scan)and CAVLC
        /// 提供I/P帧，仅支持progressive(逐行扫描)和CAVLC
        /// </summary>
        BASELINE = 1,

        /// <summary>
        /// Offer I/P/B Frame, Support progressiv and interlaced, Offer CAVLC or CABAC
        /// 提供I/P/B帧，支持progressiv和interlaced，提供CAVLC或CABAC
        /// </summary>
        MAIN,

        /// <summary>
        /// Offer I/P/B/SP/SI Frame, Only support progressive(Progressive Scan)and CAVLC
        /// 提供I/P/B/SP/SI帧，仅支持progressive(逐行扫描)和CAVLC
        /// </summary>
        EXTENDED,

        /// <summary>
        /// FRExt, Main_Profile Based on the new: 8x8 intra prediction(8x8 Intra-frame Predicdion), custom
        /// Quant(custom quant ), lossless video coding(lossless video encoding), more yuv format
        /// 即FRExt，Main_Profile基础上新增：8x8 intra prediction(8x8 帧内预测), custom 
        /// quant(自定义量化), lossless video coding(无损视频编码), 更多的yuv格式
        /// </summary>
        HIGH,
    }

    /// <summary>
    ///  Video format
    ///  视频格式
    /// </summary>
    public struct NET_CFG_VIDEO_FORMAT
    {
        /// <summary>
        /// Competence 
        /// 能力
        /// </summary>
        public byte abCompression;
        public byte abWidth;
        public byte abHeight;
        public byte abBitRateControl;
        public byte abBitRate;
        public byte abFrameRate;
        public byte abIFrameInterval;
        public byte abImageQuality;
        public byte abFrameType;
        public byte abProfile;

        /// <summary>
        /// Video compression mode
        /// 视频压缩格式
        /// </summary>
        public NET_CFG_VIDEO_COMPRESSION emCompression;

        /// <summary>
        /// Video width
        /// 视频宽度
        /// </summary>
        public int nWidth;

        /// <summary>
        /// Video height
        /// 视频高度
        /// </summary>
        public int nHeight;

        /// <summary>
        /// Bit rate control mode
        /// 码流控制模式
        /// </summary>
        public NET_CFG_BITRATE_CONTROL emBitRateControl;

        /// <summary>
        /// Video bit rate (kbps)
        /// 视频码流(kbps)
        /// </summary>
        public int nBitRate;

        /// <summary>
        /// Frame Rate 
        /// 视频帧率
        /// </summary>
        public float nFrameRate;

        /// <summary>
        /// I frame interval(1-100). For example, 50 means there is I frame in each 49 B frame or P frame.
        /// I帧间隔(1-100)，比如50表示每49个B帧或P帧，设置一个I帧
        /// </summary>
        public int nIFrameInterval;

        /// <summary>
        /// Video quality
        /// 图像质量
        /// </summary>
        public EM_CFG_IMAGE_QUALITY emImageQuality;

        /// <summary>
        /// Sniffer mode,0-DHAV,1-"PS"
        /// 打包模式，0－DHAV，1－"PS"
        /// </summary>
        public int nFrameType;

        /// <summary>
        /// H.264 Encode level
        /// H.264编码级别
        /// </summary>
        public EM_CFG_H264_PROFILE_RANK emProfile;
        public int nMaxBitrate;				// 最大码流单位是kbps（博世专用）
        /// <summary>
        /// I-frame interval in group of pictures,1-150
        /// 图像组I帧间隔,1-150
        /// </summary>
        public int nAiGOP;
        /// <summary>
        /// SVC-T layer num
        /// SVC-T层数
        /// </summary>
        public int nSVCTLayer;
        /// <summary>
        /// Custom resolution name
        /// 默认分辨率名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szCustomResolutionName;
        /// <summary>
        /// Priority,0: Quality first (default), 1: Bitrate first
        /// 编码优先级,0:画质优先(默认),  1:码率优先
        /// </summary>
        public int nPriority;
        /// <summary>
        /// Quality range:6,100
        /// 图像质量取值范围:6,100
        /// </summary>
        public uint nQualityRange;
        /// <summary>
        /// Limit bit rate,in kbps
        /// 码流控制模式ABR下,瞬时码率上限,kbps为单位
        /// </summary>
        public int nLimitBitRate;
        /// <summary>
        /// Virutual I Frame Enable
        /// 码流控制模式ABR下,是否使能虚拟I帧功能
        /// </summary>
        public bool bVirutualIFrameEnable;
        /// <summary>
        /// Encode type,0:General,1:SmartEncode,2:Aicoding
        /// 0表示General,1表示SmartEncode,2表示Aicoding
        /// </summary>
        public int nEncodeType;
        /// <summary>
        /// Quality,size 1-nQualityRange
        /// 图像质量,范围1-nQualityRange
        /// </summary>
        public int nQualityEx;
        /// <summary>
        /// AiGOP exist
        /// nAiGOP字段是否有效
        /// </summary>
        public byte abAiGOP;
        /// <summary>
        /// SVCTLayer exist
        /// nSVCTLayer字段是否有效
        /// </summary>
        public byte abSVCTLayer;
        /// <summary>
        /// Priority exist
        /// nPriority字段是否有效
        /// </summary>
        public byte abPriority;
        /// <summary>
        /// QualityRange exist
        /// nQualityRange字段是否有效
        /// </summary>
        public byte abQualityRange;
        /// <summary>
        /// LimitBitRate exist
        /// nLimitBitRate字段是否有效
        /// </summary>
        public byte abLimitBitRate;
        /// <summary>
        /// VirutualIFrameEnable exist
        /// bVirutualIFrameEnable字段是否有效
        /// </summary>
        public byte abVirutualIFrameEnable;
        /// <summary>
        /// EncodeType exist
        /// nEncodeType字段是否有效
        /// </summary>
        public byte abEncodeType;
        /// <summary>
        /// CustomResolutionName exist
        /// szCustomResolutionName字段是否有效
        /// </summary>
        public byte abCustomResolutionName;
        /// <summary>
        /// Use nQualityEx
        /// 使用QualityEx字段表示图像质量
        /// </summary>
        public bool bUseQualityEx;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    public enum EM_CFG_AUDIO_FORAMT
    {
        G711A,
        PCM,
        G711U,
        AMR,
        AAC,
    }

    /// <summary>
    /// Audio format
    /// 音频格式
    /// </summary>
    public struct NET_CFG_AUDIO_ENCODE_FORMAT
    {
        /// <summary>
        /// Capacity 
        /// 能力
        /// </summary>
        public byte abCompression;
        public byte abDepth;
        public byte abFrequency;
        public byte abMode;
        public byte abFrameType;
        public byte abPacketPeriod;
        public byte abChannels;
        public byte abMix;

        /// <summary>
        /// Audio compression mode
        /// 音频压缩模式
        /// </summary>
        public EM_CFG_AUDIO_FORAMT emCompression;

        /// <summary>
        /// Audio sampling depth
        /// 音频采样深度
        /// </summary>
        public int nDepth;

        /// <summary>
        /// Audio sampling frequency
        /// 音频采样频率
        /// </summary>
        public int nFrequency;

        /// <summary>
        /// Audio encode mode
        /// 音频编码模式
        /// </summary>
        public int nMode;

        /// <summary>
        /// 0-DHAV, 1-PS Audio pack mode
        /// 音频打包模式, 0-DHAV, 1-PS
        /// </summary>
        public int nFrameType;

        /// <summary>
        /// Audio pack period(ms)
        /// 音频打包周期, ms
        /// </summary>
        public int nPacketPeriod;
        public int nChannelsNum;               // 视频通道的伴音通道号列表个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public uint[] arrChannels;   // 视频通道的伴音通道号列表
        public bool bMix;                       // 是否同源
    }

    /// <summary>
    /// Video encode parameter
    /// 视频编码参数
    /// </summary>
    public struct NET_CFG_VIDEOENC_OPT
    {
        /// <summary>
        /// 能力
        /// Capacity 
        /// </summary>
        public byte abVideoEnable;
        public byte abAudioEnable;
        public byte abSnapEnable;
        public byte abAudioAdd;
        public byte abAudioFormat;

        /// <summary>
        /// Video enable
        /// 视频使能
        /// </summary>
        public bool bVideoEnable;

        /// <summary>
        /// Video format
        /// 视频格式
        /// </summary>
        public NET_CFG_VIDEO_FORMAT stuVideoFormat;

        /// <summary>
        /// Audio enable
        /// 音频使能
        /// </summary>
        public bool bAudioEnable;

        /// <summary>
        /// Schedule snapshot enable
        /// 定时抓图使能
        /// </summary>
        public bool bSnapEnable;

        /// <summary>
        /// Audio add enable
        /// 音频叠加使能
        /// </summary>
        public bool bAudioAddEnable;

        /// <summary>
        /// Audio format
        /// 音频格式
        /// </summary>
        public NET_CFG_AUDIO_ENCODE_FORMAT stuAudioFormat;

    }

    /// <summary>
    /// Zone information
    /// 区域信息
    /// </summary>
    public struct NET_CFG_RECT
    {
        public int nLeft;
        public int nTop;
        public int nRight;
        public int nBottom;
    }

    /// <summary>
    /// Zone point info
    /// RGBA信息
    /// </summary> 
    public struct NET_CFG_RGBA
    {
        public int nRed;
        public int nGreen;
        public int nBlue;
        public int nAlpha;
    }

    /// <summary>
    /// Privacy mask information
    /// 遮挡信息
    /// </summary>
    public struct NET_CFG_COVER_INFO
    {
        /// <summary>
        /// Competence
        /// 能力
        /// </summary>
        public byte abBlockType;
        public byte abEncodeBlend;
        public byte abPreviewBlend;

        /// <summary>
        /// The position (coordinates) of the mask zone
        /// 覆盖的区域坐标
        /// </summary>
        public NET_CFG_RECT stuRect;

        /// <summary>
        /// The mask color
        /// 覆盖的颜色
        /// </summary>
        public NET_CFG_RGBA stuColor;

        /// <summary>
        /// The mask mode ;0-black block,1-Mosaic
        /// 覆盖方式；0－黑块，1－马赛克
        /// </summary>
        public int nBlockType;

        /// <summary>
        /// Encode-level privacy mask;1-enable,0-unable
        /// 编码级遮挡；1－生效，0－不生效
        /// </summary>
        public int nEncodeBlend;

        /// <summary>
        /// Preview mask;1-enable,0-unable
        /// 预览遮挡；1－生效，0－不生效
        /// </summary>
        public int nPreviewBlend;
    }

    /// <summary>
    /// Multiple-zone mask configuration
    /// 多区域遮挡配置
    /// </summary>
    public struct NET_CFG_VIDEO_COVER
    {
        /// <summary>
        /// The supported privacy mask zone amount
        /// 支持的遮挡块数
        /// </summary>
        public int nTotalBlocks;

        /// <summary>
        /// The zone amount already set
        /// 已设置的块数
        /// </summary>
        public int nCurBlocks;

        /// <summary>
        /// The mask zone
        /// 覆盖的区域
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_CFG_COVER_INFO[] stuCoverBlock;
    }

    /// <summary>
    /// OSD information
    /// OSD信息
    /// </summary>
    public struct NET_CFG_OSD_INFO
    {
        /// <summary>
        /// Capcity 
        /// 能力
        /// </summary>
        public byte abShowEnable;

        /// <summary>
        /// Front color
        /// 前景颜色
        /// </summary>
        public NET_CFG_RGBA stuFrontColor;

        /// <summary>
        /// Background color
        /// 背景颜色
        /// </summary>
        public NET_CFG_RGBA stuBackColor;

        /// <summary>
        /// Rectangle zone
        /// 矩形区域
        /// </summary>
        public NET_CFG_RECT stuRect;

        /// <summary>
        /// Display enbale
        /// 显示使能
        /// </summary>
        public bool bShowEnable;
    }

    /// <summary>
    /// Video color property
    /// 画面颜色属性
    /// </summary>
    public struct NET_CFG_COLOR_INFO
    {
        /// <summary>
        /// Brgihtness(0-100)
        /// 亮度(0-100)
        /// </summary>
        public int nBrightness;

        /// <summary>
        /// Contrast(0-100)
        /// 对比度(0-100)
        /// </summary>
        public int nContrast;

        /// <summary>
        /// Saturation (0-100)
        /// 饱和度(0-100)
        /// </summary>
        public int nSaturation;

        /// <summary>
        /// Hue (0-100)
        /// 色度(0-100)
        /// </summary>
        public int nHue;

        /// <summary>
        /// Gain(0-100)
        /// 增益(0-100)
        /// </summary>
        public int nGain;

        /// <summary>
        /// Gain enable
        /// 增益使能
        /// </summary>
        public bool bGainEn;
    }

    /// <summary>
    /// Video channel property information
    /// 图像通道属性信息
    /// </summary>
    public struct NET_CFG_ENCODE_INFO
    {
        /// <summary>
        /// Channel number(Begins with 0)
        /// 通道号(0开始),获取时，该字段有效；设置时，该字段无效
        /// </summary>
        public int nChannelID;

        /// <summary>
        /// Channel name(Invalid)
        /// 无效字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szChnName;

        /// <summary>
        /// Main stream,0-General record,1-Motion detect,2-alarm record
        /// 主码流，0－普通录像，1-动检录像，2－报警录像
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_CFG_VIDEOENC_OPT[] stuMainStream;

        /// <summary>
        /// The valid count of MainStream array
        /// 主码流数组中有效的个数
        /// </summary>
        public int nValidCountMainStream;

        /// <summary>
        /// Extra stream,0-Extra stream 1,1-Extra stream 2,2-Extra stream 3
        /// 辅码流，0－辅码流1，1－辅码流2，2－辅码流3
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_CFG_VIDEOENC_OPT[] stuExtraStream;

        /// <summary>
        /// The valid count of ExtraStream array
        /// 辅码流数组中有效的个数
        /// </summary>
        public int nValidCountExtraStream;

        /// <summary>
        /// Snapshot,0-General snapshot,1-Motion detect snapshot,2-alarm snapshot
        /// 抓图，0－普通抓图，1－动检抓图，2－报警抓图
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_CFG_VIDEOENC_OPT[] stuSnapFormat;

        /// <summary>
        /// The valid count of SnapFormat array
        /// 抓图数组中有效的个数
        /// </summary>
        public int nValidCountSnapFormat;

        /// <summary>
        /// Invalid field
        /// 无效字段
        /// </summary>
        public uint dwCoverAbilityMask;

        /// <summary>
        /// Invalid field
        /// 无效字段
        /// </summary>
        public uint dwCoverEnableMask;

        /// <summary>
        /// Invalid field
        /// 无效字段
        /// </summary>
        public NET_CFG_VIDEO_COVER stuVideoCover;

        /// <summary>
        /// Invalid field
        /// 无效字段
        /// </summary>
        public NET_CFG_OSD_INFO stuChnTitle;

        /// <summary>
        /// Invalid field
        /// 无效字段
        /// </summary>
        public NET_CFG_OSD_INFO stuTimeTitle;

        /// <summary>
        /// Invalid field
        /// 无效字段
        /// </summary>
        public NET_CFG_COLOR_INFO stuVideoColor;

        /// <summary>
        /// Invalid field
        /// 无效字段
        /// </summary>
        public EM_CFG_AUDIO_FORAMT emAudioFormat;

        /// <summary>
        /// Protocol Version No., read only
        /// 协议版本号, 只读,获取时，该字段有效；设置时，该字段无效
        /// </summary>
        public int nProtocolVer;
        /// <summary>
        /// 是否使用辅码流扩展
        /// Whether to use auxiliary code stream extension
        /// </summary>
        public bool bIsUseExtraStreamEx;
        /// <summary>
        /// 辅码流扩展，0－辅码流1，1－辅码流2，2－辅码流3，3－辅码流4，4－辅码流5，5－辅码流6，6－辅码流7，7－辅码流8，8－辅码流9，9－辅码流10，10－辅码流11，11－辅码流12
        /// Auxiliary stream extension, 0- Auxiliary stream 1, 1- Auxiliary stream 2, 2- Auxiliary stream 3, 3- Auxiliary stream 4, 4- Auxiliary stream 5, 5- Auxiliary stream 6, 6- Auxiliary stream 7, 7- Auxiliary stream 8, 8- Auxiliary stream 9, 9- Auxiliary stream 10, 10- Auxiliary stream 11, 11- Auxiliary stream 12
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
        public NET_A_CFG_VIDEOENC_OPT[] stuExtraStreamEx;
        /// <summary>
        /// 辅码流扩展数组中有效的个数
        /// The number of valid elements in the auxiliary code stream extension array
        /// </summary>
        public int nValidCountExtraStreamEx;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 120)]
        public string szReserved;
    }

    /// <summary>
    /// get device encode config corresponding capacity input parameter
    /// 获取设备编码配置对应能力输入参数
    /// </summary>
    public struct NET_IN_ENCODE_CFG_CAPS
    {
        public uint dwSize;
        /// <summary>
        /// channel no. 
        /// 通道号 
        /// </summary>
        public int nChannelId;
        /// <summary>
        /// stream type, 0:main stream, 1:sub stream1, 2:sub stream2, 3:sub stream3, 4:snapshot stream,an be left unset, whatever value it is set, you get results of main stream, sub stream1 and snapshot stream
        /// 码流类型,0：主码流；1：辅码流1；2：辅码流2；3：辅码流3；4：抓图码流;此参数可以不填,不论指定什么类型,设备都返回主、辅、抓图码流的能力
        /// </summary>
        public int nStreamType;
        public IntPtr pchEncodeJson;                      // Encode配置,通过调用dhconfigsdk.dll中接口CLIENT_PacketData封装得到
                                                          // 对应的封装命令为 CFG_CMD_ENCODE
    }

    /// <summary>
    /// internal struct
    /// </summary>
    internal struct NET_INTERNAL_IN_ENCODE_CAPS
    {
        public uint dwSize;
        public NET_IN_ENCODE_CFG_CAPS stuInEncodeCaps;
        public IntPtr pchEncodeJson;
    }

    /// <summary>
    /// 码流分辨率限制
    /// Stream resolution limitation
    /// </summary>
    public struct NET_ENCODING_RESOLUTION_LIMIT
    {
        /// <summary>
        /// / 分辨率1
        /// / Resolution 1
        /// </summary>
        public EM_CAPTURE_SIZE_EX emResolution1;
        /// <summary>
        /// / 分辨率2
        /// / Resolution 2
        /// </summary>
        public EM_CAPTURE_SIZE_EX emResolution2;
        /// <summary>
        /// / 保留
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 主辅码流分辨率组合限制
    /// Limitations on the resolution combination of main and auxiliary code streams
    /// </summary>
    public struct NET_ENCODING_RESOLUTION_LIMITEX
    {
        /// <summary>
        /// / 分辨率1
        /// / Resolution 2
        /// </summary>
        public EM_CAPTURE_SIZE_EX emResolution1;
        /// <summary>
        /// / 分辨率2
        /// / Resolution 2
        /// </summary>
        public EM_CAPTURE_SIZE_EX emResolution2;
        /// <summary>
        /// / 保留
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// stream config corresponding capacity
    /// 码流配置对应能力
    /// </summary>
    public struct NET_STREAM_CFG_CAPS
    {
        public uint dwSize;
        /// <summary>
        /// supported audio encode type, see DH_TALK_CODING_TYPE
        /// 支持的音频编码类型,EM_TALK_CODING_TYPE
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public int[] nAudioCompressionTypes;
        /// <summary>
        /// audio compression quantity
        /// 音频压缩格式个数
        /// </summary>
        public int nAudioCompressionTypeNum;
        /// <summary>
        /// video encode mode mask, see "encode mode"
        /// 视频编码模式掩码,详见"编码模式"???
        /// </summary>
        public int dwEncodeModeMask;
        /// <summary>
        /// supportedvideo resolution, discard
        /// 支持的视频分辨率
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_RESOLUTION_INFO[] stuResolutionTypes;
        /// <summary>
        /// different resolution max frame, subscript nResolutionTypescorresponding
        /// 不同分辨率下帧率最大值,下标与nResolutionTypes对应 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public int[] nResolutionFPSMax;
        /// <summary>
        /// video resolution quantity
        /// 视频分辨率个数
        /// </summary>
        public int nResolutionTypeNum;
        /// <summary>
        /// max video stream(kbps) 
        /// 最大视频码流(kbps)
        /// </summary>
        public int nMaxBitRateOptions;
        /// <summary>
        /// min video stream(kbps)
        /// 最小视频码流(kbps)
        /// </summary>
        public int nMinBitRateOptions;
        /// <summary>
        /// supported H.264 Profile level,refer to enumeration type EM_H264_PROFILE_RANK;  
        /// 支持的H.264 Profile等级,参照枚举类型 EM_H264_PROFILE_RANK; ???
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bH264ProfileRank;
        /// <summary>
        /// supported H.264 Profile level
        /// 支持的H.264 Profile等级个数
        /// </summary>
        public int nH264ProfileRankNum;
        /// <summary>
        /// when resolution is  cif, max p frame(Kbps)
        /// 当分辨率为cif时最大p帧(Kbps)
        /// </summary>
        public int nCifPFrameMaxSize;
        /// <summary>
        /// when currentresolution is cif, min p frame(Kbps)
        /// 当分辨率为cif时最小p帧(Kbps)
        /// </summary>
        public int nCifPFrameMinSize;
        /// <summary>
        /// video max frame rate, as 0 , make nResolutionFPSMax as standard
        /// 视频帧率最大值,为0时,以nResolutionFPSMax为准
        /// </summary>
        public int nFPSMax;
        /// <summary>
        /// supportedvideo resolution
        /// 支持的视频分辨率
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_RESOLUTION[] stuIndivResolutionTypes;
        /// <summary>
        /// 0: stuResolutionTypes,nResolutionTypeNum is valid;1: stuIndivResolutionTypes, nIndivResolutionNums is valid
        /// 0: stuResolutionTypes,nResolutionTypeNum 有效; 1: stuIndivResolutionTypes, nIndivResolutionNums 有效
        /// </summary>
        public bool abIndivResolution;
        /// <summary>
        /// number of video resolution quantity with different encoding mode
        /// 不同编码模式分别支持的视频分辨率个数
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public int[] nIndivResolutionNums;
        /// <summary>
        /// / 码流分辨率限制个数
        /// / Limit the number of bitstream resolutions
        /// </summary>
        public int nEncodingResolutionLimitNum;
        /// <summary>
        /// / 主辅码流分辨率组合限制个数
        /// / Limit the number of resolution combinations for primary and secondary code streams
        /// </summary>
        public int nEncodingResolutionLimitExNum;
        /// <summary>
        /// / 码流分辨率限制，限制界面和功能模块只能使用指定范围之内的分辨率，前提是设备支持该分辨率。是一个二维数组,第一级对应不同的码流,第二级对应支持的分辨率集合。二级数组为空表示不做限制，使用所有设备能提供的分辨率。
        /// / The stream resolution limit restricts the interface and functional modules to only use resolutions within the specified range, provided that the device supports that resolution. It is a two-dimensional array, with the first level corresponding to different bitstreams and the second level corresponding to a set of supported resolutions. An empty secondary array indicates no restrictions and uses the resolution that all devices can provide.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_ENCODING_RESOLUTION_LIMIT[] stuEncodingResolutionLimit;
        /// <summary>
        /// / 主辅码流分辨率组合限制，限制界面和功能模块只能使用指定范围之内的分辨率，前提是设备支持该分辨率。是一个二维数组,第一级是主辅码流分辨率组合的个数,第二级是主辅码流分辨率组合。二级数组为空表示没有限制，使用所有设备能提供的分辨率。
        /// / The combination of main and auxiliary code stream resolution limits the interface and functional modules to only use resolutions within the specified range, provided that the device supports that resolution. It is a two-dimensional array, with the first level being the number of combinations of primary and secondary stream resolutions, and the second level being the combination of primary and secondary stream resolutions. An empty secondary array indicates no restriction, using the resolution that all devices can provide.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_ENCODING_RESOLUTION_LIMITEX[] stuEncodingResolutionLimitEx;
    }

    /// <summary>
    /// 
    /// 支持的视频分辨率
    /// </summary>
    public struct NET_RESOLUTION
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_RESOLUTION_INFO[] stuResolutionTypes;
    }

    /// <summary>
    /// get device encode config corresponding capacity output parameter
    /// 获取设备编码配置对应能力输出参数
    /// </summary>
    public struct NET_OUT_ENCODE_CFG_CAPS
    {
        public uint dwSize;
        /// <summary>
        /// main stream corresponding capacity
        /// 主码流配置对应能力, 如果有多个, 第一个表示普通录像码流, 第二个表示动检录像码流, 第三个表示报警录像码流
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public NET_STREAM_CFG_CAPS[] stuMainFormatCaps;
        /// <summary>
        /// sub stream config corresponding capacity
        /// 辅码流配置对应能力, 如果有多个, 第一个表示辅码流1, 第二个表示辅码流2, 第三个表示辅码流3
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public NET_STREAM_CFG_CAPS[] stuExtraFormatCaps;
        /// <summary>
        /// snap stream config corresponding capacity
        /// 抓图码流配置对应能力, 如果有多个, 第一个表示普通抓图, 第二个表示动检抓图, 第三个表示报警抓图
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_STREAM_CFG_CAPS[] stuSnapFormatCaps;
        /// <summary>
        /// number of main stream config
        /// 有效的主码流配置对应的能力个数
        /// </summary>
        public int nMainFormCaps;
        /// <summary>
        /// number of Extra stream config
        /// 有效的辅码流配置对应的能力个数
        /// </summary>
        public int nExtraFormCaps;
        /// <summary>
        /// number of snap stream config
        /// 有效的抓图码流配置对应的能力个数
        /// </summary>
        public int nSnapFormatCaps;
    }

    /// <summary>
    /// internal class
    /// </summary>
    internal struct NET_INTERNAL_OUT_ENCODE_CAPS
    {
        public uint dwSize;
        public NET_OUT_ENCODE_CFG_CAPS stuOutEncodeCaps;
    }

    /// <summary>
    /// alarm of face info collect. (Corresponding to event NET_ALARM_FACEINFO_COLLECT_INFO)
    /// 事件类型NET_ALARM_FACEINFO_COLLECT (人脸信息录入事件)对应的数据块描述信息
    /// </summary>
    public struct NET_ALARM_FACEINFO_COLLECT_INFO
    {
        /// <summary>
        /// Event operation. 1=start. 2=stop
        /// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
        /// </summary>
        public int nAction;
        /// <summary>
        /// Event occurrence time 
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// Time stamp (Unit is ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// user ID
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    /// <summary>
    /// authority
    /// 用户权限
    /// </summary>
    public enum EM_ATTENDANCE_AUTHORITY
    {
        /// <summary>
        /// UnKnow
        /// 未知
        /// </summary>
        UnKnown = -1,
        /// <summary>
        /// customer
        /// 普通用户
        /// </summary>
        Customer,
        /// <summary>
        /// administrators
        /// 管理员
        /// </summary>
        Administrators
    }

    /// <summary>
    /// attendance user info
    /// 考勤用户信息
    /// </summary>
    public struct NET_ATTENDANCE_USERINFO
    {
        /// <summary>
        /// user id  
        /// 用户编号ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// username
        /// 人员姓名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string szUserName;
        /// <summary>
        /// card no
        /// 卡号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;
        /// <summary>
        /// authority
        /// 用户权限
        /// </summary>
        public EM_ATTENDANCE_AUTHORITY emAuthority;
        /// <summary>
        /// password
        /// 密码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPassword;
        /// <summary>
        /// photo data len
        /// 照片数据长度
        /// </summary>
        public int nPhotoLength;
        /// <summary>
        /// Class number
        /// 班级
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szClassNumber;
        /// <summary>
        /// Phone number
        /// 电话）
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPhoneNumber;
        /// <summary>
        /// card type
        /// 卡类型
        /// </summary>
        public EM_A_NET_ACCESSCTLCARD_TYPE emCardType;
        /// <summary>
        /// reserved bytes
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 204)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_Attendance_AddUser  input parameter
    /// CLIENT_Attendance_AddUser 入参
    /// </summary>
    public struct NET_IN_ATTENDANCE_ADDUSER
    {
        public uint dwSize;
        /// <summary>
        /// user info
        /// 用户信息
        /// </summary>
        public NET_ATTENDANCE_USERINFO stuUserInfo;
        /// <summary>
        /// photo data
        /// 照片数据
        /// </summary>
        public IntPtr pbyPhotoData;
    };

    /// <summary>
    /// CLIENT_Attendance_AddUser output parameter
    /// CLIENT_Attendance_AddUser出参
    /// </summary>
    public struct NET_OUT_ATTENDANCE_ADDUSER
    {
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_Attendance_DelUser input parameter
    /// CLIENT_Attendance_DelUser 入参
    /// </summary>
    public struct NET_IN_ATTENDANCE_DELUSER
    {
        public uint dwSize;
        /// <summary>
        /// userid
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
    }

    /// <summary>
    /// CLIENT_Attendance_DelUser output parameter
    /// CLIENT_Attendance_DelUser出参
    /// </summary>
    public struct NET_OUT_ATTENDANCE_DELUSER
    {
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_Attendance_ModifyUser  input parameter
    /// CLIENT_Attendance_ModifyUser 入参
    /// </summary>
    public struct NET_IN_ATTENDANCE_ModifyUSER
    {
        public uint dwSize;
        /// <summary>
        /// user info
        /// 用户信息
        /// </summary>
        public NET_ATTENDANCE_USERINFO stuUserInfo;
        /// <summary>
        /// photo data
        /// 照片数据
        /// </summary>
        public IntPtr pbyPhotoData;
    }

    /// <summary>
    /// CLIENT_Attendance_ModifyUser output parameter
    /// CLIENT_Attendance_ModifyUser出参
    /// </summary>
    public struct NET_OUT_ATTENDANCE_ModifyUSER
    {
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_Attendance_GetUser  input parameter
    /// CLIENT_Attendance_GetUser 入参
    /// </summary>
    public struct NET_IN_ATTENDANCE_GetUSER
    {
        public uint dwSize;
        /// <summary>
        /// userid
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
    }

    /// <summary>
    /// CLIENT_Attendance_GetUser output parameter
    /// CLIENT_Attendance_GetUser出参
    /// </summary>
    public struct NET_OUT_ATTENDANCE_GetUSER
    {
        public uint dwSize;
        /// <summary>
        /// user info 
        /// 用户信息
        /// </summary>
        public NET_ATTENDANCE_USERINFO stuUserInfo;
        /// <summary>
        /// max photo data len
        /// 最大存放照片数据的长度
        /// </summary>
        public int nMaxLength;
        /// <summary>
        /// photo data
        /// 照片数据
        /// </summary>
        public IntPtr pbyPhotoData;
    }

    /// <summary>
    /// CLIENT_Attendance_FindUser input parameter
    /// CLIENT_Attendance_FindUser 入参
    /// </summary>
    public struct NET_IN_ATTENDANCE_FINDUSER
    {
        public uint dwSize;
        /// <summary>
        /// query offset
        /// 查询偏移
        /// </summary>
        public int nOffset;
        /// <summary>
        /// query count，paged query，No more than 100
        /// 查询个数，分页查询，最多不超过100
        /// </summary>
        public int nPagedQueryCount;
    }

    /// <summary>
    /// CLIENT_Attendance_FindUser output parameter
    /// CLIENT_Attendance_FindUser 出参
    /// </summary>
    public struct NET_OUT_ATTENDANCE_FINDUSER
    {
        public uint dwSize;
        /// <summary>
        /// the total of users.
        /// 总的用户数
        /// </summary>
        public int nTotalUser;
        /// <summary>
        /// max number of user infors
        /// 用户信息最大缓存数
        /// </summary>
        public int nMaxUserCount;
        /// <summary>
        /// user information; alloc memory by user, size is (sizeof(NET_ATTENDANCE_USERINFO)*nMaxUserCount) 
        /// 用户信息
        /// </summary>
        public IntPtr stuUserInfo;
        /// <summary>
        /// returned user infor counts.
        /// 实际返回的用户个数
        /// </summary>
        public int nRetUserCount;
        /// <summary>
        /// max photo data len
        /// 照片数据最大长度
        /// </summary>
        public int nMaxPhotoDataLength;
        /// <summary>
        /// returned length of photo data
        /// 实际返回的照片数据长度
        /// </summary>
        public int nRetPhoteLength;
        /// <summary>
        /// photo data
        /// 照片数据
        /// </summary>
        public IntPtr pbyPhotoData;
    }

    //考勤状态
    public enum EM_ATTENDANCESTATE
    {
        UNKNOWN,
        SIGNIN,                    // 签入
        GOOUT,                     // 外出
        GOOUT_AND_RETRUN,          // 外出归来
        SIGNOUT,                   // 签出
        WORK_OVERTIME_SIGNIN,      // 加班签到
        WORK_OVERTIME_SIGNOUT,     // 加班签出
    }

    /// <summary>
    /// 测试项目
    /// Test items
    /// </summary>
    public enum EM_TEST_ITEMS
    {
        /// <summary>
        /// 未知
        /// UNKNOWN
        /// </summary>
        EM_TEST_ITEMS_UNKNOWN = -1,
        /// <summary>
        /// 其他项目
        /// other projects
        /// </summary>
        EM_TEST_ITEMS_OTHER,
        /// <summary>
        /// 手部测试静电电阻
        /// Hand test electrostatic resistance
        /// </summary>
        EM_TEST_ITEMS_HAND_TEST,
        /// <summary>
        /// 双脚测试静电电阻
        /// Two feet test electrostatic resistance
        /// </summary>
        EM_TEST_ITEMS_TWOFEET_TEST,
        /// <summary>
        /// 手部和双脚测试静电电阻
        /// Test electrostatic resistance with hands and feet
        /// </summary>
        EM_TEST_ITEMS_HANDTWOFEET_TEST,
        /// <summary>
        /// 全部不测
        /// All untested
        /// </summary>
        EM_TEST_ITEMS_NONE,
    }

    /// <summary>
    /// 测试结果
    /// Test Result
    /// </summary>
    public enum EM_ESD_RESULT
    {
        /// <summary>
        /// 未知
        /// UNKNOWN
        /// </summary>
        EM_ESD_RESULT_UNKNOWN = -1,
        /// <summary>
        /// 其他异常
        /// Other abnormalities
        /// </summary>
        EM_ESD_RESULT_OTHER_ABERRANT,
        /// <summary>
        /// 测试通过
        /// Test passed
        /// </summary>
        EM_ESD_RESULT_TEST_PASS,
        /// <summary>
        /// 手测试未通过
        /// Hand test failed
        /// </summary>
        EM_ESD_RESULT_HAND_TEST_FAIL,
        /// <summary>
        /// 左脚测试未通过
        /// Left foot test failed
        /// </summary>
        EM_ESD_RESULT_LEFTFOOT_TEST_FAIL,
        /// <summary>
        /// 右脚测试未通过
        /// The right foot test failed
        /// </summary>
        EM_ESD_RESULT_RIGHTFOOT_TEST_FAIL,
        /// <summary>
        /// 双脚测试未通过
        /// The foot test failed
        /// </summary>
        EM_ESD_RESULT_FOOT_TEST_FAIL,
        /// <summary>
        /// 全部测试未通过
        /// All tests failed
        /// </summary>
        EM_ESD_RESULT_TEST_FAIL,
    }

    /// <summary>
    /// ESD阻值测试结果
    /// ESD resistance test result
    /// </summary>
    public struct NET_TEST_RESULT
    {
        /// <summary>
        /// k欧姆（阻值单位）
        /// k ohm (resistance unit)
        /// </summary>
        public uint nHandValue;
        /// <summary>
        /// k欧姆（阻值单位）
        /// k ohm (resistance unit)
        /// </summary>
        public uint nLeftFootValue;
        /// <summary>
        /// k欧姆（阻值单位）
        /// k ohm (resistance unit))
        /// </summary>
        public uint nRightFootValue;
        /// <summary>
        /// 测试结果
        /// Test Result
        /// </summary>
        public EM_ESD_RESULT emEsdResult;
        /// <summary>
        /// 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 新冠疫苗接种信息
    /// New crown vaccination information
    /// </summary>
    public struct NET_VACCINE_INFO
    {
        /// <summary>
        /// 是否已接种新冠疫苗, 0: 否, 1: 是 2: 全接种
        /// Have you been vaccinated against the new crown vaccine, 0: No, 1: Yes 2: Complete vaccination
        /// </summary>
        public int nVaccinateFlag;
        /// <summary>
        /// 新冠疫苗名称
        /// New crown vaccine name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szVaccineName;
        /// <summary>
        /// 历史接种日期有效个数
        /// Valid number of historical vaccination dates
        /// </summary>
        public int nDateCount;
        /// <summary>
        /// 历史接种日期 (yyyy-MM-dd). 如提供不了时间, 则填"0000-00-00", 表示已接种
        /// Historical vaccination date(yyyy-MM-dd). If you cannot provide the time, fill in "0000-00-00", which means that you have been vaccinated
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 32)]
        public string szVaccinateDate;
        /// <summary>
        /// 是否已接种新冠疫苗加强针, 0: 未知, 1:否 2: 是
        /// Have you been vaccinated Intensify against the new crown vaccine, 0: unKnown, 1:No, 2: Yes
        /// </summary>
        public int nVaccineIntensifyFlag;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 行程码状态
    /// Trip code status
    /// </summary>
    public enum EM_TRAVEL_CODE_COLOR
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_TRAVEL_CODE_COLOR_UNKNOWN,
        /// <summary>
        /// 红
        /// Red
        /// </summary>
        EM_TRAVEL_CODE_COLOR_RED,
        /// <summary>
        /// 绿
        /// Green
        /// </summary>
        EM_TRAVEL_CODE_COLOR_GREEN,
        /// <summary>
        /// 黄
        /// Yellow
        /// </summary>
        EM_TRAVEL_CODE_COLOR_YELLOW,
        /// <summary>
        /// 橙
        /// Orange
        /// </summary>
        EM_TRAVEL_CODE_COLOR_ORANGE,
    }

    /// <summary>
    /// 行程码信息
    /// Travel Info
    /// </summary>
    public struct NET_TRAVEL_INFO
    {
        /// <summary>
        /// 行程码状态
        /// Travel Code Color
        /// </summary>
        public EM_TRAVEL_CODE_COLOR emTravelCodeColor;
        /// <summary>
        /// 最近14天经过的城市个数
        /// Number of cities passed in the last 14 days
        /// </summary>
        public int nCityCount;
        /// <summary>
        /// 最近14天经过的城市名. 按时间顺序排列, 最早经过的城市放第一个
        /// The names of the cities that have passed in the last 14 days. In chronological order, the earliest passing city is placed first
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szPassingCity;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 核酸检测信息
    /// Nucleic acid detection information
    /// </summary>
    public struct NET_HSJC_INFO
    {
        /// <summary>
        /// 核酸检测报告日期 (yyyy-MM-dd)
        /// Date of nucleic acid test report (yyyy-MM-dd)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szHSJCReportDate;
        /// <summary>
        /// 核酸检测报告有效期(天)
        /// Nucleic acid test report validity period (days)
        /// </summary>
        public int nHSJCExpiresIn;
        /// <summary>
        /// 核酸检测报告结果, -1:未知, 0: 羊, 1: 非羊, 2: 未检测, 3: 过期
        /// Nucleic acid test report result, -1: unkonwn, 0: yang, 1: unyang, 2: not tested, 3: expired
        /// </summary>
        public int nHSJCResult;
        /// <summary>
        /// 核酸检测机构
        /// Nucleic acid testing institutions
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szHSJCInstitution;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 768)]
        public string szReserved;
    }

    /// <summary>
    /// 抗原检测信息
    /// Antigen Test Information
    /// </summary>
    public struct NET_ANTIGEN_INFO
    {
        /// <summary>
        /// 抗原检测报告日期
        /// Antigen test report date
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAntigenReportDate;
        /// <summary>
        /// 抗原检测报告结果: 0:羊 1:非羊 2:未检测 3:过期
        /// Antigen Test Report Result: 0: yang 1: unyang 2: Not Tested 3: Expired
        /// </summary>
        public int nAntigenStatus;
        /// <summary>
        /// 抗原检测报告有效期(单位:天)
        /// Validity period of antigen test report (unit: day)
        /// </summary>
        public int nAntigenExpiresIn;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szResvered;
    }

    /// <summary>
    /// 动态识别的结构化信息对象
    /// Dynamically Recognized Structured Information Objects
    /// </summary>
    public struct NET_ACCESS_CTL_OBJECT_PROPERTIES
    {
        /// <summary>
        /// / 红领巾识别结果 0:未知 1:未佩戴 2:已佩戴；255:未使能算法识别
        /// Red scarf recognition result 0: unknown 1: not worn 2: worn; 255: Algorithm recognition not enabled
        /// </summary>
        public uint nRedScarfResult;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 60)]
        public string szReserved;
    }

    /// <summary>
    /// 按钮控制鉴权信息
    /// Button control authentication information
    /// </summary>
    public struct NET_BUTTON_CONTROL_INFO
    {
        /// <summary>
        /// / 按钮操作类型，0-无操作, 1-开门，2-关门，3-复位
        /// / Button operation type, 0-no operation, 1-open door, 2-close door, 3-reset
        /// </summary>
        public int nOperate;
        /// <summary>
        /// / 操作的门序号，0x00-未知, 0x01-门1, 0x02-门2, 0x03-门1+门2
        /// / The door number for operation, 0x00- unknown, 0x01- door 1, 0x02- door 2, 0x03- door 1+door 2
        /// </summary>
        public uint nDoorIndex;
        /// <summary>
        /// / 保留字节
        /// / Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 56)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_ACCESS_CTL(门禁事件)对应数据块描述信息扩展结构体
    /// Corresponding data description info extended of event type EVENT_IVS_ACCESS_CTL (Access control info event)
    /// </summary>
    public struct NET_EVENT_ACCESS_CTL_INFO_EX
    {
        /// <summary>
        /// / 考勤模式描述
        /// / Attendance mode description
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szAttendanceMode;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2048)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_ACCESS_CTL(门禁事件)对应数据块描述信息
    /// Corresponding data description info of event type EVENT_IVS_ACCESS_CTL (Access control info event)
    /// </summary>
    public struct NET_DEV_EVENT_ACCESS_CTL_INFO
    {
        /// <summary>
        /// 门通道号
        /// Door Channel Number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// Entrance Guard Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// Align byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Time stamp (Unit:ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occurrence time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 事件对应文件信息
        /// The corresponding file info of the event
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 门禁事件类型
        /// Entrance Guard Event Type
        /// </summary>
        public EM_ACCESS_CTL_EVENT_TYPE emEventType;
        /// <summary>
        /// 刷卡结果,TRUE表示成功,FALSE表示失败
        /// Swing Card Result,True is Success,False is Fail
        /// </summary>
        public bool bStatus;
        /// <summary>
        /// 卡类型
        /// Card Type
        /// </summary>
        public EM_A_NET_ACCESSCTLCARD_TYPE emCardType;
        /// <summary>
        /// 开门方式
        /// Open The Door Method
        /// </summary>
        public EM_ACCESS_DOOROPEN_METHOD emOpenMethod;
        /// <summary>
        /// 卡号
        /// Card Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;
        /// <summary>
        /// 密码
        /// Password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPwd;
        /// <summary>
        /// 门读卡器ID
        /// Reader ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReaderID;
        /// <summary>
        /// 开门用户
        /// unlock user
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUserID;
        /// <summary>
        /// 抓拍照片存储地址
        /// snapshot picture storage address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSnapURL;
        /// <summary>
        /// 开门操作码，配合 bStatus 使用
        /// 0x00 没有错误
        /// 0x10 未授权
        /// 0x11 卡挂失或注销
        /// 0x12 没有该门权限
        /// 0x13 开门模式错误
        /// 0x14 有效期错误
        /// 0x15 防反潜模式
        /// 0x16 胁迫报警未打开
        /// 0x17 门常闭状态
        /// 0x18 AB互锁状态
        /// 0x19 巡逻卡
        /// 0x1A 设备处于闯入报警状态
        /// 0x20 时间段错误
        /// 0x21 假期内开门时间段错误
        /// 0x23 卡逾期
        /// 0x30 需要先验证有首卡权限的卡片
        /// 0x40 卡片正确,输入密码错误
        /// 0x41 卡片正确,输入密码超时
        /// 0x42 卡片正确,输入错误
        /// 0x43 卡片正确,输入超时
        /// 0x44 正确,输入密码错误
        /// 0x45 正确,输入密码超时
        /// 0x50 组合开门顺序错误
        /// 0x51 组合开门需要继续验证
        /// 0x60 验证通过,控制台未授权
        /// 0x61 卡片正确,人脸错误
        /// 0x62 卡片正确,人脸超时
        /// 0x63 重复进入
        /// 0x64 未授权,需要后端平台识别
        /// 0x65 体温过高
        /// 0x66 未戴口罩
        /// 0x67 健康码获取失败
        /// 0x68 黄码禁止通行
        /// 0x69 红码禁止通行
        /// 0x6a 健康码无效
        /// 0x6b 绿码验证通过
        /// 0x6e 绿码,行程码非绿码
        /// 0x70 获取健康码信息
        /// 0x71 校验证信息（平台下发对应证号的校验结果）
        /// 0xA8 未佩戴安全帽
        /// 0xB1 授权信息不足，待补充
        /// Open door operate code, use with bStatus
        /// 0x00 no error
        /// 0x10 unauthorized
        /// 0x11 card lost or cancelled
        /// 0x12 no door right
        /// 0x13 unlock mode error
        /// 0x14 valid period error
        /// 0x15 anti sneak into mode
        /// 0x16 forced alarm not unlocked
        /// 0x17 door NC status
        /// 0x18 AB lock status
        /// 0x19 patrol card
        /// 0x1A device is under intrusion alarm status
        /// 0x20 period error
        /// 0x21 unlock period error in holiday period
        /// 0x23 Card is overdue
        /// 0x30 first card right check required
        /// 0x40 card correct, input password error
        /// 0x41 card correct, input password timed out
        /// 0x42 card correct, input fingerprint error
        /// 0x43 card correct, input fingerprint timed out
        /// 0x44 fingerprint correct, input password error
        /// 0x45 fingerprint correct, input password timed out
        /// 0x50 group unlock sequence error
        /// 0x51 test required for group unlock
        /// 0x60 test passed, control unauthorized
        /// 0x61 card correct, input face error
        /// 0x62 card correct, input face timed out
        /// 0x63 repeat enter
        /// 0x64 unauthorized, requiring back-end platform identification
        /// 0x65 high body 
        /// 0x66 no mask
        /// 0x67 get health code fail
        /// 0x68 No Entry because of yellow code
        /// 0x69 No Entry because of red code
        /// 0x6a health code is invalid
        /// 0x6b entry because of green code
        /// 0x6e Green code, travel code not green code
        /// 0x70 get health code info
        /// 0x71 verify citizenId (platform issues the verification result of the corresponding citizenId)
        /// 0xA8 not wear safety helmet (customized)
        /// 0xB1 insufficient authorization information, to be supplemented
        /// </summary>
        public int nErrorCode;
        /// <summary>
        /// 刷卡记录集中的记录编号
        /// punching record number
        /// </summary>
        public int nPunchingRecNo;
        /// <summary>
        /// 抓图张数
        /// picture Numbers
        /// </summary>
        public int nNumbers;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 字节对齐
        /// Align byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved;
        /// <summary>
        /// 抓图标志(按位),具体见 NET_RESERVED_COMMON
        /// Snap flag(by bit)0 bit:"*",1 bit:"Timing",2 bit:"Manual",3 bit:"Marked",4 bit:"Event",5 bit:"Mosaic",6 bit:"Cutout"
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 考勤状态
        /// Attendance state
        /// </summary>
        public EM_ATTENDANCESTATE emAttendanceState;
        /// <summary>
        /// 班级
        /// Class number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szClassNumber;
        /// <summary>
        /// 电话
        /// Phone number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPhoneNumber;
        /// <summary>
        /// 卡命名
        /// Card name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCardName;
        /// <summary>
        /// 目标识别相似度,范围为0~100
        /// Target recognition similarity,range is 0~100
        /// </summary>
        public uint uSimilarity;
        /// <summary>
        /// 图片信息
        /// Image information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_DEV_ACCESS_CTL_IMAGE_INFO[] stuImageInfo;
        /// <summary>
        /// 图片信息数量
        /// Image information count
        /// </summary>
        public int nImageInfoCount;
        /// <summary>
        /// 证号
        /// ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szCitizenIDNo;
        /// <summary>
        /// 事件组ID
        /// Event group ID
        /// </summary>
        public uint nGroupID;
        /// <summary>
        /// 陪同者卡号个数
        /// Companion card count
        /// </summary>
        public int nCompanionCardCount;
        /// <summary>
        /// 陪同者卡号信息（废弃，使用 stuCompanionInfo ）
        /// Companion card information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6 * 32)]
        public string szCompanionCards;
        /// <summary>
        /// 人员信息
        /// worker info
        /// </summary>
        public NET_DEV_ACCESS_CTL_CUSTOM_WORKER_INFO stuCustomWorkerInfo;
        /// <summary>
        /// 当前事件是否为采集卡片
        /// Weather to collect cards
        /// </summary>
        public EM_CARD_STATE emCardState;
        /// <summary>
        /// 设备序列号
        /// Device serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 帽子类型
        /// hat style
        /// </summary>
        public EM_HAT_STYLE emHatStyle;
        /// <summary>
        /// 帽子颜色
        /// hat color
        /// </summary>
        public EM_UNIFIED_COLOR_TYPE emHatColor;
        /// <summary>
        /// 梯控方式触发者
        /// lift caller type
        /// </summary>
        public EM_LIFT_CALLER_TYPE emLiftCallerType;
        /// <summary>
        /// 人员温度信息是否有效
        /// Whether the information of human body  is valid
        /// </summary>
        public bool bManTemperature;
        /// <summary>
        /// 人员温度信息,  为TRUE时有效
        /// Information of human body , It is valid whne  is TURE
        /// </summary>
        public NET_MAN_TEMPERATURE_INFO stuManTemperatureInfo;
        /// <summary>
        /// 证件姓名
        /// name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szCitizenName;
        /// <summary>
        /// 陪同人员 stuCompanionInfo 个数
        /// stuCompanionInfo's count
        /// </summary>
        public int nCompanionInfo;
        /// <summary>
        /// 陪同人员信息
        /// companion info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
        public NET_COMPANION_INFO[] stuCompanionInfo;
        /// <summary>
        /// 口罩状态（EM_MASK_STATE_UNKNOWN、EM_MASK_STATE_NOMASK、EM_MASK_STATE_WEAR 有效）
        /// mask( EM_MASK_STATE_UNKNOWN,EM_MASK_STATE_NOMASK,EM_MASK_STATE_WEAR is valid )
        /// </summary>
        public EM_MASK_STATE_TYPE emMask;
        /// <summary>
        /// 一人多脸的人脸序号
        /// face index
        /// </summary>
        public uint nFaceIndex;
        /// <summary>
        /// szClassNumberEx 是否有效，为TRUE时，szClassNumberEx 有效
        /// whether szClassNumberEx is valid. TRUE : szClassNumberEx is valid, else invalid
        /// </summary>
        public bool bClassNumberEx;
        /// <summary>
        /// 班级
        /// ClassNumber extended
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szClassNumberEx;
        /// <summary>
        /// 宿舍号
        /// dormitory no 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDormitoryNo;
        /// <summary>
        /// 学号
        /// student no 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szStudentNo;
        /// <summary>
        /// 用户类型( EM_USER_TYPE_ORDINARY 至 EM_USER_TYPE_DISABLED 有效 )
        /// user type( from EM_USER_TYPE_ORDINARY to EM_USER_TYPE_DISABLED is valid )
        /// </summary>
        public EM_USER_TYPE emUserType;
        /// <summary>
        /// RealUTC 是否有效，bRealUTC 为 TRUE 时，用 RealUTC，否则用 UTC 字段
        /// whether RealUTC is valid. when bRealUTC is TRUE, use RealUTC, otherwise use stuTime
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// 事件发生的时间（标准UTC）
        /// event occur time
        /// </summary>
        public NET_TIME_EX RealUTC;
        /// <summary>
        /// 二维码信息
        /// QRcode
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szQRCode;
        /// <summary>
        /// 公司名称
        /// company name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
        public string szCompanyName;
        /// <summary>
        /// 人脸质量评分
        /// Face quality score
        /// </summary>
        public int nScore;
        /// <summary>
        /// 刷卡开门时，门禁后台校验人脸是否是同一个人
        /// When swiping the card to open the door, the access control background checks whether the face is the same person 
        /// </summary>
        public EM_FACE_CHECK emFaceCheck;
        /// <summary>
        /// 
        /// 
        /// </summary>
        public EM_QRCODE_IS_EXPIRED emQRCodeIsExpired;
        /// <summary>
        /// 
        /// 
        /// </summary>
        public EM_QRCODE_STATE emQRCodeState;
        /// <summary>
        /// 二维码截止日期
        /// QR code deadline
        /// </summary>
        public NET_TIME stuQRCodeValidTo;
        /// <summary>
        /// 上报事件数据序列号从1开始自增
        /// The serial number of the reported event data increases from 1
        /// </summary>
        public uint nBlockId;
        /// <summary>
        /// 部门名称
        /// Department name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSection;
        /// <summary>
        /// 工作班级
        /// Work class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szWorkClass;
        /// <summary>
        /// 测试项目
        /// Test items
        /// </summary>
        public EM_TEST_ITEMS emTestItems;
        /// <summary>
        /// ESD阻值测试结果
        /// ESD resistance test result
        /// </summary>
        public NET_TEST_RESULT stuTestResult;
        /// <summary>
        /// 门禁设备编号
        /// Access control equipment number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// 用户唯一表示ID
        /// User unique ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserUniqueID;
        /// <summary>
        /// 是否使用卡命名扩展
        /// Whether to use the card name extension
        /// </summary>
        public bool bUseCardNameEx;
        /// <summary>
        /// 卡命名扩展
        /// Card name extension
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCardNameEx;
        /// <summary>
        /// 核酸检测报告结果 -1: 未知 0: 羊 1: 非羊 2: 未检测 3: 过期
        /// Nucleic acid test report result, -1: Unknow 0: yang, 1: unyang, 2: not tested, 3: expired
        /// </summary>
        public int nHSJCResult;
        /// <summary>
        /// 新冠疫苗接种信息
        /// New crown vaccination information
        /// </summary>
        public NET_VACCINE_INFO stuVaccineInfo;
        /// <summary>
        /// 行程码信息
        /// Trip code information
        /// </summary>
        public NET_TRAVEL_INFO stuTravelInfo;
        /// <summary>
        /// 车牌
        /// TrafficPlate
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szTrafficPlate;
        /// <summary>
        /// 国康码项目，用来上传大二维码内容
        /// Guokang code project, used to upload the content of the large QR code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2048)]
        public string szQRCodeEx;
        /// <summary>
        /// 设备开门录制15-30s的视频, 上报事件中通知录制视频的地址,视频名以编号和时间命名.
        /// The device opens the door to record 15-30s video, and reports the address of the recorded video in the event. The video name is named after the number and time.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRecordUrl;
        /// <summary>
        /// 核酸信息
        /// Nucleic acid detection information
        /// </summary>
        public NET_HSJC_INFO stuHSJCInfo;
        /// <summary>
        /// 抗原检测信息
        /// Antigen Test Information
        /// </summary>
        public NET_ANTIGEN_INFO stuAntigenInfo;
        /// <summary>
        /// 个人健康状态 绿码:"Green" 红码:"Red" 黄码:"Yellow" 橙:"Orange" 未知:"None"
        /// Personal health status Green Code:"Green" Red code:"Red" Yellow code:"Yellow" Orange code:"Orange" unknown:"None"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szHealthGreenStatus;
        /// <summary>
        /// 住址
        /// Citizen ID Address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 108)]
        public string szCitizenIDAddress;
        /// <summary>
        /// MZ (参照DEV_EVENT_ALARM_CITIZENIDCARD_INFO的 nECType 定义)
        /// MZ (refer to the nECType definition of DEV_EVENT_ALARM_CITIZENIDCARD_INFO)
        /// </summary>
        public uint nCitizenIDEC;
        /// <summary>
        /// 出生日期（年月日有效）
        /// Date of birth (valid for year, month, day)
        /// </summary>
        public NET_TIME stuCitizenIDBirth;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 年龄
        /// Age
        /// </summary>
        public int nAge;
        /// <summary>
        /// 签出类型
        /// Check Out Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCheckOutType;
        /// <summary>
        /// 签出原因
        /// Check out Reason
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szCheckOutCause;
        /// <summary>
        /// 场所码名称
        /// Location Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szLocationName;
        /// <summary>
        /// 场所码所在省市区县
        /// Location Address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szLocationAddress;
        /// <summary>
        /// 场所码类型
        /// Location Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szLocationType;
        /// <summary>
        /// 呼梯楼层号
        /// Call floor number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szCallLiftFloor;
        /// <summary>
        /// / 动态识别的结构化信息对象
        /// Dynamically Recognized Structured Information Objects
        /// </summary>
        public NET_ACCESS_CTL_OBJECT_PROPERTIES stuObjectProperties;
        /// <summary>
        /// / 远程二维码开门时上报的二维码类型 0-默认值，1-访客二维码，2-一卡通二维码 -1-未知
        /// Remote QR code Type reported when opening the door 0- Default, 1- visitor QR code, 2- one-card QR code -1- unknown
        /// </summary>
        public int nRemoteQRCodeType;
        /// <summary>
        /// / 按钮控制鉴权信息
        /// / Button control authentication information
        /// </summary>
        public NET_BUTTON_CONTROL_INFO stuButtonControlInfo;
        /// <summary>
        /// / 通行结果，人员是否有同行 0-未知 1-人员进入 2-人员退出 3-人员未通行
        /// / Pass result, whether the person is accompanied or not: 0-unknown, 1-person enters, 2-person exits, 3-person fails to pass.
        /// </summary>
        public int nPassResult;
        /// <summary>
        /// / 设备在不同的密码模式下上报的密码类型，0:未知 1,唤醒密码模式 2,陪同密码模式 3胁迫密码模式
        /// / Password type reported by the device in different password modes: 0: unknown, 1: wake-up password mode, 2: accompanying password mode, 3: coercion password mode
        /// </summary>
        public int nCustomerPWDType;
        /// <summary>
        /// / 当前结构体的扩展结构体, 内存由NetSDK申请释放，对应NET_EVENT_ACCESS_CTL_INFO_EX
        /// The extended structure of the current structure, with memory allocated and freed by NetSDK. Corresponding to NET_EVENT_ACCESS_CTL_INFO_EX.
        /// </summary>
        public IntPtr pstuAccessCtlInfoEx;
        /// <summary>
        /// / 预留字节
        /// Reversed
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 244 - 8)]
        public byte[] szReversed;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 244 - 4)]
        public byte[] szReversed;
#endif
    }

    /// <summary>
    /// 人体测温状态
    /// Human body TM status
    /// </summary>
    public enum EM_HUMAN_TEMPERATURE_STATUS
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_HUMAN_TEMPERATURE_STATUS_UNKNOWN = -1,
        /// <summary>
        /// 温度过低
        /// 
        /// </summary>
        EM_HUMAN_TEMPERATURE_STATUS_LOW,
        /// <summary>
        /// 正常
        /// Normal 
        /// </summary>
        EM_HUMAN_TEMPERATURE_STATUS_NORMAL,
        /// <summary>
        /// 温度过高
        /// 
        /// </summary>
        EM_HUMAN_TEMPERATURE_STATUS_HIGH,
    }


    /// <summary>
    /// 人员温度信息
    /// Human  info
    /// </summary>
    public struct NET_MAN_TEMPERATURE_INFO
    {
        /// <summary>
        /// 人员体温
        /// Human 
        /// </summary>
        public float fCurrentTemperature;
        /// <summary>
        /// 温度单位
        ///  unit
        /// </summary>
        public EM_HUMAN_TEMPERATURE_UNIT emTemperatureUnit;
        /// <summary>
        /// 是否超温
        /// Is over  or not
        /// </summary>
        public bool bIsOverTemperature;
        /// <summary>
        /// 人体测温状态
        /// Human body TM status
        /// </summary>
        public EM_HUMAN_TEMPERATURE_STATUS emTemperatureStatus;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    // 人体测温温度单位
    public enum EM_HUMAN_TEMPERATURE_UNIT
    {
        UNKNOWN = -1,   // 未知
        CENTIGRADE,            // 摄氏度
        FAHRENHEIT,            // 华氏度
        KELVIN,                // 开尔文
    }

    // 陪同人员信息
    public struct NET_COMPANION_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCompanionCard;           // 陪同者卡号

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCompanionUserID;     // 陪同者ID	

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 120)]
        public string szCompanionName;   // 陪同者姓名

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;      // 预留字段
    }

    /// <summary>
    /// CLIENT_Attendance_InsertFingerByUserID 入参
    /// </summary>
    public struct NET_IN_FINGERPRINT_INSERT_BY_USERID
    {
        public uint dwSize;
        /// <summary>
        /// 
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// 
        /// 单个数据包长度
        /// </summary>
        public int nSinglePacketLen;
        /// <summary>
        /// 
        /// 数据包的个数
        /// </summary>
        public int nPacketCount;
        /// <summary>
        /// 
        /// 数据(数据总长度即nSinglePacketLen*nPacketCount)
        /// </summary>
        public IntPtr szFingerPrintInfo;
    }

    /// <summary>
    /// 
    /// Attendance_InsertFingerByUserID 出参
    /// </summary>
    public struct NET_OUT_FINGERPRINT_INSERT_BY_USERID
    {
        public uint dwSize;
        /// <summary>
        /// 
        /// ID数组
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public int[] nFingerPrintID;
        /// <summary>
        /// 
        /// 数组中实际返回的个数
        /// </summary>
        public int nReturnedCount;
        /// <summary>
        /// 
        /// 错误码  0：成功;   1：其他错误;  2：超过本用户下能力的限制.
        /// </summary>
        public int nFailedCode;
    }

    /// <summary>
    /// 
    /// Attendance_RemoveFingerByUserID 入参(removeByUserID)
    /// </summary>
    public struct NET_CTRL_IN_FINGERPRINT_REMOVE_BY_USERID
    {
        public uint dwSize;
        /// <summary>
        /// UserID
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
    }

    /// <summary>
    /// 
    /// Attendance_RemoveFingerByUserID 出参
    /// </summary>
    public struct NET_CTRL_OUT_FINGERPRINT_REMOVE_BY_USERID
    {
        public uint dwSize;
    }

    /// <summary>
    /// 
    /// Attendance_GetFingerByUserID 入参
    /// </summary>
    public struct NET_IN_FINGERPRINT_GETBYUSER
    {
        public uint dwSize;
        /// <summary>
        /// 
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
    }

    /// <summary>
    /// 
    /// Attendance_GetFingerByUserID 出参
    /// </summary>
    public struct NET_OUT_FINGERPRINT_GETBYUSER
    {
        public uint dwSize;
        /// <summary>
        /// 
        /// ID数组
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public int[] nFingerPrintIDs;   // 
        /// <summary>
        /// 
        /// 实际返回的ID个数，即nFingerPrintIDs数组中实际有效个数
        /// </summary>
        public int nRetFingerPrintCount;
        /// <summary>
        /// 
        /// 单个数据包长度
        /// </summary>
        public int nSinglePacketLength;
        /// <summary>
        /// 
        /// 接受数据的缓存的最大长度
        /// </summary>
        public int nMaxFingerDataLength;
        /// <summary>
        /// 
        /// 实际返回的总的数据包的长度
        /// </summary>
        public int nRetFingerDataLength;
        /// <summary>
        /// 
        /// 数据
        /// </summary>
        public IntPtr pbyFingerData;
    }

    /// <summary>
    /// struct SNMP config struct
    /// 设备设备参数
    /// </summary>
    public struct NET_DEVICE_SEARCH_PARAM
    {
        public uint dwSize;// 结构体大小
        public bool bUseDefault;// 是否使用默认配置,默认为TRUE
        public ushort wBroadcastLocalPort;// 广播本地端口, 默认5050, 值为0时使用最近一次配置
        public ushort wBroadcastRemotePort;// 广播远程端口, 默认5050, 值为0时使用最近一次配置
        public ushort wMulticastRemotePort;// 组播远程端口, 默认37810, 值为0时使用最近一次配置
        public bool bMulticastModifyRespond;   // 组播修改设备时是否只支持组播回复,默认FALSE表示单播或组播回复
        public ushort wMulticastLocalPort;       // 组播本地端口, 默认37810, 值为0时使用最近一次配置
        public int iAutoUpdatePortTimes;       // 端口不可用时自动更新端口次数,默认50次，范围[0-65534]
        public ushort wAOLMulticastRemotePort;   // AOL 组播远程端口, 默认8087, 值为0时使用最近一次配置
        public ushort wAOLMulticastLocalPort;		// AOL 组播本地端口, 默认37811, 值为0时使用最近一次配置
    }

    public enum EM_DEVICE_STATE
    {
        /// <summary>
        /// Search general alarm status(including external alarm,video loss, motion detection) (Unsupported)
        /// 查询普通报警状态(包括外部报警,视频丢失,动态检测) (未支持)
        /// </summary>
        COMM_ALARM = 0x0001,
        /// <summary>
        /// Search camera masking alarm status, 16 Bytes, each bit represents a channel status
        /// 查询遮挡报警状态，16字节，每位表示一个通道状态
        /// </summary>
        SHELTER_ALARM = 0x0002,
        /// <summary>
        /// Search record status, 16 Bytes, each bit represents a channel status
        /// 查询录象状态，16字节，每位表示一个通道状态
        /// </summary>
        RECORDING = 0x0003,
        /// <summary>
        /// Search HDD information, corresponding to NET_HARDDISK_STATE
        /// 查询硬盘信息，对应 NET_HARDDISK_STATE
        /// </summary>
        DISK = 0x0004,
        /// <summary>
        /// Search system resources status , 3 uint, representing CPU usage, local display (VGA) status, local display (TV) status
        /// 查询系统资源状态, 3个uint, 分别表示CPU占用率、本地显示(VGA)状态、本地显示(TV)状态
        /// </summary>
        RESOURCE = 0x0005,
        /// <summary>
        /// Search channel bit stream , The number of channels is multiplied by uint, each uint represents a channel
        /// 查询通道码流，通道数乘以uint，每个uint表示一个通道
        /// </summary>
        BITRATE = 0x0006,
        /// <summary>
        /// Search device connection status, 1 uint
        /// 查询设备连接状态，一个uint
        /// </summary>
        CONN = 0x0007,
        /// <summary>
        /// Search network protocol version number , pBuf = int*
        /// 查询网络协议版本号,pBuf = int*
        /// </summary>
        PROTOCAL_VER = 0x0008,
        /// <summary>
        /// Search the audio talk format the device supported. (Unsupported)
        /// 查询设备支持的语音对讲格式列表 (未支持)
        /// </summary>
        TALK_ECTYPE = 0x0009,
        /// <summary>
        /// Search SD card information(FOR IPC series) (Unsupported)
        /// 查询SD卡信息(IPC类产品) (未支持)
        /// </summary>
        SD_CARD = 0x000A,
        /// <summary>
        /// Search burner information (Unsupported)
        /// 查询刻录机信息 (未支持)
        /// </summary>
        BURNING_DEV = 0x000B,
        /// <summary>
        /// Search burning information (Unsupported)
        /// 查询刻录进度 (未支持)
        /// </summary>
        BURNING_PROGRESS = 0x000C,
        /// <summary>
        /// Search the embedded platform the device supported, Char string
        /// 查询设备支持的接入平台，char字符串
        /// </summary>
        PLATFORM = 0x000D,
        /// <summary>
        /// Search camera property information ( for IPC series),pBuf = DHDEV_CAMERA_INFO *,there can be several structure
        /// 查询摄像头属性信息(IPC类产品),pBuf = DHDEV_CAMERA_INFO *,可以有多个结构体
        /// </summary>
        CAMERA = 0x000E,
        /// <summary>
        /// Search device software version information NET_DEV_VERSION_INFO
        /// 查询设备软件版本信息 NET_DEV_VERSION_INFO
        /// </summary>
        SOFTWARE = 0x000F,
        /// <summary>
        /// Search the audio type the device supported (Unsupported)
        /// 查询设备支持的语音种类 (未支持)
        /// </summary>
        LANGUAGE = 0x0010,
        /// <summary>
        /// Search DSP capacity description (Unsupported)
        /// 查询DSP能力描述 (未支持)
        /// </summary>
        DSP = 0x0011,
        /// <summary>
        /// Search OEM information (Unsupported)
        /// 查询OEM信息 (未支持)
        /// </summary>
        OEM = 0x0012,
        /// <summary>
        /// Search network running status information (Unsupported)
        /// 查询网络运行状态信息 (未支持)
        /// </summary>
        NET = 0x0013,
        /// <summary>
        /// Search function attributes(for IPC serirs) (Unsupported)
        /// 查询设备类型 (未支持)
        /// </summary>
        TYPE = 0x0014,
        /// <summary>
        /// Search snapshot function attribute(For IPC series) (Unsupported)
        /// 查询功能属性(IPC类产品) (未支持)
        /// </summary>
        SNAP = 0x0015,
        /// <summary>
        /// Query the first time and the recent video time (Unsupported)
        /// 查询最早录像时间和最近录像时间 (未支持)
        /// </summary>
        RECORD_TIME = 0x0016,
        /// <summary>
        /// Query the wireless network signal strength (Unsupported)
        /// 查询无线网络信号强度 (未支持)
        /// </summary>
        NET_RSSI = 0x0017,
        /// <summary>
        /// Burning options inquiry (Unsupported)
        /// 查询附件刻录选项 (未支持)
        /// </summary>
        BURNING_ATTACH = 0x0018,
        /// <summary>
        /// Query the list of backup device (Unsupported)
        /// 查询备份设备列表 (未支持)
        /// </summary>
        BACKUP_DEV = 0x0019,
        /// <summary>
        /// Query the backup device information (Unsupported)
        /// 查询备份设备详细信息 (未支持)
        /// </summary>
        BACKUP_DEV_INFO = 0x001a,
        /// <summary>
        /// backup rate of progress (Unsupported)
        /// 备份进度反馈 (未支持)
        /// </summary>
        BACKUP_FEEDBACK = 0x001b,
        /// <summary>
        /// Query ATM trade type (Unsupported)
        /// 查询ATM交易类型 (未支持)
        /// </summary>
        ATM_QUERY_TRADE = 0x001c,
        /// <summary>
        /// Query sip state (Unsupported)
        /// 查询sip状态 (未支持)
        /// </summary>
        SIP = 0x001d,
        /// <summary>
        /// Query wifi state of mobile DVR (Unsupported)
        /// 查询车载wifi状态 (未支持)
        /// </summary>
        VICHILE_STATE = 0x001e,
        /// <summary>
        /// Query Email Function (Unsupported)
        /// 查询邮件配置是否成功 (未支持)
        /// </summary>
        TEST_EMAIL = 0x001f,
        /// <summary>
        /// Query Hard Disk Information (Unsupported)
        /// 查询硬盘smart信息 (未支持)
        /// </summary>
        SMART_HARD_DISK = 0x0020,
        /// <summary>
        /// Query Snap Picture Function (Unsupported)
        /// 查询抓图设置是否成功 (未支持)
        /// </summary>
        TEST_SNAPPICTURE = 0x0021,
        /// <summary>
        /// Query static alarm state (Unsupported)
        /// 查询静态报警状态 (未支持)
        /// </summary>
        STATIC_ALARM = 0x0022,
        /// <summary>
        /// Query submodule information (Unsupported)
        /// 查询设备子模块信息 (未支持)
        /// </summary>
        SUBMODULE_INFO = 0x0023,
        /// <summary>
        /// Query hard disk damage ability (Unsupported)
        /// 查询硬盘坏道能力 (未支持)
        /// </summary>
        DISKDAMAGE = 0x0024,
        /// <summary>
        /// Query device supported IPC ability,see struct (Unsupported)
        /// 查询设备支持的IPC能力 (未支持)
        /// </summary>
        IPC = 0x0025,
        /// <summary>
        /// Query alarm arm disarm state (Unsupported)
        /// 查询报警布撤防状态 (未支持)
        /// </summary>
        ALARM_ARM_DISARM = 0x0026,
        /// <summary>
        /// Query ACC power off state(return a DWORD type value, 1 means power off,0 means power on)
        /// 查询ACC断电报警状态(返回一个DWORD, 1表示断电,0表示通电)
        /// </summary>
        ACC_POWEROFF_ALARM = 0x0027,
        /// <summary>
        /// FTP server connect test (Unsupported)
        /// 测试FTP服务器连接 (未支持)
        /// </summary>
        TEST_FTP_SERVER = 0x0028,
        /// <summary>
        /// Query 3G Flow exceed state info (Unsupported)
        /// 查询3G流量超出阈值状态 (未支持)
        /// </summary>
        DEV_3GFLOW_EXCEED = 0x0029,
        /// <summary>
        /// Query 3G Flow info (Unsupported)
        /// 查询3G网络流量信息, (未支持)
        /// </summary>
        DEV_3GFLOW_INFO = 0x002a,
        /// <summary>
        /// Vihicle information uploading (Unsupported)
        /// 车载自定义信息上传 (未支持)
        /// </summary>
        VIHICLE_INFO_UPLOAD = 0x002b,
        /// <summary>
        /// Speed limit alarm (Unsupported)
        /// 查询限速报警状态 (未支持)
        /// </summary>
        SPEED_LIMIT = 0x002c,
        /// <summary>
        /// Query DSP expended cap (Unsupported)
        /// 查询DSP扩展能力描述 (未支持)
        /// </summary>
        DSP_EX = 0x002d,
        /// <summary>
        /// Query 3G module info (Unsupported)
        /// 查询3G模块信息 (未支持)
        /// </summary>
        DEV_3GMODULE_INFO = 0x002e,
        /// <summary>
        /// Query multi DDNS status (Unsupported)
        /// 查询多DDNS状态信息 (未支持)
        /// </summary>
        MULTI_DDNS = 0x002f,
        /// <summary>
        /// Query Device URL info(struct DH_DEV_URL_INFO)
        /// 查询设备配置URL信息(对应结构体DH_DEV_URL_INFO)
        /// </summary>
        CONFIG_URL = 0x0030,
        /// <summary>
        /// Query Hard key state(struct DHDEV_HARDKEY_STATE)
        /// 查询HardKey状态（对应结构体DHDEV_HARDKEY_STATE)
        /// </summary>
        HARDKEY = 0x0031,
        /// <summary>
        /// Query ISCSI path(struct DHDEV_ISCSI_PATHLIST)
        /// 查询ISCSI路径列表(对应结构体DHDEV_ISCSI_PATHLIST)
        /// </summary>
        ISCSI_PATH = 0x0032,
        /// <summary>
        /// Query local preview split capability(struct DEVICE_LOCALPREVIEW_SLIPT_CAP)
        /// 查询设备本地预览支持的分割模式(对应结构体DEVICE_LOCALPREVIEW_SLIPT_CAP)
        /// </summary>
        DLPREVIEW_SLIPT_CAP = 0x0033,
        /// <summary>
        /// Query wifi capablity(struct DHDEV_WIFI_ROUTE_CAP)
        /// 查询无线路由能力信息(对应结构体DHDEV_WIFI_ROUTE_CAP)
        /// </summary>
        WIFI_ROUTE_CAP = 0x0034,
        /// <summary>
        /// Query device online state(return a DWORD value, 1-online, 0-offline)
        /// 查询设备的在线状态(返回一个DWORD, 1表示在线, 0表示断线)
        /// </summary>
        ONLINE = 0x0035,
        /// <summary>
        /// Query ptz state(struct NET_PTZ_LOCATION_INFO)
        /// 查询云台状态信息(对应结构体 NET_PTZ_LOCATION_INFO)
        /// </summary>
        PTZ_LOCATION = 0x0036,
        /// <summary>
        /// Query monitor state(state DHDEV_MONITOR_INFO)
        /// 画面监控辅助信息(对应结构体DHDEV_MONITOR_INFO)
        /// </summary>
        MONITOR_INFO = 0x0037,
        /// <summary>
        /// Query subdevcie(fan,cpu...) state(struct CFG_DEVICESTATUS_INFO)
        /// 查询子设备(电源, 风扇等)状态(对应结构体CFG_DEVICESTATUS_INFO)
        /// </summary>
        SUBDEVICE = 0x0300,
        /// <summary>
        /// Query RAID state(struct ALARM_RAID_INFO)  
        /// 查询RAID状态(对应结构体ALARM_RAID_INFO)  
        /// </summary>
        RAID_INFO = 0x0038,
        /// <summary>
        /// test DDNS domain enable (Unsupported)
        /// 测试DDNS域名是否可用 (未支持)
        /// </summary>
        TEST_DDNSDOMAIN = 0x0039,
        /// <summary>
        /// query virtual camera state(struct NET_VIRTUALCAMERA_STATE_INFO)
        /// 查询虚拟摄像头状态(对应 NET_VIRTUALCAMERA_STATE_INFO)
        /// </summary>
        VIRTUALCAMERA = 0x003a,
        /// <summary>
        /// get device's state of video/coil module(struct DHDEV_TRAFFICWORKSTATE_INFO)
        /// 获取设备工作视频/线圈模式状态等(对应DHDEV_TRAFFICWORKSTATE_INFO)
        /// </summary>
        TRAFFICWORKSTATE = 0x003b,
        /// <summary>
        /// get camera move alarm state(struct ALARM_CAMERA_MOVE_INFO)
        /// 获取摄像机移位报警事件状态(对应ALARM_CAMERA_MOVE_INFO)
        /// </summary>
        ALARM_CAMERA_MOVE = 0x003c,
        /// <summary>
        /// get external alarm(struct NET_CLIENT_ALARM_STATE) 
        /// 获取外部报警状态(对应 NET_CLIENT_ALARM_STATE) 
        /// </summary>
        ALARM = 0x003e,
        /// <summary>
        /// get video loss alarm(struct NET_CLIENT_VIDEOLOST_STATE) 
        /// 获取视频丢失报警状态(对应 NET_CLIENT_VIDEOLOST_STATE)
        /// </summary>
        VIDEOLOST = 0x003f,
        /// <summary>
        /// get motion alarm(struct NET_CLIENT_MOTIONDETECT_STATE)
        /// 获取动态监测报警状态(对应 NET_CLIENT_MOTIONDETECT_STATE)
        /// </summary>
        MOTIONDETECT = 0x0040,
        /// <summary>
        /// get detailed motion alarm(struct NET_CLIENT_DETAILEDMOTION_STATE)
        /// 获取详细的动态监测报警状态(对应 NET_CLIENT_DETAILEDMOTION_STATE)
        /// </summary>
        DETAILEDMOTION = 0x0041,
        /// <summary>
        /// get vehicle device state(struct DHDEV_VEHICLE_INFO)
        /// 获取车载自身各种硬件信息(对应 DHDEV_VEHICLE_INFO)
        /// </summary>
        VEHICLE_INFO = 0x0042,
        /// <summary>
        /// get blind alarm(struct NET_CLIENT_VIDEOBLIND_STATE)
        /// 获取视频遮挡报警状态(对应 NET_CLIENT_VIDEOBLIND_STATE)
        /// </summary>
        VIDEOBLIND = 0x0043,
        /// <summary>
        /// Query 3G state(struct DHDEV_VEHICLE_3GMODULE)
        /// 查询3G模块相关信息(对应结构体DHDEV_VEHICLE_3GMODULE)
        /// </summary>
        DEV_3GSTATE_INFO = 0x0044,
        /// <summary>
        /// Query net interface(struct DHDEV_NETINTERFACE_INFO)
        /// 查询网络接口信息(对应 DHDEV_NETINTERFACE_INFO)
        /// </summary>
        NETINTERFACE = 0x0045,
        /// <summary>
        /// Query picinpic channel(struct DWORD)
        /// 查询画中画通道号(对应DWORD数组)
        /// </summary>
        PICINPIC_CHN = 0x0046,
        /// <summary>
        /// Query splice screen(struct NET_COMPOSITE_CHANNEL )
        /// 查询融合屏通道信息(对应 NET_COMPOSITE_CHANNEL 数组)
        /// </summary>
        COMPOSITE_CHN = 0x0047,
        /// <summary>
        /// Query whole recording status(struct BOOL),as long as ther is a channel running,it indicates that the overall state
        /// 查询设备整体录像状态(对应BOOL), 只要有一个通道在录像,即为设备整体状态为录像
        /// </summary>
        WHOLE_RECORDING = 0x0048,
        /// <summary>
        /// Query whole encoding(struct BOOL),as long as ther is a channel running,it indicates that the overall state
        /// 查询设备整体编码状态(对应BOOL), 只要有一个通道在编码,即为设备整体状态为编码
        /// </summary>
        WHOLE_ENCODING = 0x0049,
        /// <summary>
        /// Query disk record time(pBuf = NET_A_DEV_DISK_RECORD_TIME*)
        /// 查询设备硬盘录像时间信息(pBuf = NET_A_DEV_DISK_RECORD_TIME*,可以有多个结构体)
        /// </summary>
        DISK_RECORDE_TIME = 0x004a,
        /// <summary>
        /// whether have pop-up optical dirve(struct NET_DEVSTATE_BURNERDOOR)
        /// 是否已弹出刻录机光驱门(对应结构体 NET_DEVSTATE_BURNERDOOR)
        /// </summary>
        BURNER_DOOR = 0x004b,
        /// <summary>
        /// get data validation process(struct NET_DEVSTATE_DATA_CHECK)
        /// 查询光盘数据校验进度(对应 NET_DEVSTATE_DATA_CHECK)
        /// </summary>
        GET_DATA_CHECK = 0x004c,
        /// <summary>
        /// Query alarm input channel information(struct NET_ALARM_IN_CHANNEL)
        /// 查询报警输入通道信息(对应NET_ALARM_IN_CHANNEL数组)
        /// </summary>
        ALARM_IN_CHANNEL = 0x004f,
        /// <summary>
        /// Query alarm channel number(struct NET_ALARM_CHANNEL_COUNT)
        /// 查询报警通道数(对应NET_ALARM_CHANNEL_COUNT)
        /// </summary>
        ALARM_CHN_COUNT = 0x0050,
        /// <summary>
        /// Query PTZ view range status(struct NET_OUT_PTZ_VIEW_RANGE_STATUS)
        /// 查询云台可视域状态(对应 NET_OUT_PTZ_VIEW_RANGE_STATUS)
        /// </summary>
        PTZ_VIEW_RANGE = 0x0051,
        /// <summary>
        /// Query device channel information(struct NET_DEV_CHN_COUNT_INFO)
        /// 查询设备通道信息(对应NET_DEV_CHN_COUNT_INFO)
        /// </summary>
        DEV_CHN_COUNT = 0x0052,
        /// <summary>
        /// Query RTSP URL list supported by device, struct DEV_RTSPURL_LIST
        /// 查询设备支持的RTSP URL列表,见结构体DEV_RTSPURL_LIST
        /// </summary>
        RTSP_URL = 0x0053,
        /// <summary>
        /// Query online overtime of device logging in and return a BYTE, UNIT:MIN ,0 means no limite and The non-zero positive integer means restrictions on the number of minutes
        /// 查询设备登录的在线超时时间,返回一个BTYE,（单位：分钟） ,0表示不限制,非零正整数表示限制的分钟数
        /// </summary>
        LIMIT_LOGIN_TIME = 0x0054,
        /// <summary>
        /// get com count (struct NET_GET_COMM_COUNT)
        /// 获取串口数 见结构体NET_GET_COMM_COUNT
        /// </summary>
        GET_COMM_COUNT = 0x0055,
        /// <summary>
        /// Query recording status detail information(pBuf = NET_RECORD_STATE_DETAIL*)
        /// 查询录象状态详细信息(pBuf = NET_RECORD_STATE_DETAIL*)
        /// </summary>
        RECORDING_DETAIL = 0x0056,
        /// <summary>
        /// get state PTZ preset list (struct NET_PTZ_PRESET_LIST)
        /// 获取当前云台的预置点列表(对应结构NET_PTZ_PRESET_LIST)
        /// </summary>
        PTZ_PRESET_LIST = 0x0057,
        /// <summary>
        /// exteral device information (pBuf = NET_EXTERNAL_DEVICE*)
        /// 外接设备信息(pBuf = NET_EXTERNAL_DEVICE*)
        /// </summary>
        EXTERNAL_DEVICE = 0x0058,
        /// <summary>
        /// get device upgrade state(struct DHDEV_UPGRADE_STATE_INFO)
        /// 获取设备升级状态(对应结构DHDEV_UPGRADE_STATE_INFO)
        /// </summary>
        GET_UPGRADE_STATE = 0x0059,
        /// <summary>
        /// get mulipalyback split (struct NET_MULTIPLAYBACK_SPLIT_CAP )
        /// 获取多通道预览分割能力( 对应结构体 NET_MULTIPLAYBACK_SPLIT_CAP )
        /// </summary>
        MULTIPLAYBACK_SPLIT_CAP = 0x005a,
        /// <summary>
        /// get burn session number(pBuf = int*)
        /// 获取刻录会话总数(pBuf = int*)
        /// </summary>
        BURN_SESSION_NUM = 0x005b,
        /// <summary>
        /// Search protective capsule status(corresponding structure ALARM_PROTECTIVE_CAPSULE_INFO)
        /// 查询防护舱状态(对应结构体ALARM_PROTECTIVE_CAPSULE_INFO)
        /// </summary>
        PROTECTIVE_CAPSULE = 0x005c,
        /// <summary>
        /// get access controlmode( corresponding NET_GET_DOORWORK_MODE)
        /// 获取门锁控制模式( 对应 NET_GET_DOORWORK_MODE)
        /// </summary>
        GET_DOORWORK_MODE = 0x005d,
        /// <summary>
        /// Query PTZ optical zoom value( corresponding to DH_OUT_PTZ_ZOOM_INFO )
        /// 查询云台获取光学变倍信息(对应 DH_OUT_PTZ_ZOOM_INFO )
        /// </summary>
        PTZ_ZOOM_INFO = 0x005e,
        /// <summary>
        /// Query power state(struct NET_POWER_STATUS)
        /// 查询电源状态(对应结构体 NET_POWER_STATUS)
        /// </summary>
        POWER_STATE = 0x0152,
        /// <summary>
        /// Query alarm channel state(struct NET_CLIENT_ALARM_CHANNELS_STATE)
        /// 查询报警通道状态(对应结构体 NET_CLIENT_ALARM_CHANNELS_STATE)
        /// </summary>
        ALL_ALARM_CHANNELS_STATE = 0x153,
        /// <summary>
        /// Query alarm keyboard count connected on com(struct NET_ALARMKEYBOARD_COUNT)
        /// 查询串口上连接的报警键盘数(对应结构体NET_ALARMKEYBOARD_COUNT)
        /// </summary>
        ALARMKEYBOARD_COUNT = 0x0154,
        /// <summary>
        /// Query mapping relationship of extension alarm module channel (struct NET_EXALARMCHANNELS)
        /// 查询扩展报警模块通道映射关系(对应结构体 NET_EXALARMCHANNELS)
        /// </summary>
        EXALARMCHANNELS = 0x0155,
        /// <summary>
        /// Query channel bypass state(struct NET_DEVSTATE_GET_BYPASS)
        /// 查询通道旁路状态(对应结构体 NET_DEVSTATE_GET_BYPASS)
        /// </summary>
        GET_BYPASS = 0x0156,
        /// <summary>
        /// get active sector information(struct NET_ACTIVATEDDEFENCEAREA)
        /// 获取激活的防区信息(对应结构体 NET_ACTIVATEDDEFENCEAREA)
        /// </summary>
        ACTIVATEDDEFENCEAREA = 0x0157,
        /// <summary>
        /// Query device recording information(struct NET_CTRL_RECORDSET_PARAM)
        /// 查询设备记录集信息(对应 NET_CTRL_RECORDSET_PARAM)
        /// </summary>
        DEV_RECORDSET = 0x0158,
        /// <summary>
        /// Query door access state(struct NET_DOOR_STATUS_INFO)
        /// 查询门禁状态(对应NET_DOOR_STATUS_INFO)
        /// </summary>
        DOOR_STATE = 0x0159,
        /// <summary>
        /// analog alarm input channel mapping (struct NET_ANALOGALARM_CHANNELS)
        /// 模拟量报警输入通道映射关系(对应NET_ANALOGALARM_CHANNELS)
        /// </summary>
        ANALOGALARM_CHANNELS = 0x1560,
        /// <summary>
        /// Get device supported sensor list(corresponding NET_SENSOR_LIST)
        /// 获取设备支持的传感器列表(对应 NET_SENSOR_LIST)
        /// </summary>
        GET_SENSORLIST = 0x1561,
        /// <summary>
        /// Search switch alarm template channel mapping relation(corresponding structure  NET_ALARM_CHANNELS)
        /// 查询开关量报警模块通道映射关系(对应结构体 NET_ALARM_CHANNELS), 如果设备不支持查询扩展报警模块通道,可以用该功能查询扩展通道的逻辑通道号,并当做本地报警通道使用
        /// </summary>
        ALARM_CHANNELS = 0x1562,
        /// <summary>
        /// Get current system enabling status( corresponding NET_GET_ALARM_SUBSYSTEM_ACTIVATE_STATUES)
        /// 获取当前子系统启用状态( 对应 NET_GET_ALARM_SUBSYSTEM_ACTIVATE_STATUES)
        /// </summary>
        GET_ALARM_SUBSYSTEM_ACTIVATESTATUS = 0x1563,
        /// <summary>
        /// Get air conditioning status(corresponding to NET_GET_AIRCONDITION_STATE)
        /// 获取空调工作状态(对应 NET_GET_AIRCONDITION_STATE)
        /// </summary>
        AIRCONDITION_STATE = 0x1564,
        /// <summary>
        /// Get sub system status(corresponding to NET_ALARM_SUBSYSTEM_STATE)
        /// 获取子系统状态(对应NET_ALARM_SUBSYSTEM_STATE)
        /// </summary>
        ALARMSUBSYSTEM_STATE = 0x1565,
        /// <summary>
        /// Get failure status(corresponding to NET_ALARM_FAULT_STATE_INFO)
        /// 获取故障状态(对应 NET_ALARM_FAULT_STATE_INFO)
        /// </summary>
        ALARM_FAULT_STATE = 0x1566,
        /// <summary>
        /// Get zone status(corresponding to NET_DEFENCE_STATE_INFO, and bypass status change event, local alarm event, alarm signal event status description is different, cannot mix, for specific device use only)
        /// 获取防区状态(对应 NET_DEFENCE_STATE_INFO, 和旁路状态变化事件、本地报警事件、报警信号源事件的状态描述有区别,不能混用,仅个别设备使用)
        /// </summary>
        DEFENCE_STATE = 0x1567,
        /// <summary>
        /// Get collection status(corresponding to NET_CLUSTER_STATE_INFO)
        /// 获取集群状态(对应 NET_CLUSTER_STATE_INFO)
        /// </summary>
        CLUSTER_STATE = 0x1568,
        /// <summary>
        /// Get spot chart path info(corresponding to NET_SCADA_POINT_LIST_INFO)
        /// 获取点位表路径信息(对应 NET_SCADA_POINT_LIST_INFO)
        /// </summary>
        SCADA_POINT_LIST = 0x1569,
        /// <summary>
        /// Get monitor spot info(corresponding to NET_SCADA_INFO)
        /// 获取监测点位信息(对应 NET_SCADA_INFO)
        /// </summary>
        SCADA_INFO = 0x156a,
        /// <summary>
        /// Get SCADA capacityset(corresponding to NET_SCADA_CAPS)
        /// 获取SCADA能力集(对应 NET_SCADA_CAPS)
        /// </summary>
        SCADA_CAPS = 0x156b,
        /// <summary>
        /// Get successful code item number(corresponding  NET_GET_CODEID_COUNT)
        /// 获取对码成功的总条数(对应 NET_GET_CODEID_COUNT)
        /// </summary>
        GET_CODEID_COUNT = 0x156c,
        /// <summary>
        /// Search code info(corresponding  NET_GET_CODEID_LIST)
        /// 查询对码信息(对应 NET_GET_CODEID_LIST)
        /// </summary>
        GET_CODEID_LIST = 0x156d,
        /// <summary>
        /// Search analog channel data(corresponding  NET_GET_ANALOGALARM_DATA)
        /// 查询模拟量通道数据(对应 NET_GET_ANALOGALARM_DATA)
        /// </summary>
        ANALOGALARM_DATA = 0x156e,
        /// <summary>
        /// Access the call state of the video phone (Corresponding to NET_GET_VTP_CALLSTATE)
        /// 获取视频电话呼叫状态(对应 NET_GET_VTP_CALLSTATE)
        /// </summary>
        VTP_CALLSTATE = 0x156f,
        /// <summary>
        /// query point info by device id(corresponding to NET_SCADA_INFO_BY_ID)
        /// 通过设备、获取监测点位信息(对应 NET_SCADA_INFO_BY_ID)
        /// </summary>
        SCADA_INFO_BY_ID = 0x1570,
        /// <summary>
        /// query scada device id(corresponding to NET_SCADA_DEVICE_LIST)
        /// 获取当前主机所接入的外部设备ID(对应 NET_SCADA_DEVICE_LIST)
        /// </summary>
        SCADA_DEVICE_LIST = 0x1571,
        /// <summary>
        /// Search device record set info (with binary data) (Corresponding to NET_CTRL_RECORDSET_PARAM)
        /// 查询设备记录集信息(带二进制数据)(对应NET_CTRL_RECORDSET_PARAM)
        /// </summary>
        DEV_RECORDSET_EX = 0x1572,
        /// <summary>
        /// Get door locker software version (Corresponding to NET_ACCESS_LOCK_VER)
        /// 获取门锁软件版本号(对应 NET_ACCESS_LOCK_VER)
        /// </summary>
        ACCESS_LOCK_VER = 0x1573,
        /// <summary>
        /// get monitorwall TV info(Corresponding to NET_CTRL_MONITORWALL_TVINFO)
        /// 获取电视墙显示信息(对应 NET_CTRL_MONITORWALL_TVINFO)
        /// </summary>
        MONITORWALL_TVINFO = 0x1574,
        /// <summary>
        /// get all configuration of users's Pos devices (Corresponding to NET_POS_ALL_INFO)
        /// 获取所有用户可用Pos设备配置信息(对应 NET_POS_ALL_INFO)
        /// </summary>
        GET_ALL_POS = 0x1575,
        /// <summary>
        /// get city and road code info(Corresponding to NET_ROAD_LIST_INFO)
        /// 获取城市及路段编码信息,哥伦比亚项目专用(对应 NET_ROAD_LIST_INFO)
        /// </summary>
        GET_ROAD_LIST = 0x1576,
        /// <summary>
        /// get heatmap information(Corresponding to NET_QUERY_HEAT_MAP)
        /// 获取热度统计信息(对应 NET_QUERY_HEAT_MAP)
        /// </summary>
        GET_HEAT_MAP = 0x1577,
        /// <summary>
        /// get device work state (Corresponding to NET_QUERY_WORK_STATE)
        /// 获取盒子工作状态信息(对应 NET_QUERY_WORK_STATE)
        /// </summary>
        GET_WORK_STATE = 0x1578,
        /// <summary>
        /// get wireless device work state(Corresponding to NET_GET_WIRELESS_DEVICE_STATE)
        /// 获取无线设备状态信息(对应 NET_GET_WIRELESS_DEVICE_STATE)
        /// </summary>
        GET_WIRESSLESS_STATE = 0x1579,
        /// <summary>
        /// get redundance power info(Corresponding to NET_GET_REDUNDANCE_POWER_INFO)
        /// 获取冗余电源信息(对应 NET_GET_REDUNDANCE_POWER_INFO)
        /// </summary>
        GET_REDUNDANCE_POWER_INFO = 0x157a,
        /// <summary>
        /// Get accessory information ( Corresponding to NET_GET_ACCESSORY_INFO )
        /// 获取配件信息(对应 NET_GET_ACCESSORY_INFO)
        /// </summary>
        GET_ACCESSORY_INFO = 0x157e,
        /// <summary>
        /// Get UPnP information ( Corresponding to NET_GET_UPNPSTATUS_INFO )
        /// 获取UPnP映射状态(对应 NET_GET_UPNPSTATUS_INFO )
        /// </summary>
        GET_UPNP_STATUS = 0x157f,
    }

    /// <summary>
    /// Configuration type
    /// 配置类型
    /// </summary>
    public enum EM_DEV_CFG_TYPE
    {
        /// <summary>
        /// Device property setup
        /// 设备属性配置
        /// </summary>
        DEVICECFG = 0x0001,
        /// <summary>
        /// Network setup 
        /// 网络配置
        /// </summary>
        NETCFG = 0x0002,
        /// <summary>
        /// Video channel setup
        /// 图象通道配置
        /// </summary>
        CHANNELCFG = 0x0003,
        /// <summary>
        /// Preview parameter setup
        /// 预览参数配置
        /// </summary>
        PREVIEWCFG = 0x0004,
        /// <summary>
        /// Record setup
        /// 录像配置
        /// </summary>
        RECORDCFG = 0x0005,
        /// <summary>
        /// COM property setup
        /// 串口属性配置
        /// </summary>
        COMMCFG = 0x0006,
        /// <summary>
        /// Alarm property setup
        /// 报警属性配置
        /// </summary>
        ALARMCFG = 0x0007,
        /// <summary>
        /// DVR time setup
        /// DVR时间配置
        /// </summary>
        TIMECFG = 0x0008,
        /// <summary>
        /// Audio talk parameter setup 
        /// 对讲参数配置
        /// </summary>
        TALKCFG = 0x0009,
        /// <summary>
        /// Auto matrix setup， corresponding to NET_DEV_AUTOMT_CFG
        /// 自动维护配置,对应结构体NET_DEV_AUTOMT_CFG
        /// </summary>
        AUTOMTCFG = 0x000A,
        /// <summary>
        /// Local matrix control strategy setup
        /// 本机矩阵控制策略配置
        /// </summary>
        VEDIO_MARTIX = 0x000B,
        /// <summary>
        /// Multiple DDNS setup
        /// 多ddns服务器配置
        /// </summary>
        MULTI_DDNS = 0x000C,
        /// <summary>
        /// Snapshot corresponding setup 
        /// 抓图相关配置
        /// </summary>
        SNAP_CFG = 0x000D,
        /// <summary>
        /// HTTP path setup 
        /// HTTP路径配置
        /// </summary>
        WEB_URL_CFG = 0x000E,
        /// <summary>
        /// FTP upload setup
        /// FTP上传配置
        /// </summary>
        FTP_PROTO_CFG = 0x000F,
        /// <summary>
        /// Plaform embedded setup. Now the channel parameter represents the platform type.  channel=4:Bell alcatel;channel=10: Netview;channel=11:U CNC  channel = 51 AMP
        /// 平台接入配置,此时channel参数代表平台类型,channel=4： 代表贝尔阿尔卡特；channel=10：代表ZX力维；channel=11：代表U网通；channel=51：代表天地阳光
        /// </summary>
        INTERVIDEO_CFG = 0x0010,
        /// <summary>
        /// Privacy mask setup
        /// 区域遮挡配置
        /// </summary>
        VIDEO_COVER = 0x0011,
        /// <summary>
        /// Transmission strategy. Video quality\Fluency
        /// 传输策略配置,画质优先\流畅性优先
        /// </summary>
        TRANS_STRATEGY = 0x0012,
        /// <summary>
        /// Record download strategy setup:high-speed\general download
        /// 录象下载策略配置,高速下载\普通下载
        /// </summary>
        DOWNLOAD_STRATEGY = 0x0013,
        /// <summary>
        /// Video watermark setup
        /// 图象水印配置
        /// </summary>
        WATERMAKE_CFG = 0x0014,
        /// <summary>
        /// Wireless network setup
        /// 无线网络配置
        /// </summary>
        WLAN_CFG = 0x0015,
        /// <summary>
        /// Search wireless device setup
        /// 搜索无线设备配置
        /// </summary>
        WLAN_DEVICE_CFG = 0x0016,
        /// <summary>
        /// Auto register parameter setup, NET_DEV_REGISTER_SERVER
        /// 主动注册参数配置,NET_DEV_REGISTER_SERVER
        /// </summary>
        REGISTER_CFG = 0x0017,
        /// <summary>
        /// Camera property setup < NET_A_DEV_CAMERA_CFG >
        /// 摄像头属性配置 < NET_A_DEV_CAMERA_CFG >
        /// </summary>
        CAMERA_CFG = 0x0018,
        /// <summary>
        /// IR alarm setup
        /// 红外报警配置
        /// </summary>
        INFRARED_CFG = 0x0019,
        /// <summary>
        /// Sniffer setup
        /// Sniffer抓包配置
        /// </summary>
        SNIFFER_CFG = 0x001A,
        /// <summary>
        /// Mail setup < NET_A_DEV_MAIL_CFG >
        /// 邮件配置 < NET_A_DEV_MAIL_CFG >
        /// </summary>
        MAIL_CFG = 0x001B,
        /// <summary>
        /// DNS setup
        /// DNS服务器配置
        /// </summary>
        DNS_CFG = 0x001C,
        /// <summary>
        /// NTP setup
        /// NTP配置
        /// </summary>
        NTP_CFG = 0x001D,
        /// <summary>
        /// Audio detection setup 
        /// 音频检测配置
        /// </summary>
        AUDIO_DETECT_CFG = 0x001E,
        /// <summary>
        /// Storage position setup 
        /// 存储位置配置
        /// </summary>
        STORAGE_STATION_CFG = 0x001F,
        /// <summary>
        /// PTZ operation property(It is invalid now. Please use CLIENT_GetPtzOptAttr to get PTZ operation property.)
        /// 云台操作属性(已经废除,请使用CLIENT_GetPtzOptAttr获取云台操作属性)
        /// </summary>
        PTZ_OPT_CFG = 0x0020,
        /// <summary>
        /// Daylight Saving Time (DST)setup
        /// 夏令时配置
        /// </summary>
        DST_CFG = 0x0021,
        /// <summary>
        /// Alarm center setup
        /// 报警中心配置
        /// </summary>
        ALARM_CENTER_CFG = 0x0022,
        /// <summary>
        /// VIdeo OSD setup
        /// 视频OSD叠加配置
        /// </summary>
        VIDEO_OSD_CFG = 0x0023,
        /// <summary>
        /// CDMA\GPRS configuration
        /// CDMA\GPRS网络配置
        /// </summary>
        CDMAGPRS_CFG = 0x0024,
        /// <summary>
        /// IP Filter configuration
        /// IP过滤配置
        /// </summary>
        IPFILTER_CFG = 0x0025,
        /// <summary>
        /// Talk encode configuration
        /// 语音对讲编码配置
        /// </summary>
        TALK_ENCODE_CFG = 0x0026,
        /// <summary>
        /// The length of the video package configuration
        /// 录像打包长度配置
        /// </summary>
        RECORD_PACKET_CFG = 0x0027,
        /// <summary>
        /// SMS MMS configuration
        /// 短信MMS配置
        /// </summary>
        MMS_CFG = 0x0028,
        /// <summary>
        /// SMS to activate the wireless connection configuration
        /// 短信激活无线连接配置
        /// </summary>
        SMSACTIVATION_CFG = 0x0029,
        /// <summary>
        /// Dial-up activation of a wireless connection configuration
        /// 拨号激活无线连接配置
        /// </summary>
        DIALINACTIVATION_CFG = 0x002A,
        /// <summary>
        /// Capture network configuration
        /// 网络抓包配置
        /// </summary>
        SNIFFER_CFG_EX = 0x0030,
        /// <summary>
        /// Download speed limit
        /// 下载速度限制
        /// </summary>
        DOWNLOAD_RATE_CFG = 0x0031,
        /// <summary>
        /// Panorama switch alarm configuration
        /// 全景切换报警配置
        /// </summary>
        PANORAMA_SWITCH_CFG = 0x0032,
        /// <summary>
        /// Lose focus alarm configuration
        /// 失去焦点报警配置
        /// </summary>
        LOST_FOCUS_CFG = 0x0033,
        /// <summary>
        /// Alarm decoder configuration
        /// 报警解码器配置
        /// </summary>
        ALARM_DECODE_CFG = 0x0034,
        /// <summary>
        /// Video output configuration
        /// 视频输出参数配置
        /// </summary>
        VIDEOOUT_CFG = 0x0035,
        /// <summary>
        /// Preset enable configuration
        /// 预制点使能配置
        /// </summary>
        POINT_CFG = 0x0036,
        /// <summary>
        /// IP conflication configurationIp
        /// Ip冲突检测报警配置
        /// </summary>
        IP_COLLISION_CFG = 0x0037,
        /// <summary>
        /// OSD overlay enable configuration
        /// OSD叠加使能配置
        /// </summary>
        OSD_ENABLE_CFG = 0x0038,
        /// <summary>
        /// Local alarm configuration(Structure NET_ALARMIN_CFG_EX)
        /// 本地报警配置(结构体NET_ALARMIN_CFG_EX)
        /// </summary>
        LOCALALARM_CFG = 0x0039,
        /// <summary>
        /// Network alarm configuration(Structure NET_ALARMIN_CFG_EX)
        /// 网络报警配置(结构体NET_ALARMIN_CFG_EX)
        /// </summary>
        NETALARM_CFG = 0x003A,
        /// <summary>
        /// Motion detection configuration(Structure NET_MOTION_DETECT_CFG_EX)
        /// 动检报警配置(结构体NET_MOTION_DETECT_CFG_EX)
        /// </summary>
        MOTIONALARM_CFG = 0x003B,
        /// <summary>
        /// Video loss configuration(Structure NET_VIDEO_LOST_CFG_EX)
        /// 视频丢失报警配置(结构体NET_VIDEO_LOST_CFG_EX)
        /// </summary>
        VIDEOLOSTALARM_CFG = 0x003C,
        /// <summary>
        /// Camera masking configuration(Structure NET_BLIND_CFG_EX)
        /// 视频遮挡报警配置(结构体NET_BLIND_CFG_EX)
        /// </summary>
        BLINDALARM_CFG = 0x003D,
        /// <summary>
        /// HDD alarm configuration(Structure NET_DISK_ALARM_CFG_EX)
        /// 硬盘报警配置(结构体NET_DISK_ALARM_CFG_EX)
        /// </summary>
        DISKALARM_CFG = 0x003E,
        /// <summary>
        /// Network disconnection alarm configuration(Structure NET_NETBROKEN_ALARM_CFG_EX)
        /// 网络中断报警配置(结构体NET_NETBROKEN_ALARM_CFG_EX)
        /// </summary>
        NETBROKENALARM_CFG = 0x003F,
        /// <summary>
        /// Digital channel info of front encoders(Hybrid DVR use,Structure DEV_ENCODER_CFG)
        /// 数字通道的前端编码器信息（混合DVR使用,结构体DEV_ENCODER_CFG）
        /// </summary>
        ENCODER_CFG = 0x0040,
        /// <summary>
        /// TV adjust configuration(Now the channel parameter represents the TV numble(from 0), Structure DHDEV_TVADJUST_CFG)
        /// TV调节配置（channel代表TV号(0开始),类型结构体）
        /// </summary>
        TV_ADJUST_CFG = 0x0041,
        /// <summary>
        /// about vehicle configuration
        /// 车载相关配置,北京公交使用
        /// </summary>
        ABOUT_VEHICLE_CFG = 0x0042,
        /// <summary>
        /// ATM ability information
        /// 获取atm叠加支持能力信息
        /// </summary>
        ATM_OVERLAY_ABILITY = 0x0043,
        /// <summary>
        /// ATM overlay configuration
        /// atm叠加配置,新atm特有
        /// </summary>
        ATM_OVERLAY_CFG = 0x0044,
        /// <summary>
        /// Decoder tour configuration
        /// 解码器解码轮巡配置
        /// </summary>
        DECODER_TOUR_CFG = 0x0045,
        /// <summary>
        /// SIP configuration
        /// SIP配置
        /// </summary>
        SIP_CFG = 0x0046,
        /// <summary>
        /// wifi ap configuration
        ///  wifi ap配置
        /// </summary>
        VICHILE_WIFI_AP_CFG = 0x0047,
        /// <summary>
        /// Static
        /// 静态报警配置
        /// </summary>
        STATICALARM_CFG = 0x0048,
        /// <summary>
        /// decode policy configuration(Structure DHDEV_DECODEPOLICY_CFG,channel start with 0)
        /// 设备的解码策略配置(结构体DHDEV_DECODEPOLICY_CFG,channel为解码通道0开始)
        /// </summary>
        DECODE_POLICY_CFG = 0x0049,
        /// <summary>
        /// Device relative config (Structure DHDEV_MACHINE_CFG)
        /// 机器相关的配置(结构体DHDEV_MACHINE_CFG)
        /// </summary>
        MACHINE_CFG = 0x004A,
        /// <summary>
        /// MACconflication configuration(Structure ALARM_MAC_COLLISION_CFG)
        /// MAC冲突检测配置(结构体 ALARM_MAC_COLLISION_CFG)
        /// </summary>
        MAC_COLLISION_CFG = 0x004B,
        /// <summary>
        /// RTSP configuration(structure DHDEV_RTSP_CFG)
        /// RTSP配置(对应结构体DHDEV_RTSP_CFG)
        /// </summary>
        RTSP_CFG = 0x004C,
        /// <summary>
        /// 232 com card signal event configuration(structure COM_CARD_SIGNAL_LINK_CFG)
        /// 232串口卡号信号事件配置(对应结构体COM_CARD_SIGNAL_LINK_CFG)
        /// </summary>
        NET_232_COM_CARD_CFG = 0x004E,
        /// <summary>
        /// 485 com card signal event configuration(structure COM_CARD_SIGNAL_LINK_CFG)
        /// 485串口卡号信号事件配置(对应结构体COM_CARD_SIGNAL_LINK_CFG)
        /// </summary>
        NET_485_COM_CARD_CFG = 0x004F,
        /// <summary>
        /// extend FTP upload setup(Structure DHDEV_FTP_PROTO_CFG_EX)
        /// FTP上传扩展配置(对应结构体DHDEV_FTP_PROTO_CFG_EX)
        /// </summary>
        FTP_PROTO_CFG_EX = 0x0050,
        /// <summary>
        /// SYSLOG remote server config (Structure DHDEV_SYSLOG_REMOTE_SERVER)
        /// SYSLOG 远程服务器配置(对应结构体DHDEV_SYSLOG_REMOTE_SERVER)
        /// </summary>
        SYSLOG_REMOTE_SERVER = 0x0051,
        /// <summary>
        /// Extended com configuration(structure DHDEV_COMM_CFG_EX)
        /// 扩展串口属性配置(对应结构体DHDEV_COMM_CFG_EX)  
        /// </summary>
        COMMCFG_EX = 0x0052,
        /// <summary>
        /// net card configuration(structure DHDEV_NETCARD_CFG)
        /// 卡口信息配置(对应结构体DHDEV_NETCARD_CFG)
        /// </summary>
        NETCARD_CFG = 0x0053,
        /// <summary>
        /// Video backup format(structure DHDEV_BACKUP_VIDEO_FORMAT)
        /// 视频备份格式配置(对应结构体DHDEV_BACKUP_VIDEO_FORMAT)
        /// </summary>
        BACKUP_VIDEO_FORMAT = 0x0054,
        /// <summary>
        /// stream encrypt configuration(structure DHEDV_STREAM_ENCRYPT)
        /// 码流加密配置(对应结构体DHEDV_STREAM_ENCRYPT)
        /// </summary>
        STREAM_ENCRYPT_CFG = 0x0055,
        /// <summary>
        /// IP filter extended configuration(structure DHDEV_IPIFILTER_CFG_EX)
        /// IP过滤配置扩展(对应结构体DHDEV_IPIFILTER_CFG_EX)
        /// </summary>
        IPFILTER_CFG_EX = 0x0056,
        /// <summary>
        /// custom configuration(structure DHDEV_CUSTOM_CFG)
        /// 用户自定义配置(对应结构体DHDEV_CUSTOM_CFG)
        /// </summary>
        CUSTOM_CFG = 0x0057,
        /// <summary>
        /// Search wireless device extended setup(structure DHDEV_WLAN_DEVICE_LIST_EX)
        /// 搜索无线设备扩展配置(对应结构体DHDEV_WLAN_DEVICE_LIST_EX)
        /// </summary>
        WLAN_DEVICE_CFG_EX = 0x0058,
        /// <summary>
        /// ACC power off configuration(structure DHDEV_ACC_POWEROFF_CFG)
        /// ACC断线事件配置(对应结构体DHDEV_ACC_POWEROFF_CFG)
        /// </summary>
        ACC_POWEROFF_CFG = 0x0059,
        /// <summary>
        /// explosion proof alarm configuration(structure DHDEV_EXPLOSION_PROOF_CFG)
        /// 防爆盒报警事件配置(对应结构体DHDEV_EXPLOSION_PROOF_CFG)
        /// </summary>
        EXPLOSION_PROOF_CFG = 0x005a,
        /// <summary>
        /// Network extended setup(struct DHDEV_NET_CFG_EX)
        /// 网络扩展配置(对应结构体DHDEV_NET_CFG_EX)
        /// </summary>
        NETCFG_EX = 0x005b,
        /// <summary>
        /// light control config(struct DHDEV_LIGHTCONTROL_CFG)
        /// 灯光控制配置(对应结构体DHDEV_LIGHTCONTROL_CFG)
        /// </summary>
        LIGHTCONTROL_CFG = 0x005c,
        /// <summary>
        /// 3G flow info config(struct DHDEV_3GFLOW_INFO_CFG)
        /// 3G流量信息配置(对应结构体DHDEV_3GFLOW_INFO_CFG)
        /// </summary>
        NET_3GFLOW_CFG = 0x005d,
        /// <summary>
        /// IPv6 config(struct DHDEV_IPV6_CFG)
        /// IPv6配置(对应结构体DHDEV_IPV6_CFG)
        /// </summary>
        IPV6_CFG = 0x005e,
        /// <summary>
        /// Snmp config(struct DHDEV_NET_SNMP_CFG)
        /// Snmp配置(对应结构体DHDEV_NET_SNMP_CFG), 设置完成后需要重启设备
        /// </summary>
        SNMP_CFG = 0x005f,
        /// <summary>
        /// snap control config(struct DHDEV_SNAP_CONTROL_CFG)
        /// 抓图开关配置(对应结构体DHDEV_SNAP_CONTROL_CFG)
        /// </summary>
        SNAP_CONTROL_CFG = 0x0060,
        /// <summary>
        /// GPS mode config(struct DHDEV_GPS_MODE_CFG)
        /// GPS定位模式配置(对应结构体DHDEV_GPS_MODE_CFG)
        /// </summary>
        GPS_MODE_CFG = 0x0061,
        /// <summary>
        /// Snap upload config(struct DHDEV_SNAP_UPLOAD_CFG)
        /// 图片上传配置信息(对应结构体 DHDEV_SNAP_UPLOAD_CFG)
        /// </summary>
        SNAP_UPLOAD_CFG = 0x0062,
        /// <summary>
        /// Speed limit config(struct DHDEV_SPEED_LIMIT_CFG)
        /// 限速配置信息(对应结构体DHDEV_SPEED_LIMIT_CFG)
        /// </summary>
        SPEED_LIMIT_CFG = 0x0063,
        /// <summary>
        /// iSCSI config(struct DHDEV_ISCSI_CFG), need reboot
        /// iSCSI配置(对应结构体DHDEV_ISCSI_CFG), 设置完成后需要重启设备
        /// </summary>
        ISCSI_CFG = 0x0064,
        /// <summary>
        /// wifi config(struc DHDEV_WIRELESS_ROUTING_CFG)
        /// 无线路由配置(对应结构体DHDEV_WIRELESS_ROUTING_CFG)
        /// </summary>
        WIRELESS_ROUTING_CFG = 0x0065,
        /// <summary>
        /// enclosure config(stuct DHDEV_ENCLOSURE_CFG)
        /// 电子围栏配置(对应结构体DHDEV_ENCLOSURE_CFG)
        /// </summary>
        ENCLOSURE_CFG = 0x0066,
        /// <summary>
        /// enclosure version config(struct DHDEV_ENCLOSURE_VERSION_CFG)
        /// 电子围栏版本号配置(对应结构体DHDEV_ENCLOSURE_VERSION_CFG)
        /// </summary>
        ENCLOSURE_VERSION_CFG = 0x0067,
        /// <summary>
        /// Raid event config(struct DHDEV_RAID_EVENT_CFG)
        /// Raid事件配置(对应结构体DHDEV_RAID_EVENT_CFG)
        /// </summary>
        RIAD_EVENT_CFG = 0x0068,
        /// <summary>
        /// fire alarm config(struct DHDEV_FIRE_ALARM_CFG)
        /// 火警报警配置(对应结构体DHDEV_FIRE_ALARM_CFG)
        /// </summary>
        FIRE_ALARM_CFG = 0x0069,
        /// <summary>
        /// local alarm name config(string like "Name1&&name2&&name3...")
        /// 本地名称报警配置(对应Name1&&name2&&name3...格式字符串)
        /// </summary>
        LOCALALARM_NAME_CFG = 0x006a,
        /// <summary>
        /// urgency storage config(struct DHDEV_URGENCY_RECORD_CFG)
        /// 紧急存储配置(对应结构体DHDEV_URGENCY_RECORD_CFG)
        /// </summary>
        URGENCY_RECORD_CFG = 0x0070,
        /// <summary>
        /// elevator parameter config(struct DHDEV_ELEVATOR_ATTRI_CFG)
        /// 电梯运行参数配置(对应结构体DHDEV_ELEVATOR_ATTRI_CFG)
        /// </summary>
        ELEVATOR_ATTRI_CFG = 0x0071,
        /// <summary>
        /// TM overlay function. For latest ATM series product only.  Support devices of 32-channel or higher.( struct DHDEV_ATM_OVERLAY_CONFIG_EX)
        /// atm叠加配置,新atm特有,支持大于32通道的设备(对应结构体DHDEV_ATM_OVERLAY_CONFIG_EX)
        /// </summary>
        ATM_OVERLAY_CFG_EX = 0x0072,
        /// <summary>
        /// MAC filter config(struct DHDEV_MACFILTER_CFG)
        /// MAC过滤配置(对应结构体DHDEV_MACFILTER_CFG)
        /// </summary>
        MACFILTER_CFG = 0x0073,
        /// <summary>
        /// MAC,IP filter config(need ip,mac one to one corresponding)(struct DHDEV_MACIPFILTER_CFG)
        /// MAC,IP过滤(要求ip,mac是一一对应的)配置(对应结构体DHDEV_MACIPFILTER_CFG)
        /// </summary>
        MACIPFILTER_CFG = 0x0074,
        /// <summary>
        /// stream encrypt(encryot plan)(struct DHEDV_STREAM_ENCRYPT)
        /// 码流加密(加密计划)配置(对应结构体DHEDV_STREAM_ENCRYPT)
        /// </summary>
        STREAM_ENCRYPT_TIME_CFG = 0x0075,
        /// <summary>
        /// limit bit rate config(struct DHDEV_LIMIT_BIT_RATE) 
        /// 限码流配置(对应结构体 DHDEV_LIMIT_BIT_RATE) 
        /// </summary>
        LIMIT_BIT_RATE_CFG = 0x0076,
        /// <summary>
        /// snap extern config(struct DHDEV_SNAP_CFG_EX)
        /// 抓图相关配置扩展(对应结构体 DHDEV_SNAP_CFG_EX)
        /// </summary>
        SNAP_CFG_EX = 0x0077,
        /// <summary>
        /// decoder url config(struct DHDEV_DECODER_URL_CFG)
        /// 解码器url配置(对应结构体DHDEV_DECODER_URL_CFG)
        /// </summary>
        DECODER_URL_CFG = 0x0078,
        /// <summary>
        /// toyr enable config(struct DHDEV_TOUR_ENABLE_CFG)
        /// 轮巡使能配置(对应结构体DHDEV_TOUR_ENABLE_CFG)
        /// </summary>
        TOUR_ENABLE_CFG = 0x0079,
        /// <summary>
        /// wifi ap extern config(struct DHDEV_VEHICLE_WIFI_AP_CFG_EX)
        /// wifi ap配置扩展(对应结构体DHDEV_VEHICLE_WIFI_AP_CFG_EX)
        /// </summary>
        VICHILE_WIFI_AP_CFG_EX = 0x007a,
        /// <summary>
        /// encoder extern config(struct DEV_ENCODER_CFG_EX)
        /// 数字通道的前端编码器信息扩展,(对应结构体 DEV_ENCODER_CFG_EX)
        /// </summary>
        ENCODER_CFG_EX = 0x007b,
        /// <summary>
        /// encoder extern config(struct DEV_ENCODER_CFG_EX2)
        /// 数字通道的前端编码器信息扩展,(对应结构体 DEV_ENCODER_CFG_EX2)
        /// </summary>
        ENCODER_CFG_EX2 = 0x007c,
    }

    /// <summary>
    /// Auto register config parameter
    /// 主动注册参数配置
    /// </summary>
    public struct NET_DEV_SERVER_INFO
    {
        /// <summary>
        /// Registration server IP ; no use it,use szServerIpEx
        /// 注册服务器IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szServerIp;
        /// <summary>
        /// Port number
        /// 端口号
        /// </summary>
        public int nServerPort;
        /// <summary>
        /// Reserved
        /// 对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved;
        /// <summary>
        /// Extend Registration server IP enable, 0-not enable, 1-enable
        /// 注册服务器IP扩展使能,0-表示无效, 1-表示有效
        /// </summary>
        public byte bServerIpExEn;
        /// <summary>
        /// Extend Registration server IP
        /// 注册服务器IP扩展,支持ipv4,ipv6,域名等类型的IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 60)]
        public string szServerIpEx;
    }

    public struct NET_DEV_REGISTER_SERVER
    {
        public uint dwSize;
        /// <summary>
        /// The max IP amount supported
        /// 支持的最大ip数
        /// </summary>
        public byte bServerNum;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_DEV_SERVER_INFO[] lstServer;
        /// <summary>
        /// Enable
        /// 使能
        /// </summary>
        public byte bEnable;
        /// <summary>
        /// Device ID
        /// 设备id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDeviceID;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 94)]
        public byte[] reserved;
    }

    /// <summary>
    /// Auto maintenance setup
    /// 自动维护配置
    /// </summary>
    public struct NET_DEV_AUTOMT_CFG
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Auto reboot;0:never, 1:each day,2:each Sunday,3:Each Monday ,......
        /// 自动重启；0：从不, 1：每天,2：每星期日,3：每星期一,......
        /// </summary>
        public byte byAutoRebootDay;
        /// <summary>
        /// 0:0:00,1:1:00,......23:23:00
        /// 0：0:00,1：1:00,......23：23:00
        /// </summary>
        public byte byAutoRebootTime;
        /// <summary>
        /// Auto delete file;0:never,1:24H,2:48H,3:72H,4:96H,5:ONE WEEK,6:ONE MONTH
        /// 自动删除文件；0：从不,1：24H,2：48H,3：72H,4：96H,5：ONE WEEK,6：ONE MONTH
        /// </summary>
        public byte byAutoDeleteFilesTime;
        /// <summary>
        /// Reserved bit
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 13)]
        public byte[] reserved;
    }

    // CLIENT_AttachMotionData 输入参数
    public struct NET_IN_ATTACH_MOTION_DATA
    {
        public uint dwSize;
        public int nChannel;						// 通道号
        public fAttachMotionDataCB cbNotify;						// 回调函数
        public IntPtr dwUser;                         // 用户数据
    }

    // CLIENT_AttachMotionData 输出参数
    public struct NET_OUT_ATTACH_MOTION_DATA
    {
        public uint dwSize;
    }

    // 回调元数据消息
    public struct NET_CB_MOTION_DATA
    {
        public uint dwSize;
        public int nMotionDataCount;							// 动检窗口个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_MOTION_DATA[] stMotionData;		                    // 动检数据
        public int nRegionRow;									// 动态检测区域的行数
        public int nRegionCol;									// 动态检测区域的列数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_ROW[] byRegion;		// 检测区域, 最多32*32块区域
    }

    public struct NET_ROW
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byCol;
    }

    // 动检数据
    public struct NET_MOTION_DATA
    {
        public int nRegionID;									// 动态窗口ID
        public int nThreshold;                                 // 面积阀值, 取值[0, 100]
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;							// 保留字节
    }

    /// <summary>
    /// 
    /// SearchDevicesByIPs接口
    /// </summary>
    public struct NET_DEVICE_IP_SEARCH_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 当前搜索的IP个数
        /// the IPs number for search
        /// </summary>
        public int nIpNum;
        /// <summary>
        /// / 具体待搜索的IP信息
        /// the IPs for search
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_IPADDRESS[] szIPs;
        /// <summary>
        /// / 设备信息回调函数
        /// / Device information callback function
        /// </summary>
        public fSearchDevicesCBEx cbSearchDevicesEx;
    }

    /// <summary>
    /// IP Address
    /// IP地址
    /// </summary>
    public struct NET_IPADDRESS
    {
        /// <summary>
        /// IP Address
        /// IP地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szIP;
    }

    /// <summary>
    /// 协议类型
    /// Protocol type
    /// </summary>
    public enum EM_ACCOUNT_PROTOCOL
    {
        /// <summary>
        /// / 通用协议
        /// normal protocal
        /// </summary>
        EM_ACCOUNT_PROTOCOL_NORMAL,
        /// <summary>
        /// / TTLV协议
        /// TTLV protocal
        /// </summary>
        EM_ACCOUNT_PROTOCOL_TTLV,
    }

    /// <summary>
    /// 初始化设备账户输入结构体
    /// the input parameters of CLIENT_InitDevAccount
    /// </summary>
    public struct NET_IN_INIT_DEVICE_ACCOUNT
    {
        /// <summary>
        /// / 结构体大小:初始化结构体时赋值
        /// struct size:assignment when init the struct
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 设备mac地址
        /// mac addr
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szMac;
        /// <summary>
        /// / 用户名
        /// user name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserName;
        /// <summary>
        /// / 设备密码
        /// password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPwd;
        /// <summary>
        /// / 预留手机号
        /// cellphone
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCellPhone;
        /// <summary>
        /// / 预留邮箱
        /// mail addr
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szMail;
        /// <summary>
        /// / 此字段已经废弃
        /// this field already abandoned
        /// </summary>
        public byte byInitStatus;
        /// <summary>
        /// / 设备支持的密码重置方式：搜索设备接口(CLIENT_SearchDevices、CLIENT_StartSearchDevices的回调函数、CLIENT_SearchDevicesByIPs)返回字段byPwdResetWay的值
        /// / 该值的具体含义见 DEVICE_NET_INFO_EX 结构体，需要与设备搜索接口返回的 byPwdResetWay 值保持一致
        /// / bit0 : 1-支持预留手机号，此时需要在szCellPhone数组中填入预留手机号(如果需要设置预留手机) ;
        /// / bit1 : 1-支持预留邮箱，此时需要在szMail数组中填入预留邮箱(如果需要设置预留邮箱)
        /// the way supported for reset password:byPwdResetWay value of CLIENT_StartSearchDevices's , CLIENT_SearchDevicesByIPs's callback function and CLIENT_SearchDevices
        /// the meaning of this parameter refers to DEVICE_NET_INFO_EX, the value must be same as byPwdResetWay returned by CLIENT_StartSearchDevices,CLIENT_SearchDevicesByIPs and CLIENT_SearchDevices
        /// bit0 : 1-support reset password by cellphone, you should set cellphone in szCellPhone if you need to set cellphone
        /// bit1 : 1-support reset password by mail, you should set mail address in szMail if you need to set mail address
        /// </summary>									
        public byte byPwdResetWay;
        /// <summary>
        /// / 保留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// / 初始化协议类型
        /// init protocal type
        /// </summary>
        public EM_ACCOUNT_PROTOCOL emAccountProtocol;
    }

    /// <summary>
    /// 
    /// 初始化设备账户输出结构体
    /// </summary>
    public struct NET_OUT_INIT_DEVICE_ACCOUNT
    {
        /// <summary>
        /// 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// Warning line event (Corresponding to event  EVENT_CROSSLINE_DETECTION)
    /// 拌线入侵事件(对应事件 EVENT_CROSSLINE_DETECTION)
    /// </summary>
    public struct NET_ALARM_EVENT_CROSSLINE_INFO
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Channel No.
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// Time stamp (Unit is ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// Event occurrence time 
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Event operation. 0=pulse event.1=continious event begin. 2=continuous event stop
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// Intrusion direction 
        /// 入侵方向
        /// </summary>
        public EM_CROSSLINE_DIRECTION_INFO emCrossDirection;
        /// <summary>
        /// Triggered amount 
        /// 规则被触发生次数
        /// </summary>
        public int nOccurrenceCount;
        /// <summary>
        /// Event level
        /// 事件级别,GB30147需求项
        /// </summary>
        public int nLevel;
        /// <summary>
        /// / 是否检测到物体信息
        /// Target information detection enablement
        /// </summary>
        public bool bIsObjectInfo;
        /// <summary>
        /// / 检测到的物体信息
        /// Object information detected
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// / 实际返回多个检测到的物体信息
        /// Actually returns multiple detected object information
        /// </summary>
        public int nRetObjectNum;
        /// <summary>
        /// / 多个检测到的物体信息
        /// Multiple detected object information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件触发的预置点名称
        /// Name of the preset point triggered by the event
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// / 事件触发的预置点号
        /// Pre set point number triggered by the event
        /// </summary>
        public uint nPresetID;
    }

    /// <summary>
    /// Warning line intrusion direction
    /// 拌线入侵入侵方向
    /// </summary>
    public enum EM_CROSSLINE_DIRECTION_INFO
    {
        UNKNOW = 0,
        /// <summary>
        /// From left to right
        /// 左到右
        /// </summary>
        LEFT2RIGHT,
        /// <summary>
        /// From right to left
        /// 右到左
        /// </summary>
        RIGHT2LEFT,
        ANY,
    }

    /// <summary>
    /// alarm event type EVENT_MOTIONDETECT (video motion detection event) corresponding data description info
    /// 报警事件类型EVENT_MOTIONDETECT(视频移动侦测事件)对应的数据描述信息
    /// </summary>
    public struct NET_ALARM_MOTIONDETECT_INFO
    {
        /// <summary>
        /// size of struct
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel number
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// timestamp (unit is millisecond)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// event occurrence time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// event action, 0 means pulse event, 1 means continuous event begin, 2 means continuous event end
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// </summary>
        public int nEventAction;

        public uint nRegionNum;            // 动检区域个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_MOTIONDETECT_REGION_INFO[] stuRegion;     // 动检区域信息
        public bool bSmartMotionEnable;    // 智能动检是否使能
        public uint nDetectTypeNum;        // 动检触发类型个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_MOTION_DETECT_TYPE[] emDetectType; // 动检触发类型, 当nRegionNum大于0时，和stuRegion数组一一对应, 
                                                     // 若nRegionNum为0，触发区域未知，不与窗口绑定，默认第一个元素表示触发类型
                                                     /// <summary>
                                                     /// 事件公共扩展字段结构体
                                                     /// Event public extension field structure
                                                     /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// GPS信息
        /// GPS information
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
    }

    // 主(辅)码流视频格式(f6/f5/bin)
    public struct NET_ENCODE_VIDEO_INFO
    {
        public uint dwSize;
        public EM_FORMAT_TYPE emFormatType;				// 码流类型,设置和获取时都需要设置值
        public bool bVideoEnable;				// 视频使能
        public EM_VIDEO_COMPRESSION emCompression;				// 视频压缩格式
        public int nWidth;						// 视频宽度
        public int nHeight;					// 视频高度
        public EM_BITRATE_CONTROL emBitRateControl;			// 码流控制模式
        public int nBitRate;					// 视频码流(kbps)
        public float nFrameRate;					// 视频帧率
        public int nIFrameInterval;			// I帧间隔(1-100)，比如50表示每49个B帧或P帧，设置一个I帧。
        public EM_IMAGE_QUALITY emImageQuality;				// 图像质量
        /// <summary>
        /// 图像组，即I帧间隔 1-150，比如50表示每49个B帧或P帧，设置一个I帧。0表示自动调整I帧间隔
        /// Image group, i.e. I-frame interval 1-150, for example, 50 represents setting one I-frame every 49 B-frames or P-frames. 0 indicates automatic adjustment of I-frame interval
        /// </summary>
        public int nAiGOP;
    }

    // 码流类型
    public enum EM_FORMAT_TYPE
    {
        UNKNOWN,				// 未知类型
        /*主码流*/
        NORMAL,				// 主码流普通编码
        MOVEEXAMINE,			// 主码流动检编码
        ALARM,				// 主码流报警编码
        /*辅码流*/
        EXTRA1,					// 辅码流1
        EXTRA2,					// 辅码流2
        EXTRA3,					// 辅码流3
    }

    // 视频压缩格式
    public enum EM_VIDEO_COMPRESSION
    {
        MPEG4,								// MPEG4
        MS_MPEG4,							// MS-MPEG4
        MPEG2,								// MPEG2
        MPEG1,								// MPEG1
        H263,								// H.263
        MJPG,								// MJPG
        FCC_MPEG4,							// FCC-MPEG4
        H264,								// H.264
        H265,								// H.265
        SVAC,								// SVAC
    }

    // 码流控制模式
    public enum EM_BITRATE_CONTROL
    {
        CBR,									// 固定码流
        VBR,									// 可变码流
    }

    // 画质
    public enum EM_IMAGE_QUALITY
    {
        Q10 = 1,							// 图像质量10%
        Q30,								// 图像质量30%
        Q50,								// 图像质量50%
        Q60,								// 图像质量60%
        Q80,								// 图像质量80%
        Q100,								// 图像质量100%
    }

    // 设备能力类型, 对应CLIENT_GetDevCaps接口
    public enum EM_DEVCAP_TYPE
    {
        DEV_CAP_SEQPOWER = 0x01,               // 电源时序器能力, pInBuf=NET_IN_CAP_SEQPOWER*, pOutBuf=NET_OUT_CAP_SEQPOWER*
        ENCODE_CFG_CAPS = 0x02,               // 设备编码配置对应能力, pInBuf=NET_IN_ENCODE_CFG_CAPS*, pOutBuf= NET_OUT_ENCODE_CFG_CAPS*
        VIDEOIN_FISHEYE_CAPS = 0x03,               // 鱼眼能力, pInBuf=NET_IN_VIDEOIN_FISHEYE_CAPS*, pOutBuf=NET_OUT_VIDEOIN_FISHEYE_CAPS*
        COMPOSITE_CAPS = 0x04,               // 根据指定的窗口号预先获取融合后的能力集, pInBuf=NET_IN_COMPOSITE_CAPS*, pOutBuf=NET_OUT_COMPOSITE_CAPS*
        VIDEO_DETECT_CAPS = 0x05,               // 获取视频检测输入能力集,pInBuf=NET_IN_VIDEO_DETECT_CAPS* , pOutBuf=NET_OUT_VIDEO_DETECT_CAPS*
        THERMO_GRAPHY_CAPS = 0x06,               // 热成像摄像头属性能力,pInBuf=NET_IN_THERMO_GETCAPS*, pOutBuf=NET_OUT_THERMO_GETCAPS*
        RADIOMETRY_CAPS = 0x07,               // 热成像测温全局配置能力,pInBuf=NET_IN_RADIOMETRY_GETCAPS*, pOutBuf=NET_OUT_RADIOMETRY_GETCAPS*
        POS_CAPS = 0x08,               // POS机能力,pInBuf = NET_IN_POS_GETCAPS *, pOutBuf = NET_OUT_POS_GETCAPS *
        USER_MNG_CAPS = 0x09,               // 用户管理能力, pInBuf = NET_IN_USER_MNG_GETCAPS *, pOutBuf = NET_OUT_USER_MNG_GETCAPS *
        MEDIAMANAGER_CAPS = 0x0a,               // 获取 VideoInput 的各个能力项,pInBuf=NET_IN_MEDIAMANAGER_GETCAPS*, pOutBuf=NET_OUT_MEDIAMANAGER_GETCAPS*
        VIDEO_MOSAIC_CAPS = 0x0b,				// 获取通道马赛克叠加能力,pInBuf=NET_IN_MEDIA_VIDEOMOSAIC_GETCAPS*, pOutBuf=NET_OUT_MEDIA_VIDEOMOSAIC_GETCAPS*
        SNAP_CFG_CAPS = 0x0c,                // 设备抓图配置对应能力, pInBuf=NET_IN_SNAP_CFG_CAPS*, pOutBuf= NET_OUT_SNAP_CFG_CAPS*
        VIDEOIN_CAPS = 0x0d,                // 设备视频输出能力, pInBUf = NET_IN_VIDEOIN_CAPS*, pOutBuf = NET_OUT_VIDEOIN_CAPS*
        FACE_BOARD_CAPS = 0x0e,                // 面板设备能力集, pInBuf = NET_IN_FACEBOARD_CAPS*, pOutBuf = NET_OUT_FACEBOARD_CAPS*
        EXTERNALSENSOR_CAPS = 0x0f,				// 外部传感器管理能力集，pInBuf = NET_IN_EXTERNALSENSOR_CAPS*, pOutBuf = NET_OUT_EXTERNALSENSOR_CAPS*
        VIDEO_IMAGECONTROL_CAPS = 0x10,				// 图像旋转设置能力, pInBuf = NET_IN_VIDEO_IMAGECONTROL_CAPS*, pOutBuf = NET_OUT_VIDEO_IMAGECONTROL_CAPS*
        VIDEOIN_EXPOSURE_CAPS = 0x11,				// 曝光设置能力, pInBuf = NET_IN_VIDEOIN_EXPOSURE_CAPS*, pOutBuf = NET_OUT_VIDEOIN_EXPOSURE_CAPS*
        VIDEOIN_DENOISE_CAPS = 0x12,				// 降噪能力, pInBuf = NET_IN_VIDEOIN_DENOISE_CAPS*, pOutBuf = NET_OUT_VIDEOIN_DENOISE_CAPS*
        VIDEOIN_BACKLIGHT_CAPS = 0x13,				// 背光设置能力, pInBuf = NET_IN_VIDEOIN_BACKLIGHT_CAPS*, pOutBuf = NET_OUT_VIDEOIN_BACKLIGHT_CAPS*
        VIDEOIN_WHITEBALANCE_CAPS = 0x14,				// 白平衡设置能力, pInBuf = NET_IN_VIDEOIN_WHITEBALANCE_CAPS*, pOutBuf = NET_OUT_VIDEOIN_WHITEBALANCE_CAPS*
        VIDEOIN_DAYNIGHT_CAPS = 0x15,				// 球机机芯日夜设置能力, pInBuf = NET_IN_VIDEOIN_DAYNIGHT_CAPS*, pOutBuf = NET_OUT_VIDEOIN_DAYNIGHT_CAPS*
        VIDEOIN_ZOOM_CAPS = 0x16,				// 变倍设置能力, pInBuf = NET_IN_VIDEOIN_ZOOM_CAPS*, pOutBuf = NET_OUT_VIDEOIN_ZOOM_CAPS*
        VIDEOIN_FOCUS_CAPS = 0x17,				// 聚焦设置能力, pInBuf = NET_IN_VIDEOIN_FOCUS_CAPS*, pOutBuf = NET_OUT_VIDEOIN_FOCUS_CAPS*
        VIDEOIN_SHARPNESS_CAPS = 0x18,				// 锐度设置能力, pInBuf = NET_IN_VIDEOIN_SHARPNESS_CAPS*, pOutBuf = NET_OUT_VIDEOIN_SHARPNESS_CAPS*
        VIDEOIN_COLOR_CAPS = 0x19,				// 图像设置能力, pInBuf = NET_IN_VIDEOIN_COLOR_CAPS*, pOutBuf = NET_OUT_VIDEOIN_COLOR_CAPS*
        GET_MASTERSLAVEGROUP_CAPS = 0x1a,				// 获取跟踪业务能力, pInBuf = NET_IN_GET_MASTERSLAVEGROUP_CAPS*, pOutBuf = NET_OUT_GET_MASTERSLAVEGROUP_CAPS*
        FACERECOGNITIONSE_CAPS = 0x1b,				// 目标识别服务器能力查询 pInBuf = NET_IN_FACERECOGNITIONSERVER_CAPSBILITYQUERY, pOutBuf = NET_OUT_FACERECOGNITIONSERVER_CAPSBILITYQUERY *
        STORAGE_CAPS = 0x1c,				// 获取存储能力集, pInBuf = NET_IN_STORAGE_CAPS*, pOutBuf = NET_OUT_STORAGE_CAPS*
        VIDEOIN_RAWFRAME_CAPS = 0x1d,				// 获取视频输入扩展能力集, pInBuf = NET_IN_VIDEOIN_RAWFRAME_CAPS*, pOutBuf = NET_OUT_VIDEOIN_RAWFRAME_CAPS*
        COAXIAL_CONTROL_IO_CAPS = 0x1e,				// 获取同轴IO控制能力, pInBuf = NET_IN_GET_COAXIAL_CONTROL_IO_CAPS*, pOutBuf = NET_OUT_GET_COAXIAL_CONTROL_IO_CAPS*
        FACEINFO_CAPS = 0x1f,                // 获得人脸门禁控制器能力集, pInBuf = NET_IN_GET_FACEINFO_CAPS*, pOutBuf = NET_OUT_GET_FACEINFO_CAPS*
        ACCESSCONTROL_CAPS = 0x20,           // 获取门禁能力, pInBuf = NET_IN_AC_CAPS*, pOutBuf = NET_OUT_AC_CAPS*
        REMOTE_SPEAK_CAPS = 0x38,           // 获取前端音频文件路径和能力集 pInBuf = NET_IN_REMOTE_SPEAK_CAPS*, pOutBuf = NET_OUT_REMOTE_SPEAK_CAPS*
        IXRAY_PACKAGE_MANAGER_CAPS = 0x41,  // 获取X光安检服务器能力 pInBuf = NET_IN_IXRAY_PACKAGE_MANAGER_CAPS *, pOutBuf = NET_OUT_IXRAY_PACKAGE_MANAGER_CAPS *
    }




    // 主(辅)码流视频格式profile配置(f6/bin)
    public struct NET_ENCODE_VIDEO_PROFILE_INFO
    {
        public uint dwSize;
        public EM_FORMAT_TYPE emFormatType;				// 码流类型,设置和获取时都需要设置值
        public EM_H264_PROFILE_RANK emProfile;                	// H.264编码级别
    }

    // H264 编码级别
    public enum EM_H264_PROFILE_RANK
    {
        UNKNOWN,							   // 未知类型
        BASELINE = 1,                       // 提供I/P帧，仅支持progressive(逐行扫描)和CAVLC
        MAIN,                               // 提供I/P/B帧，支持progressiv和interlaced，提供CAVLC或CABAC
        EXTENDED,                           // 提供I/P/B/SP/SI帧，仅支持progressive(逐行扫描)和CAVLC
        HIGH,                               // 即FRExt，Main_Profile基础上新增：8x8 intra prediction(8x8 帧内预测), custom 
        // quant(自定义量化), lossless video coding(无损视频编码), 更多的yuv格式
    }

    public enum EM_LISTEN_TYPE
    {
        /// <summary>
        /// 
        /// 验证期间设备断线回调
        /// </summary>
        NET_DVR_DISCONNECT = -1,
        /// <summary>
        /// 
        /// 设备注册携带序列号 对应 char* szDevSerial
        /// </summary>
        NET_DVR_SERIAL_RETURN = 1,
        /// <summary>
        /// 
        /// 设备注册携带序列号和令牌 对应NET_CB_AUTOREGISTER
        /// </summary>
        NET_DEV_AUTOREGISTER_RETURN,
        /// <summary>
        /// 
        /// 设备仅上报IP, 不作为主动注册用, 用户获取ip后只能按照约定的端口按照非主动注册的类型登录
        /// </summary>
        NET_DEV_NOTIFY_IP_RETURN,
    }

    /// <summary>
    /// 支持大类业务字段
    /// NET_PD_SUPPORTED_RULES_INFO Video Analyse Supported Rules
    /// </summary>
    public struct NET_PD_SUPPORTED_RULES_INFO
    {
        /// <summary>
        /// / Normal大类业务列表
        /// / Normal ClassType List
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64 * 64)]
        public string szNormal;
        /// <summary>
        /// / Normal大类业务数量
        /// / Normal ClassType Num
        /// </summary>
        public int nNormalNum;
        /// <summary>
        /// / ChangeDetection 大类业务列表最大数量
        /// / ChangeDetection ClassType Max Num
        /// </summary>
        public int nChangeDetectionMaxNum;
        /// <summary>
        /// / ChangeDetection 大类业务列表,由用户申请内存,大小为32*nChangeDetectionMaxNum
        /// / ChangeDetection ClassType List, memory is requested by the user, and the size is 32 * nChangeDetectionMaxNum
        /// </summary>
        public IntPtr pszChangeDetection;
        /// <summary>
        /// / ChangeDetection 大类业务列表实际数量
        /// / ChangeDetection ClassType Ret Num
        /// </summary>
        public int nChangeDetectionRetNum;
        /// <summary>
        /// / 保留字节
        /// / Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1012 - 8)]
        public sbyte[] szReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1012 - 4)]
        public sbyte[] szReserved;
#endif
    }

    /// <summary>
    /// 前智能接入能力
    /// NET_PD_REMOTE_VIDEO_ANALYSE Remote Video Analyse Info
    /// </summary>
    public struct NET_PD_REMOTE_VIDEO_ANALYSE
    {
        /// <summary>
        /// / 是否支持智能分析
        /// / Support Remote Video Analyse
        /// </summary>
        public bool bSupport;
        /// <summary>
        /// / 支持的智能大类列表数量
        /// / Supported Scene Num
        /// </summary>
        public int nSupportedSceneNum;
        /// <summary>
        /// / 支持的智能大类列表
        /// / Supported Scene
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32 * 16)]
        public string szSupportedScene;
        /// <summary>
        /// / 支持大类业务内容
        /// / Supported Rules
        /// </summary>
        public NET_PD_SUPPORTED_RULES_INFO stuSupportedRules;
        /// <summary>
        /// / 保留字节
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }
	
	/// <summary>
    /// Does it support multi-channel custom titles and single block dragging
    /// </summary>
    public struct NET_PD_SUPPORT_MOVE_ALONE_MULTI
    {
        /// <summary>
        /// / False or no such field, indicating unsupported; true, Express support
        /// </summary>
        public bool bSupport;
        /// <summary>
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szReserved;
    }

    // product definition
    public struct NET_PRODUCTION_DEFNITION
    {
        public uint dwSize;
        public int nVideoInChannel;				// Video input channel amount
        public int nVideoOutChannel;				// Video output channel amount
        public int nRemoteDecChannel;				// Remote decode channel amount
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDevType;		// Device type
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szVendor;		// OEM customer
        public int nOEMVersion;					// OEM version
        public int nMajorVerion;					// Main version No.
        public int nMinorVersion;					// SUb version No.
        public int nRevision;						// Revision version
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szWebVerion;	// Web version
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDefLanguage;	// Default setup
        public NET_TIME stuBuildDateTime;				// Release time. Unit is second.
        public int nAudioInChannel;				// Audio input channel amount
        public int nAudioOutChannel;				// Audio output channel amount
        public bool bGeneralRecord;					// Support schedule storage or not.
        public bool bLocalStore;					// Support local storage or not.
        public bool bRemoteStore;					// Support network storage or not.
        public bool bLocalurgentStore;				// Support emergency local storage or not.
        public bool bRealtimeCompress;				// Support real-time compression storage or not.
        public uint dwVideoStandards;				// The video format supported. bit0-PAL, bit1-NTSC
        public int nDefVideoStandard;				// Default video format, 0-PAL, 1-NTSC
        public int nMaxExtraStream;				// Max extra stream channel amount
        public int nRemoteRecordChannel;			// Remote record channel amount
        public int nRemoteSnapChannel;				// Remote snap channel amount
        public int nRemoteVideoAnalyseChannel;		// Remote video analysis channel amount
        public int nRemoteTransmitChannel;			// Remote real-time stream transmit max channel amount
        public int nRemoteTransmitFileChannel;		// Remote transmit file channel amount
        public int nStreamTransmitChannel;			// Max network transmit channel amount
        public int nStreamReadChannel;				// Max read file channel amount
        public int nMaxStreamSendBitrate;			// Max bit stream network send capability, kbps
        public int nMaxStreamRecvBitrate;			// Max bit stream network interface capability, kbps
        public bool bCompressOldFile;				// Old compression file or not. Delete P frame and save I frame.
        public bool bRaid;							// Support RAID or not.
        public int nMaxPreRecordTime;				// Max pre-record time.Unit is second.
        public bool bPtzAlarm;						// Support PTZ alarm or not.
        public bool bPtz;							// Support PTZ or not.
        public bool bATM;							// Support corresponding function of the ATM or not.
        public bool b3G;							// Support 3G module or not.
        public bool bNumericKey;					// With number button or not.
        public bool bShiftKey;						// With Shift button or not.
        public bool bCorrectKeyMap;					// Number character map sheet is right or not.
        public bool bNewATM;						// The new 2nd ATM front panel.
        public bool bDecoder;						// Decoder or not
        public NET_DEV_DECODER_INFO stuDecoderInfo;					// Decoder info. Valid when bDecoder=true.bDecoder=true
        public int nVideoOutputCompositeChannels;	// integration ceiling screen output channel
        public bool bSupportedWPS;                  // support WPS or not
        public int nVGAVideoOutputChannels;		// VGA video output channel number
        public int nTVVideoOutputChannels;			// TV video output channel number
        public int nMaxRemoteInputChannels;		// max number of remote channels
        public int nMaxMatrixInputChannels;		// max number of matrix channels
        public int nMaxRoadWays;                   // max counts of road ways 1~6
        public int nMaxParkingSpaceScreen;         // max counts of screen when docking with the camera 0~20
        public int nPtzHorizontalAngleMin;			// PTZ'horizontal minimum Angle, [0-360]
        public int nPtzHorizontalAngleMax;			// PTZ'horizontal maximum Angle, [0-360]
        public int nPtzVerticalAngleMin;			// PTZ'vertical  minimum Angle, [-90,90]
        public int nPtzVerticalAngleMax;			// PTZ'vertical  maximum Angle, [-90,90]
        public bool bPtzFunctionMenu;				// Whether to support PTZ's function menu 
        public bool bLightingControl;				// Whether to support lighting control 
        public uint dwLightingControlMode;			// Manual lighting control mode,bitwise,see NET_LIGHTING_CTRL_ON_OFF
        public int nNearLightNumber;				// dipped headlight group number, 0 means no support 
        public int nFarLightNumber;				// High beam group number, 0 means no support
        public bool bFocus;							// Whether to support control focus 
        public bool bIris;							// Whether to support control aperture 
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szPtzProtocolList;	// PTZ support agreement list, can be more, each with '; 'delimited 
        public bool bRainBrushControl;				// Whether to support wiper control 
        public int nBrushNumber;					// Number of wiper, 0 means no support
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public int[] nLowerMatrixInputChannels;		// inferior video matrix input channel, the subscript corresponding matrix number 
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public int[] nLowerMatrixOutputChannels;	// inferior video matrix output channel, the subscript corresponding matrix number 
        public bool bSupportVideoAnalyse;           // support intelligent analuysis or not
        public bool bSupportIntelliTracker;         // support intelligen tracking or not
        public uint nSupportBreaking;               // device supported violation type mask(by bit Get )                                               
        public uint nSupportBreaking1;              // 0-driver call 1-trafic-pedestrian redlight running 2-Traffic Jam Forbid Into 3-Pass Not In Order
        public NET_PD_VIDEOANALYSE stuVideoAnalyse;                // IVS
        public bool bTalkTransfer;                  // support talk-transfer or not
        public bool bCameraAttribute;				// support video in options or not
        public bool bPTZFunctionViaApp;				// support PTZ function or not
        public bool bAudioProperties;				// support audio properties or not
        public bool bIsCameraIDOsd;					// support camera id osd or not
        public bool bIsPlaceOsd;					// support place osd or not
        public uint nMaxGeographyTitleLine;			// the max geography title line
        public EM_AUDIO_CHANNEL_TYPE emAudioChannel;				// the audio channel type
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVendorAbbr;                                     // 长商缩写 Vendor abbreviation
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szTypeVersion;                            // 软件发布类型 Software release type

        public bool bIsVideoNexus;                         // 是否是视讯互联大基线
        public EM_WLAN_SCAN_AND_CONFIG_TYPE emWlanScanAndConfig;        // WIFI扫描及配置支持的版本类型
        public bool bSupportLensMasking;                    // IPC是否支持镜头调节到负角度，进行结构遮挡
        /// <summary>
        /// / 数视融合一体机设备是否具备网关能力，无该字段或该字段值为false时表示不具备网关能力；true表示设备具备网关能力
        /// / Whether Integrated machine of number vision fusion have gateway capability
        /// </summary>
        public bool bIoTGate;
        /// <summary>
        /// / 支持的控制板类型
        /// / Supported control board types.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSupportBoardType;
        /// <summary>
        /// / 版本：用于判断使用多通道配置(MultiFovCalibration)还是老配置(FovCalibration)，V2代表使用MultiFovCalibration多通道配置。如果没有该能力，默认使用FovCalibration配置,V2代表使用MultiFovCalibration多通道配置。如果没有该能力，默认使用FovCalibration配置
        /// / Version: Used to determine whether to use the multi-channel configuration (MultiFovCalibration) or the old configuration (FovCalibration), V2 represents using the MultiFovCalibration multi-channel configuration. If this capability is not available, FovCalibration configuration will be used by default, and V2 represents the use of MultiFovCalibration multi-channel configuration. If the ability is not available, FovCalibration configuration will be used by default
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szVersion;
        /// <summary>
        /// / 是否支持前智能接入能力
        /// / Support Remote Video Analyse
        /// </summary>
        public bool bSupportRemoteVideoAnalyse;
        /// <summary>
        /// / 支持的智能大类列表数量
        /// / Video Analyse Supported Scene Num
        /// </summary>
        public int nVideoAnalyseSupportedSceneNum;
        /// <summary>
        /// / 前智能接入能力信息
        /// / Remote Video Analyse Info
        /// </summary>
        public NET_PD_REMOTE_VIDEO_ANALYSE stuRemoteVideoAnalyse;
        /// <summary>
        /// / 智能分析支持的智能大类列表
        /// / Video Analyse Supported Scene List
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32 * 16)]
        public string szVideoAnalyseSupportedScene;
        /// <summary>
        /// / 智能分析支持大类业务内容
        /// / Video Analyse Supported Rules
        /// </summary>
        public NET_PD_SUPPORTED_RULES_INFO stuVideoAnalyseSupportedRules;
        /// <summary>
        /// / 是否支持同步远程禁止/允许名单
        /// / Does it support synchronizing remote forbid/allow lists
        /// </summary>
        public bool bSupportSyncRemoteTrafficList;
		/// <summary>
        /// / Support Multi People CombiMethod
        /// </summary>
        public bool bSupportMultiPeopleCombiMethod;
        /// <summary>
        /// / Support Attendance Only
        /// </summary>
        public bool bSupportAttendanceOnly;
        /// <summary>
        /// / Support Personal Verification
        /// </summary>
        public bool bSupportPersonalVerification;
        /// <summary>
        /// / True indicates that custom titles support single block dragging, while false indicates that they do not support it
        /// </summary>
        public bool bSupportMoveAlone;
        /// <summary>
        /// / Number of channels
        /// </summary>
        public int nSupportMoveAloneMultiCount;
        /// <summary>
        /// / Number of valid channels returned
        /// </summary>
        public int nValidSupportMoveAloneMultiCount;
        /// <summary>
        /// / Number of platform access types
        /// </summary>
        public int nVSPsNum;
        /// <summary>
        /// / Does it support multi-channel custom titles and single block dragging? Users can apply for memory, with a size of nSupportMoveAloneMultiCount*sizeof(NET_PD_SUPPORT_MOVE_ALONE_MULTI)
        /// </summary>
        public IntPtr pstuSupportMoveAloneMulti;
        /// <summary>
        /// / Platform access type,
        /// / I1_ZY "corresponds to NET_EM_CFG_VSP_I1 configuration
        /// / I1_JXQJ "corresponds to NET_EM_CFG_VSP_I1JXQJ configuration
        /// / I1ZJ "corresponds to NET_EM_CFG_VSP_I1ZJ configuration
        /// / I1JS "corresponds to NET_EM_CFG_VSP_I1JS configuration
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128 * 32)]
        public string szVSPs;
        /// <summary>
        /// / List of supported languages
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 32)]
        public string szLanguages;
        /// <summary>
        /// / Number of supported language lists
        /// </summary>
        public int nLanguagesNum;
        /// <summary>
        /// / Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
    }

    // intelligent analysis
    public struct NET_PD_VIDEOANALYSE
    {
        public bool bSupport;                   // whether supported 
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_SUPPROTSCENE[] szSupportScenes;   // supported scenes name
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_SUPPORTRULE[] szSupportRules;       // supported rules name
    }

    public struct NET_SUPPROTSCENE
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName; //supported scene name
    }

    public struct NET_SUPPORTRULE
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName; //supported rule name
    }

    // audio channel type
    public enum EM_AUDIO_CHANNEL_TYPE
    {
        SINGLE,		// single
        DOUBLE,		// double
    }

    // Decoder information
    public struct NET_DEV_DECODER_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDecType;			// type
        public int nMonitorNum;			// TV number
        public int nEncoderNum;			// Decoder channel number
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szSplitMode;		// Supported by a number of TV screen partition
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] bMonitorEnable;		// TV enable
        public byte bTVTipDisplay;          // TV tip display enable 0:not support 1:support.
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] reserved1;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
        public byte[] byLayoutEnable;     // every channel's tip display enable
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public uint[] dwLayoutEnMask;      // Each decoding channel displays overlay info enable mask, from low to high support 64 channels, while dwLayoutEnMask[0] is low 32 bit
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] reserved;
    }

    // Device software version information. Corresponding to CLIENT_QueryDevState
    public struct NET_DEV_VERSION_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szDevSerialNo;	// Serial number 
        public byte byDevType;							// Device type, please refer to NET_DEVICE_TYPE
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDevType;			// Device detailed type. String format. It may be null.
        public int nProtocalVer;						// Protocol version number 
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSoftWareVersion;
        public uint dwSoftwareBuildDate;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPeripheralSoftwareVersion;// From the Slice Version Information, The String Format, May Be Empty
        public uint dwPeripheralSoftwareBuildDate;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szGeographySoftwareVersion; // Geographical Iinformation Positioning Chip Version Information, The String Format, May Be empty
        public uint dwGeographySoftwareBuildDate;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szHardwareVersion;
        public uint dwHardwareDate;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szWebVersion;
        public uint dwWebBuildDate;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDetailType;          // Device detailed type. String format. It may be null.
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 192)]
        public byte[] reserved;
    }

    /// <summary>
    /// net interface,the largest support 64
    /// 网络接口,最大支持64个网卡
    /// </summary>
    public struct NET_DEV_NETINTERFACE_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public int dwSize;
        /// <summary>
        /// valid or not
        /// 是否有效
        /// </summary>
        public bool bValid;
        /// <summary>
        /// support virtual or not
        /// 是否虚拟网卡
        /// </summary>
        public bool bVirtual;
        /// <summary>
        /// theory of speed (Mbps)
        /// 网卡理论速度(Mbps)
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// 0-unable, 1-getting, 2-get succeed
        /// 0-未使能, 1-正在获取, 2-获取成功
        /// </summary>
        public int nDHCPState;
        /// <summary>
        /// net port mane
        /// 网口名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szName;
        /// <summary>
        /// net type
        /// 网络类型
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szType;
        /// <summary>
        /// MAC addr
        /// MAC地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szMAC;
        /// <summary>
        /// SSID, if only szType == "Wireless",availability
        /// SSID, 只对无线网络有效(szType == "Wireless")
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string szSSID;
        /// <summary>
        /// Wifi,3G connect status,"Inexistence" : not exist, "Down": close "Disconn": disconnect "Connecting" "Connected"
        /// Wifi、3G的连接状态,"Inexistence" : 网络不存在 "Down"：关闭 "Disconn"：未连接 "Connecting"：正连接 "Connected"： 已连接
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szConnStatus;
        /// <summary>
        /// support mode number
        /// 实际3G支持的网络模式个数
        /// </summary>
        public int nSupportedModeNum;
        /// <summary>
        /// support 3G net mode	"TD-SCDMA", "WCDMA", "CDMA1x", "EDGE", "EVDO"
        /// 3G支持的网络模式
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64 * 64)]
        public string szSupportedModes;
        /// <summary>
        /// IsSupport Long PoE
        /// 是否支持长距离POE速度协商，需要网卡和交换机协商后才能确定
        /// </summary>
        public bool bSupportLongPoE;
        /// <summary>
        /// NetCard name
        /// 真实网卡名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szNetCardName;
        /// <summary>
        /// / 模块名称
        /// Module name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szModuleName;
        /// <summary>
        /// / 国际移动用户识别码
        /// IMEI
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szIMEI;
        /// <summary>
        /// / 集成电路卡识别码即SIM卡卡号,20位数字组成
        /// The IC card identification code is the SIM card number, composed of 20 digits
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
        public string szICCID;
        /// <summary>
        /// / 国际移动用户识别码
        /// International mobile subscriber identity
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szIMSI;
    }

    // NTP setup 
    public struct NET_DEV_NTP_CFG
    {
        public bool bEnable;				// Enable or not
        public int nHostPort;				// NTP  server default port is 123
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szHostIp;			// Host IP
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDomainName;		// Domain name 
        public int nType;					// Read only ,0:IP,1:domain name ,2:IP and domain name 
        public int nUpdateInterval;		// Update time(minute)
        public EM_TIME_ZONE_TYPE emTimeZone;				// Please refer to EM_TIME_ZONE_TYPE
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] reserved;
    }

    public enum EM_TIME_ZONE_TYPE
    {
        ZONE_0,								// {0, 0*3600,"GMT+00:00"}
        ZONE_1,								// {1, 1*3600,"GMT+01:00"}
        ZONE_2,								// {2, 2*3600,"GMT+02:00"}
        ZONE_3,								// {3, 3*3600,"GMT+03:00"}
        ZONE_4,								// {4, 3*3600+1800,"GMT+03:30"}
        ZONE_5,								// {5, 4*3600,"GMT+04:00"}
        ZONE_6,								// {6, 4*3600+1800,"GMT+04:30"}
        ZONE_7,								// {7, 5*3600,"GMT+05:00"}
        ZONE_8,								// {8, 5*3600+1800,"GMT+05:30"}
        ZONE_9,								// {9, 5*3600+1800+900,"GMT+05:45"}
        ZONE_10,							// {10, 6*3600,"GMT+06:00"}
        ZONE_11,							// {11, 6*3600+1800,"GMT+06:30"}
        ZONE_12,							// {12, 7*3600,"GMT+07:00"}
        ZONE_13,							// {13, 8*3600,"GMT+08:00"}
        ZONE_14,							// {14, 9*3600,"GMT+09:00"}
        ZONE_15,							// {15, 9*3600+1800,"GMT+09:30"}
        ZONE_16,							// {16, 10*3600,"GMT+10:00"}
        ZONE_17,							// {17, 11*3600,"GMT+11:00"}
        ZONE_18,							// {18, 12*3600,"GMT+12:00"}
        ZONE_19,							// {19, 13*3600,"GMT+13:00"}
        ZONE_20,							// {20, -1*3600,"GMT-01:00"}
        ZONE_21,							// {21, -2*3600,"GMT-02:00"}
        ZONE_22,							// {22, -3*3600,"GMT-03:00"}
        ZONE_23,							// {23, -3*3600-1800,"GMT-03:30"}
        ZONE_24,							// {24, -4*3600,"GMT-04:00"}
        ZONE_25,							// {25, -5*3600,"GMT-05:00"}
        ZONE_26,							// {26, -6*3600,"GMT-06:00"}
        ZONE_27,							// {27, -7*3600,"GMT-07:00"}
        ZONE_28,							// {28, -8*3600,"GMT-08:00"}
        ZONE_29,							// {29, -9*3600,"GMT-09:00"}
        ZONE_30,							// {30, -10*3600,"GMT-10:00"}
        ZONE_31,							// {31, -11*3600,"GMT-11:00"}
        ZONE_32,							// {32, -12*3600,"GMT-12:00"}
    }

    //High decibel alarm info, corresponding to DH_ALARM_HIGH_DECIBEL alarm
    public struct NET_ALARM_HIGH_DECIBEL_INFO
    {
        public int nAudioChannel;                  // Audio channel NO. 
        public int nAction;                        // -1:unknown, 0:pulse, 1:start, 2:stop
        public NET_TIME_EX stuTime;                        // Event occurrence time
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;               // reserved
    }

    // Recording-changed alarm information(DH_ALARM_RECORD_CHANGED_EX)
    public struct NET_ALARM_RECORD_CHANGED_INFO_EX
    {
        public int nAction;                             // 0:start 1:stop
        public int nChannel;                            // channel
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szStoragePoint;	                    // StoragePoint
        public EM_STREAM_TYPE emStreamType;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]           // stream type
        public string szUser;			                    // username
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 828)]
        public byte[] byReserved;						// reserved 
    }

    // Alarm of record schedule change (Corresponding to ALARM_RECORD_SCHEDULE_CHANGE_INFO)
    public struct NET_ALARM_RECORD_SCHEDULE_CHANGE_INFO
    {
        public int nChannelID;								// Channel ID
        public int nEventID;								// Event ID
        public double dbPTS;									// Time stamp (Unit:ms)
        public NET_TIME_EX stuTime;								// Event occurrence time 				
        public int nEventAction;							// Event operation. 0=pulse event.1=continues event begin. 2=continuous event stop
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUser;			                        // Username
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;						        // Reserved
    }

    // Alarm of NTP change (Corresponding to ALARM_NTP_CHANGE_INFO)
    public struct NET_ALARM_NTP_CHANGE_INFO
    {
        public int nEventID;								// Event ID
        public int nEventAction;							// Event operation. 0=pulse event.1=continues event begin. 2=continuous event stop
        public double dbPTS;									// Time stamp (Unit:ms)
        public NET_TIME_EX stuTime;								// Event occurrence time 	
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUser;			// Username
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1028)]
        public byte[] byReserved;						// Reserved
    }

    ///  设备信息类型,对应 CLIENT_QueryDevInfo 接口
    public enum EM_QUERY_DEV_INFO
    {
        /// <summary>
        /// 查询设备的存储模块名列表 , pInBuf=NET_IN_STORAGE_DEV_NAMES *, pOutBuf=NET_OUT_STORAGE_DEV_NAMES *
        /// Querying the list of device enclosure pInBuf= NET_IN_STORAGE_DEV_NAMES *, pOutBuf = NET_OUT_STORAGE_DEV_NAMES *
        /// </summary>
        STORAGE_NAMES = 0x01,
        /// <summary>
        /// 查询设备的存储模块信息列表, pInBuf=NET_IN_STORAGE_DEV_INFOS*, pOutBuf= NET_OUT_STORAGE_DEV_INFOS *
        /// Querying the list of device enclosure pInBuf= NET_IN_STORAGE_DEV_INFOS *, pOutBuf = NET_OUT_STORAGE_DEV_INFOS *
        /// </summary>
        STORAGE_INFOS = 0x02,
        RECENCY_JNNCTION_CAR_INFO,
        LANES_STATE,                                       // 查询车道信息,pInBuf = NET_IN_GET_LANES_STATE , pOutBuf = NET_OUT_GET_LANES_STATE
        FISHEYE_WININFO,                               // 查询鱼眼窗口信息 , pInBuf= NET_IN_FISHEYE_WININFO*, pOutBuf=NET_OUT_FISHEYE_WININFO *
        REMOTE_DEVICE_INFO,                           // 查询远程设备信息 , pInBuf= NET_IN_GET_DEVICE_INFO*, pOutBuf= NET_OUT_GET_DEVICE_INFO *
        SYSTEM_INFO,                                      // 查询设备系统信息 , pInBuf= NET_IN_SYSTEM_INFO*, pOutBuf= NET_OUT_SYSTEM_INFO*
        REG_DEVICE_NET_INFO,                              // 查询主动注册设备的网络连接 , pInBuf=NET_IN_REGDEV_NET_INFO * , pOutBuf=NET_OUT_REGDEV_NET_INFO *
        THERMO_GRAPHY_PRESET,                          // 查询热成像预设信息 , pInBuf= NET_IN_THERMO_GET_PRESETINFO*, pOutBuf= NET_OUT_THERMO_GET_PRESETINFO *
        THERMO_GRAPHY_OPTREGION,                       // 查询热成像感兴趣区域信息,pInBuf= NET_IN_THERMO_GET_OPTREGION*, pOutBuf= NET_OUT_THERMO_GET_OPTREGION *
        THERMO_GRAPHY_EXTSYSINFO,                     // 查询热成像外部系统信息, pInBuf= NET_IN_THERMO_GET_EXTSYSINFO*, pOutBuf= NET_OUT_THERMO_GET_EXTSYSINFO *
        RADIOMETRY_POINT_TEMPER,                       // 查询测温点的参数值, pInBuf= NET_IN_RADIOMETRY_GETPOINTTEMPER*, pOutBuf= NET_OUT_RADIOMETRY_GETPOINTTEMPER *
        RADIOMETRY_TEMPER,                             // 查询测温项的参数值, pInBuf= NET_IN_RADIOMETRY_GETTEMPER*, pOutBuf= NET_OUT_RADIOMETRY_GETTEMPER *
        GET_CAMERA_STATE,                                  // 获取摄像机状态, pInBuf= NET_IN_GET_CAMERA_STATEINFO*, pOutBuf= NET_OUT_GET_CAMERA_STATEINFO *
        GET_REMOTE_CHANNEL_AUDIO_ENCODE,                   // 获取远程通道音频编码方式, pInBuf= NET_IN_GET_REMOTE_CHANNEL_AUDIO_ENCODEINFO*, pOutBuf= NET_OUT_GET_REMOTE_CHANNEL_AUDIO_ENCODEINFO *
        GET_COMM_PORT_INFO,                                // 获取设备串口信息, pInBuf=NET_IN_GET_COMM_PORT_INFO* , pOutBuf=NET_OUT_GET_COMM_PORT_INFO* 
        GET_LINKCHANNELS,                                 // 查询某视频通道的关联通道列表,pInBuf=NET_IN_GET_LINKCHANNELS* , pOutBuf=NET_OUT_GET_LINKCHANNELS*
        GET_VIDEOOUTPUTCHANNELS,                           // 获取解码通道数量统计信息, pInBuf=NET_IN_GET_VIDEOOUTPUTCHANNELS*, pOutBuf=NET_OUT_GET_VIDEOOUTPUTCHANNELS*
        GET_VIDEOINFO,                                     // 获取解码通道信息, pInBuf=NET_IN_GET_VIDEOINFO*, pOutBuf=NET_OUT_GET_VIDEOINFO*
        GET_ALLLINKCHANNELS,                              // 查询全部视频关联通道列表,pInBuf=NET_IN_GET_ALLLINKCHANNELS* , pOutBuf=NET_OUT_GET_ALLLINKCHANNELS*
        VIDEOCHANNELSINFO,                                 // 查询视频通道信息,pInBuf=NET_IN_GET_VIDEOCHANNELSINFO* , pOutBuf=NET_OUT_GET_VIDEOCHANNELSINFO*
        TRAFFICRADAR_VERSION,                              // 查询雷达设备版本,pInBuf=NET_IN_TRAFFICRADAR_VERSION* , pOutBuf=NET_OUT_TRAFFICRADAR_VERSION*
        WORKGROUP_NAMES,                                   // 查询所有的工作目录组名,pInBuf=NET_IN_WORKGROUP_NAMES* , pOutBuf=NET_OUT_WORKGROUP_NAMES*
        WORKGROUP_INFO,                                   // 查询工作组信息,pInBuf=NET_IN_WORKGROUP_INFO* , pOutBuf=NET_OUT_WORKGROUP_INFO*
        WLAN_ACCESSPOINT = 0x19,                                  // 查询无线网络接入点信息,pInBuf=NET_IN_WLAN_ACCESSPOINT* , pOutBuf=NET_OUT_WLAN_ACCESSPOINT*
        GPS_INFO,                                           // 查询设备GPS信息,pInBuf=NET_IN_DEV_GPS_INFO* , pOutBuf=NET_OUT_DEV_GPS_INFO*
        IVS_REMOTE_DEVICE_INFO,                            // 查询IVS的前端设备所关联的远程设备信息, pInBuf = NET_IN_IVS_REMOTE_DEV_INFO*, pOutBuf = NET_OUT_IVS_REMOTE_DEV_INFO*
        SMART_SWITCH_INFO,                                 // 查询智能插座信息, pInBuf = NET_IN_SMART_SWITCH_INFO*,  pOutBuf = NET_OUT_SMART_SWITCH_INFO*
        UPGRADE_STATE,                                     // 查询升级状态信息, pInBuf = NET_IN_UPGRADE_STATE*, pOutBuf = NET_OUT_UPGRADE_STATE* 
        VIDEO_ENCODE_CAPS,                                  // 获取视频编码能力集, pInBuf = NET_IN_VIDEO_ENCODE_CAPS*, pOutBuf = NET_OUT_VIDEO_ENCODE_CAPS* 
        AUDIO_ENCODE_CAPS,                                  // 获取音频编码能力集, pInBuf = NET_IN_AUDIO_ENCODE_CAPS*, pOutBuf = NET_OUT_AUDIO_ENCODE_CAPS* 
        AUDIO_IN_CAPS,                                      // 获取音频输入通道能力集, pInBuf = NET_IN_AUDIO_IN_CAPS*, pOutBuf = NET_OUT_AUDIO_IN_CAPS* 
        SMART_ENCODE_CAPS,                                  // 查询Smart编码能力集, pInBuf = NET_IN_SMART_ENCODE_CAPS*, pOutBuf = NET_OUT_SMART_ENCODE_CAPS* 
        HARDDISK_TEMPERATURE,                               // 获取硬盘温度,pInBuf = NET_IN_HDD_TEMPERATURE*, pOutBuf = NET_OUT_HDD_TEMPERATURE*
        RAWFRAMEDATA,                                       // 获取指定格式的YUV数据, pInBuf = NET_IN_RAWFRAMEDATA*, pOutBuf = NET_OUT_RAWFRAMEDARA*
        GETSPLICEDATA = 0x24,           // 获取设备拼接参数接口, pInBuf = NET_IN_GETSPLICEDATA*, pOutBuf = NET_OUT_GETSPLICEDATA*
        AUDIO_DECODE_CAPS = 0x25,           // 获取音频解码能力集, pInBuf = NET_IN_AUDIO_DECODE_CAPS*, pOutBuf = NET_OUT_AUDIO_DECODE_CAPS* 
        DEVICE_ID = 0x26,           // 获取设备ID, pInBuf = NET_IN_DEVICE_ID*, pOutBuf = NET_OUT_DEVICE_ID*
        REMOTE_DEVICE_CAPS = 0x27,           // 获取远程设备管理能力集, pInBuf = NET_IN_REMOTEDEVICE_CAPS*， pOutBuf= NET_OUT_REMOTEDEVICE_CAPS
        TRAFFIC_SNAP_RADAR = 0x28,           // 获取智能交通雷达信息, pInfo = NET_IN_TRAFFIC_SNAP_RADAR_INFO*,  pOutBuf = NET_OUT_TRAFFIC_SNAP_RADAR_INFO*
        TRAFFIC_SNAP_STROBE = 0x29,           // 获取智能交通道闸信息, pInfo = NET_IN_TRAFFIC_SNAP_STROBE_INFO*, pOutBuf = NET_OUT_TRAFFIC_SNAP_STROBE_INFO*
        GET_ALL_PARKING_SPACE_STATUS = 0x32,           // 获取当前车位检测状态, pInBuf = NET_IN_GET_ALL_PARKING_SPACE_STATUS_INFO*, pOutBuf = NET_OUT_GET_ALL_PARKING_SPACE_STATUS_INFO*
        TRAFFIC_RADAR_GET_OBJECT = 0x35,           // 获取雷达物体目标信息,pInBuf = NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO*,pOutBuf = NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO* 
        PTZBASE_GET_HFOV_VALUE = 0x39,           // 获取镜头不同倍率下水平视场角参数，pInBuf = NET_IN_PTZBASE_GET_HFOV_VALUE*,pOutBuf = NET_OUT_PTZBASE_GET_HFOV_VALUE* 

    }

    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_RADIOMETRY_POINT_TEMPER 命令入参
    public struct NET_IN_RADIOMETRY_GETPOINTTEMPER
    {
        public uint dwSize;
        public int nChannel;                           // 通道号
        public NET_POINT stCoordinate;                       // 测温点的坐标,坐标值 0~8192
    };

    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_RADIOMETRY_POINT_TEMPER 命令出参
    public struct NET_OUT_RADIOMETRY_GETPOINTTEMPER
    {
        public uint dwSize;
        public NET_RADIOMETRYINFO stPointTempInfo;                    // 获取测温点的参数值
    }

    // 测温模式的类型
    public enum EM_RADIOMETRY_METERTYPE
    {
        UNKNOWN,
        SPOT,                          // 点
        LINE,                          // 线
        AREA,                          // 区域
    }

    // 获取测温项温度的条件   
    public struct NET_RADIOMETRY_CONDITION
    {
        public int nPresetId;                          // 预置点编号    
        public int nRuleId;                            // 规则编号 
        public int nMeterType;                         // 测温项类别,见EM_RADIOMETRY_METERTYPE
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;                         // 测温项的名称,从测温配置规则名字中选取
        public int nChannel;                           // 通道号
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] reserved;
    }

    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_RADIOMETRY_TEMPER 命令入参
    public struct NET_IN_RADIOMETRY_GETTEMPER
    {
        public uint dwSize;
        public NET_RADIOMETRY_CONDITION stCondition;                // 获取测温项温度的条件
    };

    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_RADIOMETRY_TEMPER 命令出参
    public struct NET_OUT_RADIOMETRY_GETTEMPER
    {
        public uint dwSize;
        public NET_RADIOMETRYINFO stTempInfo;                         // 获取测温参数值
    }

    /// <summary>
    /// QueryDevInfo 接口 NET_IN_GET_CAMERA_STATEINFO 命令入参
    /// </summary>
    public struct NET_IN_GET_CAMERA_STATEINFO
    {
        public uint dwSize;
        /// <summary>
        /// 是否查询所有摄像机状态,若该成员为 TRUE,则 nChannels 成员无需设置
        /// if it is to check all the cameras status, if the member is TRUE, then nChannels member is unnecessary to set.
        /// </summary>
        public bool bGetAllFlag;
        /// <summary>
        /// 该成员,bGetAllFlag 为 FALSE时有效,表示 nChannels 成员有效个数
        /// the member is valid when bGetAllFlag is FALSE, which means valid number of nChannels member
        /// </summary>
        public int nValidNum;
        /// <summary>
        /// 该成员,bGetAllFlag 为 FALSE时有效,将需要查询的通道号依次填入
        /// The member is valid when bGetAllFlag is FALSE, it is to fill in the channel numbers in turn which needs inquiry. 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public int[] nChannels;
    }

    public enum EM_CAMERA_STATE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// 正在连接
        /// connecting
        /// </summary>
        CONNECTING,
        /// <summary>
        /// 已连接
        /// connected
        /// </summary>
        CONNECTED,
        /// <summary>
        /// 未连接
        /// unconnected
        /// </summary>
        UNCONNECT,
        /// <summary>
        /// 通道未配置,无信息
        /// channel is not configured, no info
        /// </summary>
        EMPTY,
        /// <summary>
        /// 通道有配置,但被禁用
        /// channel is configured, but it is forbidden. 
        /// </summary>
        DISABLE,
    }

    public struct NET_CAMERA_STATE_INFO
    {
        /// <summary>
        /// 摄像机通道号, -1表示通道号无效
        /// camera channel number, -1 means invalid channel number
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 连接状态
        /// connection state
        /// </summary>
        public EM_CAMERA_STATE_TYPE emConnectionState;
        /// <summary>
        /// 保留字节
        /// byte reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] szReserved;
    }

    /// <summary>
    /// QueryDevInfo 接口 NET_QUERY_GET_CAMERA_STATE 命令出参
    /// </summary>
    public struct NET_OUT_GET_CAMERA_STATEINFO
    {
        public uint dwSize;
        /// <summary>
        /// 查询到的摄像机通道状态有效个数,由sdk返回
        /// valid number of camera channel state, returned by sdk
        /// </summary>
        public int nValidNum;
        /// <summary>
        /// pCameraStateInfo 数组最大个数,由用户填写
        /// max number of array, filled in by user
        /// </summary>
        public int nMaxNum;
        /// <summary>
        /// 摄像机通道信息数组,由用户分配,大小为sizeof(NET_CAMERA_STATE_INFO)*nMaxNum
        /// camera channel info array, distributed by user,apply to sizeof(NET_CAMERA_STATE_INFO)*nMaxNum
        /// </summary>
        public IntPtr pCameraStateInfo;
    }

    /// <summary>
    /// QueryDevInfo, SYSTEM_INFO input param
    /// QueryDevInfo接口 SYSTEM_INFO命令入参
    /// </summary>
    public struct NET_IN_SYSTEM_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// MCU software version
    /// 单片机软件版本号
    /// </summary>
    public struct NET_STRING_32_MCU_Version
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szMCUVersion;
    }

    /// <summary>
    /// QueryDevInfo, SYSTEM_INFO output param
    /// QueryDevInfo接口 SYSTEM_INFO命令出参
    /// </summary>
    public struct NET_OUT_SYSTEM_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// whether system has RTC(for recording system time),TRUE:Yes,FALSE:No
        /// 是否有RTC芯片(记录系统时间用)默认TRUE,表示有RTC
        /// </summary>
        public bool bHasRTC;
        /// <summary>
        /// MCU number of return
        /// 返回的单片机个数
        /// </summary>
        public int nRetMCUNum;
        /// <summary>
        /// MCU software version
        /// 单片机软件版本号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_STRING_32_MCU_Version[] szMCUVersion;
    }

    /// <summary>
    /// 虚拟摄像头状态查询
    /// Virtual camera status search
    /// </summary>
    public struct NET_VIRTUALCAMERA_STATE_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Structure body size
        /// </summary>
        public uint nStructSize;
        /// <summary>
        /// 通道号
        /// Channel No.
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 连接状态
        /// Connection status
        /// </summary>
        public EM_CONNECT_STATE emConnectState;
        /// <summary>
        /// 此虚拟摄像头所连接的POE端口号,0表示不是POE连接
        /// The PoE port the virtual camera connected to. 0=It is not a PoE connection.
        /// </summary>
        public uint uiPOEPort;
        /// <summary>
        /// 设备名称
        /// Device name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceName;
        /// <summary>
        /// 设备类型
        /// Device type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceType;
        /// <summary>
        /// 系统版本
        /// system type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSystemType;
        /// <summary>
        /// 序列号
        /// serial no
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szSerialNo;
        /// <summary>
        /// 视频输入
        /// video input number
        /// </summary>
        public int nVideoInput;
        /// <summary>
        /// 音频输入
        /// audio input number
        /// </summary>
        public int nAudioInput;
        /// <summary>
        /// 外部报警
        /// alarm output number
        /// </summary>
        public int nAlarmOutput;
    }

    /// <summary>
    /// CLIENT_AttachCameraState()输入参数
    /// AttachCameraState()input param
    /// </summary>
    public struct NET_IN_CAMERASTATE
    {
        public uint dwSize;
        /// <summary>
        /// 观察的通道号,数组元素中,有一个是-1,则观察所有通道 由用户申请内存，大小为sizeof(int)*nChannels
        /// observation of the channel, if the value = -1,is boservate all channel, the space application by the user,apply to  sizeof(int)*nChannels
        /// </summary>
        public IntPtr pChannels;
        /// <summary>
        /// pChannels指针长度
        /// length of pChannels pointer
        /// </summary>
        public int nChannels;
        /// <summary>
        /// 状态回调函数
        /// state of callback function
        /// </summary>
        public fCameraStateCallBack cbCamera;
        /// <summary>
        /// 用户数据
        /// user's data
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// 委托fCameraStateCallBack的参数结构体
    /// </summary>
    public struct NET_CB_CAMERASTATE
    {
        public uint dwSize;
        /// <summary>
        /// 通道
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 连接状态
        /// state of connect
        /// </summary>
        public EM_CONNECT_STATE emConnectState;
    }

    public struct NET_OUT_CAMERASTATE
    {
        public uint dwSize;
        /// <summary>
        /// 物体ID,每个ID表示一个唯一的物体
        /// Object ID,each ID represent a unique object
        /// </summary>
        public int nObjectID;
    }

    /// <summary>
    /// GetSoftwareVersion 入参
    /// GetSoftwareVersion input parameter
    /// </summary>
    public struct NET_IN_GET_SOFTWAREVERSION_INFO
    {
        public uint dwSize;
    }
    /// <summary>
    /// GetSoftwareVersion 出参
    /// GetSoftwareVersion output parameter
    /// </summary>
    public struct NET_OUT_GET_SOFTWAREVERSION_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 软件版本
        /// software version
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVersion;
        /// <summary>
        /// 日期
        /// version build date,exact to the second
        /// </summary>
        public NET_TIME stuBuildDate;
        /// <summary>
        /// web软件信息
        /// web version info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szWebVersion;
        /// <summary>
        /// 安全基线版本
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSecurityVersion;
        /// <summary>
        /// 返回的外设数量
        /// </summary>
        public int nPeripheralNum;
        /// <summary>
        /// 设备的外设软件版本
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_PERIPHERAL_VERSIONS[] stuPeripheralVersions;
        /// <summary>
        /// 算法训练对外代号
        /// Algorithm training external code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szAlgorithmTrainingVersion;
        /// <summary>
        /// / 设备mobileWeb上云匹配版本号
        /// / Mobile Web cloud matching version number for devices
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szMobileWebVersion;
    }
    /// <summary>
    /// GetDeviceType 入参
    /// GetDeviceType input parameter
    /// </summary>
    public struct NET_IN_GET_DEVICETYPE_INFO
    {
        public uint dwSize;
    }

    /// <summary>
    /// GetDeviceType 出参
    /// GetDeviceType output parameter
    /// </summary>
    public struct NET_OUT_GET_DEVICETYPE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 设备类型,该字段被废弃
        /// Device Types
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szType;
        /// <summary>
        /// 设备类型, 扩展设备类型建议使用此字段
        /// Device Types
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szTypeEx;
    }

    /// <summary>
    /// SDK全局日志打印信息
    /// SDK global log print
    /// </summary>
    public struct NET_LOG_SET_PRINT_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 是否重设日志路径
        /// reset log path
        /// </summary>
        public int bSetFilePath;
        /// <summary>
        /// 日志路径(默认"./sdk_log/sdk_log.log")
        /// log path(default"./sdk_log/sdk_log.log")
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szLogFilePath;
        /// <summary>
        /// 是否重设日志文件大小
        /// reset log size
        /// </summary>
        public int bSetFileSize;
        /// <summary>
        /// 每个日志文件的大小(默认大小10240), 单位:比特
        /// each log file size(default size 10240), unit:bit
        /// </summary>
        public uint nFileSize;
        /// <summary>
        /// 是否重设日志文件个数
        /// reset log file number
        /// </summary>
        public int bSetFileNum;
        /// <summary>
        /// 绕接日志文件个数(默认大小10)
        /// log file quantity(default size 10)
        /// </summary>
        public uint nFileNum;
        /// <summary>
        /// 是否重设日志打印输出策略
        /// reset log print strategy
        /// </summary>
        public int bSetPrintStrategy;
        /// <summary>
        /// 日志输出策略, 0:输出到文件(默认); 1:输出到窗口
        /// log out strategy, 0: output to file(defualt); 1:output to window
        /// </summary>
        public uint nPrintStrategy;
        /// <summary>
        /// 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// 日志回调，需要将sdk日志回调出来时设置，默认为NULL
        /// log callback, (default NULL)
        /// </summary>
        public fSDKLogCallBack cbSDKLogCallBack;
        /// <summary>
        /// 用户数据
        /// UserData
        /// </summary>
        public IntPtr dwUser;
    }

    //CLIENT_Attendance_GetFingerRecord 入参
    public struct NET_CTRL_IN_FINGERPRINT_GET
    {
        public uint dwSize;
        public int nFingerPrintID;							//编号
    }

    //CLIENT_Attendance_GetFingerRecord 出参
    public struct NET_CTRL_OUT_FINGERPRINT_GET
    {
        public uint dwSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;			// 所属用户的用户ID
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFingerPrintName; // 名称
        public int nFingerPrintID;							// ID
        public int nRetLength;								// 实际返回的二进制数据长度
        public int nMaxFingerDataLength;					// 二进制数据的最大长度
        public IntPtr szFingerPrintInfo;						// 数据
    }

    //CLIENT_Attendance_RemoveFingerRecord 入参(remove) 
    public struct NET_CTRL_IN_FINGERPRINT_REMOVE
    {
        public uint dwSize;
        public int nFingerPrintID;							//编号
    }

    //CLIENT_Attendance_RemoveFingerRecord 出参
    public struct NET_CTRL_OUT_FINGERPRINT_REMOVE
    {
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_ControlDevice interface DH_CTRL_START_PLAYAUDIO Order Parameter
    /// CLIENT_ControlDevice接口的 DH_CTRL_START_PLAYAUDIO 命令参数
    /// </summary>
    public struct NET_CTRL_START_PLAYAUDIO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// audio file path
        /// 音频文件路径
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szAudioPath;
    }

    // 指息操作类型
    public enum EM_ACCESS_CTL_FINGERPRINT_SERVICE
    {
        INSERT = 0,                               // 添加, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_INSERT
        GET,                                      // 获取, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_GET , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_GET
        UPDATE,                                   // 更新, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_UPDATE
        REMOVE,                                   // 删除, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_REMOVE
        CLEAR,                                    // 清空, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_CLEAR , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_CLEAR
    }

    // 信息
    public struct NET_ACCESS_FINGERPRINT_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;	                                    // 用户ID
        public int nPacketLen;                                      // 单个数据包长度
        public int nPacketNum;                                      // 数据包个数
        public IntPtr szFingerPrintInfo;                            // 数据(数据总长度即nPacketLen*nPacketNum),用户分配释放内存
        public int nDuressIndex;                                    // 胁迫序号,取值范围[1,nPacketNum] 非法取值的话，该字段无效
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4096)]
        public byte[] byReserved;                                   // 保留字节
    }

    // 插入信息入参
    public struct NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT
    {
        public uint dwSize;                                     // 结构体大小
        public int nFpNum;                                      // 信息的数量
        public IntPtr pFingerPrintInfo;                         // 信息,用户分配释放内存 NET_ACCESS_FINGERPRINT_INFO
    }

    /// <summary>
    /// 插入信息信息出参
    /// output of insert information
    /// </summary>
    public struct NET_OUT_ACCESS_FINGERPRINT_SERVICE_INSERT
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 返回信息数量,不小于NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT 中 nFpNum
        /// return number ,greater than nFpNum
        /// </summary>
        public int nMaxRetNum;
        /// <summary>
        /// / 用户分配释放内存,插入失败时，对应插入的每一项的结果,返回个数同NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT 中nFpNum
        /// error code,retrun number is nFpNum NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT
        /// </summary>
        public IntPtr pFailCode;
        /// <summary>
        /// / 错误详情
        /// Error details
        /// </summary>
        public NET_ERROR_DETAIL stuDetail;
    }

    // 更新信息入参
    public struct NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE
    {
        public uint dwSize;                                     // 结构体大小
        public int nFpNum;                                      // 信息的数量
        public IntPtr pFingerPrintInfo;                         // 信息,用户分配释放内存 NET_ACCESS_FINGERPRINT_INFO
    }

    /// <summary>
    /// 更新信息出参
    /// output of update information
    /// </summary>
    public struct NET_OUT_ACCESS_FINGERPRINT_SERVICE_UPDATE
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 最大返回信息数量,不小于 NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE中nFpNum
        /// max return number,greater than nFpNum in NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE
        /// </summary>
        public int nMaxRetNum;
        /// <summary>
        /// / 用户分配释放内存,插入失败时，对应插入的每一项的结果,返回个数同NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE中nFpNum
        /// error code,return number is nFpNum NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE
        /// </summary>
        public IntPtr pFailCode;
        /// <summary>
        /// / 错误详情
        /// Error details
        /// </summary>
        public NET_ERROR_DETAIL stuDetail;
    }

    // 获取信息入参
    public struct NET_IN_ACCESS_FINGERPRINT_SERVICE_GET
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 用户ID
        /// user ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// 用户ID扩展，当前只支持32位有效值下发
        /// User ID extension, currently only 32-bit valid values are supported
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserIDEx;
        /// <summary>
        /// szUserIDEx 是否有效，为TRUE时，使用szUserIDEx字段
        /// Whether szUserIDEx is valid. If true, use the szUserIDEx field
        /// </summary>
        public bool bUserIDEx;
    }
    // 获取信息出参
    public struct NET_OUT_ACCESS_FINGERPRINT_SERVICE_GET
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 实际返回的个数
        /// return number of 
        /// </summary>
        public int nRetFingerPrintCount;
        /// <summary>
        /// 单个数据包长度
        /// single packet length
        /// </summary>
        public int nSinglePacketLength;
        /// <summary>
        /// 胁迫序号
        /// duress index
        /// </summary>
        public int nDuressIndex;
        /// <summary>
        /// 接受数据的缓存的最大长度
        /// max length of  date
        /// </summary>
        public int nMaxFingerDataLength;
        /// <summary>
        /// 实际返回的总的数据包的长度
        /// return length of  date
        /// </summary>
        public int nRetFingerDataLength;
        /// <summary>
        /// 用户分配释放内存,数据
        ///  date
        /// </summary>
        public IntPtr pbyFingerData;
        /// <summary>
        /// 更新时间,UTC时间
        /// Info UpdateTime,UTC time
        /// </summary>
        public NET_TIME stuUpdateTime;
        /// <summary>
        /// / 指纹名称数组，指纹名称个数和指纹包个数nRetFingerPrintCount一致
        /// / Fingerprint name array, the number of fingerprint names is consistent with the number of fingerprint packages, ReytFingerPrintCount
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3 * 32)]
        public string szFingerPrintName;
    }

    // 删除用户信息入参
    public struct NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 删除的用户数量
        /// remove number
        /// </summary>
        public int nUserNum;
        /// <summary>
        /// 用户ID
        /// user ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_STRING_32_USER_ID[] szUserID;
        /// <summary>
        /// 用户ID扩展，当前只支持32位有效值下发
        /// User ID extension, currently only 32-bit valid values are supported
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100 * 128)]
        public string szUserIDEx;
        /// <summary>
        /// szUserIDEx 是否有效，为TRUE时，使用szUserIDEx字段
        /// Whether szUserIDEx is valid. If true, use the szUserIDEx field
        /// </summary>
        public bool bUserIDEx;
    }

    public struct NET_USERID
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szUserID;
    }

    // 删除用户信息出参
    public struct NET_OUT_ACCESS_FINGERPRINT_SERVICE_REMOVE
    {
        public uint dwSize;                                     // 结构体大小
        public int nMaxRetNum;                                 // 最大返回数量,不小于 NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE中nUserNum
        public IntPtr pFailCode;                                  // 用户分配释放内存,删除失败时，对应插入的每一项的结果,返回个数同NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE中nUserNum 对应的错误参考EM_FAILCODE
    }

    // 清除所有信息入参
    public struct NET_IN_ACCESS_FINGERPRINT_SERVICE_CLEAR
    {
        public uint dwSize;                                         // 结构体大小
    }

    // 清除所有信息出参
    public struct NET_OUT_ACCESS_FINGERPRINT_SERVICE_CLEAR
    {
        public uint dwSize;                                         // 结构体大小
    }

    // 操作错误码
    public enum EM_FAILCODE
    {
        NOERROR,                                                // 没有错误
        UNKNOWN,                                                // 未知错误
        INVALID_PARAM,                                          // 参数错误
        INVALID_PASSWORD,                                       // 无效密码
        INVALID_FP,                                             // 无效数据
        INVALID_FACE,                                           // 无效人脸数据
        INVALID_CARD,                                           // 无效卡数据
        INVALID_USER,                                           // 无效人数据
        FAILED_GET_SUBSERVICE,                                  // 能力集子服务获取失败
        FAILED_GET_METHOD,                                      // 获取组件的方法集失败
        FAILED_GET_SUBCAPS,                                     // 获取资源实体能力集失败
        ERROR_INSERT_LIMIT,                                     // 已达插入上限
        ERROR_MAX_INSERT_RATE,                                  // 已达最大插入速度
        FAILED_ERASE_FP,										// 清除数据失败
        FAILED_ERASE_FACE,										// 清除人脸数据失败
        FAILED_ERASE_CARD,										// 清除卡数据失败
        NO_RECORD,												// 没有记录
        NOMORE_RECORD,											// 查找到最后，没有更多记录
        RECORD_ALREADY_EXISTS,									// 下发卡或时，数据重复
        MAX_FP_PERUSER,											// 超过个人最大记录数
        MAX_CARD_PERUSER,										// 超过个人最大卡片记录数
        EXCEED_MAX_PHOTOSIZE,                                   // 超出最大照片大小
        INVALID_USERID,                                         // 用户ID无效（未找到客户）
        EXTRACTFEATURE_FAIL,                                    // 提取目标特征失败
        PHOTO_EXIST,                                            // 人脸照片已存在
        PHOTO_OVERFLOW,                                         // 超出最大人脸照片数
        INVALID_PHOTO_FORMAT,                                   // 照片格式无效
        EXCEED_ADMINISTRATOR_LIMIT,                             // 超出管理员人数限制
        FACE_FEATURE_ALREADY_EXIST,                            /// 特征已存在
        FINGERPRINT_EXIST,                                     /// 信息已存在
        CITIZENID_EXIST,                                       /// 证件号已存在
        NORMAL_USER_NOTSUPPORT,                                /// 不支持普通用户下发
        NO_FACE_DETECTED,                                       /// 图片中检测到0个目标
        MULTI_FACE_DETECTED,                                    /// 图片中检测到多个目标，无法返回特征
        PICTURE_DECODING_ERROR,                                 /// 图片解码错误
        LOW_PICTURE_QUALITY,                                    /// 图片质量太低
        NOT_RECOMMENDED,                                        /// 结果不推荐使用，比如：对外国人，特征提取成功，但算法支持不好，容易造成误识别
        FACE_ANGLE_OVER_THRESHOLDS,                             /// 角度超过配置阈值
        FACE_RADIO_EXCEEDS_RANGE,                               /// 占比超出范围，算法建议占比:不要超过2/3;不要小于1/3
        FACE_OVER_EXPOSED,                                      /// 过爆
        FACE_UNDER_EXPOSED,                                     /// 欠爆
        BRIGHTNESS_IMBALANCE,                                   /// 亮度不均衡 ,用于判断阴阳脸
        FACE_LOWER_CONFIDENCE,                                  /// 置信度低
        FACE_LOW_ALIGN,                                         /// 对齐分数低
        FRAGMENTARY_FACE_DETECTED,                              /// 存在遮挡、残缺不全
        PUPIL_DISTANCE_NOT_ENOUGH,                              /// 瞳距小于阈值
        FACE_DATA_DOWNLOAD_FAILED,                              /// 数据下载失败
        FACE_FFE_FAILED,                                        /// 可检测，但特征值提取失败（算法场景）
        PHOTO_FEATURE_FAILED_FOR_FA,                            /// 照片因口罩，帽子，墨镜等属性不符合而提取特征值错误
        FACE_DATA_PHOTO_INCOMPLETE,                             /// 照片不完整
        DATABASE_ERROR_INSERT_OVERFLOW,                         /// 数据库插入越上限
        CARD_NOT_EXIST,                                         /// 卡号不存在
        USER_EXIST,                                             /// User已存在
        CARD_NUM_EXIST,                                         /// 卡号已存在
        FINGERPRINT_DOWNLOAD_FAIL,                              /// 信息通过URL下载方式下载失败
        ACCOUNT_IN_USE,                                         /// 账户登录中
        IRIS_INFO_NOT_EXISTED,                                  /// 更新用户眼睛信息时,用户不存在眼睛信息
        INVALID_IRIS_DATA,                                      /// 下发的眼睛信息数据格式、特征值大小错误
        IRIS_ALREADY_EXIST,                                     /// 眼睛信息已存在
        ERASE_IRIS_FAILED,                                      /// 眼睛信息信息删除失败
        EXCEED_MAX_IRIS_GROUP_COUNT_PER_USER,                   /// 超出个人所支持的眼睛信息组数量，两个眼睛(左右眼)为一组
        EXCEED_MAX_IRIS_COUNT_PER_GROUP,                        /// 超出个人单组所能记录的最大数量
                                                                /// <summary>
                                                                /// 特征值长度错误
                                                                /// Eigenvalue length error
                                                                /// </summary>
        FEATURE_SIZE_ERROR,
        /// <summary>
        /// 门处于常开状态
        /// The door is in a normally open state
        /// </summary>
        DOOR_IN_NORMALLY_OPEN_STATUS,
        /// <summary>
        /// 门处于常闭状态
        /// The door is in a normally closed state
        /// </summary>
        DOOR_IN_NORMALLY_CLOSED_STATUS,
        /// <summary>
        /// 门处于互锁状态
        /// The door is in an interlocking state
        /// </summary>
        DOOR_IN_INTERLOCK_STATUS,
        /// <summary>
        /// 数据不允许编辑
        /// Data not allowed for editing
        /// </summary>
        FAILCODE_DO_NOT_EDIT,
        /// <summary>
        /// 数据被绑定
        /// Data bound
        /// </summary>
        FAILCODE_BINDING,
    }

    // 折线的端点信息
    public struct NET_CFG_POLYLINE
    {
        public int nX; //0~8191
        public int nY;
    };

    // 云台联动类型
    public enum EM_CFG_LINK_TYPE
    {
        LINK_TYPE_NONE,                                 // 无联动
        LINK_TYPE_PRESET,                               // 联动预置点
        LINK_TYPE_TOUR,                                 // 联动巡航
        LINK_TYPE_PATTERN,                              // 联动轨迹
    }

    /// <summary>
    /// 联动云台信息
    /// Linkage PTZ information
    /// </summary>
    public struct NET_CFG_PTZ_LINK
    {
        /// <summary>
        /// 联动类型
        /// Linkage type
        /// </summary>
        public EM_PTZ_LINK_TYPE emType;
        /// <summary>
        /// 联动取值分别对应预置点号，巡航号等等
        /// The linkage value corresponds to the preset number,cruise number,and so on.
        /// </summary>
        public int nValue;
    }

    // 联动云台信息扩展
    public struct NET_CFG_PTZ_LINK_EX
    {
        public EM_CFG_LINK_TYPE emType;               // 联动类型 
        public int nParam1;            // 联动参数1
        public int nParam2;            // 联动参数2
        public int nParam3;            // 联动参数3
        public int nChannelID;         // 所联动云台通道
    }

    public struct NET_CFG_SIZE
    {
        public float nWidth;       // 宽或面积
        public float nHeight;      // 高
    }

    /// <summary>
    /// 事件标题内容结构体
    /// Event title content structure
    /// </summary>
    public struct NET_CFG_EVENT_TITLE
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szText;
        /// <summary>
        /// 标题左上角坐标, 采用0-8191相对坐标系
        /// the upper left corner of the title, use 0-8191 relative coordinate system
        /// </summary>
        public NET_POINT stuPoint;
        /// <summary>
        /// 标题的宽度和高度,采用0-8191相对坐标系，某项或者两项为0表示按照字体自适应宽高
        /// The width and height of the title,use 0-8191 relative coordinate system,one or two of them are 0 in accordance with the font adaptive width and height
        /// </summary>
        public NET_CFG_SIZE stuSize;
        /// <summary>
        /// 前景颜色
        /// Foreground color
        /// </summary>
        public NET_COLOR_RGBA stuFrontColor;
        /// <summary>
        /// 背景颜色
        /// Background color
        /// </summary>
        public NET_COLOR_RGBA stuBackColor;
    }

    // 事件标题内容结构体 new
    public struct NET_CFG_EVENT_TITLE_NEW
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szText;
        /// <summary>
        /// 标题左上角坐标, 采用0-8191相对坐标系
        /// Title on the upper left corner coordinates, using the 0-8191 to sitting
        /// </summary>
        public NET_CFG_POLYGON stuPoint;
        /// <summary>
        /// 标题的宽度和高度,采用0-8191相对坐标系，某项或者两项为0表示按照字体自适应宽高
        /// The height and width of title, using 0-8191 relative coordinnate system, the item or two adaptive width 0 said according to the font
        /// </summary>
        public NET_CFG_SIZE stuSize;
        /// <summary>
        /// 前景颜色
        /// Front color
        /// </summary>
        public NET_CFG_RGBA stuFrontColor;
        /// <summary>
        /// 背景颜色
        /// Back color
        /// </summary>
        public NET_CFG_RGBA stuBackColor;
    }

    /// <summary>
    /// 尺寸
    /// Dimensions
    /// </summary>
    public struct NET_SIZE
    {
        /// <summary>
        /// 宽度
        /// Width
        /// </summary>
        public int nWidth;
        /// <summary>
        /// 高度
        /// Height
        /// </summary>
        public int nHeight;
    }

    // 邮件附件类型
    public enum EM_CFG_ATTACHMENT_TYPE
    {
        PIC,                            // 图片附件
        VIDEO,                          // 视频附件
        NUM,                            // 附件类型总数
    }

    /// <summary>
    /// 邮件详细内容
    /// Mail details
    /// </summary>
    public struct NET_CFG_MAIL_DETAIL
    {
        /// <summary>
        /// 附件类型
        /// Attachments type
        /// </summary>
        public EM_CFG_ATTACHMENT_TYPE emAttachType;
        /// <summary>
        /// 文件大小上限，单位kB
        /// File cap size,unit:kB
        /// </summary>
        public int nMaxSize;
        /// <summary>
        /// 最大录像时间长度，单位秒，对video有效
        /// Maximum recording time length,unit:s,valid for video
        /// </summary>
        public int nMaxTimeLength;
    }

    /// <summary>
    /// 分割模式
    /// Split mode
    /// </summary>
    public enum EM_CFG_SPLITMODE
    {
        /// <summary>
        /// 1画面
        /// 1-window
        /// </summary>
        EM_A_SPLIT_1 = 1,
        /// <summary>
        /// 2画面
        /// 2-window
        /// </summary>
        EM_A_SPLIT_2 = 2,
        /// <summary>
        /// 4画面
        /// 4-window
        /// </summary>
        EM_A_SPLIT_4 = 4,
        /// <summary>
        /// 5画面
        /// 5-window
        /// </summary>
        EM_A_SPLIT_5 = 5,
        /// <summary>
        /// 6画面
        /// 6-window
        /// </summary>
        EM_A_SPLIT_6 = 6,
        /// <summary>
        /// 8画面
        /// 8-window
        /// </summary>
        EM_A_SPLIT_8 = 8,
        /// <summary>
        /// 9画面
        /// 9-window
        /// </summary>
        EM_A_SPLIT_9 = 9,
        /// <summary>
        /// 12画面
        /// 12-window
        /// </summary>
        EM_A_SPLIT_12 = 12,
        /// <summary>
        /// 16画面
        /// 16-window
        /// </summary>
        EM_A_SPLIT_16 = 16,
        /// <summary>
        /// 20画面
        /// 20-window
        /// </summary>
        EM_A_SPLIT_20 = 20,
        /// <summary>
        /// 25画面
        /// 25-window
        /// </summary>
        EM_A_SPLIT_25 = 25,
        /// <summary>
        /// 36画面
        /// 36-window
        /// </summary>
        EM_A_SPLIT_36 = 36,
        /// <summary>
        /// 64画面
        /// 64-window
        /// </summary>
        EM_A_SPLIT_64 = 64,
        /// <summary>
        /// 144画面
        /// 144-window
        /// </summary>
        EM_A_SPLIT_144 = 144,
        /// <summary>
        /// 画中画模式, 1个全屏大画面+1个小画面窗口
        /// PIP mode.1-full screen+1-small window
        /// </summary>
        EM_A_PIP_1 = 1001,
        /// <summary>
        /// 画中画模式, 1个全屏大画面+3个小画面窗口
        /// PIP mode.1-full screen+3-small window
        /// </summary>
        EM_A_PIP_3 = 1003,
        /// <summary>
        /// 自由开窗模式,可以自由创建、关闭窗口,自由设置窗口位置和Z轴次序
        /// free open window mode,are free to create,close, window position related to the z axis
        /// </summary>
        EM_A_SPLIT_FREE = 2000,
        /// <summary>
        /// 融合屏成员1分割
        /// integration of a split screen
        /// </summary>
        EM_A_COMPOSITE_SPLIT_1 = 3001,
        /// <summary>
        /// 融合屏成员4分割
        /// fusion of four split screen
        /// </summary>
        EM_A_COMPOSITE_SPLIT_4 = 3004,
        /// <summary>
        /// 3画面
        /// 3-window
        /// </summary>
        EM_A_SPLIT_3 = 10,
        /// <summary>
        /// 3画面倒品
        /// 3-window(bottom)
        /// </summary>
        EM_A_SPLIT_3B = 11,
        /// <summary>
        /// 4个画面, 一个大画面在左边，3个小画面在右边排成一列
        /// 4-window, 1 big on the left, 3 samll on the right in a row
        /// </summary>
        EM_A_SPLIT_4A = 4001,
    }

    /// <summary>
    /// 轮巡联动配置
    /// Tour link configuration
    /// </summary>
    public struct NET_CFG_TOURLINK
    {
        /// <summary>
        /// 轮巡使能
        /// Polling enabled
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 轮巡时的分割模式
        /// Split mode when polling
        /// </summary>
        public EM_CFG_SPLITMODE emSplitMode;
        /// <summary>
        /// 轮巡通道号列表
        /// Polling the list of channel numbers
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nChannels;
        /// <summary>
        /// 轮巡通道数量
        /// Numbers of polling channels
        /// </summary>
        public int nChannelCount;
    }

    // 门禁操作类型
    public enum EM_CFG_ACCESSCONTROLTYPE
    {
        /// <summary>
        /// 不做操作
        /// Not for operation
        /// </summary>
        NET_EM_CFG_ACCESSCONTROLTYPE_NULL = 0,
        /// <summary>
        /// 自动
        /// Automaitc
        /// </summary>
        NET_EM_CFG_ACCESSCONTROLTYPE_AUTO,
        /// <summary>
        /// 开门
        /// Open the door
        /// </summary>
        NET_EM_CFG_ACCESSCONTROLTYPE_OPEN,
        /// <summary>
        /// 关门
        /// Close the door
        /// </summary>
        NET_EM_CFG_ACCESSCONTROLTYPE_CLOSE,
        /// <summary>
        /// 永远开启
        /// Always open
        /// </summary>
        NET_EM_CFG_ACCESSCONTROLTYPE_OPENALWAYS,
        /// <summary>
        /// 永远关闭
        /// Always close
        /// </summary>
        NET_EM_CFG_ACCESSCONTROLTYPE_CLOSEALWAYS,
    };

    // 语音呼叫发起方
    public enum EM_CALLER_TYPE
    {
        DEVICE = 0,                               // 设备发起
    };

    // 呼叫协议
    public enum EM_CALLER_PROTOCOL_TYPE
    {
        CELLULAR = 0,                    // 手机方式
    };

    /// <summary>
    /// 语音呼叫联动信息
    /// Voice call linkage information
    /// </summary>
    public struct NET_CFG_TALKBACK_INFO
    {
        /// <summary>
        /// 语音呼叫使能
        /// Voice call enable
        /// </summary>
        public bool bCallEnable;
        /// <summary>
        /// 语音呼叫发起方
        /// Voice call Originator
        /// </summary>
        public EM_CALLER_TYPE emCallerType;
        /// <summary>
        /// 语音呼叫协议
        /// Voice call protocol
        /// </summary>
        public EM_CALLER_PROTOCOL_TYPE emCallerProtocol;
    }

    /// <summary>
    /// 电话报警中心联动信息
    /// Telephone Alarm Center Linkage Information
    /// </summary>
    public struct NET_CFG_PSTN_ALARM_SERVER
    {
        /// <summary>
        /// 是否上报至电话报警中心
        /// Whether to report to the telephone alarm center
        /// </summary>
        public bool bNeedReport;
        /// <summary>
        /// 电话报警服务器个数
        /// Number of telephone alarm servers
        /// </summary>
        public int nServerCount;
        /// <summary>
        /// 上报的报警中心下标
        /// Reported by the alarm center
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] byDestination;
    };

    /// <summary>
    /// Each video channel respond envent rule: pRuleBuf point to a buffer with multiple event rule info, each event rule info contain CFG_RULE_INFO + stucte of respond rule configuration struct
    /// 每个视频输入通道对应的所有事件规则：缓冲区pRuleBuf填充多个事件规则信息，每个事件规则信息内容为CFG_RULE_INFO+"事件类型对应的规则配置结构体"
    /// </summary>
    public struct NET_CFG_ANALYSERULES_INFO
    {
        /// <summary>
        /// 事件规则个数
        /// Video analyse rule number
        /// </summary>
        public int nRuleCount;
        /// <summary>
        /// 每个视频输入通道对应的视频分析事件规则配置缓冲
        /// Ach video input chennel's rule configuration buffer
        /// </summary>
        public IntPtr pRuleBuf;
        /// <summary>
        /// 缓冲大小
        /// Buffer size
        /// </summary>
        public int nRuleLen;
    }

    public struct NET_CFG_RULE_INFO
    {
        /// <summary>
        /// 事件类型，详见dhnetsdk.h中"智能分析事件类型"
        /// Event type,see "intelligent analyse event type" in dhnetsdk.h 
        /// </summary>
        public uint dwRuleType;
        /// <summary>
        /// 该事件类型规则配置结构体大小
        /// This envent type rule configuration struct size
        /// </summary>
        public int nRuleSize;
        /// <summary>
        /// 规则通用信息
        /// the common of the tule
        /// </summary>
        public NET_CFG_RULE_COMM_INFO stuRuleCommInfo;
    }

    /// <summary>
    /// 规则通用信息
    /// rule common info 
    /// </summary>
    public struct NET_CFG_RULE_COMM_INFO
    {
        /// <summary>
        /// 规则编号
        /// the ID of rule
        /// </summary>
        public byte bRuleId;
        /// <summary>
        /// 规则所属的场景
        /// the scene of  rule 
        /// </summary>
        public EM_SCENE_TYPE emClassType;
        /// <summary>
        /// 保留字节
        /// reserved field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] bReserved;
    }

    /// <summary>
    /// the scene type
    /// </summary>
    public enum EM_SCENE_TYPE
    {
        EM_SCENE_UNKNOW,            // 未知
        EM_SCENE_NORMAL,            // "Normal" 普通场景
        EM_SCENE_TRAFFIC,           // "Traffic" 交通场景
        EM_SCENE_TRAFFIC_PATROL,    // "TrafficPatrol" 交通巡视
        EM_SCENE_FACEDETECTION,     // "FaceDetection" 目标检测/目标识别
        EM_SCENE_ATM,               // "ATM"
        EM_SCENE_INDOOR,            // "Indoor"  室内行为分析，和普通规则相同，对室内场景的算法优化版
        EM_SCENE_FACERECOGNITION,   // "FaceRecognition" 目标识别
        EM_SCENE_PS,            // "JY
        EM_SCENE_NUMBERSTAT,        // "NumberStat" 客流量统计
        EM_SCENE_HEAT_MAP,          // "HeatMap" 热度图
        EM_SCENE_VIDEODIAGNOSIS,    // "VideoDiagnosis" 视频诊断
        EM_SCENE_VEHICLEANALYSE,    // "VehicleAnalyse" 车辆特征检测分析
        EM_SCENE_COURSERECORD,      // "CourseRecord" 自动录播
        EM_SCENE_VEHICLE,           // "Vehicle" 车载场景(车载行业用，不同于智能交通的Traffic)
        EM_SCENE_STANDUPDETECTION,  // "StandUpDetection" 起立检测
        EM_SCENE_GATE,              // "Gate" 卡口
        EM_SCENE_SDFACEDETECTION,   // "SDFaceDetect"  多预置点目标检测，配置一条规则但可以在不同预置点下生效
        EM_SCENE_HEAT_MAP_PLAN,     // "HeatMapPlan" 球机热度图计划
        EM_SCENE_NUMBERSTAT_PLAN,   // "NumberStatPlan"	球机客流量统计计划
        EM_SCENE_ATMFD,             // "ATMFD"金融目标检测，包括正常人脸、异常人脸、相邻人脸、头盔人脸等针对ATM场景特殊优化
        EM_SCENE_HIGHWAY,           // "Highway" 高速交通事件检测
        EM_SCENE_CITY,              // "City" 城市交通事件检测
        EM_SCENE_LETRACK,           // "LeTrack" 民用简易跟踪
        EM_SCENE_SCR,               // "SCR"打靶相机
        EM_SCENE_STEREO_VISION,     // "StereoVision"立体视觉(双目)
        EM_SCENE_HUMANDETECT,       // "HumanDetect"人体检测
        EM_SCENE_FACEANALYSIS,      // "FaceAnalysis" 人脸分析(同时支持目标检测、目标识别、人脸属性等综合型业务)
        EM_SCENE_XRAY_DETECTION,    // "XRayDetection" X光检测
        EM_SCENE_STEREO_NUMBER,     // "StereoNumber" 双目相机客流量统计
        EM_SCENE_CROWD_DISTRI_MAP,  // "CrowdDistriMap" 人群分布图
        EM_SCENE_OBJECTDETECT,      // "ObjectDetect" 目标检测(含人机非等物体)
        EM_SCENE_FACEATTRIBUTE,     // "FaceAttribute" IVSS目标检测
        EM_SCENE_FACECOMPARE,       // "FaceCompare" IVSS目标识别
        EM_SCENE_STEREO_BEHAVIOR,   // "StereoBehavior" 立体行为分析(典型场景ATM舱)
        EM_SCENE_INTELLICITYMANAGER,// "IntelliCityManager" 智慧城管
        EM_SCENE_PROTECTIVECABIN,   // "ProtectiveCabin" 防护舱（ATM舱内）
    }

    /// <summary>
    /// 时间表信息
    /// Schedule Information
    /// </summary>
    public struct NET_CFG_TIME_SCHEDULE
    {
        /// <summary>
        /// 是否支持节假日配置，默认为不支持，除非获取配置后返回为TRUE，不要使能假日配置
        /// Whether to support the holiday configuration, the default is not supported, unless the configuration is returned to TRUE, do not enable the holiday configuration
        /// </summary>
        public bool bEnableHoliday;
        /// <summary>
        /// 第一维前7个元素对应每周7天，第8个元素对应节假日，每天最多6个时间段
        /// The first 7 elements of the first dimension correspond to 7 days of a week, and the 8th element corresponds to holidays, with a maximum of 6 time periods per day
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8 * 6)]
        public NET_TSECT[] stuTimeSection;
    }

    /// <summary>
    /// 报警联动信息
    /// Alarm activation information
    /// </summary>
    public struct NET_CFG_ALARM_MSG_HANDLE_EX
    {
        public byte abRecordMask;
        public byte abRecordEnable;
        public byte abRecordLatch;
        public byte abAlarmOutMask;
        public byte abAlarmOutEn;
        public byte abAlarmOutLatch;
        public byte abExAlarmOutMask;
        public byte abExAlarmOutEn;
        public byte abPtzLinkEn;
        public byte abTourMask;
        public byte abTourEnable;
        public byte abSnapshot;
        public byte abSnapshotEn;
        public byte abSnapshotPeriod;
        public byte abSnapshotTimes;
        public byte abTipEnable;
        public byte abMailEnable;
        public byte abMessageEnable;
        public byte abBeepEnable;
        public byte abVoiceEnable;
        public byte abMatrixMask;
        public byte abMatrixEnable;
        public byte abEventLatch;
        public byte abLogEnable;
        public byte abDelay;
        public byte abVideoMessageEn;
        public byte abMMSEnable;
        public byte abMessageToNetEn;
        public byte abTourSplit;
        public byte abSnapshotTitleEn;
        public byte abChannelCount;
        public byte abAlarmOutCount;
        public byte abPtzLinkEx;
        public byte abSnapshotTitle;
        public byte abMailDetail;
        public byte abVideoTitleEn;
        public byte abVideoTitle;
        public byte abTour;
        public byte abDBKeys;
        public byte abJpegSummary;
        public byte abFlashEn;
        public byte abFlashLatch;
        /// <summary>
        /// 补齐
        /// 信息
        /// For align
        /// Information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// 设备的视频通道数
        /// The video channel of the device
        /// </summary>
        public int nChannelCount;
        /// <summary>
        /// 设备的报警输出个数
        /// The alarm output amount of the device
        /// </summary>
        public int nAlarmOutCount;
        /// <summary>
        /// 录像通道掩码(按位)
        /// Subnet mask of the recording channel(use the bit to represent)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwRecordMask;
        /// <summary>
        /// 录像使能
        /// Record enable
        /// </summary>
        public bool bRecordEnable;
        /// <summary>
        /// 录像延时时间(秒)
        /// Record delay time(s)
        /// </summary>
        public int nRecordLatch;
        /// <summary>
        /// 报警输出通道掩码
        /// Subnet mask of alarm output channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwAlarmOutMask;
        /// <summary>
        /// 报警输出使能
        /// Alarm output enable
        /// </summary>
        public bool bAlarmOutEn;
        /// <summary>
        /// 报警输出延时时间(秒)
        /// Alarm output delay time (s)
        /// </summary>
        public int nAlarmOutLatch;
        /// <summary>
        /// 扩展报警输出通道掩码
        /// Subnet mask of extension alarm output channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwExAlarmOutMask;
        /// <summary>
        /// 扩展报警输出使能
        /// Extension alarm output enable
        /// </summary>
        public bool bExAlarmOutEn;
        /// <summary>
        /// 云台联动项
        /// PTZ activation item
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_PTZ_LINK[] stuPtzLink;
        /// <summary>
        /// 云台联动使能
        /// PTZ activation enable
        /// </summary>
        public bool bPtzLinkEn;
        /// <summary>
        /// 轮询通道掩码
        /// Subnet mask of tour channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwTourMask;
        /// <summary>
        /// 轮询使能
        /// Tour enable
        /// </summary>
        public bool bTourEnable;
        /// <summary>
        /// 快照通道号掩码
        /// Snapshot channel subnet mask
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwSnapshot;
        /// <summary>
        /// 快照使能
        /// Snapshot enable
        /// </summary>
        public bool bSnapshotEn;
        /// <summary>
        /// 连拍周期(秒)
        /// Snapshot period(s)
        /// </summary>
        public int nSnapshotPeriod;
        /// <summary>
        /// 连拍次数
        /// Snapshot times
        /// </summary>
        public int nSnapshotTimes;
        /// <summary>
        /// 本地消息框提示
        /// Local prompt dialogue box
        /// </summary>
        public bool bTipEnable;
        /// <summary>
        /// 发送邮件，如果有图片，作为附件
        /// Send out emali. The image is sent out as the attachment.
        /// </summary>
        public bool bMailEnable;
        /// <summary>
        /// 上传到报警服务器
        /// Upload to the alarm server
        /// </summary>
        public bool bMessageEnable;
        /// <summary>
        /// 蜂鸣
        /// Buzzer
        /// </summary>
        public bool bBeepEnable;
        /// <summary>
        /// 语音提示
        /// Audio prompt
        /// </summary>
        public bool bVoiceEnable;
        /// <summary>
        /// 联动视频矩阵通道掩码
        /// Subnet mask of the activated video channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwMatrixMask;
        /// <summary>
        /// 联动视频矩阵
        /// Activate the video matrix
        /// </summary>
        public bool bMatrixEnable;
        /// <summary>
        /// 联动开始延时时间(秒)，0－15
        /// Activation delay time (s),0-15
        /// </summary>
        public int nEventLatch;
        /// <summary>
        /// 是否记录日志
        /// Record log or not
        /// </summary>
        public bool bLogEnable;
        /// <summary>
        /// 设置时先延时再生效，单位为秒
        /// Delay first and then becomes valid when set. Unit is second.
        /// </summary>
        public int nDelay;
        /// <summary>
        /// 叠加提示字幕到视频。叠加的字幕包括事件类型，通道号，秒计时。
        /// Overlay the prompt character to the video. The overlay character includes the event type, channel number. The unit is second.
        /// </summary>
        public bool bVideoMessageEn;
        /// <summary>
        /// 发送彩信使能
        /// Enable MMS
        /// </summary>
        public bool bMMSEnable;
        /// <summary>
        /// 消息上传给网络使能
        /// Send the message to the network enable
        /// </summary>
        public bool bMessageToNetEn;
        /// <summary>
        /// 轮巡时的分割模式 0: 1画面; 1: 8画面
        /// Tour split mod 0: 1tour; 1: 8tour
        /// </summary>
        public int nTourSplit;
        /// <summary>
        /// 是否叠加图片标题
        /// Enble osd
        /// </summary>
        public bool bSnapshotTitleEn;
        /// <summary>
        /// 云台配置数
        /// PTZ link configuration number
        /// </summary>
        public int nPtzLinkExNum;
        /// <summary>
        /// 扩展云台信息
        /// PTZ extend information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_PTZ_LINK_EX[] stuPtzLinkEx;
        /// <summary>
        /// 图片标题内容数
        /// Number of picture title
        /// </summary>
        public int nSnapTitleNum;
        /// <summary>
        /// 图片标题内容
        /// Picture title content
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_EVENT_TITLE_NEW[] stuSnapshotTitle;
        /// <summary>
        /// 邮件详细内容
        /// Mail detial
        /// </summary>
        public NET_CFG_MAIL_DETAIL stuMailDetail;
        /// <summary>
        /// 是否叠加视频标题，主要指主码流
        /// Whether overlay video title, mainly refers to the main stream
        /// </summary>
        public bool bVideoTitleEn;
        /// <summary>
        /// 视频标题内容数目
        /// Video title num
        /// </summary>
        public int nVideoTitleNum;
        /// <summary>
        /// 视频标题内容
        /// Video title
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_EVENT_TITLE_NEW[] stuVideoTitle;
        /// <summary>
        /// 轮询联动数目
        /// Tour num
        /// </summary>
        public int nTourNum;
        /// <summary>
        /// 轮询联动配置
        /// Tour configuration
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_TOURLINK[] stuTour;
        /// <summary>
        /// 指定数据库关键字的有效数
        /// Specify the db keyword on the number of effective
        /// </summary>
        public int nDBKeysNum;
        /// <summary>
        /// 指定事件详细信息里需要写到数据库的关键字
        /// The specify event detail information need write the BD keyword
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64 * 64)]
        public string szDBKeys;
        /// <summary>
        /// 叠加到JPEG图片的摘要信息
        /// The summary information of the jpeg image
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byJpegSummary;
        /// <summary>
        /// 是否使能补光灯
        /// Whether enable flash
        /// </summary>
        public bool bFlashEnable;
        /// <summary>
        /// 补光灯延时时间(秒),延时时间范围：[10,300]
        /// Flash delay time (s),the time range:[10,300]
        /// </summary>
        public int nFlashLatch;
        public byte abAudioFileName;
        public byte abAlarmBellEn;
        public byte abAccessControlEn;
        public byte abAccessControl;
        /// <summary>
        /// 联动语音文件绝对路径
        /// The Absolute Path to the Linkage Audio Files
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szAudioFileName;
        /// <summary>
        /// 警号使能
        /// Warning Signal Enable
        /// </summary>
        public bool bAlarmBellEn;
        /// <summary>
        /// 门禁使能
        /// Entrance Guard Enable
        /// </summary>
        public bool bAccessControlEn;
        /// <summary>
        /// 门禁组数
        /// Class Number of Entrance Guard
        /// </summary>
        public uint dwAccessControl;
        /// <summary>
        /// 门禁联动操作信息
        /// Entrance Guard Linkage Operation Information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public EM_CFG_ACCESSCONTROLTYPE[] emAccessControlType;
        public byte abTalkBack;
        /// <summary>
        /// 补齐
        /// For align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved2;
        /// <summary>
        /// 语音呼叫联动信息
        /// Voice Call Linkage Information
        /// </summary>
        public NET_CFG_TALKBACK_INFO stuTalkback;
        public byte abPSTNAlarmServer;
        /// <summary>
        /// 补齐
        /// For align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved3;
        /// <summary>
        /// 电话报警中心联动信息
        /// Telephone Alarm Center Linkage Information
        /// </summary>
        public NET_CFG_PSTN_ALARM_SERVER stuPSTNAlarmServer;
        /// <summary>
        /// 事件响应时间表
        /// Event Response Timetable
        /// </summary>
        public NET_CFG_TIME_SCHEDULE stuTimeSection;
        public byte abAlarmBellLatch;
        /// <summary>
        /// 补齐
        /// For align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved4;
        /// <summary>
        /// 警号输出延时时间(10-300秒)
        /// Police no. output delay time(10-300 s)
        /// </summary>
        public int nAlarmBellLatch;
        public byte abAudioPlayTimes;
        public byte abAudioLinkTime;
        /// <summary>
        /// 补齐
        /// For align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved5;
        /// <summary>
        /// 联动语音播放次数
        /// times of linkage voice play
        /// </summary>
        public uint nAudioPlayTimes;
        /// <summary>
        /// 联动语音播放的时间, 单位：秒
        /// time of linkage voice play, uint:s
        /// </summary>
        public uint nAudioLinkTime;
        /// <summary>
        /// nAlarmOutTime 是否有效
        /// is nAlarmOutTime valid
        /// </summary>
        public byte abAlarmOutTime;
        /// <summary>
        /// 报警输出持续时间,单位秒, 如果无此字段，按设备原来的方式实现
        /// alarm timeout,unit:second
        /// </summary>
        public int nAlarmOutTime;
        /// <summary>
        /// nBeepTime 是否有效
        /// is nBeepTime valid
        /// </summary>
        public byte abBeepTime;
        /// <summary>
        /// 蜂鸣时长，单位秒，最大值为3600，0代表持续蜂鸣
        /// beep time,unit:second,max value is 3600,0 means beep continuely
        /// </summary>
        public int nBeepTime;
    }

    /// <summary>
    /// 校准框信息
    /// Calibrate box info
    /// </summary>
    public struct NET_CFG_CALIBRATEBOX_INFO
    {
        /// <summary>
        /// 校准框中心点坐标(点的坐标归一化到[0,8191]区间)
        /// Calibrate box center point(0,8191)
        /// </summary>
        public NET_CFG_POLYGON stuCenterPoint;
        /// <summary>
        /// 相对基准校准框的比率(比如1表示基准框大小，0.5表示基准框大小的一半)
        /// The relative ratio of the calibrate box(such as 1 means the calibrate box,0.5 means the half size of the calibrate box)
        /// </summary>
        public float fRatio;
    }

    /// <summary>
    /// 物体过滤类型
    /// Object filer type
    /// </summary>
    public enum EM_CFG_OBJECT_FILTER_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknwon
        /// </summary>
        EM_CFG_OBJECT_FILTER_TYPE_UNKNOWN,
        /// <summary>
        /// 人
        /// Human
        /// </summary>
        EM_CFG_OBJECT_FILTER_TYPE_HUMAN,
        /// <summary>
        /// 车
        /// Vehicle
        /// </summary>
        EM_CFG_OBJECT_FILTER_TYPE_VEHICLE,

    }

    /// <summary>
    /// 尺寸过滤器
    /// Size filter
    /// </summary>
    public struct NET_A_CFG_SIZEFILTER_INFO
    {
        /// <summary>
        /// 校准框个数
        /// Calibration pane number
        /// </summary>
        public int nCalibrateBoxNum;
        /// <summary>
        /// 校准框(远端近端标定模式下有效)
        /// Calibration box (far and near-end calibration mode only)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEBOX_INFO[] stuCalibrateBoxs;
        /// <summary>
        /// 计量方式参数是否有效
        /// Measurement mode enabled or not
        /// </summary>
        public byte bMeasureModeEnable;
        /// <summary>
        /// 计量方式,0-像素，不需要远端、近端标定, 1-实际长度，单位：米, 2-远端近端标定后的像素
        /// Measurement mode, 0-pixel, far and near-end calibration not necessary, 1- real length, unit: meter, 2- pixel after far and near-end calibration
        /// </summary>
        public byte bMeasureMode;
        /// <summary>
        /// 过滤类型参数是否有效
        /// ByArea,ByRatio仅作兼容，使用独立的ByArea和ByRatio选项代替 2012/03/06
        /// Filter type enabled or not
        /// ByArea,ByRatio as compatible only, with independent ByArea and ByRatio alternatives as substitute 2012/03/06
        /// </summary>
        public byte bFilterTypeEnable;
        /// <summary>
        /// 过滤类型:0:"ByLength",1:"ByArea", 2"ByWidthHeight"
        /// Filter type:0:"ByLength",1:"ByArea", 2"ByWidthHeight"
        /// </summary>
        public byte bFilterType;
        /// <summary>
        /// 保留字段
        /// Reserved field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// 物体最小尺寸参数是否有效
        /// Min object size parameter is valid or not
        /// </summary>
        public byte bFilterMinSizeEnable;
        /// <summary>
        /// 物体最大尺寸参数是否有效
        /// Max object size parameter is valid or not
        /// </summary>
        public byte bFilterMaxSizeEnable;
        /// <summary>
        /// 物体最小尺寸 "ByLength"模式下表示宽高的尺寸，"ByArea"模式下宽表示面积，高无效(远端近端标定模式下表示基准框的宽高尺寸)。
        /// Min object size size of length ratio under "ByLength" Mode,size of area under "ByArea" mode, invalid height (size of standard box lengths under far and near-end calibration mode)
        /// </summary>
        public NET_CFG_SIZE stuFilterMinSize;
        /// <summary>
        /// 物体最大尺寸 "ByLength"模式下表示宽高的尺寸，"ByArea"模式下宽表示面积，高无效(远端近端标定模式下表示基准框的宽高尺寸)。
        /// Max object size size of length ratio under "ByLength" mode, size of area under "ByArea" mode", invalid height (size of standard box lengths under far and near-end calibration mode)
        /// </summary>
        public NET_CFG_SIZE stuFilterMaxSize;
        public byte abByArea;
        public byte abMinArea;
        public byte abMaxArea;
        public byte abMinAreaSize;
        public byte abMaxAreaSize;
        /// <summary>
        /// 是否按面积过滤 通过能力ComplexSizeFilter判断是否可用
        /// Filter by area or not. You can use ComplexSizeFilter to see it works or not.
        /// </summary>
        public byte bByArea;
        /// <summary>
        /// 补齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved1;
        /// <summary>
        /// 最小面积
        /// Min area
        /// </summary>
        public float nMinArea;
        /// <summary>
        /// 最大面积
        /// Max area
        /// </summary>
        public float nMaxArea;
        /// <summary>
        /// 最小面积矩形框尺寸 "计量方式"为"像素"时，表示最小面积矩形框的宽高尺寸；"计量方式"为"远端近端标定模式"时，表示基准框的最小宽高尺寸；
        /// Min area rectangle box. When "measurement method" is "pixel", it represents its sizes of lengths; when "measurement method" is "far and near-end calibration mode", it represents the min sizes of lengths of standard box
        /// </summary>
        public NET_CFG_SIZE stuMinAreaSize;
        /// <summary>
        /// 最大面积矩形框尺寸, 同上
        /// Max area rectangle box, same as above
        /// </summary>
        public NET_CFG_SIZE stuMaxAreaSize;
        public byte abByRatio;
        public byte abMinRatio;
        public byte abMaxRatio;
        public byte abMinRatioSize;
        public byte abMaxRatioSize;
        /// <summary>
        /// 是否按宽高比过滤 通过能力ComplexSizeFilter判断是否可用
        /// Filter by length ratio or not . You can use ComplexSizeFilter to see it works or not.
        /// </summary>
        public byte bByRatio;
        /// <summary>
        /// 补齐
        /// For align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public byte[] bReserved2;
        /// <summary>
        /// 最小宽高比
        /// Min W/H ratio
        /// </summary>
        public double dMinRatio;
        /// <summary>
        /// 最大宽高比
        /// Max W/H ratio
        /// </summary>
        public double dMaxRatio;
        /// <summary>
        /// 最小宽高比矩形框尺寸，最小宽高比对应矩形框的宽高尺寸。
        /// Min W/H ratio rectangle box size, min W/H ratio corresponding to sizes of lengths of rectangle box
        /// </summary>
        public NET_CFG_SIZE stuMinRatioSize;
        /// <summary>
        /// 最大宽高比矩形框尺寸，同上
        /// Max W/H ratio rectangle box size. See above information.
        /// </summary>
        public NET_CFG_SIZE stuMaxRatioSize;
        /// <summary>
        /// 面积校准框个数
        /// Area calibration box number
        /// </summary>
        public int nAreaCalibrateBoxNum;
        /// <summary>
        /// 面积校准框
        /// Area calibration box
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEBOX_INFO[] stuAreaCalibrateBoxs;
        /// <summary>
        /// 宽高校准框个数
        /// W/H calibration box number
        /// </summary>
        public int nRatioCalibrateBoxs;
        /// <summary>
        /// 宽高校准框
        /// W/H calibration box number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEBOX_INFO[] stuRatioCalibrateBoxs;
        /// <summary>
        /// 长宽过滤使能参数是否有效
        /// Valid filter by L/H ration parameter enabled or not
        /// </summary>
        public byte abBySize;
        /// <summary>
        /// 长宽过滤使能
        /// L/W filter enabled
        /// </summary>
        public byte bBySize;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public byte[] bReserved3;
    }

    /// <summary>
    /// 尺寸过滤器
    /// Size filter
    /// </summary>
    public struct NET_CFG_SIZEFILTER_INFO
    {
        /// <summary>
        /// 校准框个数
        /// Calibration pane number
        /// </summary>
        public int nCalibrateBoxNum;
        /// <summary>
        /// 校准框(远端近端标定模式下有效)
        /// Calibration box (far and near-end calibration mode only)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEBOX_INFO[] stuCalibrateBoxs;
        /// <summary>
        /// 计量方式参数是否有效
        ///  mode enabled or not
        /// </summary>
        public byte bMeasureModeEnable;
        /// <summary>
        /// 计量方式,0-像素，不需要远端、近端标定, 1-实际长度，单位：米, 2-远端近端标定后的像素
        ///  mode, 0-pixel, far and near-end calibration not necessary, 1- real length, unit: meter, 2- pixel after far and near-end calibration
        /// </summary>
        public byte bMeasureMode;
        /// <summary>
        /// 过滤类型参数是否有效
        /// ByArea,ByRatio仅作兼容，使用独立的ByArea和ByRatio选项代替 2012/03/06
        /// Filter type enabled or not
        /// ByArea,ByRatio as compatible only, with independent ByArea and ByRatio alternatives as substitute 2012/03/06
        /// </summary>
        public byte bFilterTypeEnable;
        /// <summary>
        /// 过滤类型:0:"ByLength",1:"ByArea", 2"ByWidthHeight"
        /// Filter type:0:"ByLength",1:"ByArea", 2"ByWidthHeight"
        /// </summary>
        public byte bFilterType;
        /// <summary>
        /// 物体最小尺寸参数是否有效
        /// Min object size parameter is valid or not
        /// </summary>
        public byte bFilterMinSizeEnable;
        /// <summary>
        /// 物体最大尺寸参数是否有效
        /// Max object size parameter is valid or not
        /// </summary>
        public byte bFilterMaxSizeEnable;
        public byte abByArea;
        public byte abMinArea;
        public byte abMaxArea;
        public byte abMinAreaSize;
        public byte abMaxAreaSize;
        /// <summary>
        /// 是否按面积过滤 通过能力ComplexSizeFilter判断是否可用
        /// Filter by area or not. You can use ComplexSizeFilter to see it works or not.
        /// </summary>
        public byte bByArea;
        /// <summary>
        /// 物体最小尺寸 "ByLength"模式下表示宽高的尺寸，"ByArea"模式下宽表示面积，高无效(远端近端标定模式下表示基准框的宽高尺寸)。
        /// Min object size size of length ratio under "ByLength" Mode,size of area under "ByArea" mode, invalid height (size of standard box lengths under far and near-end calibration mode)
        /// </summary>
        public NET_CFG_SIZE stuFilterMinSize;
        /// <summary>
        /// 物体最大尺寸 "ByLength"模式下表示宽高的尺寸，"ByArea"模式下宽表示面积，高无效(远端近端标定模式下表示基准框的宽高尺寸)。
        /// Max object size size of length ratio under "ByLength" mode, size of area under "ByArea" mode", invalid height (size of standard box lengths under far and near-end calibration mode)
        /// </summary>
        public NET_CFG_SIZE stuFilterMaxSize;
        /// <summary>
        /// 最小面积
        /// Min area
        /// </summary>
        public float nMinArea;
        /// <summary>
        /// 最大面积
        /// Max area
        /// </summary>
        public float nMaxArea;
        /// <summary>
        /// 最小面积矩形框尺寸 "计量方式"为"像素"时，表示最小面积矩形框的宽高尺寸；"计量方式"为"远端近端标定模式"时，表示基准框的最小宽高尺寸；
        /// Min area rectangle box. When " method" is "pixel", it represents its sizes of lengths; when " method" is "far and near-end calibration mode", it represents the min sizes of lengths of standard box
        /// </summary>
        public NET_CFG_SIZE stuMinAreaSize;
        /// <summary>
        /// 最大面积矩形框尺寸, 同上
        /// Max area rectangle box, same as above
        /// </summary>
        public NET_CFG_SIZE stuMaxAreaSize;
        public byte abByRatio;
        public byte abMinRatio;
        public byte abMaxRatio;
        public byte abMinRatioSize;
        public byte abMaxRatioSize;
        /// <summary>
        /// 是否按宽高比过滤 通过能力ComplexSizeFilter判断是否可用
        /// Filter by length ratio or not . You can use ComplexSizeFilter to see it works or not.
        /// </summary>
        public byte bByRatio;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved1;
        /// <summary>
        /// 最小宽高比
        /// Min W/H ratio
        /// </summary>
        public double dMinRatio;
        /// <summary>
        /// 最大宽高比
        /// Max W/H ratio
        /// </summary>
        public double dMaxRatio;
        /// <summary>
        /// 最小宽高比矩形框尺寸，最小宽高比对应矩形框的宽高尺寸。
        /// Min W/H ratio rectangle box size, min W/H ratio corresponding to sizes of lengths of rectangle box
        /// </summary>
        public NET_CFG_SIZE stuMinRatioSize;
        /// <summary>
        /// 最大宽高比矩形框尺寸，同上
        /// Max W/H ratio rectangle box size. See above information.
        /// </summary>
        public NET_CFG_SIZE stuMaxRatioSize;
        /// <summary>
        /// 面积校准框个数
        /// Area calibration box number
        /// </summary>
        public int nAreaCalibrateBoxNum;
        /// <summary>
        /// 面积校准框
        /// Area calibration box
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEBOX_INFO[] stuAreaCalibrateBoxs;
        /// <summary>
        /// 宽高校准框个数
        /// W/H calibration box number
        /// </summary>
        public int nRatioCalibrateBoxs;
        /// <summary>
        /// 宽高校准框
        /// W/H calibration box number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEBOX_INFO[] stuRatioCalibrateBoxs;
        /// <summary>
        /// 长宽过滤使能参数是否有效
        /// Valid filter by L/H ration parameter enabled or not
        /// </summary>
        public byte abBySize;
        /// <summary>
        /// 长宽过滤使能
        /// L/W filter enabled
        /// </summary>
        public byte bBySize;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 518)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 物体过滤器
    /// Object filter info
    /// </summary>
    public struct NET_CFG_OBJECT_FILTER_INFO
    {
        /// <summary>
        /// 物体过滤类型个数
        /// Number of object filer types
        /// </summary>
        public uint nObjectFilterTypeNum;
        /// <summary>
        /// 物体过滤类型
        /// Object filer types
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_CFG_OBJECT_FILTER_TYPE[] emObjectFilterType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 尺寸过滤器
    /// Size filter
    /// </summary>
    public struct NET_CFG_SIZEFILTER_INFO_EX
    {
        /// <summary>
        /// 校准框个数
        /// Calibration pane number
        /// </summary>
        public int nCalibrateBoxNum;
        /// <summary>
        /// 校准框(远端近端标定模式下有效)
        /// Calibration box (far and near-end calibration mode only)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEBOX_INFO[] stuCalibrateBoxs;
        /// <summary>
        /// 计量方式参数是否有效
        ///  mode enabled or not
        /// </summary>
        public byte bMeasureModeEnable;
        /// <summary>
        /// 计量方式,0-像素，不需要远端、近端标定, 1-实际长度，单位：米, 2-远端近端标定后的像素
        ///  mode, 0-pixel, far and near-end calibration not necessary, 1- real length, unit: meter, 2- pixel after far and near-end calibration
        /// </summary>
        public byte bMeasureMode;
        /// <summary>
        /// 过滤类型参数是否有效
        /// ByArea,ByRatio仅作兼容，使用独立的ByArea和ByRatio选项代替 2012/03/06
        /// Filter type enabled or not
        /// ByArea,ByRatio as compatible only, with independent ByArea and ByRatio alternatives as substitute 2012/03/06
        /// </summary>
        public byte bFilterTypeEnable;
        /// <summary>
        /// 过滤类型:0:"ByLength",1:"ByArea", 2"ByWidthHeight"
        /// Filter type:0:"ByLength",1:"ByArea", 2"ByWidthHeight"
        /// </summary>
        public byte bFilterType;
        /// <summary>
        /// 保留字段
        /// Reserved field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// 物体最小尺寸参数是否有效
        /// Min object size parameter is valid or not
        /// </summary>
        public byte bFilterMinSizeEnable;
        /// <summary>
        /// 物体最大尺寸参数是否有效
        /// Max object size parameter is valid or not
        /// </summary>
        public byte bFilterMaxSizeEnable;
        /// <summary>
        /// 物体最小尺寸 "ByLength"模式下表示宽高的尺寸，"ByArea"模式下宽表示面积，高无效(远端近端标定模式下表示基准框的宽高尺寸)。
        /// Min object size size of length ratio under "ByLength" Mode,size of area under "ByArea" mode, invalid height (size of standard box lengths under far and near-end calibration mode)
        /// </summary>
        public NET_CFG_SIZE stuFilterMinSize;
        /// <summary>
        /// 物体最大尺寸 "ByLength"模式下表示宽高的尺寸，"ByArea"模式下宽表示面积，高无效(远端近端标定模式下表示基准框的宽高尺寸)。
        /// Max object size size of length ratio under "ByLength" mode, size of area under "ByArea" mode", invalid height (size of standard box lengths under far and near-end calibration mode)
        /// </summary>
        public NET_CFG_SIZE stuFilterMaxSize;
        public byte abByArea;
        public byte abMinArea;
        public byte abMaxArea;
        public byte abMinAreaSize;
        public byte abMaxAreaSize;
        /// <summary>
        /// 是否按面积过滤 通过能力ComplexSizeFilter判断是否可用
        /// Filter by area or not. You can use ComplexSizeFilter to see it works or not.
        /// </summary>
        public byte bByArea;
        /// <summary>
        /// 补齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved1;
        /// <summary>
        /// 最小面积
        /// Min area
        /// </summary>
        public float nMinArea;
        /// <summary>
        /// 最大面积
        /// Max area
        /// </summary>
        public float nMaxArea;
        /// <summary>
        /// 最小面积矩形框尺寸 "计量方式"为"像素"时，表示最小面积矩形框的宽高尺寸；"计量方式"为"远端近端标定模式"时，表示基准框的最小宽高尺寸；
        /// Min area rectangle box. When " method" is "pixel", it represents its sizes of lengths; when " method" is "far and near-end calibration mode", it represents the min sizes of lengths of standard box
        /// </summary>
        public NET_CFG_SIZE stuMinAreaSize;
        /// <summary>
        /// 最大面积矩形框尺寸, 同上
        /// Max area rectangle box, same as above
        /// </summary>
        public NET_CFG_SIZE stuMaxAreaSize;
        public byte abByRatio;
        public byte abMinRatio;
        public byte abMaxRatio;
        public byte abMinRatioSize;
        public byte abMaxRatioSize;
        /// <summary>
        /// 是否按宽高比过滤 通过能力ComplexSizeFilter判断是否可用
        /// Filter by length ratio or not . You can use ComplexSizeFilter to see it works or not.
        /// </summary>
        public byte bByRatio;
        /// <summary>
        /// 补齐
        /// For align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public byte[] bReserved2;
        /// <summary>
        /// 最小宽高比
        /// Min W/H ratio
        /// </summary>
        public double dMinRatio;
        /// <summary>
        /// 最大宽高比
        /// Max W/H ratio
        /// </summary>
        public double dMaxRatio;
        /// <summary>
        /// 最小宽高比矩形框尺寸，最小宽高比对应矩形框的宽高尺寸。
        /// Min W/H ratio rectangle box size, min W/H ratio corresponding to sizes of lengths of rectangle box
        /// </summary>
        public NET_CFG_SIZE stuMinRatioSize;
        /// <summary>
        /// 最大宽高比矩形框尺寸，同上
        /// Max W/H ratio rectangle box size. See above information.
        /// </summary>
        public NET_CFG_SIZE stuMaxRatioSize;
        /// <summary>
        /// 面积校准框个数
        /// Area calibration box number
        /// </summary>
        public int nAreaCalibrateBoxNum;
        /// <summary>
        /// 面积校准框
        /// Area calibration box
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEBOX_INFO[] stuAreaCalibrateBoxs;
        /// <summary>
        /// 宽高校准框个数
        /// W/H calibration box number
        /// </summary>
        public int nRatioCalibrateBoxs;
        /// <summary>
        /// 宽高校准框
        /// W/H calibration box number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEBOX_INFO[] stuRatioCalibrateBoxs;
        /// <summary>
        /// 长宽过滤使能参数是否有效
        /// Valid filter by L/H ration parameter enabled or not
        /// </summary>
        public byte abBySize;
        /// <summary>
        /// 长宽过滤使能
        /// L/W filter enabled
        /// </summary>
        public byte bBySize;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public byte[] bReserved3;
    }

    /// <summary>
    /// 绝对时间信息
    /// Absolute time information
    /// </summary>
    public struct NET_ABSOLUTE_TIME_INFO
    {
        /// <summary>
        /// / 开始时间
        /// / Start Time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// / 结束时间
        /// / End Time
        /// </summary>
        public NET_TIME stuStopTime;
        /// <summary>
        /// / 绝对时间使能
        /// / Absolute time enablement
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 28)]
        public string szReserved;
    }

    // 视频分析事件规则配置
    // Video analyse rule configuration
    /// <summary>
    /// 事件类型 EVENT_IVS_CROSSLINEDETECTION (拌线入侵事件)对应的规则配置
    /// Rule type:EVENT_IVS_CROSSLINEDETECTION configuration
    /// </summary>
    public struct NET_CFG_CROSSLINE_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name,different rule mast have different name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 触发跟踪使能,仅对绊线，入侵规则有效
        /// Trigger tracking enabled, only the tripwire, intrusion rule is valid
        /// </summary>
        public byte bTrackEnable;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 检测方向:0:由左至右;1:由右至左;2:两者都可以
        /// Detect direction:0:lefttoright;1:righttoleft;2:both
        /// </summary>
        public int nDirection;
        /// <summary>
        /// 拌线入侵顶点数
        /// Detect line point number
        /// </summary>
        public int nDetectLinePoint;
        /// <summary>
        /// 拌线入侵
        /// Detect line
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stuDetectLine;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// stuTimeSection字段是否禁用，默认FALSE：不禁用，TRUE：禁用，用户控制
        /// stuTimeSection ,default FALSE:not unable,TRUE:unable,user control
        /// </summary>
        public bool bDisableTimeSection;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset Id 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// Size filter enable
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// Size filter info
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO_EX stuSizeFileter;
        /// <summary>
        /// 触发报警位置数
        /// Trigger possition number
        /// </summary>
        public int nTriggerPosition;
        /// <summary>
        /// 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
        /// Trigger possition,0-object out frame center, 1-object out frame left center, 2-object out frame top center, 3-object out frame right center, 4-object out frame bottom center
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] bTriggerPosition;
        /// <summary>
        /// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
        /// Track Duration,0 second:keep tracking,1~300se:track duration
        /// </summary>
        public int nTrackDuration;
        /// <summary>
        /// 检测的车辆子类型个数
        /// Vehicle sub type number
        /// </summary>
        public uint nVehicleSubTypeNum;
        /// <summary>
        /// 检测的车辆子类型列表
        /// Vehicle sub type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public EM_CFG_CATEGORY_TYPE[] emVehicleSubType;
        /// <summary>
        /// 是否开启目标属性识别,默认false
        /// Whether to turn on target attribute recognition, default value is false
        /// </summary>
        public bool bFeatureEnable;
        /// <summary>
        /// 前端视频分析联动
        /// Remote alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuRemoteEventHandler;
        /// <summary>
        /// 前端视频分析联动响应时间段
        /// Remote event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuRemoteTimeSection;
        /// <summary>
        /// stuRemoteTimeSection字段是否禁用, 默认FALSE：不禁用, TRUE：禁用, 用户控制
        /// Remote stuTimeSection ,default FALSE:not unable,TRUE:unable,user control
        /// </summary>
        public bool bDisableRemoteTimeSection;
        /// <summary>
        /// 物体过滤器是否有效, 即stuObjectFilter 是否有效
        /// Whether the object filter is effective, that is, whether the stuobjectfilter is effective
        /// </summary>
        public bool bObjectFilter;
        /// <summary>
        /// 物体过滤器信息
        /// Object filter info
        /// </summary>
        public NET_CFG_OBJECT_FILTER_INFO stuObjectFilter;
        /// <summary>
        /// / 绝对时间数组
        /// Absolute time array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public NET_ABSOLUTE_TIME_INFO[] stuAbsoluteTime;
        /// <summary>
        /// / 绝对时间数组信息有效个数
        /// The number of valid absolute time array information
        /// </summary>
        public uint nAbsoluteTimeNum;
        /// <summary>
        /// / 预留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 区域顶点信息
    /// Zone point info
    /// </summary>
    public struct NET_CFG_POLYGON
    {
        public int nX; //0~8191
        public int nY;
    }
    /// <summary>
    /// 报警类型
    /// Alarm type
    /// </summary>
    public enum EM_CFG_CROSSREGION_ALARMTYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_CFG_CROSSREGION_ALARMTYPE_UNKNOWN,
        /// <summary>
        /// 报警
        /// Alarm
        /// </summary>
        EM_CFG_CROSSREGION_ALARMTYPE_ALARM,
        /// <summary>
        /// 预警
        /// Warning
        /// </summary>
        EM_CFG_CROSSREGION_ALARMTYPE_WARNING,
        /// <summary>
        /// 屏蔽
        /// Shield
        /// </summary>
        EM_CFG_CROSSREGION_ALARMTYPE_SHIELD,
    }

    /// <summary>
    /// 事件类型EVENT_IVS_CROSSREGIONDETECTION(区域入侵事件)对应的规则配置
    /// Rule type:EVENT_IVS_CROSSREGIONDETECTION configuration
    /// </summary>
    public struct NET_CFG_CROSSREGION_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name,different rule mast have different name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 触发跟踪使能,仅对绊线，入侵规则有效
        /// Trigger tracking enabled, only the tripwire, intrusion rule is valid
        /// </summary>
        public byte bTrackEnable;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 检测方向:0:Enter;1:Leave;2:Both
        /// Detect direction:0:Enter;1:Leave;2:Both
        /// </summary>
        public int nDirection;
        /// <summary>
        /// 区域入侵顶点数
        /// Detect line point number
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 区域入侵
        /// Detect line
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// stuTimeSection字段是否禁用，默认FALSE：不禁用，TRUE：禁用，用户控制
        /// stuTimeSection ,default FALSE:not unable,TRUE:unable,user control
        /// </summary>
        public bool bDisableTimeSection;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset Id 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// Size filter enable
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// Size filter info
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO_EX stuSizeFileter;
        /// <summary>
        /// 检测动作数
        /// Action type number
        /// </summary>
        public int nActionType;
        /// <summary>
        /// 检测动作列表,0-出现 1-消失 2-在区域内 3-穿越区域
        /// Action type list,0-apaer 1-disapaer 2-in area 3-cross area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bActionType;
        /// <summary>
        /// 最小目标个数(当bActionType中包含"2-在区域内"时有效)
        /// The min object number(it will work when bActionType = 2 )
        /// </summary>
        public int nMinTargets;
        /// <summary>
        /// 最大目标个数(当bActionType中包含"2-在区域内"时有效)
        /// The max object number(it will work when bActionType = 2 )
        /// </summary>
        public int nMaxTargets;
        /// <summary>
        /// 最短持续时间， 单位秒(当bActionType中包含"2-在区域内"时有效)
        /// Min duration, s(it will work when bActionType = 2 )
        /// </summary>
        public int nMinDuration;
        /// <summary>
        /// 报告时间间隔， 单位秒(当bActionType中包含"2-在区域内"时有效)
        /// Report interval time, s(it will work when bActionType = 2 )
        /// </summary>
        public int nReportInterval;
        /// <summary>
        /// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
        /// the duration of track
        /// </summary>
        public int nTrackDuration;
        /// <summary>
        /// 检测的车辆子类型个数
        /// Vehicle subtype number
        /// </summary>
        public uint nVehicleSubTypeNum;
        /// <summary>
        /// 检测的车辆子类型列表
        /// Vehicle sub type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public EM_CFG_CATEGORY_TYPE[] emVehicleSubType;
        /// <summary>
        /// 是否开启目标属性识别,默认false
        /// Whether to turn on target attribute recognition, default value is false
        /// </summary>
        public bool bFeatureEnable;
        /// <summary>
        /// 前端视频分析联动
        /// Remote alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuRemoteEventHandler;
        /// <summary>
        /// 前端视频分析联动响应时间段
        /// Remote event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuRemoteTimeSection;
        /// <summary>
        /// stuRemoteTimeSection字段是否禁用, 默认FALSE：不禁用, TRUE：禁用, 用户控制
        /// Remote stuTimeSection ,default FALSE:not unable,TRUE:unable,user control
        /// </summary>
        public bool bDisableRemoteTimeSection;
        /// <summary>
        /// 物体过滤器是否有效, 即stuObjectFilter 是否有效
        /// Whether the object filter is effective, that is, whether the stuobjectfilter is effective
        /// </summary>
        public bool bObjectFilter;
        /// <summary>
        /// 物体过滤器信息
        /// Object filter info
        /// </summary>
        public NET_CFG_OBJECT_FILTER_INFO stuObjectFilter;
        /// <summary>
        /// 灵敏度，值越小灵敏度越低。取值1-10
        /// The smaller the sensitivity, the lower the sensitivity. Values 1-10
        /// </summary>
        public uint nSensitivity;
        /// <summary>
        /// 报警类型
        /// Alarm type
        /// </summary>
        public EM_CFG_CROSSREGION_ALARMTYPE emAlarmType;
        /// <summary>
        /// / 绝对时间数组
        /// Absolute time array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public NET_ABSOLUTE_TIME_INFO[] stuAbsoluteTime;
        /// <summary>
        /// / 绝对时间数组信息有效个数
        /// The number of valid absolute time array information
        /// </summary>
        public uint nAbsoluteTimeNum;
        /// <summary>
        /// / 预留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    public struct NET_CFG_TIME_SECTION_ARRAY
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_TIME_SECTION[] stuRemoteTimeSection;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_LEFTDETECTION(物品遗留事件)对应的规则配置
    /// Rule type:EVENT_IVS_LEFTDETECTION configuration
    /// </summary>
    public struct NET_CFG_LEFT_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name,different rule mast have different name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 触发跟踪使能,仅对绊线，入侵规则有效
        /// track enable
        /// </summary>
        public byte bTrackEnable;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 最短持续时间 单位：秒，0~65535
        /// Minimal duration, 0~65535(s)
        /// </summary>
        public int nMinDuration;
        /// <summary>
        /// 检测区域顶点数
        /// Detect region point number
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区域
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset Id 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 触发报警位置数
        /// Trigger possition number
        /// </summary>
        public int nTriggerPosition;
        /// <summary>
        /// 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
        /// Trigger possition,0-object out frame center, 1-object out frame left center, 2-object out frame top center, 3-object out frame right center, 4-object out frame bottom center
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] bTriggerPosition;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// Size filter enable
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// Size filter info
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO_EX stuSizeFileter;
        /// <summary>
        /// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
        /// the duration of track
        /// </summary>
        public int nTrackDuration;
        /// <summary>
        /// 报告时间间隔，单位：秒 0~600;等于0表示不重复报警, 默认值30
        /// ReportInterval
        /// </summary>
        public uint nReportInterval;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_TAKENAWAYDETECTION(物品搬移规则配置)对应的规则配置
    /// Rule type:EVENT_IVS_TAKENAWAYDETECTION configuration
    /// </summary>
    public struct NET_CFG_TAKENAWAYDETECTION_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name,different rule mast have different name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 触发跟踪使能
        /// track enable
        /// </summary>
        public byte bTrackEnable;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 最短持续时间 单位：秒，0~65535
        /// Min duration, s,0~65535
        /// </summary>
        public int nMinDuration;
        /// <summary>
        /// 检测区域顶点数
        /// Detect region point number
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区域
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset Id 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 触发报警位置数
        /// Trigger possition number
        /// </summary>
        public int nTriggerPosition;
        /// <summary>
        /// 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
        /// Trigger possition,0-object out frame center, 1-object out frame left center, 2-object out frame top center, 3-object out frame right center, 4-object out frame bottom center
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] bTriggerPosition;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// Size filter enable
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// Size filter info
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO_EX stuSizeFileter;
        /// <summary>
        /// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
        /// the duration of track
        /// </summary>
        public int nTrackDuration;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_VIDEOABNORMALDETECTION(视频异常)对应的规则配置
    /// Rule type EVENT_IVS_VIDEOABNORMALDETECTION configuration
    /// </summary>

    public struct NET_CFG_VIDEOABNORMALDETECTION_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name,different rule mast have different name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 灵敏度, 取值1-10，值越小灵敏度越低(只对检测类型视频遮挡，过亮，过暗，场景变化有效)
        /// Sensitivity, 1-10,the lower value the lower sensitivity)
        /// </summary>
        public byte bSensitivity;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset Id 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 检测类型数
        /// Detect type
        /// </summary>
        public int nDetectType;
        /// <summary>
        /// 检测类型,0-视频丢失, 1-视频遮挡, 2-画面冻结, 3-过亮, 4-过暗, 5-场景变化
        /// 6-条纹检测 , 7-噪声检测 , 8-偏色检测 , 9-视频模糊检测 , 10-对比度异常检测
        /// 11-视频运动 , 12-视频闪烁 , 13-视频颜色 , 14-虚焦检测 , 15-过曝检测, 16-场景巨变
        /// Detect type,0-video lost, 1-video blind, 2-video freeze, 3- too light, 4-too dark, 5-sence change
        /// 6-stripe detect, 7-noise detect, 8-color cast detect, 9-video blur detect, 10-constrast abnormal
        /// 11-video motion, 12-video flash , 13-video color , 14- , 15-over expose, 16-Scene change
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] bDetectType;
        /// <summary>
        /// 最短持续时间 单位：秒，0~65535
        /// Min duration s 0~65535
        /// </summary>
        public int nMinDuration;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 检测区顶点数
        /// Detect region point
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 异常检测阈值数量
        /// the counts of threshold
        /// </summary>
        public int nThresholdNum;
        /// <summary>
        /// 异常检测阈值,范围1~100
        /// the threshold data, 1~100
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nThreshold;
    }




    /// <summary>
    /// 对应CLIENT_QueryDevState()接口的 DH_DEVSTATE_ALL_ALARM_CHANNELS_STATE命令参数, 获取报警通道状态
    /// Corresponding CLIENT_QueryDevState() Interface's DH_DEVSTATE_ALL_ALARM_CHANNELS_STATE Command Parameter,For Alarm Channel Status 
    /// </summary>
    public enum EM_ALARM_CHANNEL_TYPE
    {
        /// <summary>
        /// 所有通道（包含以下所有）
        /// All channels (including all of the following)
        /// </summary>
        ALL,
        /// <summary>
        /// 报警输入通道
        /// Alarm input channel
        /// </summary>
        ALARMIN,
        /// <summary>
        /// 报警输出通道
        /// Alarm output channel
        /// </summary>
        ALARMOUT,
        /// <summary>
        /// 警号通道
        /// Signal channel
        /// </summary>
        ALARMBELL,
        /// <summary>
        /// 扩展模块报警输入通道
        /// Extension module alarm input channel 
        /// </summary>
        EXALARMIN,
        /// <summary>
        /// 扩展模块报警输出通道
        /// Extension module and alarm output channel
        /// </summary>
        EXALARMOUT,
    }

    #region traffic lattice screen

    // 逻辑屏显示内容
    public enum EM_SCREEN_SHOW_CONTENTS
    {
        UNKNOWN = 0,				// 未知
        PLATENUMBER,				// 车牌
        SYSTIME,					// 系统时间
        PARKTIME,					// 停车时长
        MASTEROFCAR,				// 车主姓名
        USERTYPE,					// 用户类型
        REMAINDAY,				// 到期天数
        PARKCHARGE,				// 停车费
        REMAINSPACE,				// 余位数
        SYSDATE,					// 系统日期
        PASSICONCIRCLE,			// 车辆通过指示灯(红圆绿圆组合指示灯)
        PASSICONARROW,			// 车辆通过指示灯(红叉绿箭组合指示灯)
        INTIME,					// 入场时间
        OUTTIME,					// 出场时间
        REMARKS,					// 备注信息
        RESOURCE,					// 资源文件(视频或图片)
        CUSTOM,					// 自定义信息
    }

    // 逻辑屏显示内容
    public struct NET_TRAFFIC_LATTICE_SCREEN_SHOW_CONTENTS
    {
        public EM_SCREEN_SHOW_CONTENTS emContents;				// 逻辑屏显示的内容
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;			// 字节对齐
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCustomStr;		// 自定义内容，emContents为	EM_TRAFFIC_LATTICE_SCREEN_CUSTOM 时有效
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;			    // 预留
    };

    // 点阵屏显示信息
    public struct NET_TRAFFIC_LATTICE_SCREEN_SHOW_INFO
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_TRAFFIC_LATTICE_SCREEN_SHOW_CONTENTS[] stuContents;		    // 逻辑屏显示内容
        public int nContentsNum;			// 逻辑屏个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;		// 预留
    }

    /// <summary>
    /// 逻辑屏显示方式
    /// Logic screen display mode
    /// </summary>
    public enum EM_A_NET_EM_LATTICE_SCREEN_SHOW_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_LATTICE_SCREEN_SHOW_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 字段控制显示
        /// Field control display
        /// </summary>
        EM_LATTICE_SCREEN_SHOW_TYPE_WORD_CONTROL,
        /// <summary>
        /// 托管显示（完全由平台自定义显示）
        /// Hosted display (fully customized display by the platform)
        /// </summary>
        EM_LATTICE_SCREEN_SHOW_TYPE_TRUSTEESHIP_CONTROL,
    }

    /// <summary>
    /// 逻辑屏控制方式
    /// Logic screen control mode
    /// </summary>
    public enum EM_A_NET_EM_LATTICE_SCREEN_CONTROL_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_LATTICE_SCREEN_CONTROL_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 相机控制
        /// Camera control
        /// </summary>
        EM_LATTICE_SCREEN_CONTROL_TYPE_CAMERA_CONTROL,
        /// <summary>
        /// 平台控制
        /// Platform control
        /// </summary>
        EM_LATTICE_SCREEN_CONTROL_TYPE_PLATFORM_CONTROL,
    }

    /// <summary>
    /// 逻辑屏背景风格模式
    /// Logical screen background style mode
    /// </summary>
    public enum EM_A_NET_EM_LATTICE_SCREEN_BACKGROUND_MODE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        NET_EM_LATTICE_SCREEN_BACKGROUND_MODE_UNKNOWN,
        /// <summary>
        /// 背景风格A
        /// Background style A
        /// </summary>
        NET_EM_LATTICE_SCREEN_BACKGROUND_MODE_A,
        /// <summary>
        /// 背景风格B
        /// Background style B
        /// </summary>
        NET_EM_LATTICE_SCREEN_BACKGROUND_MODE_B,
        /// <summary>
        /// 背景风格C
        /// Background style C
        /// </summary>
        NET_EM_LATTICE_SCREEN_BACKGROUND_MODE_C,
    }

    /// <summary>
    /// 逻辑屏LOGO类型
    /// Logical screen LOGO type
    /// </summary>
    public enum EM_A_NET_EM_LATTICE_SCREEN_LOGO_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        NET_EM_LATTICE_SCREEN_LOGO_TYPE_UNKNOWN,
        /// <summary>
        /// 文字
        /// Text
        /// </summary>
        NET_EM_LATTICE_SCREEN_LOGO_TYPE_STENCIL,
        /// <summary>
        /// 图片
        /// Picture
        /// </summary>
        NET_EM_LATTICE_SCREEN_LOGO_TYPE_PICTURE,
    }

    /// <summary>
    /// 点阵屏LOGO信息
    /// Dot matrix screen LOGO information
    /// </summary>
    public struct NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO
    {
        /// <summary>
        /// LOGO类型
        /// LOGO type
        /// </summary>
        public EM_A_NET_EM_LATTICE_SCREEN_LOGO_TYPE emLogoType;
        /// <summary>
        /// emLogoType为文字时，为文字内容;emLogoType为图片时，为图片名称
        /// When emLogoType is text, it is text content; when emLogoType is picture, it is picture name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szContent;
    }

    /// <summary>
    /// 点阵屏报警提示显示信息
    /// Dot matrix screen alarm prompts display information
    /// </summary>
    public struct NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO
    {
        /// <summary>
        /// 未带头盔屏幕提示信息
        /// Not wearing a helmet screen prompt message
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szNoHelmet;
        /// <summary>
        /// 非机动车超载提示信息
        /// Not wearing a helmet screen prompt message
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szNonMotorOverload;
    }

    // 点阵屏显示信息配置, 对应枚举 NET_EM_CFG_TRAFFIC_LATTICE_SCREEN
    public struct NET_CFG_TRAFFIC_LATTICE_SCREEN_INFO
    {
        public uint dwSize;						// 结构体大小
        public int nStatusChangeTime;			// 状态切换间隔，单位：秒,取值10 ~ 60
        public NET_TRAFFIC_LATTICE_SCREEN_SHOW_INFO stuNormal;					// 常态下
        public NET_TRAFFIC_LATTICE_SCREEN_SHOW_INFO stuCarPass;					// 过车时
        /// <summary>
        /// 显示方式
        /// Display method
        /// </summary>
        public EM_A_NET_EM_LATTICE_SCREEN_SHOW_TYPE emShowType;
        /// <summary>
        /// 控制方式
        /// Control method
        /// </summary>
        public EM_A_NET_EM_LATTICE_SCREEN_CONTROL_TYPE emControlType;
        /// <summary>
        /// 背景风格模式
        /// Background style mode
        /// </summary>
        public EM_A_NET_EM_LATTICE_SCREEN_BACKGROUND_MODE emBackgroundMode;
        /// <summary>
        /// 资源文件播放列表,支持视频文件和图片文件播放,按照数组顺序循环播放
        /// Resource file playlist, support video file and picture file play, loop play in array order
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10 * 64)]
        public string szPlayList;
        /// <summary>
        /// 资料文件个数
        /// Number of data files
        /// </summary>
        public int nPlayListNum;
        /// <summary>
        /// Logo信息
        /// Logo information
        /// </summary>
        public NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO stuLogoInfo;
        /// <summary>
        /// 报警提示显示信息
        /// Alarm notification display information
        /// </summary>
        public NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO stuAlarmNoticeInfo;
    }

    public struct NET_ACCESSCTL_SPECIALDAY_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDayName;
        public NET_TIME stuStartTime;
        public NET_TIME stuEndTime;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;		// 预留
    }

    public struct NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO
    {
        public uint dwSize;
        public bool bGroupEnable;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szGroupName;
        public int nSpeciaday;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_ACCESSCTL_SPECIALDAY_INFO[] stuSpeciaday;
    }

    // 使能过车车牌播报功能枚举
    public enum EM_PLATEENABLE_TYPE
    {
        UNKNOWN = 0,					// 未定义
        TIPS,						// 播放欢迎词
        PLATE,						// 播放车牌
        ELEMENT,						// 按照配置元素播报
    }

    // 播报元素类型
    public enum EM_VOICE_BROADCAST_ELEMENT_TYPE
    {
        UNKNOWN = 0,		// 未知
        PLATENUMBER,		// 车牌号码
        PARKTIME,		// 停车时间
        PARKCHARGE,		// 停车收费
        USERTYPE,		// 用户类型
        REMAINDAY,		// 剩余天数
        INTIME,			// 入场时间
        OUTTIME,			// 出场时间
        REMARKS,			// 备注信息
        CUSTOM,			// 自定义,内容为前缀+后缀字符串
    }

    // 播报元素
    public struct NET_TRAFFIC_VOICE_BROADCAST_ELEMENT
    {
        public EM_VOICE_BROADCAST_ELEMENT_TYPE emType;		// 类型
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;	// 字节对齐
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szPrefix;		// 前缀字符串
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szPostfix;		// 后缀字符串
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;	    // 预留
    }

    // 智能交通语音播报配置 对应枚举 NET_EM_CFG_TRAFFIC_VOICE_BROADCAST
    public struct NET_CFG_TRAFFIC_VOICE_BROADCAST_INFO
    {
        public uint dwSize;								// 结构体大小
        public int nEnableCount;                       // 使能播报个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_PLATEENABLE_TYPE[] emEnable;  // 使能过车车牌播报,见枚举 NET_EM_PLATEENABLE_TYPE
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szNormalCar;              // 普通车辆过车播报内容,例如:播报语音文件"欢迎光临.wav"
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szTrustCar;               // 信任车辆过车播报内容,例如:播报语音文件"欢迎光临.wav"
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSuspiciousCar;          // 嫌疑车辆过车播报内容,例如:播报语音文件"非注册车辆.wav"
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_TRAFFIC_VOICE_BROADCAST_ELEMENT[] stuElement;	// 播报元素
        public int nElementNum;						// stuElement中有效数据个数
    }
    #endregion

    public struct NET_CLIENT_ALARM_CHANNELS_STATE
    {
        public uint dwSize;
        /// <summary>
        /// 查询报警通道的类型  
        /// The type of query alarm channel 	                                                    
        /// </summary>
        public EM_ALARM_CHANNEL_TYPE emType;
        /// <summary>
        /// 报警输入个数,由用户指定
        /// Alarm input number, specified by the user 
        /// </summary>                                                                      
        public int nAlarmInCount;
        /// <summary>
        /// 报警输入返回个数
        /// The number of returned alarm input 
        /// </summary>
        public int nAlarmInRetCount;
        /// <summary>
        /// 报警输入状态数组,由用户分配内存,每个元素表示一个通道状态,TRUE为有输入,FALSE为无输入
        /// 由用户申请内存,大小sizeof(BOOL)*nAlarmInCount
        /// Alarm state of input arrays, memory allocated by the user, each element represents a channel status, TRUE for input, FALSE for no input 
        /// the space application by the user,apply to sizeof(BOOL)*nAlarmInCount
        /// </summary>
        public IntPtr pbAlarmInState;

        /// <summary>
        /// 报警输出个数,由用户指定
        /// The number of alarm output,specified by the user  
        /// </summary>
        public int nAlarmOutCount;
        /// <summary>
        /// 报警输出个数
        /// The number of alarm output
        /// </summary>
        public int nAlarmOutRetCount;
        /// <summary>
        /// 报警输出状态数组,由用户分配内存,每个元素表示一个通道状态,TRUE为有输出,FALSE为输出
        /// 由用户申请内存,大小sizeof(BOOL)*nAlarmOutCount
        /// Alarm state of output arrays, memory allocated by the user, each element represents a channel status, TRUE for output, FALSE for no output
        /// the space application by the user,apply to sizeof(BOOL)*nAlarmOutCount
        /// </summary>
        public IntPtr pbAlarmOutState;

        /// <summary>
        /// 警号个数,由用户指定
        /// Alarm Number,specified by the user 
        /// </summary>
        public int nAlarmBellCount;
        /// <summary>
        /// 警号返回个数
        /// Returned Alarm Number
        /// </summary>
        public int nAlarmBellRetCount;
        /// <summary>
        /// 警号状态数组,由用户分配内存,每个元素表示一个通道状态,TRUE为有输出,FALSE为无输出
        /// 由用户申请内存,大小sizeof(BOOL)*nAlarmBellCount
        /// Alarm state array, allocate memory by the user, each element represents a channel status, TRUE for output, FALSE for no output
        /// the space application by the user,apply to sizeof(BOOL)*nAlarmBellCount
        /// </summary>
        public IntPtr pbAlarmBellState;

        /// <summary>
        /// 扩展模块报警输入个数,由用户指定
        /// Extension module alarm input number, specified by the user 
        /// </summary>
        public int nExAlarmInCount;
        /// <summary>
        /// 扩展模块报警输入返回个数
        /// The number of returned extension module alarm input 
        /// </summary>
        public int nExAlarmInRetCount;
        /// <summary>
        /// 扩展模块报警输入状态数组,由用户分配内存,每个元素表示一个通道状态,TRUE为有输出,FALSE为无输出
        /// 由用户申请内存,大小sizeof(BOOL)*nExAlarmInCount
        /// Extension module alarm input state array, Memory allocated by the user, each element represents a channel status, TRUE for output, FALSE for no output 
        /// the space application by the user,apply to sizeof(BOOL)*nExAlarmInCount
        /// </summary>
        public IntPtr pbExAlarmInState;
        /// <summary>
        /// 扩展模块报警输入有效通道的位置,由用户申请内存,大小sizeof(int)*nExAlarmInCount
        /// The location of the extension module alarm input effective channels,the space application by the user,apply to sizeof(int)*nExAlarmInCount
        /// </summary>
        public IntPtr pnExAlarmInDestionation;

        /// <summary>
        /// 扩展模块报警输出个数,由用户指定
        /// Extension module alarm output number, specified by the user
        /// </summary>
        public int nExAlarmOutCount;
        /// <summary>
        /// 扩展模块报警输出个数
        /// Extension module alarm output number 
        /// </summary>
        public int nExAlarmOutRetCount;
        /// <summary>
        /// 扩展模块报警输出状态数组,由用户分配内存,每个元素表示一个通道状态,TRUE为有输出,FALSE为无输出
        /// 由用户申请内存，大小为sizeof(BOOL)*nExAlarmOutCount
        /// Extension module alarm output state array, Memory allocated by the user, each element represents a channel status, TRUE for output, FALSE for no output 
        /// the space application by the user,apply to sizeof(BOOL)*nExAlarmOutCount
        /// </summary>
        public IntPtr pbExAlarmOutState;
        /// <summary>
        /// 扩展模块报警输出有效通道的位置,由用户申请内存，大小为sizeof(int)*nExAlarmOutCount
        /// The location of the extension module alarm output effective channels,the space application by the user,apply to sizeof(int)*nExAlarmOutCount
        /// </summary>
        public IntPtr pnExAlarmOutDestionation;

    }

    // 布撤防状态变化事件的信息
    public struct NET_ALARM_ARMMODE_CHANGE_INFO
    {
        public uint dwSize;
        public NET_TIME stuTime;        // 报警事件发生的时间
        public EM_ALARM_MODE bArm;    // 变化后的状态
        public EM_SCENE_MODE emSceneMode;    // 情景模式
        public uint dwID;           // ID号, 遥控器编号或键盘地址, emTriggerMode为NET_EM_TRIGGER_MODE_NET类型时为0
        public EM_TRIGGER_MODE emTriggerMode;  // 触发方式
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNetClientAddr; //网络用户IP地址或网络地址
        public uint nUserCode;  //用户ID，0:管理员，1~20：普通用户，21：安装员，22：挟持用户  
    }

    // 布撤防模式
    public enum EM_ALARM_MODE
    {
        UNKNOWN = -1,        // 未知
        DISARMING,           // 撤防
        ARMING,              // 布防
        FORCEON,             // 强制布防
        PARTARMING,          // 部分布防
    }

    // 布撤防场景模式
    public enum EM_SCENE_MODE
    {
        UNKNOWN,             // 未知场景
        OUTDOOR,             // 外出模式
        INDOOR,              // 室内模式
        WHOLE,               // 全局模式
        RIGHTNOW,            // 立即模式
        SLEEPING,            // 就寝模式
        CUSTOM,              // 自定义模式
    }

    // 触发方式
    public enum EM_TRIGGER_MODE
    {
        UNKNOWN = 0,
        NET,            // 网络用户(平台或Web)
        KEYBOARD,       // 键盘
        REMOTECONTROL,  // 遥控器
    }

    // 报警输入源事件详情(只要有输入就会产生改事件,不论防区当前的模式,无法屏蔽)
    public struct NET_ALARM_INPUT_SOURCE_SIGNAL_INFO
    {
        public uint dwSize;
        public int nChannelID;                         // 通道号
        public int nAction;                            // 0:开始 1:停止
        public NET_TIME stuTime;                            // 报警事件发生的时间
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    // 防区布撤防状态改变事件详情
    public struct NET_ALARM_DEFENCE_ARMMODECHANGE_INFO
    {
        public EM_DEFENCEMODE emDefenceStatus;            //布撤防状态
        public int nDefenceID;                 //防区号
        public NET_TIME_EX stuTime;                    //时间
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] reserved;              //预留
    }

    // 防区布防撤防状态类型
    public enum EM_DEFENCEMODE
    {
        UNKNOWN,             // "unknown"   未知
        ARMING,              // "Arming"    布防
        DISARMING,           // "Disarming" 撤防
    }

    // CLIENT_SCADAAlarmAttachInfo()接口输入参数
    public struct NET_IN_SCADA_ALARM_ATTACH_INFO
    {
        public uint dwSize;
        public fSCADAAlarmAttachInfoCallBack cbCallBack;                 // 数据回调函数
        public IntPtr dwUser;	                    // 用户定义参数
    }

    // CLIENT_SCADAAlarmAttachInfo()接口输出参数
    public struct NET_OUT_SCADA_ALARM_ATTACH_INFO
    {
        public uint dwSize;
    }

    // CLIENT_SCADAAttachInfo()接口输入参数
    public struct NET_IN_SCADA_ATTACH_INFO
    {
        public uint dwSize;
        public fSCADAAttachInfoCallBack cbCallBack;                 // 数据回调函数
        public EM_NET_SCADA_POINT_TYPE emPointType;                // 点位类型
        public IntPtr dwUser;                     // 用户定义参数
    }

    // 点位类型
    public enum EM_NET_SCADA_POINT_TYPE
    {
        UNKNOWN = 0,                       // 未知
        ALL,                               // 所有类型
        YC,                                // 遥测 模拟量输入
        YX,                                // 遥信 开关量输入
        YT,                                // 遥调 模拟量输出
        YK,                                // 遥控 开关量输出
    }

    // CLIENT_SCADAAttachInfo()接口输出参数
    public struct NET_OUT_SCADA_ATTACH_INFO
    {
        public uint dwSize;
    }

    // 检测采集设备报警事件, 对应事件类型 NET_ALARM_SCADA_DEV_INFO
    public struct NET_ALARM_SCADA_DEV_INFO
    {
        public uint dwSize;
        public int nChannel;                           // 通道号
        public NET_TIME stuTime;                            // 事件发生的时间
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDevName;     // 故障设备名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szDesc;       // 报警描述
        public int nAction;                            // -1:未知 0:脉冲 1:开始 2:停止
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szID;          // 点位ID, 目前使用16字节
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSensorID;    // 探测器ID, 目前使用16字节
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDevID;       // 设备ID, 目前使用16字节
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPointName;   // 点位名,与点表匹配NET_DEV_EVENT_XRAY_DETECTION_INFO
        public int nAlarmFlag;                         // 0:开始, 1:结束

        public EM_ALARM_SCADA_DEV_TYPE emDevType;                          // 设备类型
        public EM_SCADA_DEVICE_STATUS emDevStatus;						// 设备状态
    }

    /// <summary>
    /// 监测点位报警信息
    /// spot alarm event info
    /// </summary>
    public struct NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX
    {
        /// <summary>
        /// 产生告警时，关联点位的遥测值
        /// When an alarm is generated, the telemetry value of the associated point
        /// </summary>
        public float fEventValue;
        /// <summary>
        /// 保留字节
        /// Reserved Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szResvered;
    }

    // 监测点位报警信息列表
    public struct NET_SCADA_NOTIFY_POINT_ALARM_INFO_LIST
    {
        public uint dwSize;
        /// <summary>
        /// 监测点位报警信息个数
        /// spot alarm event number
        /// </summary>
        public int nList;
        /// <summary>
        /// 监测点位报警信息
        /// spot alarm event info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_SCADA_NOTIFY_POINT_ALARM_INFO[] stuList;
        /// <summary>
        /// 监测点位报警信息
        /// spot alarm event info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX[] stuListEx;
    }

    //监测点位报警信息
    public struct NET_SCADA_NOTIFY_POINT_ALARM_INFO
    {
        public uint dwSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDevID;               // 设备ID
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPointID;            // 点位ID
        public bool bAlarmFlag;                                 // 报警标志
        public NET_TIME stuAlarmTime;                               // 报警时间
        public int nAlarmLevel;                                // 报警级别（0~6）
        public int nSerialNo;                                  // 报警编号,同一个告警的开始和结束的编号是相同的。
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAlarmDesc;          // 报警描述
        /// <summary>
        /// 点位名称
        /// Point name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSignalName;
    }

    // 监测点位信息
    public struct NET_SCADA_NOTIFY_POINT_INFO
    {
        public uint dwSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDevName;     // 设备名称,与getInfo获取的名称一致
        public EM_NET_SCADA_POINT_TYPE emPointType;                        // 点位类型
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPointName;   // 点位名,与点位表的取值一致
        public float fValue;                             // Type为YC时为浮点数
        public int nValue;                             // Type为YX时为整数
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szFSUID;       // 现场监控单元ID(Field SV Unit), 即设备本身
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szID;          // 点位ID
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSensorID;    // 探测器ID
        public NET_TIME_EX stuCollectTime;                     // 采集时间
    }

    // 监测点位信息列表
    public struct NET_SCADA_NOTIFY_POINT_INFO_LIST
    {
        public uint dwSize;
        public int nList;                        // 监测点位信息个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_SCADA_NOTIFY_POINT_INFO[] stuList; // 监测点位信息
    }

    public struct NET_ALARM_FIREWARNING_INFO
    {
        public int nPresetId;                          // 该字段废弃，请由DH_ALARM_FIREWARNING_INFO事件获取此信息
        public int nState;                             // 0 - 开始,1 - 结束,-1:无意义
        public NET_A_RECT_EX stBoundingBox;                      // 该字段废弃,请由DH_ALARM_FIREWARNING_INFO事件获取此信息	
        public int nTemperatureUnit;                   // 该字段废弃,请由DH_ALARM_FIREWARNING_INFO事件获取此信息
        public float fTemperature;                       // 该字段废弃,请由DH_ALARM_FIREWARNING_INFO事件获取此信息 
        public uint nDistance;                          // 该字段废弃,请由DH_ALARM_FIREWARNING_INFO事件获取此信息
        public NET_GPS_POINT stGpsPoint;                         // 该字段废弃,请由DH_ALARM_FIREWARNING_INFO事件获取此信息
        public int nChannel;                           // 对应视频通道号
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] reserved;
    }

    public struct NET_GPS_POINT
    {
        public uint dwLongitude;                      // 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274
        public uint dwLatidude;                       // 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382
        // 经纬度的具体转换方式可以参考结构体 NET_WIFI_GPS_INFO 中的注释
    }

    // 着火点的GPS坐标
    public struct NET_FIRING_GPS_INFO
    {
        public uint dwLongitude;                      // 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274
        public uint dwLatidude;                           // 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382
        public double dbAltitude;                          // 高度, 单位为米
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szReserve;            // 预留32字节
    }

    //热成像火情事件信息
    public struct NET_FIREWARNING_INFO
    {
        public int nPresetId;                          // 预置点编号	从测温规则配置CFG_RADIOMETRY_RULE_INFO中选择
        public NET_RECT stuBoundingBox;                     // 着火点矩形框	
        public int nTemperatureUnit;                   // 温度单位(当前配置的温度单位),见 EM_TEMPERATURE_UNIT
        public float fTemperature;                       // 最高点温度值	同帧检测和差分检测提供
        public uint nDistance;                          // 着火点距离,单位米 0表示无效
        public NET_GPS_POINT stuGpsPoint;                        // 着火点经纬度
        public NET_PTZ_POSITION_UNIT stuPTZPosition;                     // 云台运行信息
        public float fAltitude;                          // 高度(单位：米)
        public uint nThermoHFOV;                       // Uint32 热成像横向视角
        public uint nThermoVFOV;                       // Uint32 热成像纵向视角
        public uint nFSID;                             // Uint32 火情编号ID
        public NET_FIRING_GPS_INFO stuFiringGPS;                       // 着火点的GPS坐标
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 148)]
        public byte[] reserved;
    }

    //云台控制坐标单元
    public struct NET_PTZ_POSITION_UNIT
    {
        public int nPositionX;                        // 云台水平方向角度,归一化到-1~1
        public int nPositionY;                        // 云台垂直方向角度,归一化到-1~1
        public int nZoom;                             // 云台光圈放大倍率,归一化到 0~1
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szReserve;                          // 预留32字节
    }


    // 热成像火情事件信息上报事件
    public struct NET_ALARM_FIREWARNING_INFO_DETAIL
    {
        /// <summary>
        /// 对应视频通道号
        /// channel id
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 报警信息个数
        /// warning info count
        /// </summary>
        public int nWarningInfoCount;
        /// <summary>
        /// 具体报警信息
        /// warning info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_FIREWARNING_INFO[] stuFireWarningInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] reserved;
    }

    // 温度单位
    public enum EM_TEMPERATURE_UNIT
    {
        /// <summary>
        /// 未知
        /// </summary>
        UNKNOWN = -1,
        /// <summary>
        /// centigrade
        /// 摄氏度
        /// </summary>
        CENTIGRADE,
        /// <summary>
        /// fahrenheit
        /// 华氏度
        /// </summary>
        FAHRENHEIT
    }

    /// <summary>
    /// clear the statistics for the period and start again from 0
    /// 清除当前时间段内人数统计信息, 重新从0开始计算
    /// </summary>
    public struct NET_CTRL_CLEAR_SECTION_STAT_INFO
    {
        public uint dwSize;
        /// <summary>
        /// channel ID
        /// 视频通道号
        /// </summary>
        public int nChannel;
    }

    /// <summary>
    /// ATM trsaction type
    /// ATM交易类型
    /// </summary>
    public enum EM_ATM_TRADE_TYPE
    {
        /// <summary>
        /// all types
        /// 所有类型
        /// </summary>
        ALL,
        /// <summary>
        /// search
        /// 查询
        /// </summary>
        ENQUIRY,
        /// <summary>
        /// withdraw
        /// 取款
        /// </summary>
        WITHDRAW,
        /// <summary>
        /// change password
        /// 修改密码
        /// </summary>
        MODIFY_PASSWORD,
        /// <summary>
        /// transfer
        /// 转账
        /// </summary>
        TRANSFER,
        /// <summary>
        /// deposit
        /// 存款
        /// </summary>
        DEPOSIT,
        /// <summary>
        /// search without card
        /// 无卡查询
        /// </summary>
        CARDLESS_ENQUIRY,
        /// <summary>
        /// deposit without card
        /// 无卡存款
        /// </summary>
        CARDLESS_DEPOSIT,
        /// <summary>
        /// other
        /// 其他
        /// </summary>
        OTHER,
    };

    /// <summary>
    /// the order of result order
    /// 查询结果排序方式
    /// </summary>
    public enum EM_RESULT_ORDER_TYPE
    {
        /// <summary>
        /// unknown order type
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// ascent by time
        /// 按时间升序排序
        /// </summary>
        ASCENT_BYTIME,
        /// <summary>
        /// descent by time
        /// 按时间降序排序 
        /// </summary>
        DESCENT_BYTIME,
    };

    /// <summary>
    /// card no. record info
    /// 卡号录像信息
    /// </summary>
    public struct NET_RECORD_CARD_INFO
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// type, 0-Card, 1-Field
        /// 类型, 0-Card, 1-Field
        /// </summary>
        public int nType;
        /// <summary>
        /// card no
        /// 卡号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szCardNo;
        /// <summary>
        /// transaction type
        /// 交易类型
        /// </summary>
        public EM_ATM_TRADE_TYPE emTradeType;
        /// <summary>
        /// transaction amount, nullstring means no limit amount
        /// 交易金额, 空字符串表示不限金额
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szAmount;
        /// <summary>
        /// error code, 0-all errors, 1-retain cash, 2-retain card
        /// 错误码, 0-所有错误, 1-吞钞, 2-吞卡
        /// </summary>
        public int nError;
        /// <summary>
        /// domain quantity, by domain search is valid
        /// 域数量, 按域查询时有效
        /// </summary>
        public int nFieldCount;
        /// <summary>
        /// domain info, by domain search is valid
        /// 域信息, 按域查询时有效
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16 * 256)]
        public byte[] szFields;
        /// <summary>
        /// change
        /// 零钱
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szChange;
    }

    /// <summary>
    /// record info, corresponde to CLIENT_FindFileEx, search condition
    /// 录像信息对应CLIENT_FindFileEx接口的QUERY_FILE / QUERY_FILE_EX命令查询条件
    /// </summary>
    public struct NET_IN_MEDIA_QUERY_FILE
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// working directory list,can inquire multiple directory at a atime,separated by ";",example "/mnt/dvr/sda0;/mnt/dvr/sda1",if szDirs==null or szDirs == "" ,means search all
        /// 工作目录列表,一次可查询多个目录,为空表示查询所有目录。目录之间以分号分隔,如“/mnt/dvr/sda0;/mnt/dvr/sda1”,szDirs==null 或"" 表示查询所有
        /// </summary>
        public IntPtr szDirs;
        /// <summary>
        /// file info,0:any type,1:search jpg image,2:search dav
        /// 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav
        /// </summary>
        public int nMediaType;
        /// <summary>
        /// Channel start from 0, -1 means search all channel
        /// 通道号从0开始,-1表示查询所有通道
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// start time
        /// 开始时间
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// end time
        /// 结束时间
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// Event type list, see intelligent analysis event type
        /// 事件类型列表,参见智能分析事件类型
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nEventLists;
        /// <summary>
        /// event total
        /// 事件总数
        /// </summary>
        public int nEventCount;
        /// <summary>
        /// video stream 0-unknown; 1-main; 2-sub 1; 3-sub 2; 4- sub 3; 5-ExtraX
        /// 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3  5-所有的辅码流类型
        /// </summary>
        public byte byVideoStream;
        /// <summary>
        /// aligh text
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved;
        /// <summary>
        /// Record or snapshot file mark, not set mark to search all files
        /// 录像或抓图文件标志, 不设置标志表示查询所有文件
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public EM_RECORD_SNAP_FLAG_TYPE[] emFalgLists;
        /// <summary>
        /// total mark
        /// 标志总数
        /// </summary>
        public int nFalgCount;
        /// <summary>
        /// card no. record info, emFalgLists including card no. video is valid
        /// 卡号录像信息, emFalgLists包含卡号录像时有效
        /// </summary>
        public NET_RECORD_CARD_INFO stuCardInfo;
        /// <summary>
        /// user total
        /// 用户名有效个数
        /// </summary>
        public int nUserCount;
        /// <summary>
        /// user name
        /// 用户名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4 * 128)]
        public byte[] szUserName;
        /// <summary>
        /// result order
        /// 查询结果排序方式
        /// </summary>
        public EM_RESULT_ORDER_TYPE emResultOrder;
        /// <summary>
        /// find file by time
        /// 是否按时间查询
        /// </summary>
        public bool bTime;
        /// <summary>
        /// Whether to combine video
        /// 查询结果是否合并录像文件
        /// </summary>
        public EM_COMBINATION_MODE emCombination;
        /// <summary>
        /// event info,when query type in EM_FILE_QUERY_TYPE is QUERY_FILE_EX valid
        /// 事件信息，当查询为 QUERY_FILE_EX 类型时有效
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_EVENT_INFO[] stuEventInfo;
        /// <summary>
        /// stuEventInfo's count
        /// stuEventInfo个数
        /// </summary>
        public int nEventInfoCount;
        /// <summary>
        /// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
        /// TRUE means only deliver stuStartTimeRealUTC and stuEndTimeRealUTC (do not deliver stuStartTime, stuEndTime), FALSE means deliver only stuStartTime, stuEndTime (do not deliver stuStartTimeRealUTC and stuEndTimeRealUTC)
        /// </summary>
        public bool bOnlySupportRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用，与(stuStartTime, stuEndTime)互斥
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC, mutually exclusive with (stuStartTime, stuEndTime)
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用，与(stuStartTime, stuEndTime)互斥
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC, mutually exclusive with (stuStartTime, stuEndTime)
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
    }

    /// <summary>
    /// video file status
    /// 录像文件的状态
    /// </summary>
    public enum EM_VIDEO_FILE_STATE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// in wriiting
        /// 正在写
        /// </summary>
        TEMPORARY,
        /// <summary>
        /// Finished writing and closed file handle normally
        /// 已写完并正常关闭文件句柄
        /// </summary>
        COMPLETE,
    }

    /// <summary>
    /// record info, corresponde to CLIENT_FindFileEx, search result
    /// 文件摘要信息
    /// </summary>
    public struct NET_FILE_SUMMARY_INFO
    {
        /// <summary>
        /// Abstract name
        /// 摘要名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szKey;
        /// <summary>
        /// Abstract contents
        /// 摘要内容
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szValue;
        /// <summary>
        /// Reserved string 
        /// 保留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] bReserved;
    }

    /// <summary>
    /// record information corresponding to FILE command when use CLIENT_FindFileEx interface
    /// 录像信息对应CLIENT_FindFileEx接口的QUERY_FILE / QUERY_FILE_EX命令查询结果
    /// </summary>
    public struct NET_OUT_MEDIA_QUERY_FILE
    {
        /// <summary>
        /// struct size 
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel ID,from 0,-1 means search all
        /// 通道号从0开始,-1表示查询所有通道
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// start time
        /// 开始时间
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// end time
        /// 结束时间
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// size of file,This field is discarded,please use the nFileSizeEx
        /// 文件长度,该字段废弃,使用nFileSizeEx字段
        /// </summary>
        public uint nFileSize;
        /// <summary>
        /// file type 1:jpg, 2: dav
        /// 文件类型 1:jpg图片, 2: dav
        /// </summary>
        public byte byFileType;
        /// <summary>
        /// deprecated, to get same info, use nDriveNo instead
        /// 该字段已废弃,后续开发使用 nDriveNo成员
        /// </summary>
        public byte byDriveNo;
        /// <summary>
        /// zone no
        /// 分区号
        /// </summary>
        public byte byPartition;
        /// <summary>
        /// video stream 0-unknown  1-main 2-sub 1 3-sub 4-sub 
        /// 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流 4-辅码流
        /// </summary>
        public byte byVideoStream;
        /// <summary>
        /// cluster
        /// 簇号
        /// </summary>
        public uint nCluster;
        /// <summary>
        /// FilePath
        /// 文件路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;
        /// <summary>
        /// Link event list,see event intelligent analysis event type
        /// 关联的事件列表,事件类型列表,参见智能分析事件类型
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nEventLists;
        /// <summary>
        /// event total
        /// 事件总数
        /// </summary>
        public int nEventCount;
        /// <summary>
        /// record or snapshot file mark 
        /// 录像或抓图文件标志
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public EM_RECORD_SNAP_FLAG_TYPE[] emFalgLists;
        /// <summary>
        /// mark total
        /// 标志总数
        /// </summary>
        public int nFalgCount;
        /// <summary>
        /// disk driver number
        /// 磁盘号
        /// </summary>
        public uint nDriveNo;
        /// <summary>
        /// snap file path when pre-process the file
        /// 预处理文件提取到的快照文件路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szSynopsisPicPath;
        /// <summary>
        /// video synopsis max time. Unit is second
        /// 支持浓缩视频最大时间长度,单位秒
        /// </summary>
        public int nSynopsisMaxTime;
        /// <summary>
        /// video synopsis min time. Unit is second.
        /// 支持浓缩视频最小时间长度,单位秒
        /// </summary>
        public int nSynopsisMinTime;
        /// <summary>
        /// file summary number
        /// 文件摘要信息数
        /// </summary>
        public int nFileSummaryNum;
        /// <summary>
        /// file summary info
        /// 文件摘要信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_FILE_SUMMARY_INFO[] stFileSummaryInfo;
        /// <summary>
        /// size of file extension, Support file length is greater than 4G,unit:Byte
        /// 文件长度扩展,支持文件长度大于4G，单位字节
        /// </summary>
        public long nFileSizeEx;
        /// <summary>
        /// all frames' num, not distinguish by frame type
        /// 查询录像段内所有帧总和，不区分帧类型
        /// </summary>
        public uint nTotalFrame;
        /// <summary>
        /// video file status
        /// 录像文件的状态
        /// </summary>
        public EM_VIDEO_FILE_STATE emFileState;
        /// <summary>
        /// Storage directory of video files
        /// 录像文件的存储目录
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szWorkDir;
        /// <summary>
        /// Thumbnail path, according to which thumbnails can be downloaded
        /// 缩略图路径，可根据该路径下载缩略图 
        /// </summary>
	    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szThumbnail;
        /// <summary>
        /// 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime)
        /// TRUE means only stuStartTimeRealUTC and stuEndTimeRealUTC are valid (only stuStartTimeRealUTC and stuEndTimeRealUTC are used), FALSE means only stuStartTime and stuEndTime are valid (only stuStartTime and stuEndTime are used)
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
        /// <summary>
        /// / VKEKID数组数量
        /// / Number of VKEKID array elements
        /// </summary>
        public int nVideoKeyEncryptionKeyIdsNum;
        /// <summary>
        /// / VKEKID数组
        /// / VKEKID array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 64)]
        public string szVideoKeyEncryptionKeyIds;
    }

    //事件类型EVENT_IVS_TRAFFIC_PEDESTRAINRUNREDLIGHT(交通-行人闯红灯事件)对应的数据块描述信息
    public struct NET_DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO
    {
        /// <summary>
        /// / 通道号
        /// Channel No.
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// / 字节对齐
        /// Align string
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// Time stamp (unit is ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// / 事件发生的时间
        /// Event occurrence time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// / 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / 对应车道号
        /// Corresponding lane No.
        /// </summary>
        public int nLane;
        /// <summary>
        /// / 行人信息
        /// Pedestrian info
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// / 事件对应文件信息
        /// Corresponding file inof of the event
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// / 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// Snap SN. Such as 3,2,1,1 means stop snap. 0= abnormal stop.
        /// </summary>
        public int nSequence;
        /// <summary>
        /// / 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event operation. 0=pulse event. 1=continious event begin, 2=continuous event stop
        /// </summary>
        public byte bEventAction;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// / 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Image SN. There can be several images at the same time (unit:second). Begins with 0.
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// / 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// Snap mark (by byte).Please refer to NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// / 对应图片的分辨率
        /// Corresponding image resolution
        /// </summary>  
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// / 行人信息
        /// pedestrain info
        /// </summary>
        public IntPtr pstuVehicle;
        /// <summary>
        /// / 全景图
        /// / Panoramic view
        /// </summary>
        public IntPtr pstuSceneImage;
        /// <summary>
        /// / 保留字节
        /// Reserved string
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024 - 2 * 8)]
        public byte[] bReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024 - 2 * 4)]
        public byte[] bReserved;
#endif
        public NET_EVENT_COMM_INFO stCommInfo;                                 // 公共信息
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// MEDIA_QUERY_TRAFFICCAR对应的查询条件 参数扩展
    /// The corresponding search criteria of MEDIA_QUERY_TRAFFICCAR
    /// </summary>
    public struct NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX
    {
        /// <summary>
        /// 违法代码
        /// Violation code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szViolationCode;
        /// <summary>
        /// 国籍，2字节，符合ISO3166规范
        /// Nationality, 2 bytes, in line with ISO3166 specification
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szCountry;
        /// <summary>
        /// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发StartTime, EndTime), 为FALSE表示仅下发StartTime, EndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
        /// TRUE means only send stuStartTimeRealUTC and stuEndTimeRealUTC (do not send StartTime, EndTime), FALSE means only send StartTime, EndTime (do not send stuStartTimeRealUTC and stuEndTimeRealUTC)
        /// </summary>
        public bool bOnlySupportRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用，与(StartTime, EndTime)互斥
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC, mutually exclusive with (StartTime, EndTime)
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用，与(StartTime, EndTime)互斥
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC, mutually exclusive with (StartTime, EndTime)
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
        /// <summary>
        /// 车牌代码
        /// Plate code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPlateCode;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 952)]
        public byte[] byReserved;
    }

    /// <summary>
    /// MEDIA_QUERY_TRAFFICCAR对应的查询条件
    /// The corresponding search criteria of MEDIA_QUERY_TRAFFICCAR
    /// </summary>
    public struct MEDIA_QUERY_TRAFFICCAR_PARAM
    {
        /// <summary>
        /// 通道号从0开始,-1表示查询所有通道
        /// The channel number begins with 0. -1 is to search information of all channels .
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 开始时间
        /// Start time
        /// </summary>
        public NET_TIME StartTime;
        /// <summary>
        /// 结束时间
        /// End time
        /// </summary>
        public NET_TIME EndTime;
        /// <summary>
        /// 文件类型,0:任意类型, 1:jpg图片, 2:dav文件
        /// File type:0=search any type.1=search jpg file
        /// </summary>
        public int nMediaType;
        /// <summary>
        /// 事件类型,详见"智能分析事件类型", 0:表示查询任意事件,此参数废弃,请使用pEventTypes
        /// deprecated, to get same info, use pEventType instead
        /// </summary>
        public int nEventType;
        /// <summary>
        /// 车牌号, "\0"则表示查询任意车牌号
        /// Vehicle plate. "\0" is to search any plate number.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateNumber;
        /// <summary>
        /// 查询的车速范围; 速度上限 单位: km/h
        /// The searched vehicle speed range. Max speed unit is km/h
        /// </summary>
        public int nSpeedUpperLimit;
        /// <summary>
        /// 查询的车速范围; 速度下限 单位: km/h
        /// The searched vehicle speed range. Min speed unit is km/h
        /// </summary>
        public int nSpeedLowerLimit;
        /// <summary>
        /// 是否按速度查询; TRUE:按速度查询,nSpeedUpperLimit和nSpeedLowerLimit有效。
        /// Search according to the speed or not. TRUE: search according to the speed.nSpeedUpperLimit and nSpeedLowerLimit is valid.
        /// </summary>
        public bool bSpeedLimit;
        /// <summary>
        /// 违章类型：
        /// 当事件类型为 EVENT_IVS_TRAFFICGATE时
        /// 第一位:逆行; 第二位:压线行驶; 第三位:超速行驶;
        /// 第四位：欠速行驶; 第五位:闯红灯;
        /// 当事件类型为 EVENT_IVS_TRAFFICJUNCTION
        /// 第一位:闯红灯; 第二位:不按规定车道行驶;
        /// 第三位:逆行; 第四位：违章掉头;
        /// 第五位:压线行驶;
        /// Illegal type:
        /// When event type is EVENT_IVS_TRAFFICGATE
        /// bit1: Retrograde; bit2: Overline;
        /// bit3: Overspend; bit4:Under speed;
        /// bit5: RunRedLight;
        /// When event type is EVENT_IVS_TRAFFICJUNCTION
        /// bit1: RunRedLight; bit2: WrongLan;
        /// bit3: Retrograde; bit4:UTurn;
        /// bit5: Overline;
        /// </summary>
        public uint dwBreakingRule;
        /// <summary>
        /// 车牌类型,"Unknown" 未知,"Normal" 蓝牌黑牌,"Yellow" 黄牌,"DoubleYellow" 双层黄尾牌,"Police" 警牌,"SAR" 港澳特区号牌,"Trainning" 教练车号牌
        /// "Personal" 个性号牌,"Agri" 农用牌,"Embassy" 使馆号牌,"Moto" 摩托车号牌,"Tractor" 拖拉机号牌,"Other" 其他号牌
        /// "Civilaviation"民航号牌,"Black"黑牌
        /// "PureNewEnergyMicroCar"纯电动新能源小车,"MixedNewEnergyMicroCar,"混合新能源小车,"PureNewEnergyLargeCar",纯电动新能源大车
        /// "MixedNewEnergyLargeCar"混合新能源大车
        /// Plate type: "Unknown" =Unknown; "Normal"=Blue and black plate. "Yellow"=Yellow plate. "DoubleYellow"=Double-layer yellow plate
        /// "Police"=Police plate ; "SAR" = SAR or Macao SAR plate; "Trainning" =rehearsal plate; "Personal"=Personal plate; "Agri"=Agricultural plate
        /// "Embassy"=Embassy plate; "Moto"=Moto plate ; "Tractor"=Tractor plate; "Other"=Other plate
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateType;
        /// <summary>
        /// 车牌颜色, "Blue"蓝色,"Yellow"黄色, "White"白色,"Black"黑色
        /// plate color, "Blue","Yellow", "White","Black"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPlateColor;
        /// <summary>
        /// 车身颜色:"White"白色, "Black"黑色, "Red"红色, "Yellow"黄色, "Gray"灰色, "Blue"蓝色,"Green"绿色
        /// vehicle color:"White", "Black", "Red", "Yellow", "Gray", "Blue","Green"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szVehicleColor;
        /// <summary>
        /// 车辆大小类型:"Light-duty":小型车;"Medium":中型车; "Oversize":大型车; "Unknown": 未知
        /// vehicle type:"Light-duty";"Medium"; "Oversize"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szVehicleSize;
        /// <summary>
        /// 事件组编号(此值>=0时有效)
        /// id of event group(it works when >= 0)
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// 车道号(此值>=0时表示具体车道,-1表示所有车道,即不下发此字段)
        /// lane number(it works when >= 0)
        /// </summary>
        public short byLane;
        /// <summary>
        /// 文件标志, 0xFF-使用nFileFlagEx, 0-表示所有录像, 1-定时文件, 2-手动文件, 3-事件文件, 4-重要文件, 5-合成文件
        /// file flag, 0xFF-use nFileFlagEx, 0-all record, 1-timing file, 2-manual, 3-event, 4-important, 5-mosaic
        /// </summary>
        public byte byFileFlag;
        /// <summary>
        /// 是否需要在查询过程中随意跳转,0-不需要,1-需要
        /// The need for random jumps in the query process, 0 - no need 1 - need
        /// </summary>
        public byte byRandomAccess;
        /// <summary>
        /// 文件标志, 按位表示: bit0-定时文件, bit1-手动文件, bit2-事件文件, bit3-重要文件, bit4-合成文件, bit5-禁止名单图片 0xFFFFFFFF-所有录像
        /// file flag, bit0-timing, bit1-manual, bit2-event, bit3-important, bit4-mosaic, 0xFFFFFFFF-all
        /// </summary>
        public int nFileFlagEx;
        /// <summary>
        /// 车道方向（车开往的方向） 0-北 1-东北 2-东 3-东南 4-南 5-西南 6-西 7-西北 8-未知 -1-所有方向
        /// direction(to the direction of car) 0-north 1-northeast 2-east 3-southeast 4-south 5-southwest 6-west 7-northwest 8-unknown -1-all directions
        /// </summary>
        public int nDirection;
        /// <summary>
        /// 工作目录列表,一次可查询多个目录,为空表示查询所有目录。目录之间以分号分隔,如“/mnt/dvr/sda0;/mnt/dvr/sda1”,szDirs==null 或"" 表示查询所有
        /// working directory list,can inquire multiple directory at a atime,separated by ";",example "/mnt/dvr/sda0;/mnt/dvr/sda1",if szDirs==null or szDirs == "" ,means search all
        /// </summary>
        public IntPtr szDirs;
        /// <summary>
        /// 待查询的事件类型数组指针,事件类型,详见"智能分析事件类型",若为NULL则认为查询所有事件（缓冲需由用户申请）
        /// Check the event type to be an array of pointers, event type, see "intelligent analysis event type", if the query is NULL considered all events (buffer required to apply by the user)
        /// </summary>
        public IntPtr pEventTypes;
        /// <summary>
        /// 事件类型数组大小
        /// Event Type array size
        /// </summary>
        public int nEventTypeNum;
        /// <summary>
        /// 设备地址, NULL表示该字段不起作用
        /// Device address, NULL indicates that the field does not work
        /// </summary>
        public IntPtr pszDeviceAddress;
        /// <summary>
        /// 机器部署地点, NULL表示该字段不起作用
        /// Machine deployment locations, NULL indicates that the field does not work
        /// </summary>
        public IntPtr pszMachineAddress;
        /// <summary>
        /// 车辆标识, 例如 "Unknown"-未知, "Audi"-奥迪, "Honda"-本田... NULL表示该字段不起作用
        /// Vehicle identification, such as "Unknown" - unknown, "Audi" - Audi, "Honda" - Honda ... NULL indicates that the field does not work
        /// </summary>
        public IntPtr pszVehicleSign;
        /// <summary>
        /// 车辆子品牌 需要通过映射表得到真正的子品牌 映射表详见开发手册
        /// Specifies the sub-brand of vehicle,the real value can be found in a mapping table from the development manual
        /// </summary>
        public ushort wVehicleSubBrand;
        /// <summary>
        /// 车辆品牌年款 需要通过映射表得到真正的年款 映射表详见开发手册
        /// Specifies the model years of vehicle. the real value can be found in a mapping table from the development manual
        /// </summary>
        public ushort wVehicleYearModel;
        /// <summary>
        /// 安全带状态
        /// Safe belt state
        /// </summary>
        public EM_SAFE_BELT_STATE emSafeBeltState;
        /// <summary>
        /// 打电话状态
        /// Calling state
        /// </summary>
        public EM_CALLING_STATE emCallingState;
        /// <summary>
        /// 车内饰品类型
        /// Attachment type
        /// </summary>
        public EM_ATTACHMENT_TYPE emAttachMentType;
        /// <summary>
        /// 车辆类型
        /// Car type
        /// </summary>
        public EM_CATEGORY_TYPE emCarType;
        /// <summary>
        /// 参数扩展 < NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX >
        /// parameter extension < NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX >
        /// </summary>
        public IntPtr pstuTrafficCarParamEx;
        /// <summary>
        /// 保留字段
        /// Reserved field for future extension.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public int[] bReserved;
    }

    /// <summary>
    /// MEDIA_QUERY_TRAFFICCAR_EX对应的查询条件
    /// MEDIA_QUERY_TRAFFICCAR_EX Corresponding query
    /// </summary>
    public struct MEDIA_QUERY_TRAFFICCAR_PARAM_EX
    {
        public uint dwSize;
        /// <summary>
        /// 基本查询参数
        /// The basic query parameters
        /// </summary>
        public MEDIA_QUERY_TRAFFICCAR_PARAM stuParam;
    }

    /// <summary>
    /// deprecate，Replaced by MEDIA_QUERY_TRAFFICCAR_PARAM
    /// 弃用，请使用MEDIA_QUERY_TRAFFICCAR_PARAM结构体
    /// </summary>
    public struct NET_MEDIA_QUERY_TRAFFICCAR_PARAM
    {
        /// <summary>
        /// 通道号从0开始,-1表示查询所有通道
        /// The channel number begins with 0. -1 is to search information of all channels .
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 开始时间
        /// Start time
        /// </summary>
        public NET_TIME StartTime;
        /// <summary>
        /// 结束时间
        /// End time
        /// </summary>
        public NET_TIME EndTime;
        /// <summary>
        /// 文件类型,0:任意类型, 1:jpg图片, 2:dav文件
        /// File type:0=search any type.1=search jpg file
        /// </summary>
        public int nMediaType;
        /// <summary>
        /// 事件类型,详见"智能分析事件类型", 0:表示查询任意事件,此参数废弃,请使用pEventTypes
        /// deprecated, to get same info, use pEventType instead
        /// </summary>
        public int nEventType;
        /// <summary>
        /// 车牌号, "\0"则表示查询任意车牌号
        /// Vehicle plate. "\0" is to search any plate number.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateNumber;
        /// <summary>
        /// 查询的车速范围; 速度上限 单位: km/h
        /// The searched vehicle speed range. Max speed unit is km/h
        /// </summary>
        public int nSpeedUpperLimit;
        /// <summary>
        /// 查询的车速范围; 速度下限 单位: km/h
        /// The searched vehicle speed range. Min speed unit is km/h
        /// </summary>
        public int nSpeedLowerLimit;
        /// <summary>
        /// 是否按速度查询; TRUE:按速度查询,nSpeedUpperLimit和nSpeedLowerLimit有效。
        /// Search according to the speed or not. TRUE: search according to the speed.nSpeedUpperLimit and nSpeedLowerLimit is valid.
        /// </summary>
        public bool bSpeedLimit;
        /// <summary>
        /// 违章类型：
        /// 当事件类型为 EVENT_IVS_TRAFFICGATE时
        /// 第一位:逆行; 第二位:压线行驶; 第三位:超速行驶;
        /// 第四位：欠速行驶; 第五位:闯红灯;
        /// 当事件类型为 EVENT_IVS_TRAFFICJUNCTION
        /// 第一位:闯红灯; 第二位:不按规定车道行驶;
        /// 第三位:逆行; 第四位：违章掉头;
        /// 第五位:压线行驶;
        /// Illegal type:
        /// When event type is EVENT_IVS_TRAFFICGATE
        /// bit1: Retrograde; bit2: Overline;
        /// bit3: Overspend; bit4:Under speed;
        /// bit5: RunRedLight;
        /// When event type is EVENT_IVS_TRAFFICJUNCTION
        /// bit1: RunRedLight; bit2: WrongLan;
        /// bit3: Retrograde; bit4:UTurn;
        /// bit5: Overline;
        /// </summary>
        public uint dwBreakingRule;
        /// <summary>
        /// 车牌类型,"Unknown" 未知,"Normal" 蓝牌黑牌,"Yellow" 黄牌,"DoubleYellow" 双层黄尾牌,"Police" 警牌,"SAR" 港澳特区号牌,"Trainning" 教练车号牌
        /// "Personal" 个性号牌,"Agri" 农用牌,"Embassy" 使馆号牌,"Moto" 摩托车号牌,"Tractor" 拖拉机号牌,"Other" 其他号牌
        /// "Civilaviation"民航号牌,"Black"黑牌
        /// "PureNewEnergyMicroCar"纯电动新能源小车,"MixedNewEnergyMicroCar,"混合新能源小车,"PureNewEnergyLargeCar",纯电动新能源大车
        /// "MixedNewEnergyLargeCar"混合新能源大车
        /// Plate type: "Unknown" =Unknown; "Normal"=Blue and black plate. "Yellow"=Yellow plate. "DoubleYellow"=Double-layer yellow plate
        /// "Police"=Police plate ; "Trainning" =rehearsal plate; "Personal"=Personal plate; "Agri"=Agricultural plate
        /// "Embassy"=Embassy plate; "Moto"=Moto plate ; "Tractor"=Tractor plate; "Other"=Other plate
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateType;
        /// <summary>
        /// 车牌颜色, "Blue"蓝色,"Yellow"黄色, "White"白色,"Black"黑色
        /// plate color, "Blue","Yellow", "White","Black"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPlateColor;
        /// <summary>
        /// 车身颜色:"White"白色, "Black"黑色, "Red"红色, "Yellow"黄色, "Gray"灰色, "Blue"蓝色,"Green"绿色
        /// vehicle color:"White", "Black", "Red", "Yellow", "Gray", "Blue","Green"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szVehicleColor;
        /// <summary>
        /// 车辆大小类型:"Light-duty":小型车;"Medium":中型车; "Oversize":大型车; "Unknown": 未知
        /// vehicle type:"Light-duty";"Medium"; "Oversize"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szVehicleSize;
        /// <summary>
        /// 事件组编号(此值>=0时有效)
        /// id of event group(it works when >= 0)
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// 车道号(此值>=0时表示具体车道,-1表示所有车道,即不下发此字段)
        /// lane number(it works when >= 0)
        /// </summary>
        public short byLane;
        /// <summary>
        /// 文件标志, 0xFF-使用nFileFlagEx, 0-表示所有录像, 1-定时文件, 2-手动文件, 3-事件文件, 4-重要文件, 5-合成文件
        /// file flag, 0xFF-use nFileFlagEx, 0-all record, 1-timing file, 2-manual, 3-event, 4-important, 5-mosaic
        /// </summary>
        public byte byFileFlag;
        /// <summary>
        /// 是否需要在查询过程中随意跳转,0-不需要,1-需要
        /// The need for random jumps in the query process, 0 - no need 1 - need
        /// </summary>
        public byte byRandomAccess;
        /// <summary>
        /// 文件标志, 按位表示: bit0-定时文件, bit1-手动文件, bit2-事件文件, bit3-重要文件, bit4-合成文件, bit5-禁止名单图片 0xFFFFFFFF-所有录像
        /// file flag, bit0-timing, bit1-manual, bit2-event, bit3-important, bit4-mosaic, 0xFFFFFFFF-all
        /// </summary>
        public int nFileFlagEx;
        /// <summary>
        /// 车道方向（车开往的方向） 0-北 1-东北 2-东 3-东南 4-南 5-西南 6-西 7-西北 8-未知 -1-所有方向
        /// direction(to the direction of car) 0-north 1-northeast 2-east 3-southeast 4-south 5-southwest 6-west 7-northwest 8-unknown -1-all directions
        /// </summary>
        public int nDirection;
        /// <summary>
        /// 工作目录列表,一次可查询多个目录,为空表示查询所有目录。目录之间以分号分隔,如“/mnt/dvr/sda0;/mnt/dvr/sda1”,szDirs==null 或"" 表示查询所有
        /// working directory list,can inquire multiple directory at a atime,separated by ";",example "/mnt/dvr/sda0;/mnt/dvr/sda1",if szDirs==null or szDirs == "" ,means search all
        /// </summary>
        public IntPtr szDirs;
        /// <summary>
        /// 待查询的事件类型数组指针,事件类型,详见"智能分析事件类型",若为NULL则认为查询所有事件（缓冲需由用户申请）
        /// Check the event type to be an array of pointers, event type, see "intelligent analysis event type", if the query is NULL considered all events (buffer required to apply by the user)
        /// </summary>
        public IntPtr pEventTypes;
        /// <summary>
        /// 事件类型数组大小
        /// Event Type array size
        /// </summary>
        public int nEventTypeNum;
        /// <summary>
        /// 设备地址, NULL表示该字段不起作用
        /// Device address, NULL indicates that the field does not work
        /// </summary>
        public IntPtr pszDeviceAddress;
        /// <summary>
        /// 机器部署地点, NULL表示该字段不起作用
        /// Machine deployment locations, NULL indicates that the field does not work
        /// </summary>
        public IntPtr pszMachineAddress;
        /// <summary>
        /// 车辆标识, 例如 "Unknown"-未知, "Audi"-奥迪, "Honda"-本田... NULL表示该字段不起作用
        /// Vehicle identification, such as "Unknown" - unknown, "Audi" - Audi, "Honda" - Honda ... NULL indicates that the field does not work
        /// </summary>
        public IntPtr pszVehicleSign;
        /// <summary>
        /// 车辆子品牌 需要通过映射表得到真正的子品牌 映射表详见开发手册
        /// Specifies the sub-brand of vehicle,the real value can be found in a mapping table from the development manual
        /// </summary>
        public ushort wVehicleSubBrand;
        /// <summary>
        /// 车辆品牌年款 需要通过映射表得到真正的年款 映射表详见开发手册
        /// Specifies the model years of vehicle. the real value can be found in a mapping table from the development manual
        /// </summary>
        public ushort wVehicleYearModel;
        /// <summary>
        /// 安全带状态
        /// Safe belt state
        /// </summary>
        public EM_SAFE_BELT_STATE emSafeBeltState;
        /// <summary>
        /// 打电话状态
        /// Calling state
        /// </summary>
        public EM_CALLING_STATE emCallingState;
        /// <summary>
        /// 车内饰品类型
        /// Attachment type
        /// </summary>
        public EM_ATTACHMENT_TYPE emAttachMentType;
        /// <summary>
        /// 车辆类型
        /// Car type
        /// </summary>
        public EM_CATEGORY_TYPE emCarType;
        /// <summary>
        /// 参数扩展
        /// parameter extension
        /// </summary>
        public IntPtr pstuTrafficCarParamEx;
        /// <summary>
        /// 保留字段
        /// Reserved field for future extension.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public int[] bReserved;
    }

    /// <summary>
    ///  设备信息类型,对应 CLIENT_StartFind CLIENT_DoFind CLIENT_StopFind 接口
    ///  
    /// </summary>
    public enum EM_FIND
    {
        /// <summary>
        /// 热成像温度查询, pInBuf= NET_IN_RADIOMETRY_*FIND*, pOutBuf= NET_OUT_RADIOMETRY_*FIND*
        /// thermal  query, pInBuf= NET_IN_RADIOMETRY_*FIND*, pOutBuf= NET_OUT_RADIOMETRY_*FIND*
        /// </summary>
        RADIOMETRY,
        /// <summary>
        /// POS交易信息查询,pInBuf = NET_IN_POSEXCHANGE_*FIND*,pOutBuf= NET_OUT_POSEXCHANGE_*FIND*
        /// POS Exchange Info Find,pInBuf = NET_IN_POSEXCHANGE_*FIND*,pOutBuf= NET_OUT_POSEXCHANGE_*FIND*
        /// </summary>
        NET_FIND_POS_EXCHANGE,
    }

    //热成像查询保存周期
    public enum EM_RADIOMETRY_PERIOD
    {
        PERIOD_UNKNOWN,			// 未知
        PERIOD_5 = 5,			// 5分钟记录表，默认
        PERIOD_10 = 10,           // 10分钟记录表
        PERIOD_15 = 15,           // 15分钟记录表
        PERIOD_30 = 30,           // 30分钟记录表
    }

    // CLIENT_StartFind 接口 NET_FIND_RADIOMETRY 命令入参
    public struct NET_IN_RADIOMETRY_STARTFIND
    {
        public uint dwSize;
        public NET_TIME stStartTime;                       // 查询开始时间
        public NET_TIME stEndTime;                         // 查询结束时间
        public int nMeterType;                        // 查询类别,见枚举EM_RADIOMETRY_METERTYPE
        public int nChannel;                          // 通道号
        public EM_RADIOMETRY_PERIOD emPeriod;                          // 所查询表的保存周期
    }

    // CLIENT_StartFind 接口 NET_FIND_RADIOMETRY 命令出参
    public struct NET_OUT_RADIOMETRY_STARTFIND
    {
        public uint dwSize;
        public int nFinderHanle;                      // 取到的查询句柄
        public int nTotalCount;                       // 符合此次查询条件的结果总条数
    }

    // CLIENT_DoFind 接口 NET_FIND_RADIOMETRY 命令入参
    public struct NET_IN_RADIOMETRY_DOFIND
    {
        public uint dwSize;
        public int nFinderHanle;                      // 查询句柄
        public int nBeginNumber;                      // 本次查询开始的索引号
        public int nCount;                            // 本次查询条数,最大为NET_IN_RADIOMETRY_DOFIND_MAX
    }

    /// <summary>
    /// 测温信息
    /// Temperature Monitoring info
    /// </summary>
    public struct NET_RADIOMETRYINFO
    {
        /// <summary>
        /// / 返回测温类型,见NET_RADIOMETRY_METERTYPE
        /// return to Temperature Monitoring type, refer to NET_RADIOMETRY_METERTYPE
        /// </summary>
        public int nMeterType;
        /// <summary>
        /// / 温度单位(当前配置的温度单位),见 NET_TEMPERATURE_UNIT
        /// temperature unit (currently configured temperature unit), refer to NET_TEMPERATURE_UNIT
        /// </summary>
        public int nTemperUnit;
        /// <summary>
        /// / 点的温度或者平均温度 点的时候 只返回此字段
        /// only return to this field when it is spot temperature or average temperature
        /// </summary>
        public float fTemperAver;
        /// <summary>
        /// / 最高的温度
        /// max temperature
        /// </summary>
        public float fTemperMax;
        /// <summary>
        /// / 最低的温度
        /// min temperature
        /// </summary>
        public float fTemperMin;
        /// <summary>
        /// / 中间温度值（设备不支持,兼容性保留）
        /// middle temperature value (Device does not support compatibility reservation)
        /// </summary>
        public float fTemperMid;
        /// <summary>
        /// / 标准方差值（设备不支持,兼容性保留）
        /// standard deviation value (Device does not support compatibility reservation)
        /// </summary>
        public float fTemperStd;
        /// <summary>
        /// / 最高温点坐标[0,8192)
        /// Maximum temperature point coordinate [0,8192)
        /// </summary>
        public NET_POINT_EX stuTemperMaxPoint;
        /// <summary>
        /// / 最低温点坐标[0,8192)
        /// Minimum temperature point coordinate [0,8192)
        /// </summary>
        public NET_POINT_EX stuTemperMinPoint;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 56)]
        public string reserved;
    }

    // 返回查询结果
    public struct NET_RADIOMETRY_QUERY
    {
        public NET_TIME stTime;                            // 记录时间
        public int nPresetId;                         // 预置点编号
        public int nRuleId;                           // 规则编号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;                        // 查询项名称
        public NET_POINT stCoordinate;                      // 查询测温点坐标
        public int nChannel;                          // 通道号
        public NET_RADIOMETRYINFO stTemperInfo;                      // 测温信息,目前nTemperMid, nTemperStd 成员无效
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] reserved;
    }

    // CLIENT_DoFind 接口 NET_FIND_RADIOMETRY 命令出参
    public struct NET_OUT_RADIOMETRY_DOFIND
    {
        public uint dwSize;
        public int nFound;                             // 实际查询到的点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_RADIOMETRY_QUERY[] stInfo;  // 温度统计信息
    }

    // CLIENT_StopFind 接口 NET_FIND_RADIOMETRY 命令入参
    public struct NET_IN_RADIOMETRY_STOPFIND
    {
        public uint dwSize;
        public int nFinderHanle;                       // 查询句柄
    }

    // CLIENT_StopFind 接口 NET_FIND_RADIOMETRY 命令出参
    public struct NET_OUT_RADIOMETRY_STOPFIND
    {
        public uint dwSize;
    }

    // 热图元数据信息
    public struct NET_RADIOMETRY_METADATA
    {
        public int nHeight;                            // 高
        public int nWidth;                             // 宽
        public int nChannel;                           // 通道
        public NET_TIME stTime;                             // 获取数据时间
        public int nLength;                            // 数据大小
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSensorType;                   // 机芯类型
        public int nUnzipParamR;                       // 解压缩参数R
        public int nUnzipParamB;                       // 解压缩参数B
        public int nUnzipParamF;                       // 解压缩参数F
        public int nUnzipParamO;                       // 解压缩参数O
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] Reserved;
    };

    // 热图数据
    public struct NET_RADIOMETRY_DATA
    {
        public NET_RADIOMETRY_METADATA stMetaData;                 // 元数据
        public IntPtr pbDataBuf;                  // 热图数据缓冲区（压缩过的数据,里面是每个像素点的温度数据,可以使用元数据信息解压）
        public uint dwBufSize;                  // 热图数据缓冲区大小
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] reserved;
    }

    // CLIENT_RadiometryAttach 入参
    public struct NET_IN_RADIOMETRY_ATTACH
    {
        public uint dwSize;
        public int nChannel;                           // 视频通道号	-1 表示全部
        public fRadiometryAttachCB cbNotify;                           // 状态回调函数指针
        public IntPtr dwUser;                             // 用户数据
    };

    // CLIENT_RadiometryAttach 出参
    public struct NET_OUT_RADIOMETRY_ATTACH
    {
        public uint dwSize;
    };

    // CLIENT_RadiometryFetch 入参
    public struct NET_IN_RADIOMETRY_FETCH
    {
        public uint dwSize;
        public int nChannel;                           // 通道号, 通道号要与订阅时一致, -1除外
    };

    // CLIENT_RadiometryFetch 出参
    public struct NET_OUT_RADIOMETRY_FETCH
    {
        public uint dwSize;
        public int nStatus;                            // 0: 未知, 1: 空闲, 2: 获取热图中
    }

    /// <summary>
    /// 实时预览回调数据类型
    /// stream date type
    /// </summary>
    public enum EM_REAL_DATA_TYPE
    {
        /// <summary>
        /// private stream
        /// 私有码流
        /// </summary>
        PRIVATE,
        /// <summary>
        /// 国标PS码流
        /// Chinese standard ps stream 
        /// </summary>
        GBPS,
        /// <summary>
        /// TS码流
        /// TS stream
        /// </summary>
        TS,
        /// <summary>
        /// MP4文件(从回调函数出来的是私有码流数据,参数dwDataType值为0)
        /// MP4 file(the callback function supply the private stream data, the parama dwDataType is 0 )
        /// </summary>
        MP4,
        /// <summary>
        /// 裸视频流,h264与h265都能转码成功
        /// raw video stream,both h264 and h265 can convert successfully
        /// </summary>
        H264,
        /// <summary>
        /// 流式FLV
        /// FLV stream
        /// </summary>
        FLV_STREAM,
        /// <summary>
        /// PS stream
        /// PS码流
        /// </summary>
        PS,
    };

    /// <summary>
    /// 开始实时预览并指定回调数据格式入参
    /// RealPlay By Stream Data Type (in param)
    /// </summary>
    public struct NET_IN_REALPLAY_BY_DATA_TYPE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道编号
        /// channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 窗口句柄
        /// play window handle
        /// </summary>
        public IntPtr hWnd;
        /// <summary>
        /// 码流类型 
        /// real play stream type 
        /// </summary>
        public EM_RealPlayType rType;
        /// <summary>
        /// 数据回调函数
        /// realplay data callback function prototype
        /// </summary>
        public fRealDataCallBackEx cbRealData;
        /// <summary>
        /// 回调的数据类型
        /// stream data type
        /// </summary>
        public EM_REAL_DATA_TYPE emDataType;
        /// <summary>
        /// 用户数据
        /// data user
        /// </summary>
        public IntPtr dwUser;
        /// <summary>
        /// 转换后的文件名
        /// file name to convert
        /// </summary>
        public IntPtr szSaveFileName;
        /// <summary>
        /// 数据回调函数-扩展
        /// </summary>
        public fRealDataCallBackEx2 cbRealDataEx;
        /// <summary>
        /// 音频格式
        /// audio data type
        /// </summary>
        public EM_AUDIO_DATA_TYPE emAudioType;
        /// <summary>
        /// 数据回调（扩展带时间戳，帧类型）
        /// realplay data callbackExtension(With time stamp, frame type)
        /// </summary>
        public fDataCallBackEx cbRealDataEx2;
        /// <summary>
        /// / 0表示默认，使用写文件方式获取mp4流；1表示使用回调获取mp4流
        /// / 0 represents default, using write file method to obtain mp4 stream; 1 represents using a callback to obtain the mp4 stream
        /// </summary>
        public int nMP4Type;
    }

    /// <summary>
    /// 音频数据类型
    /// </summary>
    public enum EM_AUDIO_DATA_TYPE
    {
        /// <summary>
        /// 默认
        /// </summary>
	    EM_AUDIO_DATA_TYPE_DEFAULT = 0,
        /// <summary>
        /// 音频强制转换为AAC
        /// </summary>
	    EM_AUDIO_DATA_TYPE_AAC,
        /// <summary>
        /// 音频强制转换为G711A
        /// </summary>
	    EM_AUDIO_DATA_TYPE_G711A,
        /// <summary>
        /// 音频强制转换为G711U
        /// </summary>
	    EM_AUDIO_DATA_TYPE_G711U,
        /// <summary>
        /// 音频强制转换为MP2
        /// </summary>
	    EM_AUDIO_DATA_TYPE_MP2
    }

    /// <summary>
    /// 开始实时预览并指定回调数据格式出参
    /// RealPlay By Stream Data Type (out param)
    /// </summary>
    public struct NET_OUT_REALPLAY_BY_DATA_TYPE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 帧类型
    /// Frame type
    /// </summary>
    public enum EM_DATA_CALL_BACK_FRAM_TYPE
    {
        /// <summary>
        /// 帧类型不可知
        /// Frame type unknown
        /// </summary>
        EM_DATA_CALL_BACK_FRAM_TYPE_UNKNOWN = 0,
        /// <summary>
        /// 帧类型是视频帧
        /// Video frame
        /// </summary>
        EM_DATA_CALL_BACK_FRAM_TYPE_VIDEO,
        /// <summary>
        /// 帧类型是音频帧
        /// Audio frame
        /// </summary>
        EM_DATA_CALL_BACK_FRAM_TYPE_AUDIO,
        /// <summary>
        /// 帧类型是数据帧
        /// Data frame
        /// </summary>
        EM_DATA_CALL_BACK_FRAM_TYPE_DATA,
    }

    /// <summary>
    /// 帧子类型
    /// Frame subtype
    /// </summary>
    public enum EM_DATA_CALL_BACK_FRAM_SUB_TYPE
    {
        /// <summary>
        /// 数据无效
        /// invalid data
        /// </summary>
        EM_DATA_CALL_BACK_FRAM_SUB_TYPE_INVALID = -1,
        /// <summary>
        /// I Frame
        /// struct size
        /// </summary>
        EM_DATA_CALL_BACK_FRAM_SUB_TYPE_I_FRAME,
        /// <summary>
        /// P Frame
        /// struct size
        /// </summary>
        EM_DATA_CALL_BACK_FRAM_SUB_TYPE_P_FRAME,
        /// <summary>
        /// B Frame
        /// struct size
        /// </summary>
        EM_DATA_CALL_BACK_FRAM_SUB_TYPE_B_FRAME,
    }

    /// <summary>
    /// 时间戳
    /// Timestamp
    /// </summary>
    public struct NET_DATA_CALL_BACK_TIME
    {
        /// <summary>
        /// 年
        /// Year
        /// </summary>
        public uint dwYear;
        /// <summary>
        /// 月
        /// Month
        /// </summary>
        public uint dwMonth;
        /// <summary>
        /// 日
        /// Day
        /// </summary>
        public uint dwDay;
        /// <summary>
        /// 时
        /// Hour
        /// </summary>
        public uint dwHour;
        /// <summary>
        /// 分
        /// Minute
        /// </summary>
        public uint dwMinute;
        /// <summary>
        /// 秒
        /// Second
        /// </summary>
        public uint dwSecond;
        /// <summary>
        /// 毫秒
        /// Millisecond
        /// </summary>
        public uint dwMillisecond;
        /// <summary>
        /// pts 时间戳
        /// pts
        /// </summary>
        public uint dwPTS;
        /// <summary>
        /// dts 时间戳
        /// dts
        /// </summary>
        public uint dwDTS;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public uint[] dwReserved;
    }

    public struct NET_DATA_CALL_BACK_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 数据类型
        /// Data type
        /// </summary>
        public uint dwDataType;
        /// <summary>
        /// 数据
        /// Data buffer
        /// </summary>
        public IntPtr pBuffer;
        /// <summary>
        /// 数据长度
        /// Data length
        /// </summary>
        public uint dwBufSize;
        /// <summary>
        /// 时间戳
        /// Timestamp
        /// </summary>
        public NET_DATA_CALL_BACK_TIME stuTime;
        /// <summary>
        /// 帧类型
        /// Frame type
        /// </summary>
        public EM_DATA_CALL_BACK_FRAM_TYPE emFramType;
        /// <summary>
        /// 帧子类型
        /// Frame subtype
        /// </summary>
        public EM_DATA_CALL_BACK_FRAM_SUB_TYPE emFramSubType;
    }

    /// <summary>
    /// 开始回放并指定回调数据格式 入参
    /// PlayBack By stream Data Type (in param)
    /// </summary>
    public struct NET_IN_PLAYBACK_BY_DATA_TYPE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道编号
        /// channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 开始时间
        /// start time 
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// 结束时间
        /// stop time
        /// </summary>
        public NET_TIME stStopTime;
        /// <summary>
        /// 播放窗格, 可为NULL
        /// play window handle
        /// </summary>
        public IntPtr hWnd;
        /// <summary>
        /// 进度回调
        /// function prototype of play back progress 
        /// </summary>
        public fDownLoadPosCallBack cbDownLoadPos;
        /// <summary>
        /// 进度回调用户信息     LDWORD
        /// pos user
        /// </summary>
        public IntPtr dwPosUser;
        /// <summary>
        /// 数据回调
        /// Playback data callback function prototype
        /// </summary>
        public fDataCallBack fDownLoadDataCallBack;
        /// <summary>
        /// 回调的数据类型 
        /// stream data type 
        /// </summary>
        public EM_REAL_DATA_TYPE emDataType;
        /// <summary>
        /// 数据回调用户信息
        /// date user
        /// </summary>
        public IntPtr dwDataUser;
        /// <summary>
        /// 播放方向, 0:正放; 1:倒放;
        /// Playback direction, 0:normal; 1:reverse;
        /// </summary>
        public int nPlayDirection;
        /// <summary>
        /// 音频类型
        /// audio data type
        /// </summary>
        public EM_AUDIO_DATA_TYPE emAudioType;
        /// <summary>
        /// 数据回调（扩展带时间戳，帧类型）
        /// realplay data callbackExtension(With time stamp, frame type)
        /// </summary>
        public fDataCallBackEx fDownLoadDataCallBackEx;
    }

    /// <summary>
    /// 开始回放并指定回调数据格式 出参
    /// PlayBack By stream Data Type (out param)
    /// </summary>
    public struct NET_OUT_PLAYBACK_BY_DATA_TYPE
    {
        /// <summary>
        /// 结构体大小
        /// struct size 
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 开始下载并指定回调数据格式 入参
    /// Download record by stream data type (in param)
    /// </summary>
    public struct NET_IN_DOWNLOAD_BY_DATA_TYPE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道编号
        /// channel id  
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 录像类型
        /// record type
        /// </summary>
        public EM_QUERY_RECORD_TYPE emRecordType;
        /// <summary>
        /// 下载的文件路径
        /// save file path
        /// </summary>
        public IntPtr szSavedFileName;
        /// <summary>
        /// 开始时间
        /// start time
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// 结束时间
        /// stop time
        /// </summary>
        public NET_TIME stStopTime;
        /// <summary>
        /// 进度回调
        /// function prototype of play back progress
        /// </summary>
        public fTimeDownLoadPosCallBack cbDownLoadPos;
        /// <summary>
        /// 进度回调用户信息
        /// pos user
        /// </summary>
        public IntPtr dwPosUser;
        /// <summary>
        /// 数据回调
        /// Playback data callback function prototype
        /// </summary>
        public fDataCallBack fDownLoadDataCallBack;
        /// <summary>
        /// 回调的数据类型
        /// stream data type 
        /// </summary>
        public EM_REAL_DATA_TYPE emDataType;
        /// <summary>
        /// 数据回调用户信息
        /// date user
        /// </summary>
        public IntPtr dwDataUser;
        /// <summary>
        /// 音频类型
        /// </summary>
        public EM_AUDIO_DATA_TYPE emAudioType;
    }

    /// <summary>
    /// 开始下载并指定回调数据格式 出参
    ///  Download record by stream data type (out param)
    /// </summary>
    public struct NET_OUT_DOWNLOAD_BY_DATA_TYPE
    {
        /// <summary>
        /// 结构体大小  
        /// struct size  
        /// </summary>
        public uint dwSize;
    }

    // 预置点状态枚举
    public enum EM_DH_PTZ_PRESET_STATUS
    {
        UNKNOWN,        // 未知
        REACH,          // 预置点到达
        UNREACH,        // 预置点未到达
    }


    /// <summary>
    /// 云台P/T运动状态
    /// P/T movement status of gimbal
    /// </summary>
    public enum EM_DH_PTZ_PAN_TILT_STATUS
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_DH_PTZ_PAN_TILT_STATUS_UNKNOWN,
        /// <summary>
        /// 空闲状态
        /// Idle state
        /// </summary>
        EM_DH_PTZ_PAN_TILT_STATUS_IDLE,
        /// <summary>
        /// 运动状态
        /// Movement status
        /// </summary>
        EM_DH_PTZ_PAN_TILT_STATUS_MOVING,
    }

    /// <summary>
    /// 云台定位信息报警
    /// PTZ positioning information alarm
    /// </summary>
    public struct NET_PTZ_LOCATION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 云台水平运动位置,有效范围：[0,3600]
        /// Horizontal movement of the head position, effective range: [0,3600]
        /// </summary>
        public int nPTZPan;
        /// <summary>
        /// 云台垂直运动位置,有效范围：[-1800,1800]
        /// PTZ vertical position, the effective range: [-1800,1800]
        /// </summary>
        public int nPTZTilt;
        /// <summary>
        /// 云台光圈变动位置,有效范围：[0,128]
        /// PTZ  position changes, effective range: [0,128]
        /// </summary>
        public int nPTZZoom;
        /// <summary>
        /// 云台运动状态, 0-未知 1-运动 2-空闲
        /// PTZ motion, 0 - Unknown 1 - Movement 2 - Idle
        /// </summary>
        public byte bState;
        /// <summary>
        /// 云台动作,255-未知,0-预置点,1-线扫,2-巡航,3-巡迹,4-水平旋转,5-普通移动,6-巡迹录制,7-全景云台扫描,8-热度图
        /// 9-精确定位,10-设备校正,11-智能配置，12-云台重启
        /// PTZ movement, 255- unknown,0 - preset ,1 - line scan, 2 - Cruise, 3 - patrol track, 4 - horizontal rotation,5 -GeneralMove,6-PatternRecord,7-WideViewScan
        /// ,8-HeatMap,9-AbsoluteMove,10-CheckDeviceOffset,11-IntelliConfigure,12-Restart
        /// </summary>
        public byte bAction;
        /// <summary>
        /// 云台聚焦状态, 0-未知, 1-运动状态, 2-空闲
        /// PTZ focus state, 0 - unknown 1 - state of motion 2 - Idle
        /// </summary>
        public byte bFocusState;
        /// <summary>
        /// 在时间段内预置点状态是否有效
        /// 如果当前上报的预置点是时间段内的预置点,则为1,其他情况为0
        /// In the period of validity of the preset state
        /// If the current is preset reported preset period of time, compared with one, otherwise 0
        /// </summary>
        public byte bEffectiveInTimeSection;
        /// <summary>
        /// 巡航ID号
        /// Cruise ID number
        /// </summary>
        public int nPtzActionID;
        /// <summary>
        /// 云台所在预置点编号
        /// PTZ preset number where
        /// </summary>
        public uint dwPresetID;
        /// <summary>
        /// 聚焦位置
        /// Focus position
        /// </summary>
        public float fFocusPosition;
        /// <summary>
        /// 云台ZOOM状态,0-未知,1-ZOOM,2-空闲
        /// ZOOM PTZ status, 0 - Unknown,1-ZOOM, 2 - Idle
        /// </summary>
        public byte bZoomState;
        /// <summary>
        /// 对齐
        /// Alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved;
        /// <summary>
        /// 包序号,用于校验是否丢包
        /// Packet sequence number, used to verify whether the loss
        /// </summary>
        public uint dwSequence;
        /// <summary>
        /// 对应的UTC(1970-1-1 00:00:00)秒数。
        /// Corresponding UTC (1970-1-1 00:00:00) seconds.
        /// </summary>
        public uint dwUTC;
        /// <summary>
        /// 预置点位置
        /// preset status
        /// </summary>
        public EM_DH_PTZ_PRESET_STATUS emPresetStatus;
        /// <summary>
        /// 真实变倍值 当前倍率（扩大100倍表示）
        /// real zoom value ,expanded 100 times
        /// </summary>
        public int nZoomValue;
        /// <summary>
        /// 云台方向与放大倍数（扩大100倍表示）
        /// 第一个元素为水平角度，0-36000；
        /// 第二个元素为垂直角度，（-18000）-（18000）；
        /// 第三个元素为显示放大倍数，0-MaxZoom*100
        /// Ptz abs position
        /// First is horizontal angle,0-36000
        /// Second is vertical angle,-18000-18000
        /// nZoom is zoom factors,0-MaxZoom*100
        /// </summary>
        public NET_PTZSPACE_UNNORMALIZED stuAbsPosition;
        /// <summary>
        /// 聚焦映射值
        /// Focus map value
        /// </summary>
        public int nFocusMapValue;
        /// <summary>
        /// 变倍映射值
        /// Variable magnification mapping value
        /// </summary>
        public int nZoomMapValue;
        /// <summary>
        /// 云台P/T运动状态
        /// P/T movement status of gimbal
        /// </summary>
        public EM_DH_PTZ_PAN_TILT_STATUS emPanTiltStatus;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 696)]
        public string reserved;
    }

    /// <summary>
    /// 云台定位中非归一化坐标和变倍
    /// </summary>
    public struct NET_PTZSPACE_UNNORMALIZED
    {
        public int nPosX;           // x坐标
        public int nPosY;           // y坐标
        public int nZoom;           // 放大倍率
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 52)]
        public byte[] byReserved;   // 预留字节
    }

    // 订阅云台元数据接口输入参数
    public struct NET_IN_PTZ_STATUS_PROC
    {
        public uint dwSize;
        public int nChannel;              // 云台通道
        public fPTZStatusProcCallBack cbPTZStatusProc;       // 状态回调函数
        public IntPtr dwUser;                // 用户数据
    };

    // 订阅云台元数据接口输输出参数
    public struct NET_OUT_PTZ_STATUS_PROC
    {
        public uint dwSize;
    }

    /// <summary>
    /// GPS information(Mobile device)
    /// </summary>
    public struct NET_GPS_Info
    {
        public NET_TIME revTime;			// position time 
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public byte[] DvrSerial;			// Device serial number
        public double longitude;			// Longitude
        public double latidude;			// Latitude 
        public double height;			    // Height(meter)
        public double angle;			    // Angle(The north pole is the original point and clockwise is +)
        public double speed;				// Speed(Kilometer/hour)
        public ushort starCount;			// Starcount
        public bool antennaState;		// Antenna status(true=good,false =bad)
        public bool orientationState;	// Orientation status (true=position,false = no position )
    }

    /// <summary>
    /// alarm state info
    /// </summary>
    public struct NET_ALARM_STATE_INFO
    {
        public int nAlarmCount;             // alarm count
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public int[] nAlarmState;        // alarm state
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byRserved;          // reserved        
    }

    /// <summary>
    /// Gps location info
    /// </summary>
    public struct NET_GPS_LOCATION_INFO
    {
        public NET_GPS_Info stuGpsInfo;               // GPS info
        public NET_ALARM_STATE_INFO stuAlarmStateInfo;        // Alarm state info
        public int nTemperature;		              // (Unit:0.1 centigrade)
        public int nHumidity;				  // Humidity(Unit:0.1%)
        public uint nIdleTime;				  // Idle time(Unit:second)
        public uint nMileage;				  // Mileage(Unit:0.1km)
        public int nVoltage;				  // Set Voltage value(Unit:0.1V)
        public byte bOffline;                 // 0-real time 1-fill
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1023)]
        public byte[] byReserved;
    }

    #region 二维码开门 QR CODE
    // 门禁控制器操作类型
    public enum NET_EM_ACCESS_CTL_MANAGER
    {
        MANAGER_ADDDEVICE,                        // 添加单个分控器, 对应结构体 pstInParam = NET_IN_ACCESS_CTL_MANAGER_ADDDEVICE, pstOutParam = NET_OUT_ACCESS_CTL_MANAGER_ADDDEVICE
        MANAGER_MODIFYDEVICE,                     // 修改分控器名称, 对应结构体 pstInParam = NET_IN_ACCESS_CTL_MANAGER_MODIFYDEVICE, pstOutParam = NET_OUT_ACCESS_CTL_MANAGER_MODIFYDEVICE
        MANAGER_REMOVEDEVICE,                     // 删除分控器, 对应结构体 pstInParam = NET_IN_ACCESS_CTL_MANAGER_REMOVEDEVICE, pstOutParam = NET_OUT_ACCESS_CTL_MANAGER_REMOVEDEVICE
        GETSUBCONTROLLER_INFO,                    // 获取分控器信息, 对应结构体 pstInParam = NET_IN_GET_SUB_CONTROLLER_INFO, pstOutParam = NET_OUT_GET_SUB_CONTROLLER_INFO
        GETSUBCONTROLLER_STATE,                   // 获取分控器状态, 对应结构体 pstInParam = NET_IN_GET_SUB_CONTROLLER_STATE, pstOutParam = NET_OUT_GET_SUB_CONTROLLER_STATE
        SET_REPEAT_ENTERROUTE,                    // 设置反潜路径信息, 对应结构体 pstInparam = NET_IN_SET_REPEAT_ENTERROUTE, pstOutParam = NET_OUT_SET_REPEAT_ENTERROUTE
        GET_REPEAT_ENTERROUTE,                    // 获取反潜路径信息, 对应结构体 pstInparam = NET_IN_GET_REPEAT_ENTERROUTE, pstOutParam = NET_OUT_GET_REPEAT_ENTERROUTE
        SET_ABLOCK_ROUTE,                         // 设置AB互锁路径信息, 对应结构体 pstInparam = NET_IN_SET_ABLOCK_ROUTE, pstOutParam = NET_OUT_SET_ABLOCK_ROUTE
        GET_ABLOCK_ROUTE,                         // 获取AB互锁路径信息, 对应结构体 pstInparam = NET_IN_GET_ABLOCK_ROUTE, pstOutParam = NET_OUT_GET_ABLOCK_ROUTE
        GET_LOGSTATUS,                            // 获取日志同步状态,对应结构体 pstInparam = NET_IN_GET_LOGSTATUS, pstOutParam = NET_OUT_GET_LOGSTATUS 
        SYNCHRO_OFFLINE_LOG,                      // 同步离线日志, 对应结构体 pstInparam = NET_IN_SYNCHRO_OFFLINE_LOG, pstOutParam = NET_OUT_SYNCHRO_OFFLINE_LOG 
        SYNCHRO_TIME,                             // 同步分控器时间,对应结构体 pstInparam = NET_IN_SYNCHRO_CONTROLLER_TIME, pstOutParam = NET_OUT_SYNCHRO_CONTROLLER_TIME 
        SET_QRCODEDECODE_INFO,                    // 设置二维码的解码信息, 对应结构体 pstInparam = NET_IN_SET_QRCODE_DECODE_INFO, pstOutParam = NET_OUT_SET_QRCODE_DECODE_INFO 
    }

    // 使用的加密算法
    public enum NET_ENUM_QRCODE_CIPHER
    {
        UNKNOWN,
        AES256,                                              // AES-256
    }

    // 设置二维码的解码信息入参
    public struct NET_IN_SET_QRCODE_DECODE_INFO
    {
        public uint dwSize;
        public NET_ENUM_QRCODE_CIPHER emCipher;                     // 加密方式
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]
        public string szKey;                                      // 秘钥
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved;                                  // 字节对齐
        /// <summary>
        /// / 是否使用扩展密钥
        /// is use an extended key
        /// </summary>
        public bool bUseKeyEx;
        /// <summary>
        /// / 密钥扩展
        /// extended key
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szKeyEx;
    }

    // 设置二维码的解码信息出参
    public struct NET_OUT_SET_QRCODE_DECODE_INFO
    {
        public uint dwSize;
    }

    // CLIENT_EncryptString 接口入参
    public struct NET_IN_ENCRYPT_STRING
    {
        public uint dwSize;                           // 结构体大小
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]
        public string szCard;                        // 需要加密的字符串
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved1;                 // 字节对齐
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]
        public string szKey;                      // 秘钥
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved2;                 // 字节对齐	
    };

    // CLIENT_EncryptString 接口出参
    public struct NET_OUT_ENCRYPT_STRING
    {
        public uint dwSize;                       // 结构体大小
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szEncryptString;         // 加密后字符串
    }
    #endregion

    #region X-RAY
    /// <summary>
    /// CLIENT_AttachAnalyseTaskState 接口输入参数
    /// input parameter of CLIENT_AttachAnalyseTaskState
    /// </summary>
    public struct NET_IN_ATTACH_ANALYSE_TASK_STATE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 智能分析任务ID
        /// task IDs
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public uint[] nTaskIDs;
        /// <summary>
        /// 智能分析任务个数, 0表示订阅全部任务
        /// number of analyse task, 0 is means attach all
        /// </summary>
        public uint nTaskIdNum;
        /// <summary>
        /// 智能分析任务状态订阅函数
        /// callback function of attach analyse state
        /// </summary>
        public fAnalyseTaskStateCallBack cbAnalyseTaskState;
        /// <summary>
        /// 用户数据
        /// user data
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// 智能分析任务状态回调信息
    /// </summary>
    public struct NET_CB_ANALYSE_TASK_STATE_INFO
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_ANALYSE_TASKS_INFO[] stuTaskInfos;     // 智能分析任务信息
        public uint nTaskNum;                               // 任务个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;                       // 保留字节        
    }

    /// <summary>
    /// 智能分析任务错误码
    /// analyse task error code
    /// </summary>
    public enum EM_ANALYSE_TASK_ERROR
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ANALYSE_TASK_ERROR_UNKNOWN = 1,
        /// <summary>
        /// 解码能力不足
        /// insufficient decoding capability
        /// </summary>
        EM_ANALYSE_TASK_ERROR_INSUFFICIENT_DECODING_CAPABILITY,
        /// <summary>
        /// 智能能力不足
        /// insufficient intelligence capability
        /// </summary>
        EM_ANALYSE_TASK_ERROR_INSUFFICIENT_INTELLIGENCE_CAPABILITY,
        /// <summary>
        /// 码流格式不支持
        /// format not support
        /// </summary>
        EM_ANALYSE_TASK_ERROR_BITSTREAM_FORMAT_NOT_SUPPORTED,
        /// <summary>
        /// 分析器离线
        /// analyzer off line
        /// </summary>
        EM_ANALYSE_TASK_ERROR_ANALYZER_OFF_LINE,
        /// <summary>
        /// 分析器上线
        /// analyzer on line
        /// </summary>
        EM_ANALYSE_TASK_ERROR_ANALYZER_ON_LINE,
    }

    /// <summary>
    /// 智能分析任务信息
    /// info of analyse task
    /// </summary>
    public struct NET_ANALYSE_TASKS_INFO
    {
        /// <summary>
        /// 任务ID
        /// task ID
        /// </summary>
        public uint nTaskID;
        /// <summary>
        /// 分析状态
        /// analyse state
        /// </summary>
        public EM_ANALYSE_STATE emAnalyseState;
        /// <summary>
        /// 错误码
        /// error code
        /// </summary>
        public EM_ANALYSE_TASK_ERROR emErrorCode;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;
        /// <summary>
        /// 任务数据
        /// task user date
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szTaskUserData;
        /// <summary>
        /// 录像分析进度，当任务添加接口CLIENT_AddAnalyseTask emDataSourceType参数为录像分析"EM_DATA_SOURCE_REMOTE_PICTURE_FILE"时有效 范围1~100，100表示分析完成
        /// Video analysis progress, is is valid when task add interface CLIENT_AddAnalyseTask's parameter emDataSourceType is "EM_DATA_SOURCE_REMOTE_PICTURE_FILE", the valid range is 1 ~ 100100, indicating that the analysis is completed
        /// </summary>
        public int nVideoAnalysisProcess;
        /// <summary>
        /// 智能流rtsp地址，实时流时才填写
        /// RTSP address of intelligent stream, which can be filled in only when real-time flow
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szUrl;
        /// <summary>
        /// 智能大类类型
        /// Class type
        /// </summary>
        public EM_SCENE_CLASS_TYPE emClassType;
        /// <summary>
        /// 数据源类型
        /// Source type
        /// </summary>
        public EM_DATA_SOURCE_TYPE emSourceType;
        /// <summary>
        /// 任务使用的分析子卡ID.-1表示无效子卡，大于等于0的值表示子卡ID号
        /// emErrorCode为EM_ANALYSE_TASK_ERROR_ANALYZER_OFF_LINE或EM_ANALYSE_TASK_ERROR_ANALYZER_ON_LINE时此字段有效
        /// The analysis sub card ID used by the task. - 1 represents the invalid sub card, and a value greater than or equal to 0 represents the sub card ID number
        /// This field is valid when the emErrorCode is EM_ANALYSE_TASK_ERROR_ANALYZER_OFF_LINE or EM_ANALYSE_TASK_ERROR_ANALYZER_ON_LINE
        /// </summary>
        public int nChipId;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 428)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 分析状态
    /// analyse task state
    /// </summary>
    public enum EM_ANALYSE_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// 已创建但未运行
        /// idle
        /// </summary>
        IDLE,
        /// <summary>
        /// 分析中
        /// analysing
        /// </summary>
        ANALYSING,
        /// <summary>
        /// 分析中并等待push数据
        /// analysing and waitting push data
        /// </summary>
        ANALYSING_WAITPUSH,
        /// <summary>
        /// 正常完成
        /// finish
        /// </summary>
        FINISH,
        /// <summary>
        /// 执行异常
        /// error
        /// </summary>
        ERROR,
        /// <summary>
        /// 被删除
        /// removed
        /// </summary>
        REMOVED,
        /// <summary>
        /// 完成一轮视频源分析
        /// finish one round
        /// </summary>
        ROUNDFINISH,
        /// <summary>
        /// 任务开启状态
        /// starting
        /// </summary>
        STARTING,
    }

    /// <summary>
    /// 智能分析图片信息扩展
    /// Extended information for intelligent analysis pictures
    /// </summary>
    public struct NET_PUSH_PICTURE_INFO_EXTERN
    {
        /// <summary>
        /// / 算法模型路径
        /// / Algorithm model path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szModelPath;
        /// <summary>
        /// / 图片序号, 如果使用此字段，回调的事件将在图片数组赋值该值，仅表示序号值不代表索引
        /// / Picture index, if this field is used, the event callback will assign this value to the picture array, representing the order value, not the index
        /// </summary>
        public int nIndexInData;
        /// <summary>
        /// / 图片类型， 0: 未知 1：抓图； 2：底图
        /// / Picture type, 0: unknown, 1: snapshot, 2: base map
        /// </summary>
        public int nPictureType;
        /// <summary>
        /// / 底图身份证ID
        /// / Citizen ID in the base map
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCitizenIDNo;
        /// <summary>
        /// / 保留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_PushAnalysePictureFile 接口输入参数
    /// Input param of push picture
    /// </summary>
    public struct NET_IN_PUSH_ANALYSE_PICTURE_FILE
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 任务ID
        /// task ID
        /// </summary>
        public uint nTaskID;
        /// <summary>
        /// / 推送图片信息
        /// info of push pictures
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_PUSH_PICTURE_INFO[] stuPushPicInfos;
        /// <summary>
        /// / 推送图片数量
        /// number of push pictures
        /// </summary>
        public uint nPicNum;
        /// <summary>
        /// / 数据缓冲区长度, 单位:字节
        /// length of bin data buf, unit:byte
        /// </summary>
        public uint nBinBufLen;
        /// <summary>
        /// / 数据缓冲区, 由用户申请和释放
        /// bin data buf, application and release by user
        /// </summary>
        public IntPtr pBinBuf;
        /// <summary>
        /// / 推图信息扩展字段，数量复用nPicNum
        /// / Extended fields for push picture information, the number is reused nPicNum
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_PUSH_PICTURE_INFO_EXTERN[] stuPushPicInfoExterns;
    }



    /// <summary>
    /// 智能分析图片信息
    /// </summary>
    public struct NET_PUSH_PICTURE_INFO
    {
        /// <summary>
        /// / 文件ID
        /// file ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFileID;
        /// <summary>
        /// / 文件数据在二进制数据中的偏移, 单位:字节
        /// the offset length of the picture file in the bin data, unit:byte
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// / 文件数据长度, 单位:字节
        /// the length of the picture file, unit:byte
        /// </summary>
        public uint nLength;
        /// <summary>
        /// / 客户自定义信息
        /// Customer-defined information. It is used for X-ray.
        /// </summary>
        public NET_XRAY_CUSTOM_INFO stuXRayCustomInfo;
        /// <summary>
        /// / 远程文件url地址 带访问所需必要信息 包含用户名 密码
        /// Remote file url
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szUrl;
        /// <summary>
        /// / 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_PushAnalysePictureFile 接口输出参数
    /// </summary>
    public struct NET_OUT_PUSH_ANALYSE_PICTURE_FILE
    {
        public uint dwSize;                                 // 结构体大小
    }

    /// <summary>
    /// 智能分析数据源类型
    /// type of analyse data source
    /// </summary>
    public enum EM_DATA_SOURCE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        REMOTE_UNKNOWN = 0,
        /// <summary>
        /// 远程实时流 , 对应 NET_REMOTE_REALTIME_STREAM_INFO
        /// remote stream, Corresponding to NET_REMOTE_STREAM_INFO
        /// </summary>
        REMOTE_REALTIME_STREAM = 1,
        /// <summary>
        /// 主动推送图片文件, 对应 NET_PUSH_PICFILE_INFO
        /// picture file which is pushed actively, Corresponding to NET_PUSH_PICFILE_INFO
        /// </summary>
        PUSH_PICFILE,
        /// <summary>
        /// 远程视频文件, 对应 NET_REMOTE_VIDEO_FILE_INFO
        /// remote video file, Corresponding to NET_REMOTE_VIDEO_FILE_INFO
        /// </summary>
        REMOTE_VIDEO_FILE,
        /// <summary>
        /// 远程图片文件, 对应 NET_REMOTE_PICTURE_FILE_INFO
        /// remote picture file, Corresponding to NET_REMOTE_PICTURE_FILE_INFO
        /// </summary>
        REMOTE_PICTURE_FILE,
        /// <summary>
        /// 离线视频文件（第三方导入的文件）, 对应 NET_OFFLINE_VIDEO_FILE_INFO
        /// offline video file(Third P imported files), Corresponding to NET_OFFLINE_VIDEO_FILE_INFO
        /// </summary>
        OFFLINE_VIDEO_FILE,
        /// <summary>
        /// 主动推送图片文件，添加任务时无规则和图片信息，通过推送图片接口，每张图片中带有不同的规则信息（目前能源场景中使用）, 对应 NET_PUSH_PICFILE_BYRULE_INFO
        /// Push picture file by rule, Corresponding to NET_PUSH_PICFILE_BYRULE_INFO
        /// </summary>
        PUSH_PICFILE_BYRULE,
        /// <summary>
        /// 本地实时流, 对应 NET_LOCAL_STREAM_INFO
        /// Local Stream, Corresponding to NET_LOCAL_STREAM_INFO
        /// </summary>
        LOCAL_STREAM,
    }

    /// <summary>
    /// 标尺信息
    /// staff info
    /// </summary>
    public struct NET_STAFF_INFO
    {
        /// <summary>
        /// 起始坐标点
        /// start location
        /// </summary>
        public NET_POINT stuStartLocation;
        /// <summary>
        /// 终止坐标点
        /// end location
        /// </summary>
        public NET_POINT stuEndLocation;
        /// <summary>
        /// 实际长度,单位米
        /// length(m)
        /// </summary>
        public float nLenth;
        /// <summary>
        /// 标尺类型
        /// type
        /// </summary>
        public EM_STAFF_TYPE emType;
    }

    /// <summary>
    /// 标定区域
    /// Calibration area
    /// </summary>
    public struct NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA
    {
        /// <summary>
        /// 标尺线个数
        /// Number of staffs
        /// </summary>
        public int nStaffs;
        /// <summary>
        /// 标尺线
        /// staffs
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_STAFF_INFO[] stuStaffs;
        /// <summary>
        /// 标定多边形区域
        /// Calibrated polygon region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuCalibratePloygonArea;
        /// <summary>
        /// 标定多边形区域顶点个数
        /// The number of vertices in the demarcated polygon region
        /// </summary>
        public int nCalibratePloygonAreaNum;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 车道线属性
    /// Lane attribute
    /// </summary>
    public enum EM_GLOBAL_LANES_LINE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknow
        /// </summary>
        EM_GLOBAL_LANES_LINE_TYPE_UNKNOWN,
        /// <summary>
        /// 白实线
        /// White solid
        /// </summary>
        EM_GLOBAL_LANES_LINE_TYPE_WHITESOLID,
        /// <summary>
        /// 白虚线
        /// White dotted
        /// </summary>
        EM_GLOBAL_LANES_LINE_TYPE_WHITEDOTTED,
        /// <summary>
        /// 黄线
        /// Yellow
        /// </summary>
        EM_GLOBAL_LANES_LINE_TYPE_YELLOW,
        /// <summary>
        /// 上实下虚
        /// Up solid and down dotted
        /// </summary>
        EM_GLOBAL_LANES_LINE_TYPE_UPSOLIDDOWNDOTTED,
        /// <summary>
        /// 上虚下实
        /// Up dotted and down solid
        /// </summary>
        EM_GLOBAL_LANES_LINE_TYPE_UPDOTTEDDOWNSOLID,
    }

    /// <summary>
    /// 车道信息，每个车道两条边界线
    /// Lane information, two boundaries for each lane
    /// </summary>
    public struct NET_ANALYSE_TASK_GLOBAL_LANES
    {
        /// <summary>
        /// 车道使能
        /// 本车道规则只有在车道使能情况下才可能生效，实际应对用户在一段时期内某车道施工引起的误检
        /// 该字段缺省时默认该车道使能
        /// Enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 车道编号
        /// Lane number
        /// </summary>
        public int nNumber;
        /// <summary>
        /// 左车道线，车道线的方向表示车道方向，沿车道方向左边的称为左车道线点的坐标坐标归一化到[0,8192)区间
        /// Left line point
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuLeftLinePoint;
        /// <summary>
        /// 左车道线点个数
        /// Number of left line point
        /// </summary>
        public int nLeftLinePointNum;
        /// <summary>
        /// 左车道线的属性
        /// Left line type
        /// </summary>
        public EM_GLOBAL_LANES_LINE_TYPE emLeftLineType;
        /// <summary>
        /// 右车道线，车道线的方向表示车道方向，沿车道方向左边的称为左车道线点的坐标坐标归一化到[0,8192)区间
        /// Right line point
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuRightLinePoint;
        /// <summary>
        /// 右车道线点个数
        /// Number of right line point
        /// </summary>
        public int nRightLinePointNum;
        /// <summary>
        /// 右车道线的属性
        /// Right line type
        /// </summary>
        public EM_GLOBAL_LANES_LINE_TYPE emRightLineType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 任务全局配置
    /// Task global configuration
    /// </summary>
    public struct NET_ANALYSE_TASK_GLOBAL
    {
        /// <summary>
        /// 车道信息数量
        /// Number of lane information
        /// </summary>
        public int nLanesNum;
        /// <summary>
        /// 车道信息
        /// lane information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_ANALYSE_TASK_GLOBAL_LANES[] stuLanes;
        /// <summary>
        /// 标定区域个数
        /// Number of calibration areas
        /// </summary>
        public int nCalibrateArea;
        /// <summary>
        /// 标定区域
        /// calibration areas
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA[] stuCalibrateArea;
        /// <summary>
        /// 目标检测区域数组,由用户申请内存，申请大小为sizeof(NET_OBJECT_AREA)*nObjectAreasNum
        /// Target detection area array, user molloc memory, size:sizeof(NET_OBJECT_AREA)*nObjectAreasNum
        /// </summary>
        public IntPtr pstuObjectAreas;
        /// <summary>
        /// 目标检测区域数组有效个数
        /// Valid number of target detection area array
        /// </summary>
        public int nObjectAreasNum;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016 - 8)]
        public byte[] byReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016 - 4)]
        public byte[] byReserved;
#endif
    }

    /// <summary>
    /// 任务模块配置
    /// Task module configuration
    /// </summary>
    public struct NET_ANALYSE_TASK_MODULE
    {
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// Rules specific size filters
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO stuSizeFileter;
        /// <summary>
        /// 排除区域
        /// Exclude region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_POLY_POINTS[] stuExcludeRegion;
        /// <summary>
        /// 排除区域数
        /// Number of exclude region
        /// </summary>
        public int nExcludeRegionNum;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 本地实时流信息
    /// Local stream information
    /// </summary>
    public struct NET_LOCAL_STREAM_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 智能任务启动规则, Polling任务时无效
        /// starting rule of analyse task
        /// </summary>
        public EM_ANALYSE_TASK_START_RULE emStartRule;
        /// <summary>
        /// 分析规则信息
        /// info of analyse rule
        /// </summary>
        public NET_ANALYSE_RULE stuRuleInfo;
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 码流类型, 0:主码流; 1:辅1码流; 2:辅2码流;
        /// Stream type, 0-main stream, 1-extra stream 1, 2-extra stream 2
        /// </summary>
        public uint nStreamType;
        /// <summary>
        /// 任务数据
        /// task user data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szTaskUserData;
        /// <summary>
        /// 是否许可重复,0默认是可以重复,1表示不能重复
        /// Whether duplicate is allowed or not, 0 is repeatable by default, 1 is not repeatable
        /// </summary>
        public int nIsRepeat;
        /// <summary>
        /// 全局配置
        /// Task global configuration
        /// </summary>
        public NET_ANALYSE_TASK_GLOBAL stuGlobal;
        /// <summary>
        /// 模块配置
        /// Task module configuration
        /// </summary>
        public NET_ANALYSE_TASK_MODULE stuModule;
        /// <summary>
        /// / 是否使用透传
        /// / Whether to use transparent transmission
        /// </summary>
        public bool bUseTransmit;
        /// <summary>
        /// / 分析规则内容
        /// / Task rules configuration
        /// </summary>
        public IntPtr pszRules;
        /// <summary>
        /// / 全局配置内容
        /// / Task global configuration
        /// </summary>
        public IntPtr pszGlobal;
        /// <summary>
        /// / 模块配置内容
        /// / Task module configuration
        /// </summary>
        public IntPtr pszModule;
    }

    /// <summary>
    /// CLIENT_AddAnalyseTask 接口输出参数
    /// output parameter of CLIENT_AddAnalyseTask
    /// </summary>
    public struct NET_OUT_ADD_ANALYSE_TASK
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 任务ID
        /// task ID
        /// </summary>
        public uint nTaskID;
        /// <summary>
        /// 任务对应的虚拟通道号
        /// virtual channel
        /// </summary>
        public uint nVirtualChannel;
        /// <summary>
        /// 智能码流rtsp地址
        /// RTSP address of intelligent stream
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szUrl;
    }

    /// <summary>
    /// 远程实时视频源信息
    /// info of remote video stream
    /// </summary>
    public struct NET_REMOTE_REALTIME_STREAM_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 智能任务启动规则, Polling任务时无效
        /// starting rule of analyse task
        /// </summary>
        public EM_ANALYSE_TASK_START_RULE emStartRule;
        /// <summary>
        /// 分析规则信息
        /// info of analyse rule
        /// </summary>
        public NET_ANALYSE_RULE stuRuleInfo;
        /// <summary>
        /// 视频流协议类型
        /// protocol type of video stream
        /// </summary>
        public EM_STREAM_PROTOCOL_TYPE emStreamProtocolType;
        /// <summary>
        /// 视频流地址
        /// path of video stream
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
        /// <summary>
        /// IP 地址
        /// IP address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szIp;
        /// <summary>
        /// 端口号
        /// port
        /// </summary>
        public ushort wPort;
        /// <summary>
        /// 用于字节对齐
        /// for alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// 用户名
        /// user name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUser;
        /// <summary>
        /// 密码
        /// password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPwd;
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 码流类型, 0:主码流; 1:辅1码流; 2:辅2码流;
        /// Stream type, 0-main stream, 1-extra stream 1, 2-extra stream 2
        /// </summary>
        public uint nStreamType;
        /// <summary>
        /// 任务数据
        /// task user data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szTaskUserData;
        /// <summary>
        /// MQ配置信息，参考Paas协议配置中心-算子配置。当远程访问类型为RabbitMq时,尝试从该字段获取MQ配置
        /// MQ config info, Refer to PAAS protocol configuration center - Operator configuration. When the remote access type is RabbitMq, try to get the MQ configuration from this field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4096)]
        public string szMQConfig;
        /// <summary>
        /// 是否许可重复,0默认是可以重复,1表示不能重复
        /// Whether duplicate is allowed or not, 0 is repeatable by default, 1 is not repeatable
        /// </summary>
        public int nIsRepeat;
        /// <summary>
        /// 全局配置
        /// Task global configuration
        /// </summary>
        public NET_ANALYSE_TASK_GLOBAL stuGlobal;
        /// <summary>
        /// 模块配置
        /// Task module configuration
        /// </summary>
        public NET_ANALYSE_TASK_MODULE stuModule;
        /// <summary>
        /// 平台通道信息
        /// Channel id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szChannelId;
        /// <summary>
        /// / 是否使用透传
        /// / Whether to use transparent transmission
        /// </summary>
        public bool bUseTransmit;
        /// <summary>
        /// / 分析规则内容
        /// / Task rules configuration
        /// </summary>
        public IntPtr pszRules;
        /// <summary>
        /// / 全局配置内容
        /// / Task global configuration
        /// </summary>
        public IntPtr pszGlobal;
        /// <summary>
        /// / 模块配置内容
        /// / Task module configuration
        /// </summary>
        public IntPtr pszModule;
    }

    /// <summary>
    /// 推送图片文件相关信息
    /// </summary>
    public struct NET_PUSH_PICFILE_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 智能任务启动规则
        /// starting rule of analyse task
        /// </summary>
        public EM_ANALYSE_TASK_START_RULE emStartRule;
        /// <summary>
        /// 分析规则信息
        /// info of analyse rule
        /// </summary>
        public NET_ANALYSE_RULE stuRuleInfo;
        /// <summary>
        /// 任务数据
        /// task user data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szTaskUserData;
        /// <summary>
        /// MQ配置信息，参考Paas协议配置中心-算子配置，智能视图公安小型化方案使用。当远程访问类型为RabbitMq时,尝试从该字段获取MQ配置
        /// MQ config info, Refer to PAAS protocol configuration center - Operator configuration, When the remote access type is RabbitMq, try to get the MQ configuration from this field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4096)]
        public string szMQConfig;
        /// <summary>
        /// 是否许可重复,0默认是可以重复,1表示不能重复
        /// Whether duplicate is allowed or not, 0 is repeatable by default, 1 is not repeatable
        /// </summary>
        public int nIsRepeat;
        /// <summary>
        /// 全局配置
        /// Task global configuration
        /// </summary>
        public NET_ANALYSE_TASK_GLOBAL stuGlobal;
        /// <summary>
        /// 模块配置
        /// Task module configuration
        /// </summary>
        public NET_ANALYSE_TASK_MODULE stuModule;
        /// <summary>
        /// / 是否使用透传
        /// / Whether to use transparent transmission
        /// </summary>
        public bool bUseTransmit;
        /// <summary>
        /// / 分析规则内容
        /// / Task rules configuration
        /// </summary>
        public IntPtr pszRules;
        /// <summary>
        /// / 全局配置内容
        /// / Task global configuration
        /// </summary>
        public IntPtr pszGlobal;
        /// <summary>
        /// / 模块配置内容
        /// / Task module configuration
        /// </summary>
        public IntPtr pszModule;
    }

    /// <summary>
    /// 智能任务启动规则
    /// </summary>
    public enum EM_ANALYSE_TASK_START_RULE
    {
        START_NOW,          // 立刻启动
        START_LATER,        // 稍候手动启动
    }

    /// <summary>
    /// 智能分析规则信息
    /// info of analyse rule
    /// </summary>
    public struct NET_ANALYSE_RULE_INFO
    {
        /// <summary>
        /// 分析大类类型
        /// class type
        /// </summary>
        public EM_SCENE_CLASS_TYPE emClassType;
        /// <summary>
        /// EVENT_IVS_FACEANALYSIS(人脸分析)对应结构体 NET_FACEANALYSIS_RULE_INFO
        /// EVENT_IVS_NONMOTORDETECT(非机动车)对应结构体 NET_NONMOTORDETECT_RULE_INFO
        /// EVENT_IVS_VEHICLEDETECT(机动车) 对应结构体 NET_VEHICLEDETECT_RULE_INFO
        /// EVENT_IVS_HUMANTRAIT(人体) 对应结构体NET_HUMANTRAIT_RULE_INFO
        /// EVENT_IVS_XRAY_DETECT_BYOBJECT(X光按物体检测) 对应结构体 NET_XRAY_DETECT_BYPBJECT_RULE_INFO
        /// EVENT_IVS_WORKCLOTHES_DETECT(工装检测)对应结构体NET_WORKCLOTHDETECT_RULE_INFO
        /// EVENT_IVS_WORKSTATDETECTION(作业统计)对应结构体NET_WORKSTATDETECTION_RULE_INFO
        /// EVENT_IVS_CROSSLINEDETECTION(拌线入侵)对应结构体NET_CROSSLINE_RULE_INFO
        /// EVENT_IVS_CROSSREGIONDETECTION(区域入侵)对应结构体 NET_CROSSREGION_RULE_INFO
        /// EVENT_IVS_FEATURE_ABSTRACT(特征提取)对应结构体 NET_FEATURE_ABSTRACT_RULE_INFO
        /// EVENT_IVS_ELECTRIC_GLOVE_DETECT(电力检测手套检测事件)对应结构体NET_ELECTRIC_GLOVE_DETECT_RULE_INFO
        /// EVENT_IVS_ELECTRIC_LADDER_DETECT(电力检测梯子检测事件)对应结构体NET_ELECTRIC_LADDER_DETECT_RULE_INFO
        /// EVENT_IVS_ELECTRIC_CURTAIN_DETECT(电力检测布幔检测事件)对应结构体NET_ELECTRIC_CURTAIN_DETECT_RULE_INFO
        /// EVENT_IVS_ELECTRIC_FENCE_DETECT(电力检测围栏检测事件)对应结构体NET_ELECTRIC_FENCE_DETECT_RULE_INFO
        /// EVENT_IVS_ELECTRIC_SIGNBOARD_DETECT(电力检测标识牌检测事件)对应结构体NET_ELECTRIC_SIGNBOARD_DETECT_RULE_INFO
        /// EVENT_IVS_ELECTRIC_BELT_DETECT(电力检测安全带检测事件)对应结构体NET_ELECTRIC_BELT_DETECT_RULE_INFO
        /// EVENT_IVS_BANNER_DETECTION（拉横幅检测事件）对应结构体 NET_BANNER_DETECTION_RULE_INFO
        /// EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION(智慧厨房衣着检测事件)对应结构体NET_SMART_KITCHEN_CLOTHES_DETECTION_RULE_INFO
        /// EVENT_IVS_WATER_STAGE_MONITOR(水位检测事件)对应结构体NET_WATER_STAGE_MONITOR_RULE_INFO
        /// EVENT_IVS_FLOATINGOBJECT_DETECTION(漂浮物检测事件)对应结构体 NET_FLOATINGOBJECT_DETECTION_RULE_INFO
        /// EVENT_IVS_RIOTERDETECTION (人群聚集) 对应结构体 NET_RIOTERDETECTION_RULE_INFO
        /// EVENT_IVS_LEFTDETECTION (物品遗留事件) 对应结构体 NET_LEFTDETECTION_RULE_INFO
        /// EVENT_IVS_PARKINGDETECTION (非法停车事件) 对应结构体 NET_PARKINGDETECTION_RULE_INFO
        /// EVENT_IVS_WANDERDETECTION( 徘徊事件)对应结构体 NET_WANDERDETECTION_RULE_INFO
        /// EVENT_IVS_VIDEOABNORMALDETECTION (视频异常)对应结构体 NET_VIDEOABNORMALDETECTION_RULE_INFO
        /// EVENT_IVSS_FACEATTRIBUTE (人脸属性检测) 对应结构体 NET_FACEATTRIBUTE_RULE_INFO
        /// EVENT_IVS_MOVEDETECTION (移动检测) 对应结构体 NET_MOVEDETECTION_RULE_INFO
        /// EVENT_IVSS_FACECOMPARE(IVSS目标识别事件) 对应结构体 NET_FACECOMPARE_INFO
        /// EVENT_IVS_CONVEYER_BELT_DETECT(传送带检测) 对应结构体 NET_CONVEYER_BELT_DETECT_RULE_INFO
        /// EVENT_IVS_NUMBERSTAT(数量统计事件) 对应结构体NET_NUMBERSTAT_RULE_INFO
        /// EVENT_IVS_STEREO_FIGHTDETECTION(立体行为分析打架/剧烈运动检测) 对应结构体NET_STEREO_FIGHTDETECTION_RULE_INFO
        /// EVENT_IVS_SMOKEDETECTION(烟雾报警检测) 对应结构体 NET_SMOKEDETECTION_RULE_INFO
        /// EVENT_IVS_FIREDETECTION(火警检测)对应结构体 NET_FIREDETECTION_RULE_INFOEVENT_IVS_FIREDETECTION
        /// EVENT_IVS_PHONECALL_DETECT(打电话检测)对应结构体 NET_PHONECALL_DETECT_RULE_INFO
        /// EVENT_IVS_SMOKING_DETECT(吸烟检测)对应结构体 NET_SMOKING_DETECT_RULE_INFO
        /// EVENT_IVS_STEREO_STEREOFALLDETECTION(立体行为分析跌倒检测)对应结构体 NET_STEREO_STEREOFALLDETECTION_RULE_INFO
        /// EVENT_IVS_WATER_LEVEL_DETECTION(水位尺检测)对应结构体 NET_WATER_LEVEL_DETECTION_RULE_INFO
        /// EVENT_IVS_CLIMBDETECTION(攀高检测)对应结构体 NET_CLIMBDETECTION_RULE_INFO
        /// EVENT_IVS_ARTICLE_DETECTION(物品检测)对应结构体NET_ARTICLE_DETECTION_RULE_INFO
        /// EVENT_IVS_MAN_NUM_DETECTION(立体视觉区域内人数统计事件)对应结构体NET_IVS_MAN_NUM_DETECTION_RULE_INFO
        /// EVENT_IVS_DIALRECOGNITION(仪表检测事件)对应结构体 NET_A_DEV_EVENT_DIALRECOGNITION_INFO
        /// EVENT_IVS_ELECTRICFAULT_DETECT(仪表类缺陷检测事件)对应结构体NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO
        /// EVENT_IVS_TRAFFIC_ROAD_BLOCK(交通路障检测事件) 对应结构体 NET_TRAFFIC_ROAD_BLOCK_RULE_INFO
        /// EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION(交通道路施工检测事件) 对应结构体 NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO
        /// EVENT_IVS_TRAFFIC_FLOWSTATE(交通流量统计事件) 对应结构体 NET_TRAFFIC_FLOWSTAT_RULE_INFO
        /// EVENT_IVS_TRAFFIC_OVERSPEED(超速事件) 对应结构体 NET_TRAFFIC_OVERSPEED_RULE_INFO
        /// EVENT_IVS_TRAFFIC_UNDERSPEED(欠速事件) 对应结构体 NET_TRAFFIC_UNDERSPEED_RULE_INFO
        /// EVENT_IVS_TRAFFIC_OVERYELLOWLINE(压黄线事件) 对应结构体 NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO
        /// EVENT_IVS_TRAFFIC_CROSSLANE(违章变道事件) 对应结构体 NET_TRAFFIC_CROSSLANE_RULE_INFO
        /// EVENT_IVS_TRAFFICJAM(交通拥堵事件) 对应结构体 NET_TRAFFIC_JAM_RULE_INFO
        /// EVENT_IVS_TRAFFIC_PEDESTRAIN(交通行人事件) 对应结构体 NET_TRAFFIC_PEDESTRAIN_RULE_INFO
        /// EVENT_IVS_TRAFFIC_THROW(抛洒物事件) 对应结构体 NET_TRAFFIC_THROW_RULE_INFO
        /// EVENT_IVS_TRAFFIC_RETROGRADE(逆行检测事件) 对应结构体 NET_TRAFFIC_RETROGRADE_RULE_INFO
        /// EVENT_IVS_TRAFFICACCIDENT(交通事故事件) 对应结构体 NET_TRAFFIC_ACCIDENT_RULE_INFO
        /// EVENT_IVS_TRAFFIC_BACKING(倒车事件) 对应结构体 NET_TRAFFIC_BACKING_RULE_INFO
        /// EVENT_IVS_FOG_DETECTION(起雾检测事件) 对应结构体 NET_A_DEV_EVENT_FOG_DETECTION
        /// EVENT_IVS_CROSSREGIONDETECTION(区域入侵事件) 对应结构体 NET_CROSSREGION_RULE_INFO
        /// EVENT_IVS_TRAFFIC_PARKING(交通违章停车事件) 对应结构体 NET_TRAFFIC_PARKING_RULE_INFO
        /// EVENT_IVS_FINANCE_CASH_TRANSACTION(智慧金融现金交易检测事件) 对应结构体 NET_FINANCE_CASH_TRANSACTION_RULE_INFO
        /// EVENT_IVS_LEAVEDETECTION(离岗检测事件) 对应结构体 NET_LEAVEDETECTION_RULE_INFO
        /// EVENT_IVS_LADLE_NO_DETECTION(钢包编号识别事件) 对应规则配置为空
        /// EVENT_IVS_DIALRECOGNITION_EX(仪表检测事件)对应结构体 NET_A_DEV_EVENT_DIALRECOGNITION_INFO
        /// rule type, see "intelligent analyse event type" in dhnetsdk.h
        /// EVENT_IVS_FACEANALYSIS(face analysis), corresponding struct NET_FACEANALYSIS_RULE_INFO
        /// EVENT_IVS_NONMOTORDETECT(nonmotor detect), corresponding struct NET_NONMOTORDETECT_RULE_INFO
        /// EVENT_IVS_VEHICLEDETECT(vehicle detect), corresponding struct NET_VEHICLEDETECT_RULE_INFO
        /// EVENT_IVS_HUMANTRAIT(humantrait detect), corresponding struct NET_HUMANTRAIT_RULE_INFO
        /// EVENT_IVS_XRAY_DETECT_BYOBJECT(X ray object detect) corresponding struct NET_XRAY_DETECT_BYPBJECT_RULE_INFO
        /// EVENT_IVS_WORKCLOTHES_DETECT(work clothes detection), corresponding struct NET_WORKCLOTHDETECT_RULE_INFO
        /// EVENT_IVS_WORKSTATDETECTION(work state detection), corresponding struct NET_WORKSTATDETECTION_RULE_INFO
        /// EVENT_IVS_CROSSLINEDETECTION(cross line detection), corresponding struct NET_CROSSLINE_RULE_INFO
        /// EVENT_IVS_CROSSREGIONDETECTION(cross region detection), corresponding struct NET_CROSSREGION_RULE_INFO
        /// EVENT_IVS_FEATURE_ABSTRACT(FeatureAbstract), corresponding struct NET_FEATURE_ABSTRACT_RULE_INFO
        /// EVENT_IVS_ELECTRIC_GLOVE_DETECT(electric glove detection), corresponding struct ET_ELECTRIC_GLOVE_DETECT_RULE_INFO
        /// EVENT_IVS_ELECTRIC_LADDER_DETECT(electric ladder detection), corresponding struct NET_ELECTRIC_LADDER_DETECT_RULE_INFO
        /// EVENT_IVS_ELECTRIC_CURTAIN_DETECT(electric curtain detection), corresponding struct NET_ELECTRIC_CURTAIN_DETECT_RULE_INFO
        /// EVENT_IVS_ELECTRIC_FENCE_DETECT(electric fence detection), corresponding struct NET_ELECTRIC_FENCE_DETECT_RULE_INFO
        /// EVENT_IVS_ELECTRIC_SIGNBOARD_DETECT(electric signboard detection), corresponding struct NET_ELECTRIC_SIGNBOARD_DETECT_RULE_INFO
        /// EVENT_IVS_ELECTRIC_BELT_DETECT(electric belt detection), corresponding struct NET_ELECTRIC_BELT_DETECT_RULE_INFO
        /// EVENT_IVS_BANNER_DETECTION(JZ detection), corresponding struct NET_BANNER_DETECTION_RULE_INFO
        /// EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION(Smart kitchen clothes detection), corresponding struct NET_SMART_KITCHEN_CLOTHES_DETECTION_RULE_INFO
        /// EVENT_IVS_WATER_STAGE_MONITOR(Water stage monitor), corresponding NET_WATER_STAGE_MONITOR_RULE_INFO
        /// EVENT_IVS_FLOATINGOBJECT_DETECTION(Floating object detection), corresponding NET_FLOATINGOBJECT_DETECTION_RULE_INFO
        /// EVENT_IVS_RIOTERDETECTION (rioter detection), corresponding to NET_RIOTERDETECTION_RULE_INFO
        /// EVENT_IVS_LEFTDETECTION (left detection), corresponding to NET_LEFTDETECTION_RULE_INFO
        /// EVENT_IVS_PARKINGDETECTION (parking detection), corresponding to NET_PARKINGDETECTION_RULE_INFO
        /// EVENT_IVS_WANDERDETECTION( wander detection ), corresponding to NET_WANDERDETECTION_RULE_INFO
        /// EVENT_IVS_VIDEOABNORMALDETECTION (video abnormal detection), corresponding to NET_VIDEOABNORMALDETECTION_RULE_INFO
        /// EVENT_IVSS_FACEATTRIBUTE (Face Attribute) corresponding to NET_FACEATTRIBUTE_RULE_INFO
        /// EVENT_IVS_MOVEDETECTION (Move detection) corresponding to NET_MOVEDETECTION_RULE_INFO
        /// EVENT_IVSS_FACECOMPARE(IVSS Target recognition events) corresponding to NET_FACECOMPARE_INFO
        /// EVENT_IVS_CONVEYER_BELT_DETECT(Conveter belt detection) corresponding to NET_CONVEYER_BELT_DETECT_RULE_INFO
        /// EVENT_IVS_NUMBERSTAT(Number stat) corresponding to NET_NUMBERSTAT_RULE_INFO
        /// EVENT_IVS_STEREO_FIGHTDETECTION(Stereoscopic behavior analysis of fighting/strenuous motion) corresponding to NET_STEREO_FIGHTDETECTION_RULE_INFO
        /// EVENT_IVS_SMOKEDETECTION(Smoke detection) corresponding to NET_SMOKEDETECTION_RULE_INFO
        /// EVENT_IVS_FIREDETECTION(Fire detection)corresponding to NET_FIREDETECTION_RULE_INFO
        /// EVENT_IVS_PHONECALL_DETECT(Phone call detection)corresponding to NET_PHONECALL_DETECT_RULE_INFO
        /// EVENT_IVS_SMOKING_DETECT(Smoking detection)corresponding to NET_SMOKING_DETECT_RULE_INFO
        /// EVENT_IVS_STEREO_STEREOFALLDETECTION(Stereo fall detection)corresponding to NET_STEREO_STEREOFALLDETECTION_RULE_INFO
        /// EVENT_IVS_WATER_LEVEL_DETECTION(Water level detection)corresponding to NET_WATER_LEVEL_DETECTION_RULE_INFO
        /// EVENT_IVS_CLIMBDETECTION(Climb detection)corresponding to NET_CLIMBDETECTION_RULE_INFO
        /// EVENT_IVS_ARTICLE_DETECTION(Article Detection)corresponding to NET_ARTICLE_DETECTION_RULE_INFO
        /// EVENT_IVS_MAN_NUM_DETECTION(Regional population statistics)corresponding to NET_IVS_MAN_NUM_DETECTION_RULE_INFO
        /// EVENT_IVS_FINANCE_CASH_TRANSACTION corresponding to NET_FINANCE_CASH_TRANSACTION_RULE_INFO
        /// EVENT_IVS_LEAVEDETECTION corresponding to NET_LEAVEDETECTION_RULE_INFO
        /// EVENT_IVS_LADLE_NO_DETECTION(Ladle number identification event) The corresponding rule configuration is empty
        /// </summary>
        public uint dwRuleType;
        /// <summary>
        /// 规则配置, 具体结构体类型根据dwRuleType来确定, 具体信息见dwRuleType的注释
        /// rule config, the rule config struct is determined by dwRuleType, see the comments of dwRuleType
        /// </summary>
        public IntPtr pReserved;
        /// <summary>
        /// 检测物体类型个数, 为0 表示不指定物体类型
        /// count of object types, 0 means no types
        /// </summary>
        public uint nObjectTypeNum;
        /// <summary>
        /// 检测物体类型列表
        /// object types
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_ANALYSE_OBJECT_TYPE[] emObjectTypes;
        /// <summary>
        /// 规则名称，不带预置点的设备规则名称不能重名，带预置点的设备，同一预置点内规则名称不能重名，不同预置点之间规则名称可以重名
        /// rule name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 828)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 智能分析规则
    /// </summary>
    public struct NET_ANALYSE_RULE
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_ANALYSE_RULE_INFO[] stuRuleInfos;       // 分析规则信息
        public uint nRuleCount;                                 // 分析规则条数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1028)]
        public byte[] byReserved;                                 // 保留字节        
    }

    /// <summary>
    /// 视频支持的人脸类型
    /// human face type for video analysing
    /// </summary>
    public enum EM_ANALYSE_HUMANFACE_TYPE
    {
        /// <summary>
        /// 未知类型
        /// Unknown
        /// </summary>
        EM_ANALYSE_HUMANFACE_TYPE_UNKNOWN,
        /// <summary>
        /// 普通人脸
        /// Normal
        /// </summary>
        EM_ANALYSE_HUMANFACE_TYPE_NORMAL,
        /// <summary>
        /// 眼部遮挡
        /// Hide eye
        /// </summary>
        EM_ANALYSE_HUMANFACE_TYPE_HIDEEYE,
        /// <summary>
        /// 鼻子遮挡
        /// Hide nose
        /// </summary>
        EM_ANALYSE_HUMANFACE_TYPE_HIDENOSE,
        /// <summary>
        /// 嘴部遮挡
        /// Hide mouth
        /// </summary>
        EM_ANALYSE_HUMANFACE_TYPE_HIDEMOUTH,
        /// <summary>
        /// 相邻人脸 (注，ATM，尾随)
        /// Adjacent face
        /// </summary>
        EM_ANALYSE_HUMANFACE_TYPE_ADJACENTFACE,
        /// <summary>
        /// 异常人脸
        /// Abnormal face
        /// </summary>
        EM_ANALYSE_HUMANFACE_TYPE_ABNORMALFACE,
        /// <summary>
        /// 头盔人脸(如摩托车盔)
        /// Helmet face
        /// </summary>
        EM_ANALYSE_HUMANFACE_TYPE_HELMETFACE,
    }

    /// <summary>
    /// 非机动车属性类型
    /// non-motor feature
    /// </summary>
    public enum EM_NONMOTOR_FEATURE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_NONMOTOR_FEATURE_UNKNOWN,
        /// <summary>
        /// 头盔
        /// helmet
        /// </summary>
        EM_NONMOTOR_FEATURE_HELMET,
        /// <summary>
        /// 车上人数
        /// number of cycling
        /// </summary>
        EM_NONMOTOR_FEATURE_NUMOFCYCLING,
        /// <summary>
        /// 车身颜色
        /// nonmotor color
        /// </summary>
        EM_NONMOTOR_FEATURE_NONMOTORCOLOR,
        /// <summary>
        /// 性别
        /// sex
        /// </summary>
        EM_NONMOTOR_FEATURE_SEX,
        /// <summary>
        /// 年龄
        /// age
        /// </summary>
        EM_NONMOTOR_FEATURE_AGE,
        /// <summary>
        /// 帽子
        /// hat
        /// </summary>
        EM_NONMOTOR_FEATURE_HAT,
        /// <summary>
        /// 背包
        /// bag
        /// </summary>
        EM_NONMOTOR_FEATURE_BAG,
        /// <summary>
        /// 手提包
        /// carrierbag
        /// </summary>
        EM_NONMOTOR_FEATURE_CARRIERBAG,
        /// <summary>
        /// 雨伞
        /// umbrella
        /// </summary>
        EM_NONMOTOR_FEATURE_UMBRELLA,
        /// <summary>
        /// 上衣颜色
        /// upperbody color
        /// </summary>
        EM_NONMOTOR_FEATURE_UPPERBODYCOLOR,
        /// <summary>
        /// 下衣颜色
        /// lowerbody color
        /// </summary>
        EM_NONMOTOR_FEATURE_LOWERBODYCOLOR,
        /// <summary>
        /// 上衣类型
        /// upclothes
        /// </summary>
        EM_NONMOTOR_FEATURE_UPCLOTHES,
        /// <summary>
        /// 下衣类型
        /// downclothes
        /// </summary>
        EM_NONMOTOR_FEATURE_DOWNCLOTHES,
        /// <summary>
        /// 车类型
        /// category
        /// </summary>
        EM_NONMOTOR_FEATURE_CATEGORY,
    }

    /// <summary>
    /// 事件类型EVENT_IVS_HUMANTRAIT(人员检测规则)对应的规则配置
    /// Rule type: EVENT_IVS_HUMANTRAIT configuration
    /// </summary>
    public struct NET_HUMANTRAIT_RULE_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 支持的目标检测类型个数
        /// Supported facial recognition type number
        /// </summary>
        public int nHumanFaceTypeNum;
        /// <summary>
        /// 支持的目标检测类型列表
        /// Supported facial recognition type list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public EM_ANALYSE_HUMANFACE_TYPE[] emHumanFaceType;
        /// <summary>
        /// 最短触发时间,单位：秒
        /// the shortest duration(s)
        /// </summary>
        public int nMinDuration;
        /// <summary>
        /// 触发报警的人脸个数
        /// The people number that trigger alarm
        /// </summary>
        public int nTriggerTargets;
        /// <summary>
        /// 灵敏度,越高越容易检测, 0-10
        /// Sensitivity 1~10
        /// </summary>
        public int nSensitivity;
        /// <summary>
        /// 是否使用尺寸过滤器
        /// Size filter enable
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器，提高判断精度
        /// Size filter info
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO stuSizeFileter;
        /// <summary>
        /// 是否开启人脸属性识别
        /// whether to open the face feature detection
        /// </summary>
        public bool bFeatureEnable;
        /// <summary>
        /// 在人脸属性开启前提下，如果人脸图像质量太差，是否不上报属性 true-图像太差不上报属性;false-图像很差也上报属性(可能会非常不准，影响用户体验)
        /// Under the precondition of bFeatureEnable, if image quality is poor, whether or not to report,true:not report, false:report
        /// </summary>
        public bool bFeatureFilter;
        /// <summary>
        /// 人脸图片质量阈值,和bFeatureFilter一起使用
        /// Image quality threshold ,use with bFeatureFilter
        /// </summary>
        public int nMinQuality;
        /// <summary>
        /// 需要检测的人脸属性个数
        /// the count of face feature
        /// </summary>
        public int nFaceFeatureNum;
        /// <summary>
        /// 需检测的人脸属性
        /// he list of face feature
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_FACEFEATURE_TYPE[] emFaceFeatureType;
        /// <summary>
        /// 检测区顶点数
        /// number of detection area vertices
        /// </summary>
        public uint nDetectRegionPoint;
        /// <summary>
        /// 检测区
        /// detection area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;
        /// <summary>
        /// 排除区域数
        /// number of excluded regions
        /// </summary>
        public int nExcludeRegionNum;
        /// <summary>
        /// 排除区域
        /// exclude region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_POLY_POINTS[] stuExcludeRegion;
        /// <summary>
        /// 是否进行人脸抓图: TRUE:进行人脸抓图, FALSE：不进行人脸抓图
        /// Whether to capture face: TRUE: capture face, FALSE: do not capture face
        /// </summary>
        public bool bFaceSnapEnable;
        /// <summary>
        /// 是否提取人体特征向量
        /// Whether to extract human feature vector
        /// </summary>
        public bool bFeatureExtractEnable;
        /// <summary>
        /// 合规报警规则
        /// Compliance alert rules
        /// </summary>
        public NET_COMPLIANT_INFO stuCompliant;
        /// <summary>
        /// 是否开启人体属性识别, TRUE-开启 FALSE-关闭
        /// Whether to enable human attribute recognition, TRUE-enable FALSE-no enable
        /// </summary>
        public bool bHumanFeatureEnable;
        /// <summary>
        /// 人体属性的个数
        /// the number of human attributes
        /// </summary>
        public int nHumanFeatureList;
        /// <summary>
        /// 配置要检测哪些人体属性,开启人体属性时有效(bHumanFeatureEnable为TRUE),目前支持的取值范围见如下能力描述
        /// Configure which human body attributes to detect. It is valid when the human body attributes are enabled(bHumanFeatureEnable is TRUE). The currently supported value ranges are described in the following capability descriptions.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32 * 16)]
        public string szHumanFeatureList;
        /// <summary>
        /// 是否提取目标特征向量
        /// Whether to extract the face feature vector
        /// </summary>
        public bool bFaceFeatureExtractEnable;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_LEAVEDETECTION(离岗检测事件) 对应的规则配置
    /// Rule type EVENT_IVS_LEAVEDETECTION configuration
    /// </summary>
    public struct NET_LEAVEDETECTION_RULE_INFO
    {
        /// <summary>
        /// 检测区
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;
        /// <summary>
        /// 检测区顶点数
        /// Detect region point number
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 灵敏度,范围[1,10],灵敏度越高越容易检测
        /// Sensitivity, [1,10],
        /// </summary>
        public uint nSensitivity;
        /// <summary>
        /// 最短持续时间，单位：秒
        /// Min duration, s
        /// </summary>
        public uint nMinDuration;
        /// <summary>
        /// 报告时间间隔，单位：秒
        /// Report interval time, s
        /// </summary>
        public uint nReportInterval;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// Size filter enable
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// Size filter info
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO stuSizeFileter;
        /// <summary>
        /// 允许值岗人数范围最小值
        /// thr min number of the persons
        /// </summary>
        public uint nPersonLimitMin;
        /// <summary>
        /// 允许值岗人数范围最大值
        /// thr max number of the persons
        /// </summary>
        public uint nPersonLimitMax;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4096)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_FIRE_EXTINGUISHER_DETECTION(灭火器检测事件)对应的规则配置
    /// Event type EVENT_IVS_FIRE_EXTINGUISHER_DETECTION(Fire extinguisher detection event) Rule configuration
    /// </summary>
    public struct NET_FIRE_EXTINGUISHER_DETECTION_RULE_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 检测区顶点数
        /// Number of vertices in the detection area
        /// </summary>
        public uint nDetectRegionNum;
        /// <summary>
        /// 检测区
        /// Detection area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;
        /// <summary>
        /// 最短持续时间,单位：秒0~65535
        /// Minimum duration, unit: seconds 0 to 65535
        /// </summary>
        public int nMinDuration;
        /// <summary>
        /// 重复报警时间，单位：秒，0则不重复报警
        /// Repeated alarm time, unit: seconds, 0 means no repeated alarm
        /// </summary>
        public int nRepeatAlarmTime;
        /// <summary>
        /// 最小报警灭火器数，当大于等于该个数的时候报警
        /// The minimum number of alarm fire extinguishers, when greater than or equal to this number, will alarm
        /// </summary>
        public int nMinlegalNum;
        /// <summary>
        /// 最大报警灭火器数，当小于等于该个数的时候报警
        /// Maximum number of alarm fire extinguishers, alarm when less than or equal to this number
        /// </summary>
        public int nMaxlegalNum;
        /// <summary>
        /// 灵敏度，取值1-10，数值越大代表灵敏度越高
        /// Sensitivity: The value ranges from 1 to 10. A larger value indicates a higher sensitivity
        /// </summary>
        public int nSensitivity;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// Rules whether a specific size filter is valid
        /// </summary>
        public bool bSizeFilter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// Rules specific size filters
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO stuSizeFilter;
    }

    /// <summary>
    /// EVENT_IVS_PHONECALL_DETECT(打电话检测) 对应的规则配置
    /// EVENT_IVS_PHONECALL_DETECT(Phone call detection)corresponding rule configuration structure
    /// </summary>
    public struct NET_PHONECALL_DETECT_RULE_INFO
    {
        /// <summary>
        /// 最短持续时间 单位：秒，0~65535
        /// Minimum duration in seconds, 0-65535
        /// </summary>
        public uint nMinDuration;
        /// <summary>
        /// 检测区域顶点数
        /// Points number of detect region
        /// </summary>
        public uint nDetectRegionPoint;
        /// <summary>
        /// 检测区域
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;
        /// <summary>
        /// 灵敏度, 取值1-10
        /// Sensitivity, Value:1-10
        /// </summary>
        public uint nSensitivity;
        /// <summary>
        /// 重复报警时间，单位：秒，范围0-3600
        /// Repeat alarm time, unit: seconds, range: 0-3600
        /// </summary>
        public uint nReportInterval;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2048)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 安全帽检测规则扩展信息
    /// Extended information of helmet rule info
    /// </summary>
    public struct NET_HELMET_RULE_EXT_INFO
    {
        /// <summary>
        /// 是否指定检测的颜色, 支持多种颜色
        /// Whether to detect helmet or not, Support multiple colors
        /// </summary>
        public bool bDetectMultiColor;
        /// <summary>
        /// 检测的颜色个数
        /// Detect color number
        /// </summary>
        public uint nDetectColorNum;
        /// <summary>
        /// 工作服颜色, bDetectMultiColor 为TRUE时有效
        /// Color of helmet, it is effect when bDetectMultiColor == TRUE
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_CLOTHES_COLOR[] emMultiColor;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2048)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 工装检测规则类型
    /// Work clothes detect rule type
    /// </summary>
    public enum EM_WORKCLOTHDETECT_RULE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknwon
        /// </summary>
        EM_WORKCLOTHDETECT_RULE_UNKNWON,
        /// <summary>
        /// 安全帽
        /// Helmet
        /// </summary>
        EM_WORKCLOTHDETECT_RULE_HELMET,
        /// <summary>
        /// 工作服
        /// Work clothes
        /// </summary>
        EM_WORKCLOTHDETECT_RULE_WORKCLOTH,
        /// <summary>
        /// 工作裤
        /// Work pants
        /// </summary>
        EM_WORKCLOTHDETECT_RULE_WORKPANTS,
        /// <summary>
        /// 防护服
        /// Protective
        /// </summary>
        EM_WORKCLOTHDETECT_RULE_PROTECTIVE,
        /// <summary>
        /// 防护面罩
        /// Protective mask
        /// </summary>
        EM_WORKCLOTHDETECT_RULE_TYPE_PROHELMET,
        /// <summary>
        /// 防火衣
        /// FireProofClothes
        /// </summary>
        EM_WORKCLOTHDETECT_RULE_FIREPROOFCLOTHES,
    }

    /// <summary>
    /// 触发模式
    /// Trigger mode
    /// </summary>
    public enum EM_WORKCLOTHDETECT_TRIGGER_MODE
    {
        /// <summary>
        /// 未知
        /// Unknwon
        /// </summary>
        EM_WORKCLOTHDETECT_TRIGGER_MODE_UNKNWON,
        /// <summary>
        /// 属性检测
        /// Type detect
        /// </summary>
        EM_WORKCLOTHDETECT_TRIGGER_MODE_TYPEDETECT,
        /// <summary>
        /// 比对检测
        /// Compare detect
        /// </summary>
        EM_WORKCLOTHDETECT_TRIGGER_MODE_COMPAREDETECT,
    }

    /// <summary>
    /// 工作服检测规则
    /// Rule work clothes detection
    /// </summary>
    public struct NET_WORKCLOTH_DETECT_RULE
    {
        /// <summary>
        /// 是否检测工作服
        /// Whether to detect work clothes or not
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 是否检测穿着工作服
        /// Whether to wear work clothes or not
        /// </summary>
        public bool bWear;
        /// <summary>
        /// 是否指定检测的颜色
        /// Whether to apponit the color of work clothes
        /// </summary>
        public bool bDetectColor;
        /// <summary>
        /// 工作服颜色, bDetectColor 为 TRUE 时有效
        /// Color of work clothes, it is effect when bDetectColor == TRUE
        /// </summary>
        public EM_CLOTHES_COLOR emClothesColor;
        /// <summary>
        /// 工作服检测规则信息扩展, 由用户申请和释放内存
        /// Extended information of workcloth rule info, The memory is requested and released by the user
        /// </summary>
        public IntPtr pstWorkClothRuleExtInfo;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 120)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 工作马甲检测规则
    /// Rule of work vest detection
    /// </summary>
    public struct NET_WORKVEST_DETECT_RULE
    {
        /// <summary>
        /// 是否检测马甲
        /// Whether to detect work vest
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 是否检测穿着马甲
        /// Whether to wear work vest or not
        /// </summary>
        public bool bWear;
        /// <summary>
        /// 是否指定检测的颜色
        /// Whether to apponit the color of work vest
        /// </summary>
        public bool bDetectColor;
        /// <summary>
        /// 马甲颜色, bDetectColor 为 TRUE 时有效
        /// Color of work vest, it is effect when bDetectColor == TRUE
        /// </summary>
        public EM_CLOTHES_COLOR emVestColor;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 工作裤类型
    /// Work pants type
    /// </summary>
    public enum EM_WORKPANTS_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_WORKPANTS_TYPE_UNKNWON,
        /// <summary>
        /// 长裤
        /// Long pants
        /// </summary>
        EM_WORKPANTS_TYPE_LONG,
        /// <summary>
        /// 短裤
        /// Short pants
        /// </summary>
        EM_WORKPANTS_TYPE_SHORT,
    }

    /// <summary>
    /// 工作裤检测规则
    /// Work pants detect rule info
    /// </summary>
    public struct NET_WORKPANTS_DETECT_RULE
    {
        /// <summary>
        /// 是否检测工作裤
        /// Whether to detect work pants
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 是否检测穿着工作裤
        /// Whether to detect wear work pants or not
        /// </summary>
        public bool bWear;
        /// <summary>
        /// 工作裤类型个数
        /// Work pants type number
        /// </summary>
        public uint nPantsTypeNum;
        /// <summary>
        /// 工作裤类型
        /// Work pants type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_WORKPANTS_TYPE[] emPantsType;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 防护面罩检测规则
    /// Protective mask detection rules
    /// </summary>
    public struct NET_PROHELMET_DETECT_RULE
    {
        /// <summary>
        /// 是否检测防护面罩
        /// Is the protective mask detected
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 是否检测穿着防护面罩
        /// Is the wearing of protective mask detected
        /// </summary>
        public bool bWear;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string byReserved;
    }

    /// <summary>
    /// 工作服上衣类型
    /// Work clothes type
    /// </summary>
    public enum EM_WORK_CLOTHES_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknwon
        /// </summary>
        EM_WORK_CLOTHES_UNKNOWN,
        /// <summary>
        /// 长袖
        /// Long sleeve
        /// </summary>
        EM_WORK_CLOTHES_LONG_SLEEVE,
        /// <summary>
        /// 短袖
        /// Short sleeve
        /// </summary>
        EM_WORK_CLOTHES_SHORT_SLEEVE,
    }

    /// <summary>
    /// 工作服纹理类型
    /// Work clothes texture type
    /// </summary>
    public enum EM_CLOTHES_TEXTURE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknwon
        /// </summary>
        EM_CLOTHES_TEXTURE_UNKNOWN,
        /// <summary>
        /// 格子
        /// Checked
        /// </summary>
        EM_CLOTHES_TEXTURE_CHECKED,
        /// <summary>
        /// 碎花
        /// Floral
        /// </summary>
        EM_CLOTHES_TEXTURE_FLORAL,
        /// <summary>
        /// 纯色
        /// Pure
        /// </summary>
        EM_CLOTHES_TEXTURE_PURE,
        /// <summary>
        /// 条纹
        /// Stripe
        /// </summary>
        EM_CLOTHES_TEXTURE_STRIPE,
        /// <summary>
        /// 图案
        /// Design
        /// </summary>
        EM_CLOTHES_TEXTURE_DESIGN,
        /// <summary>
        /// 拼接
        /// Joint
        /// </summary>
        EM_CLOTHES_TEXTURE_JOINT,
    }

    /// <summary>
    /// 工作服检测规则扩展信息
    /// Extended information of workcloth rule info
    /// </summary>
    public struct NET_WORKCLOTH_RULE_EXT_INFO
    {
        /// <summary>
        /// 指定的检测颜色是合规还是不合规，0表示未定义，1表示合规，2表示不合规
        /// Whether the specified test color is compliant or not, 0 means undefined, 1 means compliant, 2 means non compliant
        /// </summary>
        public uint nColorLegal;
        /// <summary>
        /// 是否指定检测的颜色, 支持多种颜色
        /// Whether to specify the detected color, support multiple colors
        /// </summary>
        public bool bDetectMultiColor;
        /// <summary>
        /// 检测的颜色个数
        /// Number of colors detected
        /// </summary>
        public uint nDetectColorNum;
        /// <summary>
        /// 工作服颜色, bDetectMultiColor 为TRUE时有效
        /// Color of work clothes, it is effect when bDetectMultiColor == TRUE
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_CLOTHES_COLOR[] emMultiColor;
        /// <summary>
        /// 指定的检测类型是合规还是不合规，0表示未定义，1表示合规，2表示不合规
        /// Whether the specified test type is compliant or not, 0 means undefined, 1 means compliant, 2 means non compliant
        /// </summary>
        public uint nTypeLegal;
        /// <summary>
        /// 检测的工作服类型个数
        /// Work clothes type number
        /// </summary>
        public uint nClothesTypeNum;
        /// <summary>
        /// 工作服类型
        /// Work clothes type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_WORK_CLOTHES_TYPE[] emClothesType;
        /// <summary>
        /// 指定的纹理规则是合规还是不合规，0表示未定义，1表示合规，2表示不合规
        /// Whether the specified test texture is compliant or not, 0 means undefined, 1 means compliant, 2 means non compliant
        /// </summary>
        public uint nTextureLegal;
        /// <summary>
        /// 工作服纹理个数
        /// Work clothes texture number
        /// </summary>
        public uint nTextureNum;
        /// <summary>
        /// 工作服纹理
        /// Work clothes texture
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_CLOTHES_TEXTURE_TYPE[] emTextureType;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2044)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 安全帽检测规则
    /// Rule of helmet detection
    /// </summary>
    public struct NET_HELMET_DETECT_RULE
    {
        /// <summary>
        /// 是否检测安全帽
        /// Whether to detect helmet or not
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 是否检测穿戴安全帽
        /// Whether to wear helmet or not
        /// </summary>
        public bool bWear;
        /// <summary>
        /// 是否指定检测的颜色
        /// Whether to appoint the color of helmet
        /// </summary>
        public bool bDetectColor;
        /// <summary>
        /// 安全帽颜色, bDetectColor 为 TRUE 时有效
        /// Color of helmet, it is effect when bDetectColor == TRUE
        /// </summary>
        public EM_CLOTHES_COLOR emHelmetColor;
        /// <summary>
        /// 安全帽检测规则信息扩展, 由用户申请和释放内存
        /// Extended information of helmet rule info, The memory is requested and released by the user
        /// </summary>
        public IntPtr pstHelmetRuleExtInfo;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 120)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 工装特征描述信息
    /// Descript of work ckothes
    /// </summary>
    public struct NET_WORKCLOTHES_DESCRIPT
    {
        /// <summary>
        /// 安全帽检测规则
        /// Detection rule of helmet
        /// </summary>
        public NET_HELMET_DETECT_RULE stuHelemetRule;
        /// <summary>
        /// 工作服检测规则
        /// Detection rule of work clothes
        /// </summary>
        public NET_WORKCLOTH_DETECT_RULE stuWorkClothRule;
        /// <summary>
        /// 工作马甲检测规则
        /// Detection rule of work vest
        /// </summary>
        public NET_WORKVEST_DETECT_RULE stuWorkVestRule;
        /// <summary>
        /// 工作裤检测规则
        /// Detection rule of work pants
        /// </summary>
        public NET_WORKPANTS_DETECT_RULE stuWorkPantsRule;
        /// <summary>
        /// 灵敏度，取值1-10，数值越大代表灵敏度越高
        /// Sensitivity[1-10], The higher the value, the higher the sensitivity
        /// </summary>
        public uint nSensitivity;
        /// <summary>
        /// 首次报警时间, 事件持续多长时间后报警，单位秒
        /// First alarm time, how long does the event last, and then alarm in seconds
        /// </summary>
        public uint nAlarmTime;
        /// <summary>
        /// 重复报警时间间隔，单位秒
        /// Repeat alarm interval, in seconds
        /// </summary>
        public uint nAlarmRepeatTime;
        /// <summary>
        /// 防护面罩检测规则
        /// Protective mask detection rules
        /// </summary>
        public NET_PROHELMET_DETECT_RULE stuProhelmet;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 484)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_WORKCLOTHDETECT(工装检测事件)对应的规则配置
    /// Rule type: EVENT_IVS_WORKCLOTHDETECT(work clothes detection) configuration
    /// </summary>
    public struct NET_WORKCLOTHDETECT_RULE_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 检测区顶点数
        /// Count of detection region points
        /// </summary>
        public uint nDetectRegionPoint;
        /// <summary>
        /// 检测区
        /// Detection region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;
        /// <summary>
        /// 工装描述信息个数
        /// Count of wokr clothes descript
        /// </summary>
        public uint nDescriptNum;
        /// <summary>
        /// 工装描述信息, 数组各项是逻辑或关系
        /// Descript of work clothes, the relationship between the datas is or
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_WORKCLOTHES_DESCRIPT[] stuWorkClothesDescript;
        /// <summary>
        /// 规则检测类型
        /// Work clothes detect rule type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_WORKCLOTHDETECT_RULE_TYPE[] emRuleType;
        /// <summary>
        /// 规则检测类型个数
        /// Number of work clothes detect rule type
        /// </summary>
        public uint nRuleTypeNum;
        /// <summary>
        /// 触发模式
        /// Trigger mode
        /// </summary>
        public EM_WORKCLOTHDETECT_TRIGGER_MODE emTriggerMode;
    }

    /// <summary>
    /// EVENT_IVS_SMOKING_DETECT(吸烟检测)对应的规则配置
    /// EVENT_IVS_SMOKING_DETECT(Smoking detection)corresponding rule configuration structure
    /// </summary>
    public struct NET_SMOKING_DETECT_RULE_INFO
    {
        /// <summary>
        /// 最短持续时间 单位：秒，0~65535
        /// Minimum duration in seconds, 0-65535
        /// </summary>
        public uint nMinDuration;
        /// <summary>
        /// 检测区域顶点数
        /// Points number of detect region
        /// </summary>
        public uint nDetectRegionPoint;
        /// <summary>
        /// 检测区域
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;
        /// <summary>
        /// 灵敏度, 取值1-10
        /// Sensitivity, Value:1-10
        /// </summary>
        public uint nSensitivity;
        /// <summary>
        /// 重复报警时间，单位：秒，范围0-3600
        /// Repeat alarm time, unit: seconds, range: 0-3600
        /// </summary>
        public uint nReportInterval;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2048)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_FACEANALYSIS(人脸分析事件) 对应的规则配置
    /// Rule type EVENT_IVS_FACEANALYSIS configuration
    /// </summary>
    public struct NET_FACEANALYSIS_RULE_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 检测区顶点数
        /// Detect region point number
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;
        /// <summary>
        /// 灵敏度,范围[1,10],灵敏度越高越容易检测
        /// sensitivity, range [1,10], the higher the sensitivity, the easier to detect
        /// </summary>
        public int nSensitivity;
        /// <summary>
        /// 联动布控个数
        /// the count of link group
        /// </summary>
        public int nLinkGroupNum;
        /// <summary>
        /// 联动的布控组
        /// the list of link group
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_LINKGROUP_INFO[] stuLinkGroup;
        /// <summary>
        /// 陌生人布防模式
        /// Stranger Mode
        /// </summary>
        public NET_CFG_STRANGERMODE_INFO_NEW stuStrangerMode;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// whether rule special dimension filter is valid or not
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// rule special dimension filter
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO stuSizeFileter;
        /// <summary>
        /// 是否开启人脸属性识别, IPC增加
        /// whether to open the face feature detection
        /// </summary>
        public bool bFeatureEnable;
        /// <summary>
        /// 需要检测的人脸属性个数
        /// the count of face feature
        /// </summary>
        public int nFaceFeatureNum;
        /// <summary>
        /// 需检测的人脸属性
        /// the list of face feature
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_FACEFEATURE_TYPE[] emFaceFeatureType;
        /// <summary>
        /// 在人脸属性开启前提下，如果人脸图像质量太差，是否不上报属性
        /// true-图像太差不上报属性 false-图像很差也上报属性(可能会非常不准，影响用户体验)
        /// when open the face feature,if the face image's quality is too bad,whether to report
        /// true-not report false-report
        /// </summary>
        public bool bFeatureFilter;
        /// <summary>
        /// 人脸图片质量阈值,和bFeatureFilter一起使用 范围[1,100]
        /// the threshold of face image quality, use with bFeatureFilter range[1,100]
        /// </summary>
        public int nMinQuality;
        /// <summary>
        /// / 人Lian美化
        /// / Face beautification configuration
        /// </summary>
        public NET_CFG_FACE_BEAUTIFICATION stuFaceBeautification;
    }

    /// <summary>
    /// EVENT_IVSS_FACEATTRIBUTE (人脸属性检测) 对应的规则配置结构体
    /// Rule Type: EVENT_IVSS_FACEATTRIBUTE configuration
    /// </summary>
    public struct NET_FACEATTRIBUTE_RULE_INFO
    {
        /// <summary>
        /// 检测区域顶点数
        /// Top points number of detection area
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区域
        /// Detection area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;
        /// <summary>
        /// 最短持续时间 单位：秒，0~65535
        /// Min duration time. unit:s. 0~65535
        /// </summary>
        public int nMinDuration;
        /// <summary>
        /// 触发报警的人脸个数
        /// The number of trigger target
        /// </summary>
        public int nTriggerTargets;
        /// <summary>
        /// 灵敏度, 取值1-10，值越小灵敏度越低
        /// Sensitivity, 1-10. The lower value, the lower Sensitivity
        /// </summary>
        public int nSensitivity;
        /// <summary>
        /// 报告时间间隔,单位秒 0~600;等于0表示不重复报警, 默认值30
        /// Report interval time, Unit:s 0~600; 0s-no repeated report, default 30s
        /// </summary>
        public int nReportInterval;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// Whether rule special dimension filter is valid or not
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// Rule special dimension filter
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO stuSizeFileter;
        /// <summary>
        /// 需要检测的人脸属性个数
        /// The count of face feature
        /// </summary>
        public int nFaceFeatureNum;
        /// <summary>
        /// 需检测的人脸属性
        /// The face feature list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_FACEFEATURE_TYPE[] emFaceFeatureType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4096)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 年龄段
    /// Age group
    /// </summary>
    public enum EM_HUMAN_AGE_SEG
    {
        /// <summary>
        /// 未知: ""
        /// Unknown: ""
        /// </summary>
        EM_HUMAN_AGE_SEG_UNKOWN,
        /// <summary>
        /// 幼儿: "Child"
        /// Child: "Child"
        /// </summary>
        EM_HUMAN_AGE_SEG_CHILD,
        /// <summary>
        /// 中年: "Adult"
        /// Adult: "Adult"
        /// </summary>
        EM_HUMAN_AGE_SEG_ADULT,
        /// <summary>
        /// 老年: "Elderly"
        /// Elderly: "Elderly"
        /// </summary>
        EM_HUMAN_AGE_SEG_ELDERLY,
    }

    /// <summary>
    /// 年龄段信息的描述信息
    /// Description of age group information
    /// </summary>
    public struct NET_HUMAN_DESC_INFO
    {
        /// <summary>
        /// 称谓: EM_HUMAN_AGE_SEG_CHILD-"Child", EM_HUMAN_AGE_SEG_ADULT-"Adult", EM_HUMAN_AGE_SEG_ELDERLY-"Elderly"
        /// Title: EM_HUMAN_AGE_SEG_CHILD-"Child", EM_HUMAN_AGE_SEG_ADULT-"Adult", EM_HUMAN_AGE_SEG_ELDERLY-"Elderly"
        /// </summary>
        public EM_HUMAN_AGE_SEG emName;
        /// <summary>
        /// 年龄取值范围: nRange[0]为闭区间左值，nRange[1]为闭区间右值
        /// Age value range: nRange[0] is the closed interval left value, nRange[1] is the closed interval right value
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public uint[] nRange;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 年龄过滤条件
    /// Age filter condition
    /// </summary>
    public struct NET_HUMAN_AGE_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 过滤显示的年龄段的个数,最大值是16
        /// Filter the number of displayed age groups, the maximum value is 16
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 过滤显示的年龄段
        /// Filter the displayed age range
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_HUMAN_AGE_SEG[] emHumanAgeShowList;
        /// <summary>
        /// 年龄段信息的描述信息, 内存由用户申请和释放, 申请大小sizeof(NET_HUMAN_DESC_INFO)*nShowListNums
        /// Descriptive information of age group information, memory is applied and released by the user, application size is sizeof(NET_HUMAN_DESC_INFO)*nShowListNums
        /// </summary>
        public IntPtr pstuHumanDesc;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 性别过滤条件
    /// Sex filter condition
    /// </summary>
    public struct NET_HUMAN_SEX_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 过滤显示的性别的个数,最大值是2
        /// Filter the number of sex displayed, the maximum value is 2
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 过滤显示的性别
        /// Filter the displayed Sex
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public EM_SEX_TYPE[] emHumanSexShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 表情过滤条件
    /// Emotion filter condition
    /// </summary>
    public struct NET_HUMAN_EMOTION_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 过滤显示的表情的个数,最大值是32
        /// filter the number of emotion displayed, the maximum value is 32
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 过滤显示的表情
        /// Filter the displayed emotion
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_EMOTION_TYPE[] emHumanEmotionShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 眼镜佩戴过滤条件
    /// Glasses wearing filter condition
    /// </summary>
    public struct NET_HUMAN_GLASSES_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 过滤显示的眼镜佩戴情况的个数,最大值是16
        /// Filter the number of glasses displayed, the maximum value is 16
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 过滤显示的眼镜佩戴情况
        /// Filter the displayed glasses wearing condition
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_HAS_GLASS[] emHumanGlassesShowList;
        /// <summary>
        /// 是否戴眼镜，TRUE-有，FALSE-无
        /// Whether to wear glasses, TRUE-yes, FALSE-no
        /// </summary>
        public bool bHasGlasses;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 是否戴口罩
    /// mask type
    /// </summary>
    public enum EM_MASK_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_MASK_UNKNOWN,
        /// <summary>
        /// 无
        /// not wear
        /// </summary>
        EM_MASK_NO,
        /// <summary>
        /// 戴
        /// wear
        /// </summary>
        EM_MASK_YES,
    }

    /// <summary>
    /// 口罩佩戴过滤条件
    /// Mask wearing filter condition
    /// </summary>
    public struct NET_HUMAN_MASK_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 过滤显示的口罩佩戴情况的个数,最大值是2
        /// Filter the number of masks displayed, the maximum value is 2
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 过滤显示的口罩佩戴情况
        /// Filter the displayed mask wearing condition
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public EM_MASK_TYPE[] emHumanMaskShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 胡子情况
    /// Beard situation
    /// </summary>
    public enum EM_HUMAN_BEARD_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_HUMAN_BEARD_TYPE_UNKNOWN,
        /// <summary>
        /// 没胡子
        /// None
        /// </summary>
        EM_HUMAN_BEARD_TYPE_NONE,
        /// <summary>
        /// 有胡子
        /// Beard
        /// </summary>
        EM_HUMAN_BEARD_TYPE_BEARD,
    }

    /// <summary>
    /// 胡子过滤条件
    /// Beard filter condition
    /// </summary>
    public struct NET_HUMAN_BEARD_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 过滤显示的胡子情况的个数,最大值是2
        /// The number of Beard situation to filter, the maximum value is 2
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 胡子情况
        /// Beard situation
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public EM_HUMAN_BEARD_TYPE[] emHumanBeardShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 上衣类型
    /// Coat types
    /// </summary>
    public enum EM_HUMAN_COAT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_HUMAN_COAT_TYPE_UNKNOWN,
        /// <summary>
        /// 长袖
        /// LongSleeve
        /// </summary>
        EM_HUMAN_COAT_TYPE_LONG_SLEEVE,
        /// <summary>
        /// 短袖
        /// ShortSleeve
        /// </summary>
        EM_HUMAN_COAT_TYPE_SHORT_SLEEVE,
    }

    /// <summary>
    /// 上衣类型过滤条件
    /// Coat Type filter condition
    /// </summary>
    public struct NET_HUMAN_COAT_TYPE_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 需要过滤的上衣类型的个数,最大值是16
        /// The number of Coat types to filter, the maximum value is 16
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 需要过滤的上衣类型
        /// Coat types
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_HUMAN_COAT_TYPE[] emHumanCoatTypeShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 上衣颜色过滤条件
    /// Coat Color filter condition
    /// </summary>
    public struct NET_HUMAN_COAT_COLOR_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 过滤出对应的上衣颜色的个数,最大值是32
        /// The number of Coat color to filter, the maximum value is 32
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 上衣颜色
        /// Coat color
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_CLOTHES_COLOR[] emHumanCoatColorShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 裤子类型
    /// Trousers Type
    /// </summary>
    public enum EM_HUMAN_TROUSERS_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_HUMAN_TROUSERS_TYPE_UNKNOWN,
        /// <summary>
        /// 短裤
        /// ShortPants
        /// </summary>
        EM_HUMAN_TROUSERS_TYPE_SHORT_PANTS,
        /// <summary>
        /// 长裤
        /// Pants
        /// </summary>
        EM_HUMAN_TROUSERS_TYPE_PANTS,
        /// <summary>
        /// 裙子
        /// Skirt
        /// </summary>
        EM_HUMAN_TROUSERS_TYPE_SKIRT,
    }

    /// <summary>
    /// 裤子类型过滤条件
    /// Trousers Type filter condition
    /// </summary>
    public struct NET_HUMAN_TROUSERS_TYPE_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 需要过滤的裤子类型的个数,最大值是16
        /// The number of Trousers Type to filter, the maximum value is 16
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 需要过滤的裤子类型
        /// Trousers Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_HUMAN_TROUSERS_TYPE[] emHumanTrousersTypeShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 裤子颜色过滤条件
    /// Trousers Color filter
    /// </summary>
    public struct NET_HUMAN_TROUSERS_COLOR_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 需要过滤的裤子颜色颜色类型的个数,最大值是32
        /// The number of trousers Color that need to be filtered, the maximum value is 32
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 需要过滤的裤子颜色类型
        /// Trousers Color
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_CLOTHES_COLOR[] emHumanTrousersColorShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 背包情况
    /// Bag cases
    /// </summary>
    public enum EM_HUMAN_BAG_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_HUMAN_BAG_TYPE_UNKNOWN,
        /// <summary>
        /// 背包
        /// Bag
        /// </summary>
        EM_HUMAN_BAG_TYPE_BAG,
        /// <summary>
        /// 手提包
        /// CarrierBag
        /// </summary>
        EM_HUMAN_BAG_TYPE_CARRIER_BAG,
        /// <summary>
        /// 肩包
        /// ShoulderBag
        /// </summary>
        EM_HUMAN_BAG_TYPE_SHOULDER_BAG,
        /// <summary>
        /// 无
        /// None
        /// </summary>
        EM_HUMAN_BAG_TYPE_NONE,
    }

    /// <summary>
    /// 背包过滤条件
    /// Bag filter condition
    /// </summary>
    public struct NET_HUMAN_HAS_BAG_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 需要过滤的背包情况的个数,最大值是16
        /// The number of Bag cases to filter, the maximum value is 16
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 背包情况
        /// Bag cases
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_HUMAN_BAG_TYPE[] emHumanHasBagShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 雨伞检测情况
    /// Umbrella detection
    /// </summary>
    public enum EM_HUMAN_UMBRELLA_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_HUMAN_UMBRELLA_TYPE_UNKNOWN,
        /// <summary>
        /// 带伞
        /// WithUmbrella
        /// </summary>
        EM_HUMAN_UMBRELLA_TYPE_WITH_UMBRELLA,
        /// <summary>
        /// 不带伞
        /// NoUmbrella
        /// </summary>
        EM_HUMAN_UMBRELLA_TYPE_NO_UMBRELLA,
    }

    /// <summary>
    /// 雨伞过滤条件
    /// Umbrella filter condition
    /// </summary>
    public struct NET_HUMAN_HAS_UMBRELLA_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 雨伞检测情况的个数,最大值是2
        /// The number of umbrella detection cases, the maximum value is 2
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 雨伞检测情况
        /// Umbrella detection
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public EM_HUMAN_UMBRELLA_TYPE[] emHumanHasUmbrellaShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 穿戴雨披类型
    /// Raincoat type
    /// </summary>
    public enum EM_HUMAN_RAIN_COAT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_HUMAN_RAIN_COAT_TYPE_UNKNOWN,
        /// <summary>
        /// 有
        /// YES
        /// </summary>
        EM_HUMAN_RAIN_COAT_TYPE_YES,
        /// <summary>
        /// 无
        /// NO
        /// </summary>
        EM_HUMAN_RAIN_COAT_TYPE_NO,
    }

    /// <summary>
    /// 穿戴雨披
    /// RainCoat filter condition
    /// </summary>
    public struct NET_HUMAN_RAIN_COAT_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 穿戴雨披类型的个数,最大值是2
        /// The number of poncho types, the maximum value is 2
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 穿戴雨披类型
        /// Raincoat type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public EM_HUMAN_RAIN_COAT_TYPE[] emHumanRainCoatShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 帽子情况
    /// Hats that need to be filtered
    /// </summary>
    public enum EM_HUMAN_HAT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_HUMAN_HAT_TYPE_UNKNOWN,
        /// <summary>
        /// 普通帽
        /// WithHat
        /// </summary>
        EM_HUMAN_HAT_TYPE_WITH_HAT,
        /// <summary>
        /// 头盔
        /// WithHelmet
        /// </summary>
        EM_HUMAN_HAT_TYPE_WITH_HELMET,
        /// <summary>
        /// 无
        /// NoHat
        /// </summary>
        EM_HUMAN_HAT_TYPE_NONE,
    }

    /// <summary>
    /// 帽子过滤条件
    /// Hat filter condition
    /// </summary>
    public struct NET_HUMAN_HAS_HAT_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 需要过滤的帽子情况的个数,最大值是16
        /// The number of hats to filter, the maximum value is 16
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 需要过滤的帽子情况
        /// Hats that need to be filtered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_HUMAN_HAT_TYPE[] emHumanHasHatShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 安全帽合规性检测信息
    /// Helmet compliance detection information
    /// </summary>
    public struct NET_HUMAN_HELMET_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 是否有戴安全帽，TRUE-有，FALSE-无
        /// Whether a helmet is worn, TRUE-yes, FALSE-no
        /// </summary>
        public bool bHasHelmet;
        /// <summary>
        /// 安全帽颜色的个数,最大值是32
        /// The number of helmet colors, the maximum value is 32
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 安全帽颜色
        /// helmet colors
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_CLOTHES_COLOR[] emHumanHelmetColorShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 是否有穿反光背心
    /// Is wearing a reflective vest
    /// </summary>
    public enum EM_HUMAN_VEST_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_HUMAN_VEST_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 无
        /// NO
        /// </summary>
        EM_HUMAN_VEST_TYPE_NO,
        /// <summary>
        /// 有
        /// YES
        /// </summary>
        EM_HUMAN_VEST_TYPE_YES,
    }

    /// <summary>
    /// 安全背心合规性检测信息
    /// Safety vest compliance test information
    /// </summary>
    public struct NET_HUMAN_VEST_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 是否有穿反光背心的类型的个数,最大值是2
        /// Whether there are types of reflective vests, the maximum value is 2
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 是否有穿反光背心的类型
        /// Whether there is a type of reflective vest
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public EM_HUMAN_VEST_TYPE[] emHumanVestShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 发型类型
    /// Hair Style
    /// </summary>
    public enum EM_HUMAN_HAIR_STYLE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_HUMAN_HAIR_STYLE_TYPE_UNKNOWN,
        /// <summary>
        /// 长发
        /// Long
        /// </summary>
        EM_HUMAN_HAIR_STYLE_TYPE_LONG,
        /// <summary>
        /// 短发
        /// Short
        /// </summary>
        EM_HUMAN_HAIR_STYLE_TYPE_SHORT,
        /// <summary>
        /// 马尾
        /// Ponytail
        /// </summary>
        EM_HUMAN_HAIR_STYLE_TYPE_PONYTAIL,
        /// <summary>
        /// 盘发
        /// Updo
        /// </summary>
        EM_HUMAN_HAIR_STYLE_TYPE_UPDO,
        /// <summary>
        /// 遮挡头部
        /// HeadCovered
        /// </summary>
        EM_HUMAN_HAIR_STYLE_TYPE_HEAD_COVERED,
    }

    /// <summary>
    /// 发型过滤条件
    /// Hair Style filter condition
    /// </summary>
    public struct NET_HUMAN_HAIR_STYLE_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 需要过滤的发型类型的个数,最大值是16
        /// The number of hairstyle types to filter, the maximum value is 16
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 需要过滤的发型类型
        /// Hair type to be filtered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_HUMAN_HAIR_STYLE_TYPE[] emHumanHairStyleShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 人体拍摄角度
    /// Angle filter condition
    /// </summary>
    public struct NET_HUMAN_ANGLE_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 需要过滤的拍摄角度类型的个数,最大值是16
        /// The number of shooting angle types that need to be filtered, the maximum value is 16
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 需要过滤的拍摄角度类型
        /// The type of angle that needs to be filtered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_ANGLE_TYPE[] emHumanAngleShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 抱小孩类型
    /// Type of holding baby
    /// </summary>
    public enum EM_HUMAN_HOLD_BABY_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_HUMAN_HOLD_BABY_TYPE_UNKNOWN,
        /// <summary>
        /// 抱
        /// Hold
        /// </summary>
        EM_HUMAN_HOLD_BABY_TYPE_HOLD,
        /// <summary>
        /// 未抱
        /// NoHold
        /// </summary>
        EM_HUMAN_HOLD_BABY_TYPE_NO_HOLD,
    }

    /// <summary>
    /// 抱小孩
    /// Hold Baby filter condition
    /// </summary>
    public struct NET_HUMAN_HOLD_BABY_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 抱小孩类型的个数,最大值是2
        /// The number of child types, the maximum value is 2
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 抱小孩类型
        /// type of holding baby
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public EM_HUMAN_HOLD_BABY_TYPE[] emHumanHoldBabyShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 人体过滤配置，包括人体和人脸的属性
    /// Body filter configuration, including attributes of body and face
    /// </summary>
    public struct NET_COMPLIANT_HUMAN_INFO
    {
        /// <summary>
        /// 年龄过滤条件
        /// Age filter condition
        /// </summary>
        public NET_HUMAN_AGE_INFO stuHumanAge;
        /// <summary>
        /// 性别过滤条件
        /// Sex filter condition
        /// </summary>
        public NET_HUMAN_SEX_INFO stuHumanSex;
        /// <summary>
        /// 表情过滤条件
        /// Emotion filter condition
        /// </summary>
        public NET_HUMAN_EMOTION_INFO stuHumanEmotion;
        /// <summary>
        /// 眼镜佩戴过滤条件
        /// Glasses wearing filter condition
        /// </summary>
        public NET_HUMAN_GLASSES_INFO stuHumanGlasses;
        /// <summary>
        /// 口罩佩戴过滤条件
        /// Mask wearing filter condition
        /// </summary>
        public NET_HUMAN_MASK_INFO stuHumanMask;
        /// <summary>
        /// 胡子过滤条件
        /// Beard filter condition
        /// </summary>
        public NET_HUMAN_BEARD_INFO stuHumanBeard;
        /// <summary>
        /// 上衣类型过滤条件
        /// Coat Type filter condition
        /// </summary>
        public NET_HUMAN_COAT_TYPE_INFO stuHumanCoatType;
        /// <summary>
        /// 上衣颜色过滤条件
        /// Coat Color filter condition
        /// </summary>
        public NET_HUMAN_COAT_COLOR_INFO stuHumanCoatColor;
        /// <summary>
        /// 裤子类型过滤条件
        /// Trousers Type filter condition
        /// </summary>
        public NET_HUMAN_TROUSERS_TYPE_INFO stuHumanTrousersType;
        /// <summary>
        /// 裤子颜色过滤条件
        /// Trousers Color filter condition
        /// </summary>
        public NET_HUMAN_TROUSERS_COLOR_INFO stuHumanTrousersColor;
        /// <summary>
        /// 背包过滤条件
        /// Bag filter condition
        /// </summary>
        public NET_HUMAN_HAS_BAG_INFO stuHumanHasBag;
        /// <summary>
        /// 雨伞过滤条件
        /// Umbrella filter condition
        /// </summary>
        public NET_HUMAN_HAS_UMBRELLA_INFO stuHumanHasUmbrella;
        /// <summary>
        /// 穿戴雨披
        /// RainCoat filter condition
        /// </summary>
        public NET_HUMAN_RAIN_COAT_INFO stuHumanRainCoat;
        /// <summary>
        /// 帽子过滤条件
        /// Hat filter condition
        /// </summary>
        public NET_HUMAN_HAS_HAT_INFO stuHumanHasHat;
        /// <summary>
        /// 安全帽合规性检测信息
        /// Helmet compliance detection information
        /// </summary>
        public NET_HUMAN_HELMET_INFO stuHumanHelmet;
        /// <summary>
        /// 安全背心合规性检测信息
        /// Safety vest compliance test information
        /// </summary>
        public NET_HUMAN_VEST_INFO stuHumanVest;
        /// <summary>
        /// 发型过滤条件
        /// Hair Style filter condition
        /// </summary>
        public NET_HUMAN_HAIR_STYLE_INFO stuHumanHairStyle;
        /// <summary>
        /// 人体拍摄角度
        /// Angle filter condition
        /// </summary>
        public NET_HUMAN_ANGLE_INFO stuHumanAngle;
        /// <summary>
        /// 抱小孩
        /// Hold Baby filter condition
        /// </summary>
        public NET_HUMAN_HOLD_BABY_INFO stuHumanHoldBaby;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 机动车车色过滤配置
    /// Motor vehicle color filter configuration
    /// </summary>
    public struct NET_VEHICLE_COLOR_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 机动车车身颜色的个数,最大值是32
        /// The number of vehicle body colors, the maximum value is 32
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 机动车车身颜色
        /// Vehicle body color
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_OBJECT_COLOR_TYPE[] emVehicleColorShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 车标过滤配置
    /// Car logo filter configuration
    /// </summary>
    public struct NET_VEHICLE_BRAND_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 车标的个数,最大值是256
        /// The number of car logos, the maximum value is 256
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 车标对应的枚举值, 数字到具体品牌映射见映射表(由算法统一提供), 目前有效值为0-562
        /// The enumeration value corresponding to the car logo, the mapping from numbers to specific brands is shown in the mapping table (provided by the algorithm), the current valid value is 0-562
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nBrandShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 机动车车辆类型
    /// Vehicle type
    /// </summary>
    public enum EM_COMPLIANT_VEHICLE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_UNKNOWN,
        /// <summary>
        /// 客车
        /// PassengerCar
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_PASSENGER_CAR,
        /// <summary>
        /// 大货车
        /// LargeTrunk
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_LARGE_TRUCK,
        /// <summary>
        /// 中货车
        /// MidTruck
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_MID_TRUCK,
        /// <summary>
        /// 中客车
        /// MidPassengerCar
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_MID_PASSENGER_CAR,
        /// <summary>
        /// 轿车
        /// SaloonCar
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_SALOON_CAR,
        /// <summary>
        /// 面包车
        /// Microbus
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_MICROBUS,
        /// <summary>
        /// 小货车
        /// MicroTruck
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_MICRO_TRUCK,
        /// <summary>
        /// SUV
        /// SUV
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_SUV,
        /// <summary>
        /// SUV或者MPV
        /// SUV MPV
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_SUV_MPV,
        /// <summary>
        /// 皮卡车
        /// MPVPickup
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_MPV_PICKUP,
        /// <summary>
        /// 微型车
        /// MiniCarriage
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_MINI_CARRIAGE,
        /// <summary>
        /// 危化品车辆
        /// TankCar
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_TANK_CAR,
        /// <summary>
        /// 混凝土搅拌车
        /// ConcreteMixerTruck
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_CONCRETE_MIXER_TRUCK,
        /// <summary>
        /// 吸污车
        /// SuctionSewageTruck
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_SUCTION_SEWAGE_TRUCK,
        /// <summary>
        /// 普通罐车
        /// NormalTankTrunk
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_NORMAL_TANK_TRUCK,
        /// <summary>
        /// 拖拉机
        /// Tractor
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_TRACTOR,
        /// <summary>
        /// 工程车
        /// MachineshopTruck
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_MACHINE_SHOP_TRUCK,
        /// <summary>
        /// 渣土车
        /// DregsCar
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_DREGS_CAR,
        /// <summary>
        /// 警车
        /// Police
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_POLICE,
        /// <summary>
        /// 救护车
        /// Ambulance
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_AMBULANCE,
        /// <summary>
        /// 消防车
        /// FireEngine
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_FIRE_ENGINE,
        /// <summary>
        /// 洒水车
        /// WateringCar
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_WATERING_CAR,
        /// <summary>
        /// 出租车
        /// Taxi
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_TAXI,
        /// <summary>
        /// 粉粒物料车
        /// PowerLotVehicle
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_POWER_LOT_VEHICLE,
        /// <summary>
        /// 校车
        /// SchoolBus
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_SCHOOL_BUS,
        /// <summary>
        /// 公交车
        /// Bus
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_BUS,
        /// <summary>
        /// 押运车
        /// Escort
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_ESCORT,
        /// <summary>
        /// 其他
        /// Other
        /// </summary>
        EM_COMPLIANT_VEHICLE_TYPE_OTHER,
    }

    /// <summary>
    /// 机动车车型过滤配置
    /// Motor vehicle model filter configuration
    /// </summary>
    public struct NET_VEHICLE_TYPE_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 车型的个数,最大值是64
        /// The number of vehicle types, the maximum value is 64
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 车辆类型
        /// Vehicle type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public EM_COMPLIANT_VEHICLE_TYPE[] emVehicleTypeShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 车牌颜色过滤配置
    /// Plate color filter configuration
    /// </summary>
    public struct NET_VEHICLE_PLATE_COLOR_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 车牌颜色的个数,最大值是16
        /// The number of license plate colors, the maximum value is 16
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 车牌颜色
        /// Plate color
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_NET_PLATE_COLOR_TYPE[] emVehiclePlateColorShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 打电话情况
    /// Calling situation
    /// </summary>
    public enum EM_VEHICLE_CALLING_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_VEHICLE_CALLING_TYPE_UNKNOWN,
        /// <summary>
        /// 正在打电话
        /// Calling
        /// </summary>
        EM_VEHICLE_CALLING_TYPE_CALLING,
        /// <summary>
        /// 没有在打电话
        /// NoCall
        /// </summary>
        EM_VEHICLE_CALLING_TYPE_NO_CALL,
    }

    /// <summary>
    /// 打电话过滤配置
    /// Call filter configuration
    /// </summary>
    public struct NET_VEHICLE_CALLING_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 打电话情况的个数,最大值是2
        /// The number of calls, the maximum value is 2
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 打电话情况
        /// Calling situation
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public EM_VEHICLE_CALLING_TYPE[] emVehicleCallingShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 安全带情况
    /// Seat belt condition
    /// </summary>
    public enum EM_VEHICLE_SAFE_BELT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_VEHICLE_SAFE_BELT_TYPE_UNKNOWN,
        /// <summary>
        /// 安全带正常
        /// WithSafeBelt
        /// </summary>
        EM_VEHICLE_SAFE_BELT_TYPE_WITH_SAFE_BELT,
        /// <summary>
        /// 未系安全带
        /// WithoutSafeBelt
        /// </summary>
        EM_VEHICLE_SAFE_BELT_TYPE_WITHOUT_SAFE_BELT,
    }

    /// <summary>
    /// 安全带过滤配置
    /// Seat belt filter configuration
    /// </summary>
    public struct NET_VEHICLE_SAFE_BELT_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 安全带情况的个数,最大值是2
        /// The number of seat belt conditions, the maximum value is 2
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 安全带情况
        /// Seat belt condition
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public EM_VEHICLE_SAFE_BELT_TYPE[] emVehicleSafeBeltShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 车内饰品情况
    /// Vehicle attachments
    /// </summary>
    public enum EM_VEHICLE_ATTACHMENT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_VEHICLE_ATTACHMENT_TYPE_UNKNOWN,
        /// <summary>
        /// 摆件
        /// Furniture
        /// </summary>
        EM_VEHICLE_ATTACHMENT_TYPE_FURNITURE,
        /// <summary>
        /// 挂件
        /// Pendant
        /// </summary>
        EM_VEHICLE_ATTACHMENT_TYPE_PENDANT,
        /// <summary>
        /// 纸巾盒
        /// TissueBox
        /// </summary>
        EM_VEHICLE_ATTACHMENT_TYPE_TISSUE_BOX,
        /// <summary>
        /// 香水盒
        /// PerfumeBox
        /// </summary>
        EM_VEHICLE_ATTACHMENT_TYPE_PERFUME_BOX,
        /// <summary>
        /// 危险品
        /// Danger
        /// </summary>
        EM_VEHICLE_ATTACHMENT_TYPE_DANGER,
        /// <summary>
        /// 无车内饰品
        /// None
        /// </summary>
        EM_VEHICLE_ATTACHMENT_TYPE_NONE,
        /// <summary>
        /// 卡片
        /// Card
        /// </summary>
        EM_VEHICLE_ATTACHMENT_TYPE_CARD,
    }

    /// <summary>
    /// 车上挂件过滤条件
    /// filter conditions for vehicle attachments
    /// </summary>
    public struct NET_VEHICLE_ATTACHMENT_INFO
    {
        /// <summary>
        /// 是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
        /// Whether filtering is enabled: TRUE-delivery the configuration FALSE-do not deliver the configuration
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 车内饰品情况的个数,最大值是16
        /// The number of vehicle attachments in the car, the maximum value is 16
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 车内饰品情况
        /// Vehicle attachments
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_VEHICLE_ATTACHMENT_TYPE[] emVehicleAttachmentShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 机动车合规报警过滤配置
    /// Motor vehicle compliance alarm filter configuration
    /// </summary>
    public struct NET_COMPLIANT_VEHICLE_INFO
    {
        /// <summary>
        /// 机动车车色过滤配置
        /// vehicle color filter configuration
        /// </summary>
        public NET_VEHICLE_COLOR_INFO stuVehicleColor;
        /// <summary>
        /// 车标过滤配置
        /// Vehicle logo filter configuration
        /// </summary>
        public NET_VEHICLE_BRAND_INFO stuVehicleBrand;
        /// <summary>
        /// 机动车车型过滤配置
        /// Motor vehicle model filter configuration
        /// </summary>
        public NET_VEHICLE_TYPE_INFO stuVehicleType;
        /// <summary>
        /// 车牌颜色过滤配置
        /// license plate color filter configuration
        /// </summary>
        public NET_VEHICLE_PLATE_COLOR_INFO stuVehiclePlateColor;
        /// <summary>
        /// 打电话过滤配置
        /// Call filter configuration
        /// </summary>
        public NET_VEHICLE_CALLING_INFO stuVehicleCalling;
        /// <summary>
        /// 安全带过滤配置
        /// Seat belt filter configuration
        /// </summary>
        public NET_VEHICLE_SAFE_BELT_INFO stuVehicleSafeBelt;
        /// <summary>
        /// 车上挂件过滤条件
        /// filter conditions for vehicle attachments
        /// </summary>
        public NET_VEHICLE_ATTACHMENT_INFO stuVehicleAttachment;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 非机动车颜色过滤条件
    /// Non-motor vehicle color filter
    /// </summary>
    public struct NET_NONMOTOR_COLOR_INFO
    {
        /// <summary>
        /// 是否启用, 为TRUE则下发非机动车颜色过滤条件，为FALSE则不下发非机动车颜色过滤条件
        /// Whether to enable, if it is TRUE, the color filter condition for non-motor vehicles will be issued, and if it is FALSE, the color filter conditions for non-motor vehicles will not be issued.
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 非机动车车身颜色的个数,最大值是32
        /// The number of non-motor vehicle body colors, the maximum value is 32
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 非机动车车身颜色
        /// Non-motor vehicle body color
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_OBJECT_COLOR_TYPE[] emNonMotorColorShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 车上人数过滤条件
    /// The number of people in the car filter
    /// </summary>
    public struct NET_NONMOTOR_CYCLING_NUM_INFO
    {
        /// <summary>
        /// 是否启用, 为TRUE则下发车上人数过滤条件，为FALSE则不下发车上人数过滤条件
        /// Whether to enable, if it is TRUE, the filter condition of the number of people on the train will be set, and if it is FALSE, the filter condition of the number of people on the train will not be set.
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 需要过滤出对应的人体数目
        /// Need to filter out the corresponding number of human bodies
        /// </summary>
        public uint nCyclingNum;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 过滤出对应的非机动车类型
    /// Filter out the corresponding non-motor vehicle type
    /// </summary>
    public enum EM_NONMOTOR_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_NONMOTOR_TYPE_UNKNOWN = 0,
        /// <summary>
        /// 自行车
        /// Bicycle
        /// </summary>
        EM_NONMOTOR_TYPE_BICYCLE,
        /// <summary>
        /// 厢式三轮车
        /// VanTricycle
        /// </summary>
        EM_NONMOTOR_TYPE_VANTRICYCLE,
        /// <summary>
        /// 摩托车
        /// Motorbike
        /// </summary>
        EM_NONMOTOR_TYPE_MOTORBIKE,
        /// <summary>
        /// 载人敞篷三轮车
        /// MannedConvertibleTricycle
        /// </summary>
        EM_NONMOTOR_TYPE_MANNED_CONVERTIBLE_TRICYCLE,
        /// <summary>
        /// 不载人敞篷三轮车
        /// NoMannedConvertibleTricycle
        /// </summary>
        EM_NONMOTOR_TYPE_NO_MANNED_CONVERTIBLE_TRICYCLE,
    }

    /// <summary>
    /// 非机动车类型过滤条件
    /// Non-motor vehicle type filter
    /// </summary>
    public struct NET_NONMOTOR_CATEGORY_INFO
    {
        /// <summary>
        /// 是否启用, 为TRUE则下发非机动车类型过滤条件，为FALSE则不下发非机动车类型过滤条件
        /// Whether to enable, if it is TRUE, the non-motor vehicle type filter condition will be issued, if it is FALSE, the non-motor vehicle type filter condition will not be issued
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 非机动车类型的个数,最大值是32
        /// The number of non-motor vehicle types, the maximum value is 32
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 过滤出对应的非机动车类型
        /// Filter out the corresponding non-motor vehicle type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_NONMOTOR_TYPE[] emNonMotorTypeShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 非机动车过滤配置
    /// Non-motor vehicle filter configuration
    /// </summary>
    public struct NET_COMPLIANT_NONMOTOR_INFO
    {
        /// <summary>
        /// 非机动车颜色过滤条件
        /// Non-motor vehicle color filter condition
        /// </summary>
        public NET_NONMOTOR_COLOR_INFO stuNonMotorColor;
        /// <summary>
        /// 车上人数过滤条件
        /// filter conditions for the number of people in the car
        /// </summary>
        public NET_NONMOTOR_CYCLING_NUM_INFO stuNumOfCycling;
        /// <summary>
        /// 非机动车类型过滤条件
        /// Non-motor vehicle type filter
        /// </summary>
        public NET_NONMOTOR_CATEGORY_INFO stuCategory;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 船只类型
    /// Boat type
    /// </summary>
    public enum EM_BOAT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_BOAT_TYPE_UNKNOWN = 0,
        /// <summary>
        /// 采砂船
        /// SandMiningShip
        /// </summary>
        EM_BOAT_TYPE_SAND_MINING_SHIP,
    }

    /// <summary>
    /// 船只类型过滤配置
    /// Boat type filter configuration
    /// </summary>
    public struct NET_BOAT_TYPE_INFO
    {
        /// <summary>
        /// 是否启用, 为TRUE则下发船只类型过滤配置，为FALSE则不下发船只类型过滤配置
        /// Whether to enable, if it is TRUE, the boat type filtering configuration will be issued, if it is FALSE, the boat type filtering configuration will not be issued.
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 船只类型的个数,最大值是64
        /// The number of Boat types, the maximum value is 64
        /// </summary>
        public int nShowListNums;
        /// <summary>
        /// 船只类型
        /// Boat type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public EM_BOAT_TYPE[] emBoatTypeShowList;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 船只合规报警过滤配置
    /// Boat compliance alarm filter configuration
    /// </summary>
    public struct NET_COMPLIANT_BOAT_INFO
    {
        /// <summary>
        /// 船只类型过滤配置
        /// Boat type filter configuration
        /// </summary>
        public NET_BOAT_TYPE_INFO stuBoatType;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 合规报警属性过滤规则
    /// Compliance alarm attribute filtering rule
    /// </summary>
    public struct NET_COMPLIANT_FORMAT_INFO
    {
        /// <summary>
        /// 为TRUE: 下发人体过滤配置, 为FALSE: 不下发人体过滤配置
        /// TRUE: send human filter configuration, FALSE: do not send human filter configuration
        /// </summary>
        public bool bSupportHuman;
        /// <summary>
        /// 人体过滤配置，包括人体和人脸的属性
        /// Human filter configuration, including properties of human and face
        /// </summary>
        public NET_COMPLIANT_HUMAN_INFO stuHuman;
        /// <summary>
        /// 为TRUE: 下发机动车合规报警过滤配置, 为FALSE: 不下发机动车合规报警过滤配置
        /// TRUE: send motor vehicle compliance alarm filter configuration, FALSE: do not send motor vehicle compliance alarm filter configuration
        /// </summary>
        public bool bSupportVehicle;
        /// <summary>
        /// 机动车合规报警过滤配置
        /// Motor vehicle compliance alarm filter configuration
        /// </summary>
        public NET_COMPLIANT_VEHICLE_INFO stuVehicle;
        /// <summary>
        /// 为TRUE: 下发非机动车过滤配置, 为FALSE: 不下发非机动车过滤配置
        /// TRUE: send non-motor vehicle filter configuration, FALSE: do not send non-motor vehicle filter configuration
        /// </summary>
        public bool bSupportNonMotor;
        /// <summary>
        /// 非机动车过滤配置
        /// Non-motor vehicle filter configuration
        /// </summary>
        public NET_COMPLIANT_NONMOTOR_INFO stuNonMotor;
        /// <summary>
        /// 船只合规报警过滤配置
        /// Boat compliance alarm filter configuration
        /// </summary>
        public NET_COMPLIANT_BOAT_INFO stuBoat;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 合规报警规则
    /// Compliance alert rules
    /// </summary>
    public struct NET_COMPLIANT_INFO
    {
        /// <summary>
        /// 合规报警报警类型，0：不合规，1-合规， 2-不限（IVSS专用）
        /// Compliance alarm alarm type, 0: non-compliant, 1-compliant, 2-unlimited (for IVSS only)
        /// </summary>
        public uint nCompliantType;
        /// <summary>
        /// 合规条件使能, TRUE: 开启, FALSE-关闭,如果使能为TRUE上报合规相关属性
        /// Enable compliance conditions, TRUE: enable, FALSE-unable, if enable is TRUE, report compliance-related properties
        /// </summary>
        public bool bCompliantEnable;
        /// <summary>
        /// 合规报警属性过滤规则
        /// Compliance alarm attribute filtering rules
        /// </summary>
        public NET_COMPLIANT_FORMAT_INFO stuCompliantFormat;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_VEHICLEDETECT(机动车事件)对应的规则配置
    /// Rule type: EVENT_IVS_VEHICLEDETECT configuration
    /// </summary>
    public struct NET_VEHICLEDETECT_RULE_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 车辆抓拍阈值,是一个百分数，表示当车辆检测框高度占画面百分比大于这个阈值时，触发规则进行抓拍。
        /// shooting threshod
        /// </summary>
        public int nSnapThreshold;
        /// <summary>
        /// 检测区顶点数
        /// number of detection area vertices
        /// </summary>
        public uint nDetectRegionPoint;
        /// <summary>
        /// 检测区
        /// detection area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;
        /// <summary>
        /// 排除区域数
        /// number of excluded regions
        /// </summary>
        public int nExcludeRegionNum;
        /// <summary>
        /// 排除区域
        /// exclude region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_POLY_POINTS[] stuExcludeRegion;
        /// <summary>
        /// 合规报警规则
        /// Compliance alert rules
        /// </summary>
        public NET_COMPLIANT_INFO stuCompliant;
        /// <summary>
        /// 是否提取机动车特征向量
        /// Whether to extract vehicle feature vector
        /// </summary>
        public bool bFeatureExtractEnable;
        /// <summary>
        /// 是否使用尺寸过滤器
        /// whether to use size filter
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器，提高判断精度
        /// Rule-specific size filter to improve judgment accuracy
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO stuSizeFileter;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_NONMOTORDETECT(非机动车事件)对应的规则配置
    /// Rule type: EVENT_IVS_NONMOTORDETECT configuration
    /// </summary>
    public struct NET_NONMOTORDETECT_RULE_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 支持的非机动车属性个数
        /// The number of feature which non-motor was supported
        /// </summary>
        public int nFeatureNum;
        /// <summary>
        /// 支持的非机动车属性列表
        /// The list of feature which non-motor was supported
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_NONMOTOR_FEATURE[] emFeatureList;
        /// <summary>
        /// 检测区顶点数
        /// number of detection area vertices
        /// </summary>
        public uint nDetectRegionPoint;
        /// <summary>
        /// 检测区
        /// detection area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;
        /// <summary>
        /// 排除区域数
        /// number of excluded regions
        /// </summary>
        public int nExcludeRegionNum;
        /// <summary>
        /// 排除区域
        /// exclude region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_POLY_POINTS[] stuExcludeRegion;
        /// <summary>
        /// 合规报警规则
        /// Compliance alert rules
        /// </summary>
        public NET_COMPLIANT_INFO stuCompliant;
        /// <summary>
        /// 是否使用尺寸过滤器
        /// whether to use size filter
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器，提高判断精度
        /// Rule-specific size filter to improve judgment accuracy
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO stuSizeFileter;
        /// <summary>
        /// 是否提取非机动车特征向量
        /// Whether to extract non-motor vehicle feature vector
        /// </summary>
        public bool bFeatureExtractEnable;
        /// <summary>
        /// 是否提取目标特征向量
        /// Whether to extract face feature vector
        /// </summary>
        public bool bFaceFeatureExtractEnable;
        /// <summary>
        /// 是否开启人脸属性识别
        /// Whether to enable face attribute recognition
        /// </summary>
        public bool bFaceFeatureEnable;
        /// <summary>
        /// 是否支持人脸抓图
        /// Whether to support face snapshot
        /// </summary>
        public bool bFaceSnapEnable;
    }

    /// <summary>
    /// 大类业务方案，内容与EM_SCENE_TYPE一致
    /// </summary>
    public enum EM_SCENE_CLASS_TYPE
    {
        UNKNOW,			// 未知
        NORMAL,			// "Normal" 普通场景
        TRAFFIC,			// "Traffic" 交通场景
        TRAFFIC_PATROL,	// "TrafficPatrol" 交通巡视
        FACEDETECTION,	// "FaceDetection" 目标检测/目标识别
        ATM,				// "ATM"
        INDOOR,			// "Indoor"  室内行为分析，和普通规则相同，对室内场景的算法优化版
        FACERECOGNITION,	// "FaceRecognition" 目标识别
        PS,			// "PS
        NUMBERSTAT,		// "NumberStat" 客流量统计
        HEAT_MAP,		// "HeatMap" 热度图
        VIDEODIAGNOSIS,	// "VideoDiagnosis" 视频诊断
        VEHICLEANALYSE,	// "VehicleAnalyse" 车辆特征检测分析
        COURSERECORD,	// "CourseRecord" 自动录播
        VEHICLE,			// "Vehicle" 车载场景(车载行业用，不同于智能交通的Traffic)
        STANDUPDETECTION,// "StandUpDetection" 起立检测
        GATE,			// "Gate" 卡口
        SDFACEDETECTION,	// "SDFaceDetect"  多预置点目标检测，配置一条规则但可以在不同预置点下生效
        HEAT_MAP_PLAN,	// "HeatMapPlan" 球机热度图计划
        NUMBERSTAT_PLAN,	// "NumberStatPlan"	球机客流量统计计划
        ATMFD,			// "ATMFD"金融目标检测，包括正常人脸、异常人脸、相邻人脸、头盔人脸等针对ATM场景特殊优化
        HIGHWAY,			// "Highway" 高速交通事件检测
        CITY,			// "City" 城市交通事件检测
        LETRACK,			// "LeTrack" 民用简易跟踪
        SCR,				// "SCR" 打靶相机
        STEREO_VISION,   // "StereoVision" 立体视觉(双目)
        HUMANDETECT,		// "HumanDetect"人体检测
        FACEANALYSIS,	// "FaceAnalysis" 人脸分析
        XRAY_DETECTION,	// "XRayDetection" X光检测
        STEREO_NUMBER,	// "StereoNumber" 双目相机客流量统计
        CROWDDISTRIMAP,	// "CrowdDistriMap"人群分布图
        OBJECTDETECT,	// "ObjectDetect"目标检测
        FACEATTRIBUTE,	// "FaceAttribute" IVSS目标检测
        FACECOMPARE,		// "FaceCompare" IVSS目标识别
        STEREO_BEHAVIOR,	// "StereoBehavior" 立体行为分析(典型场景ATM舱)
        INTELLICITYMANAGER,	// "IntelliCityMgr" 智慧城管
        PROTECTIVECABIN,	// "ProtectiveCabin" 防护舱（ATM舱内）
        AIRPLANEDETECT,	// "AirplaneDetect" 飞机行为检测
        CROWDPOSTURE,	// "CrowdPosture" 人群态势（人群分布图服务）
        PHONECALLDETECT,	// "PhoneCallDetect"  打电话检测
        SMOKEDETECTION,	// "SmokeDetection"   烟雾检测
        BOATDETECTION,	// "BoatDetection"	  船只检测
        SMOKINGDETECT,	// "SmokingDetect"	  吸烟检测
        WATERMONITOR,	// "WaterMonitor"	  水利监测
        GENERATEGRAPHDETECTION,// "GenerateGraphDetection" 生成图规则 
        TRAFFIC_PARK,	// "TrafficPark"		  交通停车
        OPERATEMONITOR, 	// "OperateMonitor" 作业检测 
        INTELLI_RETAIL,	// IntelliRetail" 智慧零售大类 
        CLASSROOM_ANALYSE,// "ClassroomAnalyse" 教育智慧课堂
        /// <summary>
        /// "FeatureAbstract" 特征向量提取大类
        /// "FeatureAbstract"
        /// </summary>
        FEATURE_ABSTRACT,
        /// <summary>
        /// "FaceBodyDetect" 人像检测大类
        /// "FaceBodyDetect"
        /// </summary>
        FACEBODY_DETECT,
        /// <summary>
        /// "FaceBodyAnalyse"人像识别大类
        /// "FaceBodyAnalyse"
        /// </summary>
        FACEBODY_ANALYSE,
        /// <summary>
        /// "VehiclesDistri" 车辆密度
        /// "VehiclesDistri"
        /// </summary>
        VEHICLES_DISTRI,
        /// <summary>
        /// "IntelliBreed"智慧养殖检测
        /// "IntelliBreed"
        /// </summary>
        INTELLI_BREED,
        /// <summary>
        /// ""行为分析
        /// ""
        /// </summary>
        INTELLI_PS,
        /// <summary>
        /// "ElectricDetect" 电力检测
        /// "ElectricDetect"
        /// </summary>
        ELECTRIC_DETECT,
        /// <summary>
        /// "RadarDetect"雷达检测
        /// "RadarDetect"
        /// </summary>
        RADAR_DETECT,
        /// <summary>
        /// "ParkingSpace" 车位检测大类
        /// "ParkingSpace"
        /// </summary>
        PARKINGSPACE,
        /// <summary>
        /// "IntelliFinance"智慧金融
        /// "IntelliFinance"
        /// </summary>
        INTELLI_FINANCE,
        /// <summary>
        /// "CrowdAbnormal" 人群异常检测
        /// "CrowdAbnormal"
        /// </summary>
        CROWD_ABNORMAL,
        /// <summary>
        /// "AnatomyTempDetect" 超温检测
        /// "AnatomyTempDetect"
        /// </summary>
        ANATOMYTEMP_DETECT,
        /// <summary>
        /// "WeatherMonitor"天气监控
        /// "WeatherMonitor"
        /// </summary>
        WEATHER_MONITOR,
        /// <summary>
        /// "ElevatorAccessControl" 电梯门禁
        /// "ElevatorAccessControl"
        /// </summary>
        ELEVATOR_ACCESS_CONTROL,
        /// <summary>
        /// "BreakRuleBuilding"违章建筑
        /// "BreakRuleBuilding"
        /// </summary>
        BREAK_RULE_BUILDING,
        /// <summary>
        /// "PanoramaTraffic"全景交通
        /// "PanoramaTraffic"
        /// </summary>
        PANORAMA_TRAFFIC,
        /// <summary>
        /// "PortraitDetect"人像检测
        /// "PortraitDetect"
        /// </summary>
        PORTRAIT_DETECT,
        /// <summary>
        /// "ConveyorBlock" 传送带阻塞
        /// "ConveyorBlock"
        /// </summary>
        CONVEY_OR_BLOCK,
        /// <summary>
        /// "KitchenAnimal" 厨房有害动物检测
        /// "KitchenAnimal"
        /// </summary>
        KITCHEN_ANIMAL,
        /// <summary>
        /// "AllSeeingEye" 万物检测
        /// "AllSeeingEye"
        /// </summary>
        ALLSEEINGEYE,
        /// <summary>
        /// "Drive" 驾驶行为分析
        /// "Drive"
        /// </summary>
        DRIVE,
        /// <summary>
        /// "DriveAssistant" 高级驾驶辅助系统
        /// "DriveAssistant"
        /// </summary>
        DRIVEASSISTANT,
        /// <summary>
        /// "InCabinMonitor" 车内驾驶舱监测
        /// "InCabinMonitor"
        /// </summary>
        INCABINMONITOR,
        /// <summary>
        /// "BlindSpotDetection" 盲区检测
        /// "BlindSpotDetection"
        /// </summary>
        BLINDSPOTDETECTION,
        /// <summary>
        /// "ConveyerBelt" 传送带检测
        /// "ConveyerBelt"
        /// </summary>
        CONVERYER_BELT,
        /// <summary>
        /// "IntelliLogistics" 智慧物流
        /// "IntelliLogistics"
        /// </summary>
        INTELLI_LOGISTICS,
        /// <summary>
        /// "SmokeFire" 烟火检测
        /// "SmokeFire"
        /// </summary>
        SMOKE_FIRE,
        /// <summary>
        /// "ObjectMonitor" 物品监控
        /// "ObjectMonitor"
        /// </summary>
        OBJECT_MONITOR,
        /// <summary>
        /// "FireFacilities" 消防设施检测
        /// "FireFacilities"
        /// </summary>
        FIRE_FACILITIES,
        /// <summary>
        /// "IntelliFireControl" 智慧消防
        /// "IntelliFireControl"
        /// </summary>
        FIRE_CONTROL,
        /// <summary>
        /// "IntelliParking" 智能停车
        /// "IntelliParking"
        /// </summary>
        INTELLI_PARKING,
        /// <summary>
        /// "FinanceRegulation" 金融常规
        /// "FinanceRegulation"
        /// </summary>
        FINANCE_REGULATION,
        /// <summary>
        /// "Energy" 智慧能源
        /// "Energy" Smart energy
        /// </summary>
        ENERGY,
        /// <summary>
        /// "FireControl" 智慧消防
        /// "FireControl"
        /// </summary>
        FIRE_CONTROL_EX,
        /// <summary>
        /// "AnimalDetection" 动物检测
        /// "AnimalDetection"
        /// </summary>
        ANIMAL_DETECTION,
        /// <summary>
        /// "FireControlMonitor" 火警监控
        /// "FireControlMonitor"
        /// </summary>
        FIRE_CONTROL_MONITOR,
    }

    /// <summary>
    /// 事件类型
    /// event type
    /// </summary>
    public enum EM_ANALYSE_EVENT_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// 所有事件
        /// all
        /// </summary>
        ALL,
        /// <summary>
        /// 目标检测事件, 对应结构体 DEV_EVENT_FACEDETECT_INFO
        /// targer detection event, corresponding to DEV_EVENT_FACEDETECT_INFO
        /// </summary>
        FACE_DETECTION,
        /// <summary>
        /// 目标识别事件, 对应结构体 NET_DEV_EVENT_FACERECOGNITION_INFO
        /// Target recognition event, corresponding to NET_DEV_EVENT_FACERECOGNITION_INFO
        /// </summary>
        FACE_RECOGNITION,
        /// <summary>
        /// 交通路口事件, 对应结构体 DEV_EVENT_TRAFFICJUNCTION_INFO
        /// traffic junction event, corresponding to DEV_EVENT_TRAFFICJUNCTION_INFO
        /// </summary>
        TRAFFICJUNCTION,
        /// <summary>
        /// 人体特征事件, 对应结构体 DEV_EVENT_HUMANTRAIT_INFO
        /// humantrait event, corresponding to DEV_EVENT_HUMANTRAIT_INFO
        /// </summary>
        HUMANTRAIT,
        /// <summary>
        /// X光机检测事件, 对应结构体 DEV_EVENT_XRAY_DETECTION_INFO
        /// X ray detection event, corresponding to DEV_EVENT_XRAY_DETECTION_INFO
        /// </summary>
        XRAY_DETECTION,
        /// <summary>
        /// 工装(安全帽/工作服等)检测事件, 对应结构体 NET_DEV_EVENT_WORKCLOTHES_DETECT_INFO
        /// work clothes(helmet/clothes) detection, corresponding to NET_DEV_EVENT_WORKCLOTHES_DETECT_INFO
        /// </summary>
        WORKCLOTHESDETECT,
        /// <summary>
        /// 作业检测事件, 对应结构体 NET_A_DEV_EVENT_WORKSTATDETECTION_INFO
        /// work state detection, corresponding to NET_A_DEV_EVENT_WORKSTATDETECTION_INFO
        /// </summary>
        WORKSTATDETECTION,
        /// <summary>
        /// 拌线入侵事件, 对应结构体 DEV_EVENT_CROSSLINE_INFO
        /// cross line event, corresponding to DEV_EVENT_CROSSLINE_INFO
        /// </summary>
        CORSSLINEDETECTION,
        /// <summary>
        /// 区域入侵事件, 对应结构体 DEV_EVENT_CROSSREGION_INFO
        /// cross region event, corresponding to DEV_EVENT_CROSSREGION_INFO
        /// </summary>
        IVS_CROSSREGIONDETECTION,
        /// <summary>
        /// 特征提取事件 DEV_EVENT_FEATURE_ABSTRACT_INFO
        /// Feature abstract, corresponding to DEV_EVENT_FEATURE_ABSTRACT_INFO
        /// </summary>
        FEATURE_ABSTRACT,
        /// <summary>
        /// 电力检测手套检测事件, 对应结构体 DEV_EVENT_ELECTRIC_GLOVE_DETECT_INFO
        /// Electric glove detection, corresponding to DEV_EVENT_ELECTRIC_GLOVE_DETECT_INFO
        /// </summary>
        ELECTRIC_GLOVE_DETECT,
        /// <summary>
        /// 电力检测梯子检测事件, 对应结构体 DEV_EVENT_ELECTRIC_LADDER_DETECT_INFO
        /// Electric ladder detection, corresponding to DEV_EVENT_ELECTRIC_LADDER_DETECT_INFO
        /// </summary>
        ELECTRIC_LADDER_DETECT,
        /// <summary>
        /// 电力检测布幔检测事件, 对应结构体 DEV_EVENT_ELECTRIC_CURTAIN_DETECT_INFO
        /// Electric curtain detection, corresponding to DEV_EVENT_ELECTRIC_CURTAIN_DETECT_INFO
        /// </summary>
        ELECTRIC_CURTAIN_DETECT,
        /// <summary>
        /// 电力检测围栏检测事件, 对应结构体 DEV_EVENT_ELECTRIC_FENCE_DETECT_INFO
        /// Electric fence detection, corresponding to DEV_EVENT_ELECTRIC_FENCE_DETECT_INFO
        /// </summary>
        ELECTRIC_FENCE_DETECT,
        /// <summary>
        /// 电力检测标识牌检测事件, 对应结构体 DEV_EVENT_ELECTRIC_SIGNBOARD_DETECT_INFO
        /// Electric signboard detection, corresponding to DEV_EVENT_ELECTRIC_SIGNBOARD_DETECT_INFO
        /// </summary>
        ELECTRIC_SIGNBOARD_DETECT,
        /// <summary>
        /// 电力检测安全带检测事件, 对应结构体 NET_A_DEV_EVENT_ELECTRIC_BELT_DETECT_INFO
        /// Electric belt detection, corresponding to NET_A_DEV_EVENT_ELECTRIC_BELT_DETECT_INFO
        /// </summary>
        ELECTRIC_BELT_DETECT,
        /// <summary>
        /// 拉横幅检测事件, 对应的结构体 DEV_EVENT_JZ_DETECTION_INFO
        /// JZ detection corresponding to DEV_EVENT_JZ_DETECTION_INFO
        /// </summary>
        BANNER_DETECTION,
        /// <summary>
        /// 智慧厨房穿着检测事件, 对应结构体 DEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO
        /// Smart Kitchen Clothes Detection, corresponding to DEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO
        /// </summary>
        SMART_KITCHEN_CLOTHES_DETECTION,
        /// <summary>
        /// 水位监测事件, 对应结构体DEV_EVENT_WATER_STAGE_MONITOR_INFO
        /// Water stage monitor, corresponding to DEV_EVENT_WATER_STAGE_MONITOR_INFO
        /// </summary>
        WATER_STAGE_MONITOR,
        /// <summary>
        /// 漂浮物检测事件, 对应结构体 DEV_EVENT_FLOATINGOBJECT_DETECTION_INFO
        /// Floating object detection, corresponding to DEV_EVENT_FLOATINGOBJECT_DETECTION_INFO
        /// </summary>
        FLOATINGOBJECT_DETECTION,
        /// <summary>
        /// 人群聚集 对应结构体 DEV_EVENT_RIOTERL_INFO)
        /// Rioter detection, corresponding to DEV_EVENT_RIOTERL_INFO
        /// </summary>
        RIOTERDETECTION,
        /// <summary>
        /// 物品遗留事件 对应结构体 DEV_EVENT_LEFT_INFO
        /// Left detection, corresponding to DEV_EVENT_LEFT_INFO
        /// </summary>
        LEFTDETECTION,
        /// <summary>
        /// 非法停车事件 对应结构体 DEV_EVENT_PARKINGDETECTION_INFO
        /// Parking detection, corresponding to DEV_EVENT_PARKINGDETECTION_INFO
        /// </summary>
        PARKINGDETECTION,
        /// <summary>
        /// 徘徊事件对应结构体 DEV_EVENT_WANDER_INFO
        /// Wander detection, corresponding to DEV_EVENT_WANDER_INFO
        /// </summary>
        WANDERDETECTION,
        /// <summary>
        /// 视频异常对应结构体 DEV_EVENT_VIDEOABNORMALDETECTION_INFO
        /// Video abnormal detection, corresponding to DEV_EVENT_VIDEOABNORMALDETECTION_INFO
        /// </summary>
        VIDEOABNORMALDETECTION,
        /// <summary>
        /// 运动检测事件, 对应结构体 NET_A_DEV_EVENT_MOVE_INFO
        /// Move detection, corresponding to NET_A_DEV_EVENT_MOVE_INFO
        /// </summary>
        MOVEDETECTION,
        /// <summary>
        /// 视频正常事件,在视频诊断检测周期结束时,将未报错的诊断项上报正常事件,对应结构体 NET_A_DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO
        /// When the video diagnosis detection cycle ends, the diagnostic items that have not reported errors are reported to the normal events,corresponding to NET_A_DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO
        /// </summary>
        VIDEO_NORMAL_DETECTION,
        /// <summary>
        /// 传送带大块异物检测事件, 对应结构体 NET_DEV_EVENT_CONVEYER_BELT_BULK_INFO
        /// Conveyer belt bulk detection, corresponding to NET_DEV_EVENT_CONVEYER_BELT_BULK_INFO
        /// </summary>
        CONVEYER_BELT_BULK,
        /// <summary>
        /// 传送带空载检测事件, 对应结构体 NET_DEV_EVENT_CONVEYER_BELT_NONLOAD_INFO
        /// Conveyer belt nonload detection, corresponding to NET_DEV_EVENT_CONVEYER_BELT_NONLOAD_INFO
        /// </summary>
        CONVEYER_BELT_NONLOAD,
        /// <summary>
        /// 传送带跑偏检测事件, 对应结构体 NET_DEV_EVENT_CONVEYER_BELT_RUNOFF_INFO
        /// Conveyer belt runoff detection, corresponding to NET_DEV_EVENT_CONVEYER_BELT_RUNOFF_INFO
        /// </summary>
        CONVEYER_BELT_RUNOFF,
        /// <summary>
        /// 传送带阻塞检测事件, 对应结构体 NET_DEV_EVENT_CONVEYORBLOCK_DETECTION_INFO
        /// Conveyer belt block detection, corresponding to NET_DEV_EVENT_CONVEYORBLOCK_DETECTION_INFO
        /// </summary>
        CONVEYER_BELT_BLOCK,
        /// <summary>
        /// 数量统计事件, 对应 结构体 DEV_EVENT_NUMBERSTAT_INFO
        /// Number stat event, corresponding to DEV_EVENT_NUMBERSTAT_INFO
        /// </summary>
        NUMBER_STAT,
        /// <summary>
        /// 斗殴事件, 对应结构体 DEV_EVENT_FIGHT_INFO
        /// Fight detection, corresponding to DEV_EVENT_FIGHT_INFO
        /// </summary>
        FIGHTDETECTION,
        /// <summary>
        /// 烟雾报警检测事件, 对应结构体 DEV_EVENT_SMOKE_INFO
        /// Smoke detection, corresponding to DEV_EVENT_SMOKE_INFO
        /// </summary>
        SMOKEDETECTION,
        /// <summary>
        /// 火警检测事件, 对应结构体 DEV_EVENT_FIRE_INFO
        /// Fire detection, corresponding to DEV_EVENT_FIRE_INFO
        /// </summary>
        FIREDETECTION,
        /// <summary>
        /// 打电话检测事件, 对应结构体 NET_DEV_EVENT_PHONECALL_DETECT_INFO
        /// Phone call detection, corresponding to NET_DEV_EVENT_PHONECALL_DETECT_INFO
        /// </summary>
        PHONECALL_DETECT,
        /// <summary>
        /// 吸烟检测事件, 对应结构体 NET_DEV_EVENT_SMOKING_DETECT_INFO
        /// Smoking detection, corresponding to NET_DEV_EVENT_SMOKING_DETECT_INFO
        /// </summary>
        SMOKING_DETECT,
        /// <summary>
        /// 跌倒检测事件, 对应结构体 NET_DEV_EVENT_TUMBLE_DETECTION_INFO
        /// Tumble detection, corresponding to NET_DEV_EVENT_TUMBLE_DETECTION_INFO
        /// </summary>
        TUMBLE_DETECTION,
        /// <summary>
        /// 水位尺检测事件, 对应结构体 NET_A_DEV_EVENT_WATER_LEVEL_DETECTION_INFO
        /// Water level detection, corresponding to NET_A_DEV_EVENT_WATER_LEVEL_DETECTION_INFO
        /// </summary>
        WATER_LEVEL_DETECTION,
        /// <summary>
        /// 攀高检测事件, 对应结构体 DEV_EVENT_IVS_CLIMB_INFO
        /// Climb detection, corresponding to DEV_EVENT_IVS_CLIMB_INFO
        /// </summary>
        CLIMBDETECTION,
        /// <summary>
        /// 立体视觉区域内人数统计事件, 对应结构体 NET_DEV_EVENT_MANNUM_DETECTION_INFO
        /// Event of regional population statistics, corresponding to NET_DEV_EVENT_MANNUM_DETECTION_INFO
        /// </summary>
        MAN_NUM_DETECTION,
        /// <summary>
        /// 仪表检测事件, 对应结构体 NET_A_DEV_EVENT_DIALRECOGNITION_INFO
        /// Dial recognition, corresponding to NET_A_DEV_EVENT_DIALRECOGNITION_INFO
        /// </summary>
        DIALRECOGNITION,
        /// <summary>
        /// 仪表类缺陷检测事件, 对应结构体 NET_A_DEV_EVENT_ELECTRICFAULTDETECT_INFO
        /// Electric fault detection, corresponding to NET_A_DEV_EVENT_ELECTRICFAULTDETECT_INFO
        /// </summary>
        ELECTRICFAULT_DETECT,
        /// <summary>
        /// 交通路障检测事件,对应结构体 NET_A_DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO
        /// Traffic road block detection,corresponding to NET_A_DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO
        /// </summary>
        TRAFFIC_ROAD_BLOCK,
        /// <summary>
        /// 交通道路施工检测事件,对应结构体 NET_A_DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO
        /// Traffic road construction detection,corresponding to NET_A_DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO
        /// </summary>
        TRAFFIC_ROAD_CONSTRUCTION,
        /// <summary>
        /// 交通流量统计事件,对应结构体 DEV_EVENT_TRAFFIC_FLOW_STATE
        /// Traffic flowstate detection,corresponding to DEV_EVENT_TRAFFIC_FLOW_STATE
        /// </summary>
        TRAFFIC_FLOWSTATE,
        /// <summary>
        /// 超速事件,对应结构体 DEV_EVENT_TRAFFIC_OVERSPEED_INFO
        /// Traffic overspeed detection,corresponding to DEV_EVENT_TRAFFIC_OVERSPEED_INFO
        /// </summary>
        TRAFFIC_OVERSPEED,
        /// <summary>
        /// 欠速事件,对应结构体 DEV_EVENT_TRAFFIC_UNDERSPEED_INFO
        /// Traffic underspeed detection,corresponding to DEV_EVENT_TRAFFIC_UNDERSPEED_INFO
        /// </summary>
        TRAFFIC_UNDERSPEED,
        /// <summary>
        /// 压黄线事件,对应结构体 DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO
        /// Traffic over yeallow line detection,corresponding to DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO
        /// </summary>
        TRAFFIC_OVERYELLOWLINE,
        /// <summary>
        /// 违章变道事件, 对应结构体 DEV_EVENT_TRAFFIC_CROSSLANE_INFO
        /// Traffic crosslane detection, corresponding to DEV_EVENT_TRAFFIC_CROSSLANE_INFO
        /// </summary>
        TRAFFIC_CROSSLANE,
        /// <summary>
        /// 交通拥堵事件, 对应结构体 NET_A_DEV_EVENT_TRAFFICJAM_INFO
        /// TrafficJam detection, corresponding to NET_A_DEV_EVENT_TRAFFICJAM_INFO
        /// </summary>
        TRAFFICJAM,
        /// <summary>
        /// 交通行人事件, 对应结构体 NET_A_DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO
        /// Traffic pedestrain detection, corresponding to NET_A_DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO
        /// </summary>
        TRAFFIC_PEDESTRAIN,
        /// <summary>
        /// 抛洒物事件, 对应结构体 DEV_EVENT_TRAFFIC_THROW_INFO
        /// Traffic throw detection, corresponding to DEV_EVENT_TRAFFIC_THROW_INFO
        /// </summary>
        TRAFFIC_THROW,
        /// <summary>
        /// 交通逆行事件, 对应结构体 DEV_EVENT_TRAFFIC_RETROGRADE_INFO
        /// Traffic retrograde detection, corresponding to DEV_EVENT_TRAFFIC_RETROGRADE_INFO
        /// </summary>
        TRAFFIC_RETROGRADE,
        /// <summary>
        /// 交通事故事件, 对应结构体 DEV_EVENT_TRAFFICACCIDENT_INFO
        /// Traffic accident detection, corresponding to DEV_EVENT_TRAFFICACCIDENT_INFO
        /// </summary>
        TRAFFICACCIDENT,
        /// <summary>
        /// 倒车事件, 对应结构体 DEV_EVENT_IVS_TRAFFIC_BACKING_INFO
        /// Traffic backing detection, corresponding to DEV_EVENT_IVS_TRAFFIC_BACKING_INFO
        /// </summary>
        TRAFFIC_BACKING,
        /// <summary>
        /// 起雾检测事件, 对应结构体 DEV_EVENT_FOG_DETECTION
        /// Fog detection, corresponding to DEV_EVENT_FOG_DETECTION
        /// </summary>
        FOG_DETECTION,
        /// <summary>
        /// 区域入侵事件, 对应结构体 DEV_EVENT_CROSSREGION_INFO
        /// Cross region detection, corresponding to DEV_EVENT_CROSSREGION_INFO
        /// </summary>
        CROSSREGIONDETECTION,
        /// <summary>
        /// 交通违章停车事件，对应结构体 DEV_EVENT_TRAFFIC_PARKING_INFO
        /// Traffic Parking detection,corresponding to DEV_EVENT_TRAFFIC_PARKING_INFO
        /// </summary>
        TRAFFIC_PARKING,
        /// <summary>
        /// 智慧金融现金交易检测事件,对应结构体 DEV_EVENT_FINANCE_CASH_TRANSACTION_INFO
        /// Finance CASH detection,corresponding to DEV_EVENT_FINANCE_CASH_TRANSACTION_INFO
        /// </summary>
        FINANCE_CASH_TRANSACTION,
        /// <summary>
        /// 离岗检测事件,对应结构体 DEV_EVENT_IVS_LEAVE_INFO
        /// LEAVE detection ,corresponding to DEV_EVENT_IVS_LEAVE_INFO
        /// </summary>
        LEAVEDETECTION,
        /// <summary>
        /// 钢包编号识别事件,对应结构体 DEV_EVENT_LADLE_NO_DETECTION_INFO
        /// Ladle number identification event,corresponding to DEV_EVENT_LADLE_NO_DETECTION_INFO
        /// </summary>
        LADLE_NO_DETECTION,
        /// <summary>
        /// 拌线入侵事件(扩展), 对应结构体 DEV_EVENT_CROSSLINE_INFO_EX
        /// cross line(expansion) event, corresponding to DEV_EVENT_CROSSLINE_INFO_EX
        /// </summary>
        CROSSLINEDETECTION_EX = 2000,
    }

    /// <summary>
    /// 坐标体系
    /// </summary>
    public struct NET_POINTCOORDINATE
    {
        public int nX;								// 第一个元素表示景物点的x坐标(0~8191) 
        public int nY;								// 第二个元素表示景物点的y坐标(0~8191)        
    }

    /// <summary>
    /// CLIENT_RemoveAnalyseTask 接口输入参数
    /// </summary>
    public struct NET_IN_REMOVE_ANALYSE_TASK
    {
        public uint dwSize;                                 // 结构体大小
        public uint nTaskID;                                // 任务ID       
    }

    /// <summary>
    /// CLIENT_RemoveAnalyseTask 接口输出参数
    /// </summary>
    public struct NET_OUT_REMOVE_ANALYSE_TASK
    {
        public uint dwSize;                                 // 结构体大小   
    }

    /// <summary>
    /// CLIENT_AttachAnalyseTaskResult 接口输入参数
    /// </summary>
    public struct NET_IN_ATTACH_ANALYSE_RESULT
    {
        /// <summary>
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 智能分析任务ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public uint[] nTaskIDs;
        /// <summary>
        /// 智能分析任务个数, 0表示订阅全部任务
        /// </summary>
        public uint nTaskIdNum;
        /// <summary>
        /// 过滤条件
        /// </summary>
        public NET_ANALYSE_RESULT_FILTER stuFilter;
        /// <summary>
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// 智能分析任务结果订阅函数
        /// </summary>
        public fAnalyseTaskResultCallBack cbAnalyseTaskResult;
        /// <summary>
        /// 用户数据
        /// </summary>
        public IntPtr dwUser;
    }

    // 返回的图片类型
    public enum EM_FILTER_IMAGE_TYPE
    {
        UNKNOWN,            // 未知
        OBJECT,             // 上报目标抠图
        SCENE,              // 上报场景大图
    }

    /// <summary>
    /// 智能分析结果订阅的过滤条件
    /// filter condition of attach analyse result
    /// </summary>
    public struct NET_ANALYSE_RESULT_FILTER
    {
        /// <summary>
        /// / 过滤事件, 详见EM_EVENT_IVS_TYPE
        /// event types, see "EM_EVENT_IVS_TYPE"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public uint[] dwAlarmTypes;
        /// <summary>
        /// / 过滤事件数量
        /// number of events which are used as filter condition
        /// </summary>
        public uint nEventNum;
        /// <summary>
        /// / 是否包含图片, 0-包含, 1-不包含
        /// need image, 0-need, 1-no
        /// </summary>
        public int nImageDataFlag;
        /// <summary>
        /// / 对齐
        /// alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;
        /// <summary>
        /// / pImageType有效个数
        /// pImageType valid num
        /// </summary>
        public int nImageTypeNum;
        /// <summary>
        /// / 过滤上报的图片类型
        /// image data type
        /// </summary>
        public IntPtr pImageType;
        /// <summary>
        /// / 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1004)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 文件分析状态
    /// </summary>
    public enum EM_FILE_ANALYSE_STATE
    {
        UNKNOWN = -1,   // 未知
        EXECUTING,          // 分析中
        FINISH,             // 分析完成
        FAILED,             // 分析失败
    }

    /// <summary>
    /// 智能分析任务结果回调信息
    /// </summary>
    public struct NET_CB_ANALYSE_TASK_RESULT_INFO
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_ANALYSE_TASK_RESULT[] stuTaskResultInfos;   // 智能分析任务结果信息
        public uint nTaskResultNum;                             // 任务个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1028)]
        public byte[] byReserved;                           // 保留字节
    }

    /// <summary>
    /// 任务自定义数据
    /// Custorm data for task
    /// </summary>
    public struct NET_TASK_CUSTOM_DATA
    {
        /// <summary>
        /// 客户端IP
        /// Client IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szClientIP;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 智能分析任务结果信息
    /// result of analyse task
    /// </summary>
    public struct NET_ANALYSE_TASK_RESULT
    {
        /// <summary>
        /// 任务ID
        /// task ID
        /// </summary>
        public uint nTaskID;
        /// <summary>
        /// 文件ID, 分析文件时有效
        /// file ID, used for file analyse
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFileID;
        /// <summary>
        /// 文件分析状态
        /// file analyse state
        /// </summary>
        public EM_FILE_ANALYSE_STATE emFileAnalyseState;
        /// <summary>
        /// 文件分析额外信息, 一般都是分析失败的原因
        /// additional info about file analyse, usually it is failure info.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFileAnalyseMsg;
        /// <summary>
        /// 事件信息
        /// info of events
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_SECONDARY_ANALYSE_EVENT_INFO[] stuEventInfos;
        /// <summary>
        /// 实际的事件个数
        /// number of events
        /// </summary>
        public int nEventCount;
        /// <summary>
        /// 自定义数据
        /// custorm data for task
        /// </summary>
        public NET_TASK_CUSTOM_DATA stuCustomData;
        /// <summary>
        /// 频源数据，标示视频源信息，对应addPollingTask中UserData字段。
        /// user data.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUserData;
        /// <summary>
        /// 任务数据
        /// task user data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szTaskUserData;
        /// <summary>
        /// 扩展事件信息
        /// Extended event information
        /// </summary>
        public IntPtr pstuEventInfosEx;
        /// <summary>
        /// 返回扩展事件信息个数
        /// Number of extended event information returned
        /// </summary>
        public int nRetEventInfoExNum;
        /// <summary>
        /// 用户定义数据，对应analyseTaskManager.analysePushPictureFileByRule中UserDefineData字段
        /// User-defined data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szUserDefineData;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 184)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 二次录像分析事件信息
    /// the event info of secondary record analysis
    /// </summary>
    public struct NET_SECONDARY_ANALYSE_EVENT_INFO
    {
        /// <summary>
        /// 事件类型
        /// event type
        /// </summary>
        public EM_ANALYSE_EVENT_TYPE emEventType;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;
        /// <summary>
        /// 事件信息, 根据emEventType确定不同的结构体
        /// event info, determine the specific struct according to emEventType
        /// </summary>
        public IntPtr pstEventInfo;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    public enum EM_INSIDE_OBJECT_TYPE
    {
        UNKNOWN,										// 算法未识别物品
        KNIFE,											// 刀具
        BOTTLELIQUID,									// 瓶装液体
        GUN,											// 枪支
        UMBRELLA,										// 雨伞
        PHONE,											// 手机
        NOTEBOOK,										// 笔记本
        POWERBANK,										// 充电宝
        SHOES,											// 鞋子
        ROD,											// 杠子
        METAL,											// 金属
        EXPLOSIVE,										// 爆炸物        
    }

    /// <summary>
    /// 物品信息
    /// </summary>
    public struct NET_INSIDE_OBJECT
    {
        public EM_DANGER_GRADE_TYPE emDangerGrade;			// 物品危险等级
        public EM_INSIDE_OBJECT_TYPE emObjType;				// 物品类型
        public uint nSimilarity;            // 相似度
        public NET_RECT stuBoundingBox;         // 包围盒
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 108)]
        public byte[] byReserved;                                 // 保留字节        
    }

    /// <summary>
    /// 危险等级
    /// </summary>
    public enum EM_DANGER_GRADE_TYPE
    {
        UNKNOWN = -1,	// 未知
        NORMAL,			// 普通级别
        WARN,			// 警示级别
        DANGER,			// 危险级别        
    }

    /// <summary>
    /// X光机图片类型
    /// </summary>
    public enum EM_XRAY_IMAGE_TYPE
    {
        UNKNOWN = -1,								// 未知
        COLOR,										// 彩图
        COLOR_OVERLAY,								// 彩色叠加图
    }

    /// <summary>
    /// X光机视角类型
    /// </summary>
    public enum EM_XRAY_VIEW_TYPE
    {
        UNKNOWN = -1,							    // 未知
        MASTER,										// 主视角
        SLAVE,										// 从视角
    }

    /// <summary>
    /// 图片列表
    /// </summary>
    public struct NET_XRAY_IMAGE_INFO
    {
        public EM_XRAY_VIEW_TYPE emViewType;				// 视图类型
        public EM_XRAY_IMAGE_TYPE emImageType;			// 图片类型
        public uint nOffset;				// 在二进制数据块中的偏移
        public uint nLength;				// 图片大小,单位:字节	
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;                               // 保留字节   
    }

    public struct NET_PACKAGE_INFO
    {
        public EM_DANGER_GRADE_TYPE emDangerGrade;			// 包裹危险等级, 一个包裹内有多个危险等级显示最高危等级
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;                               // 保留字节 		
    }

    /// <summary>
    /// 包裹产生方式
    /// Package mode
    /// </summary>
    public enum EM_XRAY_PACKAGE_MODE
    {
        /// <summary>
        /// 未知方式
        /// unknown
        /// </summary>
        EM_XRAY_PACKAGE_MODE_UNKNOWN = -1,
        /// <summary>
        /// 本地判图结果
        /// Local judgment result
        /// </summary>
        EM_XRAY_PACKAGE_MODE_LOCAL,
        /// <summary>
        /// 集中判图模式中的本地预判结果
        /// Local prediction results in the centralized judgment mode
        /// </summary>
        EM_XRAY_PACKAGE_MODE_CENTRAL,
    }

    /// <summary>
    /// X光机关联图片类型
    /// XRAY Related image type
    /// </summary>
    public enum EM_XRAY_RELATED_IMAGE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_XRAY_RELATED_IMAGE_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 表示人脸大图
        /// Large picture of face
        /// </summary>
        EM_XRAY_RELATED_IMAGE_TYPE_LARGE_FACE,
        /// <summary>
        /// 表示人脸小图
        /// Small picture of face
        /// </summary>
        EM_XRAY_RELATED_IMAGE_TYPE_SMALL_FACE,
        /// <summary>
        /// 表示包裹可见光图
        /// Visible light diagram showing package
        /// </summary>
        EM_XRAY_RELATED_IMAGE_TYPE_PACKAGE_VISIBLE_LIGHT,
    }

    /// <summary>
    /// 关联图片
    /// Related image
    /// </summary>
    public struct NET_XRAY_RELATED_IMAGE_INFO
    {
        /// <summary>
        /// 图片类型
        /// Image type
        /// </summary>
        public EM_XRAY_RELATED_IMAGE_TYPE emImageType;
        /// <summary>
        /// 在二进制数据块中的偏移
        /// Offset in binary data block
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 图片大小,单位:字节
        /// Picture size,Unit: byte
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string byReserved;
    }

    /// <summary>
    /// 条码可见光图
    /// Bar Code Image
    /// </summary>
    public struct NET_BAR_CODE_IMAGE
    {
        /// <summary>
        /// 在二进制数据块中的偏移
        /// offset in binary data block
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 图片大小,单位：字节
        /// Image size, unit: bytes
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 248)]
        public string szResvered;
    }

    /// <summary>
    /// 与包裹关联的单号的内容
    /// Bar Code Info
    /// </summary>
    public struct NET_BAR_CODE_INFO
    {
        /// <summary>
        /// 条码个数
        /// Code Count
        /// </summary>
        public int nCodeCount;
        /// <summary>
        /// 条码信息
        /// Code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32 * 128)]
        public string szCode;
        /// <summary>
        /// 条码可见光图
        /// Bar Code Image
        /// </summary>
        public NET_BAR_CODE_IMAGE stuImage;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型EVENI_IVS_XRAY_DETECTION (X光检测事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_XRAY_DETECTION_INFO
    {
        public int nChannelID;                                 // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                                     // 事件名称
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] Reserved;                                   // 保留字节对齐    
        public double PTS;                                        // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                        // 事件发生的时间
        public int nEventID;                                   // 事件ID 
        public EM_CLASS_TYPE emClassType;                 				// 所属大类
        public NET_PACKAGE_INFO stuPacketInfo;								// 包裹信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] Reserved1;                                  // 保留字节对齐 
        public uint nObjectNum;									// 主视角包裹内物品个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_INSIDE_OBJECT[] stuInsideObj;			                    // 主视角包裹内物品信息
        public uint nSlaveViewObjectNum;						// 从视角包裹内物品个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_INSIDE_OBJECT[] stuSlaveViewInsideObj;                      // 从视角包裹内物品信息
        public uint nImageInfo;									// 图片数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_XRAY_IMAGE_INFO[] stuImageInfo;                          // 图片信息

        public uint nViewCustomInfoNum;                         // 客户自定义信息个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_XRAY_CUSTOM_INFO[] stuViewCustomInfo;                   // 客户自定义信息
        /// <summary>
        /// 包裹标识, 用来唯一标识一个包裹
        /// Package identification, used to uniquely identify a package
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPackageTag;
        /// <summary>
        /// 包裹产生方式
        /// Package generation method
        /// </summary>
        public EM_XRAY_PACKAGE_MODE emPackageMode;
        /// <summary>
        /// 关联图片数量
        /// Related Image number
        /// </summary>
        public int nRelatedImageNum;
        /// <summary>
        /// 关联图片
        /// Related Image
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_XRAY_RELATED_IMAGE_INFO[] stuRelatedImageInfo;
        /// <summary>
        /// 与包裹关联的单号的个数
        /// Bar Code Count
        /// </summary>
        public int nBarCodeCount;
        /// <summary>
        /// 与包裹关联的单号的内容
        /// Bar Code Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_BAR_CODE_INFO[] stuBarCodeInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节,留待扩展
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 372)]
        public byte[] byReserved;
    }

    //检测方向
    public enum EM_DETECT_DIRECTION_TYPE
    {
        UNKNOWN = 0,												// 未知
        LEFT_TO_RIGHT,												// 从左向右
        RIGHT_TO_LEFT,												// 从右向左
    }

    // XRAY检测方案
    public enum EM_XRAY_SCHEME_TYPE
    {
        UNKNOWN,		// 未知
        TONGFANG_100,	// 同方100
        TONGFANG_200,	// 同方200
        TONGFANG_300,	// 同方300
        TONGFANG_400,	// 同方400
        ANTIANXIA_100,	// 安天下100
        ANTIANXIA_200,	// 安天下200
        DAHUA_100,		// @hua100
        DAHUA_200,		// @hua200
        DAHUA_300,		// @hua300
        DAHUA_400,		// @hua400
        DAHUA_301,		// @hua301
        SHANGCHEN_HIGH,	// 上琛高检出
        SHANGCHEN_LOW,	// 上琛低误检
    }

    /// <summary>
    /// XRAY物体上报规则
    /// </summary>
    public struct NET_XRAY_OBJECT_UPLOAD_RULE
    {
        public bool bUploadEnable;				// 上报使能
        public uint nSimilarity;				// 物体上报相似度, [1,100]
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;                 // 保留字节  
    }

    /// <summary>
    ///  XRAY物体检测规则
    /// </summary>
    public struct NET_XRAY_OBJECT_DETECT_RULE
    {
        public EM_INSIDE_OBJECT_TYPE emObjectType;				// 物体名称
        public bool bDetectEnable;				// 检测使能
        public EM_DANGER_GRADE_TYPE emDangerGrade;				// 安全等级
        public NET_XRAY_OBJECT_UPLOAD_RULE stuUploadRuleInfo;			// 物体上报规则信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;                 // 保留字节  
    }

    /// <summary>
    /// EVENT_IVS_XRAY_DETECT_BYOBJECT(X光按物体检测)对应的规则配置
    /// </summary>
    public struct NET_XRAY_DETECT_BYPBJECT_RULE_INFO
    {
        public uint dwSize;                             // 结构体大小
        public int nDetectRegionPoint;					// 检测区顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;				    // 检测区
        public uint nSensitivity;						// 灵敏度,[1,10]
        public EM_DETECT_DIRECTION_TYPE emDirectionType;					// 检测方向
        public EM_XRAY_SCHEME_TYPE emSchemeType;						// 检查方案
        public uint nObjectRuleNum;						// XRAY物体检测规则数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_XRAY_OBJECT_DETECT_RULE[] stuObjectRuleInfo;                 // XRAY物体检测规则信息
        public EM_XRAY_VIEW_TYPE emViewType;                         // 视角类型
    }

    // CLIENT_FindAnalyseTask 接口输入参数
    public struct NET_IN_FIND_ANALYSE_TASK
    {
        public uint dwSize;                                 // 结构体大小
    }

    // CLIENT_FindAnalyseTask 接口输出参数
    public struct NET_OUT_FIND_ANALYSE_TASK
    {
        public uint dwSize;                                 // 结构体大小
        public uint nTaskNum;                               // 智能分析任务个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_ANALYSE_TASKS_INFO[] stuTaskInfos;     // 智能分析任务信息
    }

    #endregion

    /// <summary>
    ///  CLIENT_GetConnetionStatus in parameter
    ///  CLIENT_GetConnetionStatus 接口输入参数
    /// </summary>
    public struct NET_IN_GETCONNECTION_STATUS
    {
        public uint dwSize;                                 // 结构体大小
    }

    /// <summary>
    ///  CLIENT_GetConnetionStatus out parameter
    ///  CLIENT_GetConnetionStatus 接口输出参数
    /// </summary>
    public struct NET_OUT_GETCONNECTION_STATUS
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel number
        /// 通道数量
        /// </summary>
        public uint nChannelNum;
        /// <summary>
        /// 0:not distributed 1:offfline 2:online
        /// 下标表示报警通道号,取值含义0:未分配1:离线2:在线
        /// </summary>                  
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nStatus;
    }

    /// <summary>
    /// 激活的防区信息
    /// activate zone info
    /// </summary>
    public struct NET_ACTIVATEDDEFENCEAREA_INFO
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// zone channel no.
        /// 防区通道号
        /// </summary>
        public int nChannel;
        /// <summary>
        /// zone activation time 
        /// 防区激活时间 
        /// </summary>
        public NET_TIME stuActivationTime;
    }

    /// <summary>
    /// CLIENT_QueryDevState port input parameter
    ///  CLIENT_QueryDevState 接口输入参数
    /// </summary>
    public struct NET_ACTIVATEDDEFENCEAREA
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// search local alarm input channel quantity,  need use to specify
        /// 查询本地报警输入通道激活个数,需用户指定个数
        /// </summary>
        public int nAlarmInCount;
        /// <summary>
        /// local alarm input channel actual activation quantity
        /// 本地报警输入通道实际激活个数
        /// </summary>
        public int nRetAlarmInCount;
        /// <summary>
        /// 本地报警输入通道信息
        /// 由用户申请内存，大小为sizeof(NET_ACTIVATEDDEFENCEAREA_INFO)*nAlarmInCount
        ///  local alarm input channel info
        ///  the space application by the user,apply to sizeof(NET_ACTIVATEDDEFENCEAREA_INFO)*nAlarmInCount
        /// </summary>
        public IntPtr pstuAlarmInDefenceAreaInfo;
        /// <summary>
        /// search extension module alarm input quantity. Use specify
        /// 查询扩展模块报警输入通道个数,需用户指定个数
        /// </summary>
        public int nExAlarmInCount;
        /// <summary>
        /// extension  module alarm input channel actual activation quantity
        /// 扩展模块报警输入通道实际激活个数
        /// </summary>
        public int nRetExAlarmInCount;
        /// <summary>
        /// 扩展模块报警输入通道信息
        /// 由用户申请内存，大小为sizeof(NET_ACTIVATEDDEFENCEAREA_INFO)*nExAlarmInCount
        /// extension  module alarm input channel info
        /// the space application by the user,apply to sizeof(NET_ACTIVATEDDEFENCEAREA_INFO)*nExAlarmInCount
        /// </summary>
        public IntPtr pstuExAlarmInDefenceAreaInfo;
    }

    /// <summary>
    /// 获取防区布撤防状态入参，对应接口 CLIENT_GetDefenceArmMode
    /// </summary>
    public struct NET_IN_GET_DEFENCEMODE
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Zone valid number
        /// 防区有效个数
        /// </summary>
        public int nDefenceNum;
        /// <summary>
        /// Zone number to search
        /// 待查询的防区号
        /// </summary>                  
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public int[] anDefence;
    }

    /// <summary>
    /// 获取防区布撤防状态出参，对应接口 CLIENT_GetDefenceArmMode
    /// </summary>
    public struct NET_OUT_GET_DEFENCEMODE
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Zone valid number
        /// 防区有效个数
        /// </summary>
        public int nDefenceNum;
        /// <summary>
        /// Zone status info
        /// 防区状态信息
        /// </summary>                  
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public EM_DEFENCEMODE[] anDefenceState;
    }

    /// <summary>
    /// 单防区布撤防操作入参，对应接口CLIENT_SetDefenceArmMode
    /// </summary>
    public struct NET_IN_SET_DEFENCEMODE
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        ///  用户登录密码
        /// login passwd
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassword;
        /// <summary>
        /// zone channel no.
        /// 防区通道号
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 
        /// 工作模式
        /// </summary>
        public EM_DEFENCEMODE emDefenceMode;
    }
    /// <summary>
    /// 单防区布撤防操作出参，对应接口 CLIENT_SetDefenceArmMode
    /// </summary>
    public struct NET_OUT_SET_DEFENCEMODE
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 云台联动项
    /// pos ptz link
    /// </summary>
    public struct NET_PTZ_LINK_ITEM
    {
        /// <summary>
        /// 云台联动类型
        /// ptz link type
        /// </summary>
        public EM_PTZ_LINK_TYPE emType;
        /// <summary>
        /// 联动参数1
        /// link param 1
        /// </summary>
        public int nParam1;
        /// <summary>
        /// 联动参数2
        /// link param 2
        /// </summary>
        public int nParam2;
        /// <summary>
        /// 联动参数3
        /// link param 3
        /// </summary>
        public int nParam3;
        /// <summary>
        /// 所联动云台通道
        /// ptz link channelID
        /// </summary>
        public int nChannelID;
    }

    // 联动类型
    public enum EM_PTZ_LINK_TYPE
    {
        NONE,                           // none
        PRESET,                     // "Preset" 联动预置点
        TOUR,                           // "Tour" 联动巡航
        PATTERN,                        // "Pattern" 联动模式
        ZOOM,                           // "Zoom" 联动变倍
        SINGLESCENE,                    // "SingleScene" 联动智能单场景
        QUICKFOCUS,					// "QuickFocus" 热成像云台联动快速定位
    }

    /// <summary>
    /// 云台联动
    /// PTZ Activation
    /// </summary>
    public struct NET_PTZ_LINK
    {
        /// <summary>
        /// 0-None,1-Preset,2-Tour,3-Pattern
        /// 0-None,1-Preset,2-Tour,3-Pattern
        /// </summary>
        public int iType;
        public int iValue;
    }

    // 报警联动结构体
    public struct NET_MSG_HANDLE_EX
    {
        /// <summary>
        /// 当前报警所支持的处理方式,按位掩码表示
        /// Current alarm supporting methods, shown by bit mask
        /// </summary>
        public uint dwActionMask;
        /// <summary>
        /// 触发动作,按位掩码表示,具体动作所需要的参数在各自的配置中体现
        /// Triggering action,shown by bit mask,concrete action parameter is shows in the configuration
        /// </summary>
        public uint dwActionFlag;
        /// <summary>
        /// 报警触发的输出通道,报警触发的输出,为1表示触发该输出
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byRelAlarmOut;
        /// <summary>
        /// 报警持续时间
        /// Alarm lasting period
        /// </summary>
        public uint dwDuration;
        /// <summary>
        /// 报警触发的录象通道,为1表示触发该通道
        /// Record channel triggered by alarm,1 means triggering this channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byRecordChannel;
        /// <summary>
        /// 录象持续时间
        /// Recording period
        /// </summary>
        public uint dwRecLatch;
        /// <summary>
        /// 抓图通道
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] bySnap;
        /// <summary>
        /// 轮巡通道 0-31路
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byTour;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_PTZ_LINK[] struPtzLink;
        /// <summary>
        /// 联动开始延时时间,s为单位,范围是0~15,默认值是0
        /// Event delay time, s for unit,range is 0~15,default is 0
        /// </summary>
        public uint dwEventLatch;
        /// <summary>
        /// 报警触发的无线输出通道,报警触发的输出,为1表示触发该输出
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byRelWIAlarmOut;
        public byte bMessageToNet;
        /// <summary>
        /// 短信报警使能
        /// Message triggering alarm enabling
        /// </summary>
        public byte bMMSEn;
        /// <summary>
        /// 短信发送抓图张数
        /// the number of sheets of drawings
        /// </summary>
        public byte bySnapshotTimes;
        /// <summary>
        /// 矩阵使能
        /// Matrix output enable
        /// </summary>
        public byte bMatrixEn;
        /// <summary>
        /// 矩阵掩码
        /// Matrix mask
        /// </summary>
        public uint dwMatrix;
        /// <summary>
        /// 日志使能,目前只有在WTN动态检测中使用
        /// Log enable,only used in WTN motion detection
        /// </summary>
        public byte bLog;
        /// <summary>
        /// 抓图帧间隔,每隔多少帧抓一张图片,一定时间内抓拍的张数还与抓图帧率有关。0表示不隔帧,连续抓拍
        /// Snapshot frame interval. System can snapshot regularly at the interval you specify here. The snapshot amount in a period of time also has relationship with the snapshot frame rate. 0 means there is no interval, system just snapshot continuously.
        /// </summary>
        public byte bSnapshotPeriod;
        /// <summary>
        /// 轮巡通道 32-63路*/
        /// Tour channel 32-63
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byTour2;
        /// <summary>
        /// 0,图片附件,1,录像附件>
        /// 0,picture,1,record>
        /// </summary>
        public byte byEmailType;
        /// <summary>
        /// 附件录像时的最大长度,单位MB>
        /// max record length,unit:MB>
        /// </summary>
        public byte byEmailMaxLength;
        /// <summary>
        /// 附件是录像时最大时间长度,单位秒>
        /// max time length, unit:second>
        /// </summary>
        public byte byEmailMaxTime;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 475)]
        public byte[] byReserved;
    }

    // 防区类型
    public enum EM_NET_DEFENCE_AREA_TYPE
    {
        UNKNOW,                    // 未知
        INTIME,                    // 即时防区 
        DELAY,                     // 延时防区
        FULLDAY,                   // 24小时防区
        Follow,                    // 跟随防区
        MEDICAL,                   // 医疗紧急防区
        PANIC,                     // 恐慌防区
        FIRE,                      // 火警防区
        FULLDAYSOUND,              // 24小时有声防区
        FULLDATSLIENT,             // 24小时无声防区
        ENTRANCE1,                 // 出入防区1
        ENTRANCE2,                 // 出入防区2
        INSIDE,                    // 内部防区
        OUTSIDE,                   // 外部防区
        PEOPLEDETECT,              // 人员检测防区
    }

    //三态布尔类型
    public enum EM_THREE_STATUS_BOOL
    {
        FALSE,
        TRUE,
        UNKNOWN,
    }

    // 数据来源
    public enum EM_DATA_SOURCE
    {
        GPS,                    // GPS 
        INERTIALNAVIGATION,     // 惯性导航数据
    }

    // GPS状态信息
    public struct NET_GPS_STATUS_INFO
    {
        /// <summary>
        /// 定位时间
        /// time
        /// </summary>
        public NET_TIME revTime;
        /// <summary>
        /// 设备序列号
        /// device number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
        public string DvrSerial;
        /// <summary>
        /// 对齐字节
        /// align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public byte[] byRserved1;
        /// <summary>
        /// 经度(单位是百万分之度,范围0-360度)
        /// longitude(1/1000000,range[0-360])
        /// </summary>
        public double longitude;
        /// <summary>
        /// 纬度(单位是百万分之度,范围0-180度)
        /// latitude(1/1000000,range[0-180])
        /// </summary>
        public double latidude;
        /// <summary>
        /// 高度(米)
        /// highness(m)
        /// </summary>
        public double height;
        /// <summary>
        /// 方向角(正北方向为原点,顺时针为正)
        /// angle(north is source point,clockwise is positive)
        /// </summary>
        public double angle;
        /// <summary>
        /// 速度(单位km/H)
        /// speed(sea mile,speed/1000*1.852km/h)
        /// </summary>
        public double speed;
        /// <summary>
        /// 定位星数, emDateSource为 EM_DATE_SOURCE_GPS时有效
        /// star count
        /// </summary>
        public ushort starCount;
        /// <summary>
        /// 对齐字节
        /// align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byRserved2;
        /// <summary>
        /// 天线状态, emDateSource为 EM_DATE_SOURCE_GPS时有效
        /// antenna state(true good, false bad) valid when emDateSource is EM_DATE_SOURCE_GPS
        /// </summary>
        public EM_A_NET_THREE_STATUS_BOOL antennaState;
        /// <summary>
        /// 定位状态
        /// orientation state(true orientation, false not) valid when emDateSource is EM_DATE_SOURCE_GPS
        /// </summary>
        public EM_A_NET_THREE_STATUS_BOOL orientationState;
        /// <summary>
        /// 工作状态(0=未定位,1=非差分定位,2=差分定位,3=无效PPS,6=正在估算
        /// emDateSource为 EM_DATE_SOURCE_GPS时有效
        /// working state(true normal, false abnormity)
        /// valid when emDateSource is EM_DATE_SOURCE_GPS
        /// </summary>
        public int workStae;
        /// <summary>
        /// 发生的报警位置个数
        /// alarm count
        /// </summary>
        public int nAlarmCount;
        /// <summary>
        /// 发生的报警位置,值可能多个, emDateSource为 EM_DATE_SOURCE_GPS时有效
        /// alarm type valid when emDateSource is EM_DATE_SOURCE_GPS
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public int[] nAlarmState;
        /// <summary>
        /// 0-实时 1-补传
        /// 0- real time 1-fill
        /// </summary>
        public byte bOffline;
        /// <summary>
        /// GPS信噪比,表示GPS信号强度,值越大,信号越强 范围：0~100,0表示不可用
        /// SNR for GPS, range: 0~100, 0 for unusable
        /// </summary>
        public byte bSNR;
        /// <summary>
        /// 对齐字节
        /// align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byRserved3;
        /// <summary>
        /// 数据来源
        /// source of date
        /// </summary>
        public EM_DATA_SOURCE emDateSource;
        /// <summary>
        /// 在当前工作模式下（GPS或北斗等系统）的信号强度
        /// The signal strength in the current working mode (GPS or Beidou systems)
        /// </summary>
        public int nSignalStrength;
        /// <summary>
        /// 水平精度因子惯性导航时无效
        /// The horizontal precision factor is invalid during inertial navigation
        /// </summary>
        public float fHdop;
        /// <summary>
        /// 位置精度因子,惯性导航时无效
        /// Position precision factor, invalid in inertial navigation
        /// </summary>
        public float fPdop;
        /// <summary>
        /// 总里程， 单位 米
        /// Total mileage, unit: m
        /// </summary>
        public int nMileage;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 96)]
        public byte[] byRserved;
    }

    /// <summary>
    /// 传感器感应方式枚举类型
    /// Sensor's Sense Method Enumeration Type
    /// </summary>
    public enum EM_SENSE_METHOD
    {
        /// <summary>
        /// 未知类型
        /// Unknowed type
        /// </summary>
        UNKNOWN = -1,
        /// <summary>
        /// 门磁
        /// Door Contact
        /// </summary>
        DOOR = 0,
        /// <summary>
        /// 被动红外
        /// Passive Infrared
        /// </summary>
        PASSIVEINFRA,
        /// <summary>
        /// 气感
        /// Gase Induce)
        /// </summary>
        GAS,
        /// <summary>
        /// 烟感
        /// Smoking Induce
        /// </summary>
        SMOKING,
        /// <summary>
        /// 水感
        /// Wwater Induce)
        /// </summary>
        WATER,
        /// <summary>
        /// 主动红外
        /// Initiative Infrared
        /// </summary>
        ACTIVEFRA,
        /// <summary>
        /// 玻璃破碎
        /// Glass Broken
        /// </summary>
        GLASS,
        /// <summary>
        /// 紧急开关
        /// Emergency switch
        /// </summary>
        EMERGENCYSWITCH,
        /// <summary>
        /// 震动
        /// Shock
        /// </summary>
        SHOCK,
        /// <summary>
        /// 双鉴(红外+微波)
        /// Double Method(Infrare+Microwave)
        /// </summary>
        DOUBLEMETHOD,
        /// <summary>
        /// 三技术
        /// Three Method
        /// </summary>
        THREEMETHOD,
        /// <summary>
        /// 温度
        /// 
        /// </summary>
        TEMP,
        /// <summary>
        /// 湿度
        /// Humidity
        /// </summary>
        HUMIDITY,
        /// <summary>
        /// 风速
        /// Wind
        /// </summary>
        WIND,
        /// <summary>
        /// 呼叫按钮
        /// Call button
        /// </summary>
        CALLBUTTON,
        /// <summary>
        /// 气体压力
        /// Gas Pressure
        /// </summary>
        GASPRESSURE,
        /// <summary>
        /// 燃气浓度
        /// Gas Concentration
        /// </summary>
        GASCONCENTRATION,
        /// <summary>
        /// 气体流量
        /// Gas Flow
        /// </summary>
        GASFLOW,
        /// <summary>
        /// 其他
        /// Other
        /// </summary>
        OTHER,
        /// <summary>
        /// 油量检测,汽油、柴油等车辆用油检测
        /// oil detection, gasoline, diesel vehicles detection
        /// </summary>
        OIL,
        /// <summary>
        /// 里程数检测
        /// mileage detection
        /// </summary>
        MILEAGE,
        /// <summary>
        /// 紧急按钮
        /// Urgency button
        /// </summary>
        URGENCYBUTTON,
        /// <summary>
        /// 盗窃
        /// Steal
        /// </summary>
        STEAL,
        /// <summary>
        /// 周界
        /// Permeter
        /// </summary>
        PERIMETER,
        /// <summary>
        /// 防拆
        /// Prevent remove
        /// </summary>
        PREVENTREMOVE,
        /// <summary>
        /// 门铃
        /// Door bell
        /// </summary>
        DOORBELL,
        /// <summary>
        /// 交流电压传感器
        /// Alter voltage sensor
        /// </summary>
        ALTERVOLT,
        /// <summary>
        /// 直流电压传感器
        /// Direct voltage sensor
        /// </summary>
        DIRECTVOLT,
        /// <summary>
        /// 交流电流传感器
        /// Alter current sensor
        /// </summary>
        ALTERCUR,
        /// <summary>
        /// 直流电流传感器
        /// Direct current sensor
        /// </summary>
        DIRECTCUR,
        /// <summary>
        /// 高新兴通用模拟量 4~20mA或0~5V
        /// RSU general analog sensor, 4~20mA or 0~5V
        /// </summary>
        RSUGENERAL,
        /// <summary>
        /// 高新兴门禁感应
        /// RSU door sensor
        /// </summary>
        RSUDOOR,
        /// <summary>
        /// 高新兴断电感应
        /// RSU power off sensor
        /// </summary>
        RSUPOWEROFF,
        /// <summary>
        /// 1500温度传感器
        /// 1500  sensor
        /// </summary>
        TEMP1500,
        /// <summary>
        /// DS18B20温度传感器
        /// DS18B20  sensor
        /// </summary>
        TEMPDS18B20,
        /// <summary>
        /// 1500湿度传感器
        /// 1500 humidity sensor
        /// </summary>
        HUMIDITY1500,
        /// <summary>
        /// 红外报警
        /// Infrared sensor
        /// </summary>
        INFRARED,
        /// <summary>
        /// 火警
        /// firealarm sensor
        /// </summary>
        FIREALARM,
        /// <summary>
        /// CO2浓度检测,典型值:0~5000ppm
        /// Determination of CO2, typical value:0~5000ppm
        /// </summary>
        CO2,
        /// <summary>
        /// 噪音检测,典型值:30~130dB
        /// Noise detection,typical value:30~130dB
        /// </summary>
        SOUND,
        /// <summary>
        /// PM2.5检测,典型值:0~1000ug/m3
        /// PM2.5 detection,typical value:0~1000ug/m3
        /// </summary>
        PM25,
        /// <summary>
        /// SF6浓度检测,典型值:0~3000ppm
        /// Determination of SF6,typical value:0~3000ppm
        /// </summary>
        SF6,
        /// <summary>
        /// 臭氧浓度检测,典型值:0~100ppm
        /// O3 detection,typical value:0~100ppm
        /// </summary>
        O3,
        /// <summary>
        /// 环境光照检测,典型值:0~20000Lux
        /// ambient light detection,typical value:0~20000Lux
        /// </summary>
        AMBIENTLIGHT,
        /// <summary>
        /// 签入按钮
        /// sign in button
        /// </summary>
        SIGNINBUTTON,
        /// <summary>
        /// 液位
        /// LiquidLevel
        /// </summary>
        LIQUIDLEVEL,
        /// <summary>
        /// 测距
        /// distance
        /// </summary>
        DISTANCE,
        /// <summary>
        /// 水流量
        /// water flow
        /// </summary>
        WATERFLOW,
        /// <summary>
        /// 按键传感器
        /// Keypress Sensor
        /// </summary>
        KEYPRESSS,
        /// <summary>
        /// SM7820B温湿度传感器
        /// Sm7820b  and humidity sensor
        /// </summary>
        TEMP_AND_HUMI_SM7820B,
        /// <summary>
        /// DSU666单相电子式电能表D
        /// Dsu666 single phase electronic watt hour meter D
        /// </summary>
        WATT_HUR_DDSU666,
        /// <summary>
        /// 幕帘传感器
        /// Curtain sensor
        /// </summary>
        CURTAIN_SENSOR,
        /// <summary>
        /// 枚举类型总数
        /// enum total
        /// </summary>
        NUM,
    }

    /// <summary>
    /// 事件公共字段扩展结构体: 该结构体仅用于 普通报警事件类型(不带图报警事件类型) 和 智能报警事件类型(带图报警事件类型) 的公共字段扩展使用
    /// Event public field extension structure: This structure is only used for common field expansion of common alarm event type (without graph alarm event type) and intelligent alarm event type (with graph alarm event type)
    /// </summary>
    public struct NET_EVENT_INFO_EXTEND
    {
        /// <summary>
        /// RealUTC 是否有效，bRealUTC 为 TRUE 时，用 stuRealUTC，否则 stuRealUTC 字段无效(用原事件结构体中的 事件发生时间/事件触发时间(UTC) 字段)
        /// Whether RealUTC is valid, when bRealUTC is TRUE, use stuRealUTC, otherwise the stuRealUTC field is invalid (use the event occurrence time/event trigger time (UTC) field in the original event structure)
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// 仅用于字节对齐
        /// only for byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string byReserved;
        /// <summary>
        /// 事件发生的时间(标准UTC时间(不带时区夏令时偏差)), 由于事件的UTC时间在产品线之间使用的差异性, 故增加RealUTC作为标准UTC时间, 平台在收到事件解析首优先级是RealUTC, 其次是UTC.
        /// The time when the event occurred (standard UTC time (without time zone daylight saving time offset)), due to the difference in the use of the UTC time of the event between product lines, RealUTC is added as the standard UTC time, and the platform receives The first priority of event parsing is RealUTC, followed by UTC.
        /// </summary>
        public NET_TIME_EX stuRealUTC;
        /// <summary>
        /// 事件类型是否有效
        /// is enable EventsType
        /// </summary>
        public bool bIsEventsTypeValid;
        /// <summary>
        /// 事件类型, bIsEventsTypeValid为TRUE时有效, 0:正常抓图事件, 1:邮件联动抓图事件(图片通过第二路抓图码流上来，和正常抓图的图片可以不一样)
        /// Event type: This parameter is valid when bIsEventsTypeValid is TRUE. 0: normal capture event. 1: Email linkage capture event.
        /// </summary>
        public uint szEventsType;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1012)]
        public string szReserved;
    }

    /// <summary>
    /// 本地报警事件(对ALARM_ALARM_EX升级)
    /// Local Alarm Event (ALARM_ALARM_EX Update
    /// </summary>
    public struct NET_ALARM_ALARM_INFO_EX2
    {
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:开始 1:停止
        /// 0=Start 1=Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 报警事件发生的时间
        /// Alarm Event Begin Time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 传感器类型
        /// The Sensor's Type
        /// </summary>
        public EM_SENSE_METHOD emSenseType;
        /// <summary>
        /// 联动信息
        /// Handle method
        /// </summary>
        public NET_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 防区类型
        /// protection area type, refer to EM_NET_DEFENCE_AREA_TYPE
        /// </summary>
        public EM_NET_DEFENCE_AREA_TYPE emDefenceAreaType;
        /// <summary>
        /// 事件ID
        /// event id
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 通道名称
        /// Channel Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
        /// <summary>
        /// 事件发生次数
        /// evnet count
        /// </summary>
        public int nCount;
        /// <summary>
        /// GPS信息
        /// GPS information
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPS;
        /// <summary>
        /// 本地报警时登陆的用户ID
        /// User ID logged in at local alarm
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// 本地报警时登陆的用户名
        /// User name logged in at local alarm
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserName;
        /// <summary>
        /// 设备序列号
        /// Device serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 外部输入报警
        /// External input alarm
        /// </summary>
        public bool bExAlarmIn;
        /// <summary>
        /// 报警通道所属区域的个数
        /// Number of areas to which the alarm channel belongs
        /// </summary>
        public int nAreaNums;
        /// <summary>
        /// 报警通道所属的区域
        /// The area to which the alarm channel belongs
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public int[] nAreas;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 568)]
        public byte[] byReserved;
    }

    public struct NET_IN_SET_PARKING_SPACE_LIGHT_PLAN
    {
        public uint dwSize;                                         // 结构体大小
        public int nPhysicalLane;                                   // 物理车位号，请优先使用此字段.值为负数时表示此字段无效
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCustomParkNo;                               // 自定义车位编号，物理车位号字段无效时，使用此字段
        public int nLightPlanNum;                                   // 亮灯计划数目
        public IntPtr pstuLightPlan;                                // 亮灯计划信息，由用户申请和释放内存
        public uint nChannel;                                       // 通道号，从0开始。存在该字段标明前端设备添加到存储设备上的通道号
    }

    public struct NET_PARKING_SPACE_LIGHT_PLAN_INFO
    {
        public EM_PARKINGSPACE_LIGHT_COLOR emColor;                 // 颜色
        public EM_PARKINGSPACE_LIGHT_STATE emState;                 // 状态
        public int nKeepTime;                                       // 持续时间,单位秒，-1表示常亮
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;                                   // 保留字节
    }

    // 车位指示灯颜色
    public enum EM_PARKINGSPACE_LIGHT_COLOR
    {
        UNKNOWN,                                    // 未知  
        RED,                                        // 红色
        YELLOW,                                     // 黄色    
        GREEN,                                      // 绿色   
        BLUE,                                       // 蓝色    
        PURPLE,                                     // 紫色   
        WHITE,                                      // 白色    
        PINK,										// 粉色   
    }

    // 车位指示灯状态
    public enum EM_PARKINGSPACE_LIGHT_STATE
    {
        UNKNOWN = -1,                               // 未知  
        OFF,                                        // 灭
        ON,                                         // 亮
        GLINT,                                      // 闪烁
        LAST_STATE,                                 // 上一个状态
    }

    public struct NET_OUT_SET_PARKING_SPACE_LIGHT_PLAN
    {
        public uint dwSize;                                         // 结构体大小
    }

    /// <summary>
    /// CLIENT_AddPlayHandleToPlayGroup 输入参数，对应NET_IN_ADD_PLAYHANDLE_TO_PLAYGROUP结构体
    /// </summary>
    public struct NET_IN_ADD_PLAYHANDLE_TO_PLAYGROUP
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// 播放组句柄，CLIENT_OpenPlayGroup 返回值
        /// </summary>
        public IntPtr lPlayGroupHandle;
        /// <summary>
        /// 播放句柄（当前只支持回放）
        /// </summary>
        public IntPtr lPlayHandle;
    }

    /// <summary>
    /// CLIENT_AddPlayHandleToPlayGroup 输出参数，对应NET_OUT_ADD_PLAYHANDLE_TO_PLAYGROUP结构体
    /// </summary>
    public struct NET_OUT_ADD_PLAYHANDLE_TO_PLAYGROUP
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_QueryPlayGroupTime 输入参数，对应NET_IN_QUERY_PLAYGROUP_TIME结构体
    /// </summary>
    public struct NET_IN_QUERY_PLAYGROUP_TIME
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// 播放组句柄，CLIENT_OpenPlayGroup 返回值
        /// </summary>
        public IntPtr lPlayGroupHandle;
    }

    /// <summary>
    /// CLIENT_QueryPlayGroupTime 输出参数，对应NET_OUT_QUERY_PLAYGROUP_TIME结构体
    /// </summary>
    public struct NET_OUT_QUERY_PLAYGROUP_TIME
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 时间
        /// </summary>
        public NET_TIME_EX stuTime;
    }

    /// <summary>
    /// CLIENT_SetPlayGroupBaseChannel 输入参数，对应NET_IN_SET_PLAYGROUP_BASECHANNEL结构体
    /// </summary>
    public struct NET_IN_SET_PLAYGROUP_BASECHANNEL
    {
        /// <summary>
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// 播放组句柄，CLIENT_OpenPlayGroup 返回值
        /// </summary>
        public IntPtr lPlayGroupHandle;
        /// <summary>
        /// 播放句柄（当前只支持回放）
        /// </summary>
        public IntPtr lPlayHandle;
    }

    /// <summary>
    /// CLIENT_SetPlayGroupBaseChannel 输出参数，对应NET_OUT_SET_PLAYGROUP_BASECHANNEL结构体
    /// </summary>
    public struct NET_OUT_SET_PLAYGROUP_BASECHANNEL
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_DeleteFromPlayGroup 输入参数，对应NET_IN_DELETE_FROM_PLAYGROUP结构体
    /// </summary>
    public struct NET_IN_DELETE_FROM_PLAYGROUP
    {
        /// <summary>
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// 播放组句柄，CLIENT_OpenPlayGroup 返回值
        /// </summary>
        public IntPtr lPlayGroupHandle;
        /// <summary>
        /// 播放句柄（当前只支持回放）
        /// </summary>
        public IntPtr lPlayHandle;
    }

    /// <summary>
    /// CLIENT_DeleteFromPlayGroup 输出参数，对应NET_OUT_DELETE_FROM_PLAYGROUP结构体
    /// </summary>
    public struct NET_OUT_DELETE_FROM_PLAYGROUP
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_SetPlayGroupDirection 输入参数
    /// </summary>
    public struct NET_IN_SET_PLAYGROUP_DIRECTION
    {
        /// <summary>
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 播放方向, 0:正放; 1:倒放
        /// </summary>
        public int nPlayDirection;
        /// <summary>
        /// 播放组句柄，由CLIENT_OpenPlayGroup返回
        /// </summary>
        public IntPtr lPlayGroupHandle;
    }
    /// <summary>
    /// CLIENT_SetPlayGroupDirection 输出参数
    /// </summary>
    public struct NET_OUT_SET_PLAYGROUP_DIRECTION
    {
        /// <summary>
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 录像回放速度
    /// </summary>
    public enum EM_PLAY_BACK_SPEED
    {
        SLOW_32 = -5,               // 1/32倍慢放
        SLOW_16 = -4,               // 1/16倍慢放
        SLOW_8,                     // 1/8倍慢放
        SLOW_4,                     // 1/4倍慢放
        SLOW_2,                     // 1/2倍慢放
        NORMAL = 0,                 // 正常速度
        FAST_2,                     // 2倍快放
        FAST_4,                     // 4倍快放
        FAST_8,                     // 8倍快放
        FAST_16,                    // 16倍快放
        FAST_32,                    // 32倍快放
    }
    /// <summary>
    /// CLIENT_SetPlayGroupSpeed 输入参数
    /// </summary>
    public struct NET_IN_SET_PLAYGROUP_SPEED
    {
        /// <summary>
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 播放速度
        /// </summary>
        public EM_PLAY_BACK_SPEED emSpeed;
        /// <summary>
        /// 播放组句柄，由CLIENT_OpenPlayGroup返回
        /// </summary>
        public IntPtr lPlayGroupHandle;
    }
    /// <summary>
    /// CLIENT_SetPlayGroupSpeed 输出参数
    /// </summary>
    public struct NET_OUT_SET_PLAYGROUP_SPEED
    {
        /// <summary>
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    //车位灯光控制的配置对应的结构体
    public struct NET_CFG_PARKINGSPACE_LIGHT_STATE
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] bySpaceFreeLinght;                                   // 车位空闲状态灯色,颜色枚举值作为数组下标，数组元素值表示指示灯状态，如bySpaceFreeLinght[0]=1,表示红色指示灯亮

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] bySpaceFullLinght;                                   // 车位满状态灯色，颜色枚举值作为数组下标，数组元素值表示指示灯状态，如bySpaceFullLinght[1]=1,表示黄色指示灯亮

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] bySpaceOverLineLight;                                // 车位压线状态灯色,颜色枚举值作为数组下标，数组元素值表示指示灯状态

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] bySpaceOrderLight;                                   // 车位预定状态灯色,颜色枚举值作为数组下标，数组元素值表示指示灯状态

        public int nNetPortNum;                                            // 网口数

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4 * 8)]
        public byte[] byNetPortAbortLight;                                 // 网口断开状态灯色

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] bySpaceSpecialLight;                                 // 车位专用状态灯色,颜色枚举值作为数组下标，数组元素值表示指示灯状态
    }

    /// <summary>
    /// the describe of DEV_EVENT_VEHICLE_RECOGNITION_INFO's data
    /// 车牌识别比对事件信息
    /// </summary>
    public struct NET_DEV_EVENT_VEHICLE_RECOGNITION_INFO
    {
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// Time stamp(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// Vehicle Action 0-unkonw,1-in monitor area,2-leave monitor area 
        /// 车辆动作 0-未知,1-在检测区域内,2-离开检测区域
        /// </summary>
        public int nVehicleAction;
        /// <summary>
        /// Detected object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// Vehicle body info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Main Seat Info
        /// 主驾驶位信息
        /// </summary>
        public NET_SEAT_INFO stuMainSeatInfo;
        /// <summary>
        /// FJS Seat Info
        /// 副驾驶位信息
        /// </summary>
        public NET_SEAT_INFO stuSlaveSeatInfo;
        /// <summary>
        /// Vehicle Attach Num
        /// 车上附件数量
        /// </summary>
        public int nVehicleAttachNum;
        /// <summary>
        /// byte alignment
        /// 车上附件数据
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_VEHICLE_ATTACH[] stuVehicleAttach;
        /// <summary>
        /// 车牌所属国家和地区
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCountry;
        /// <summary>
        /// 候选车辆数量    
        /// </summary>
        public int nCarCandidateNum;
        /// <summary>
        /// 候选车辆数据
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_CAR_CANDIDATE_INFO[] stuCarCandidate;
        /// <summary>
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        // <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 图片信息数组 < NET_IMAGE_INFO_EX2 >
        /// Picture information array < NET_IMAGE_INFO_EX2 >
        /// </summary>
        public IntPtr pstuImageInfo;
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020 - 8)]
        public byte[] bReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020 - 4)]
        public byte[] bReserved;
#endif
    }

    /// <summary>
    /// 驾驶位信息
    /// </summary>
    public struct NET_SEAT_INFO
    {
        /// <summary>
        /// 人脸矩形框信息(8192坐标系)
        /// </summary>
        public NET_RECT stuFaceRect;
        /// <summary>
        /// 遮阳板状态 0: 未知 1：无遮阳板 2：有遮阳板    
        /// </summary>
        public byte bySunShade;
        /// <summary>
        /// 打电话状态 0: 未知 1：未打电话 2：打电话  
        /// </summary>
        public byte byDriverCalling;
        /// <summary>
        /// 抽烟状态	0: 未知 1：未吸烟 2：吸烟  
        /// </summary>
        public byte byDriverSmoking;
        /// <summary>
        /// 安全带状态	0: 未知 1：未系安全带 2：系安全带
        /// </summary>
        public byte bySafeBelt;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 车上附件
    /// </summary>
    public struct NET_VEHICLE_ATTACH
    {
        /// <summary>
        /// 附件类型	0-未知 1-年检标志 2-挂件 3-纸巾盒 4-香水盒
        /// </summary>
        public int nType;
        /// <summary>
        /// 包围盒信息(8192坐标系)
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 候选车辆信息
    /// </summary>
    public struct NET_CAR_CANDIDATE_INFO
    {
        /// <summary>
        /// 车辆信息
        /// </summary>
        public NET_VEHICLE_INFO stuVehicleInfo;
        /// <summary>
        /// 和数据库不相符的属性数目
        /// </summary>
        public int nDifferentAttributresNum;
        /// <summary>
        /// 和数据库不相符的属性集合,元素值取值意义:0-未知 1-车牌属地 2-车标 3-车型 4-车色 5-车牌颜色
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public int[] nDifferentAttributres;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 车辆信息
    /// </summary>
    public struct NET_VEHICLE_INFO
    {
        /// <summary>
        /// 车辆唯一标识符,由服务端生成用于程序中表示惟一
        /// </summary>
        public uint nUID;
        /// <summary>
        /// 车辆所属组ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupId;
        /// <summary>
        /// 车辆所属组名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szGroupName;
        /// <summary>
        /// 车牌号码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPlateNumber;
        /// <summary>
        /// 车辆所在国家,2字节，符合ISO3166规范
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szPlateCountry;
        /// <summary>
        /// 车牌类型
        ///  01  大型汽车号牌 黄底黑字 
        ///  02  小型汽车号牌 蓝底白字 
        ///  03  使馆汽车号牌 黑底白字、红“使”字 
        ///  04  领馆汽车号牌 黑底白字、红“领”字 
        ///  05  境外汽车号牌 黑底白、红字 
        ///  06  外籍汽车号牌 黑底白字 
        ///  13  农用运输车号牌 黄底黑字黑框线 
        ///  15  挂车号牌 黄底黑字黑框线 
        ///  16  教练汽车号牌 黄底黑字黑框线 
        ///  18  试验汽车号牌 
        ///  20  临时入境汽车号牌 白底红字黑“临时入境” 
        ///  22  临时行驶车号牌 白底黑字黑线框 
        ///  23  公安警用汽车号牌
        /// </summary>
        public int nPlateType;
        /// <summary>
        /// 车型(轿车、卡车等)
        ///  001  巡逻车 
        ///  002  交警车辆 
        ///  003  消防车 
        ///  004  单兵 
        ///  005  其他警车 
        ///  006  其他设备 
        ///  020  政府车辆 
        ///  031  校车 
        ///  032  运钞车 
        ///  033  客运车辆 
        ///  034  公交车 
        ///  035  出租车 
        ///  036  危险品车辆
        /// </summary>
        public int nVehicleType;
        /// <summary>
        /// 车辆车标,需要通过映射表得到真正的车标.同卡口事件的CarLogoIndex
        /// </summary>
        public int nBrand;
        /// <summary>
        /// 车辆子品牌，需要通过映射表得到真正的子品牌,同卡口事件的SubBrand
        /// </summary>
        public int nCarSeries;
        /// <summary>
        /// 车辆品牌年款，需要通过映射表得到真正的年款，同卡口事件的BrandYear 车头年款序号范围1~999；
        /// 车尾年款序号范围1001~1999；0表示未知；1000预留。
        /// </summary>
        public int nCarSeriesModelYearIndex;
        /// <summary>
        /// 车色 第一个元素表示红色分量值； 第二个元素表示绿色分量值； 第三个元素表示蓝色分量值； 第四个元素表示透明度分量(无意义)
        /// </summary>
        public NET_COLOR_RGBA stuVehicleColor;
        /// <summary>
        /// 车牌颜色,规则同车色
        /// </summary>
        public NET_COLOR_RGBA stuPlateColor;
        /// <summary>
        /// 车主名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szOwnerName;
        /// <summary>
        /// 车主性别 0-未知,1-男,2,女
        /// </summary>
        public int nSex;
        /// <summary>
        /// 车主证件类型 0-未知 1-证 2-护照 3-军官证
        /// </summary>
        public int nCertificateType;
        /// <summary>
        /// 人员证号码,工号,或其他编号    
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPersonID;
        /// <summary>
        /// 车主国籍,2字节,符合ISO3166规范
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szOwnerCountry;
        /// <summary>
        /// 省份
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProvince;
        /// <summary>
        /// 城市
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCity;
        /// <summary>
        /// 注册人员家庭地址(IVSS需求)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szHomeAddress;
        /// <summary>
        /// 车主电子邮箱
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szEmail;
        /// <summary>
        /// 注册车主电话号码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPhoneNo;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    // 工作裤穿戴状态
    public enum EM_WORKPANTS_STATE
    {
        UNKNOWN,                                                 // 未知
        NOTWEAR,                                                 // 没有
        WEAR,                                                    // 有
    }

    // 工作裤属性
    public struct NET_WORKPANTS_ATTRIBUTE
    {
        public EM_WORKPANTS_STATE emWorkPantsState;                            // 工作裤穿戴状态
        public EM_CLOTHES_COLOR emWorkPantsColor;                          // 工作裤颜色	
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;                          // 预留字节
    }

    /// <summary>
    /// 工装检测报警规则类型
    /// Rule type of work clothes(helmet/clothes)detection
    /// </summary>
    public enum EM_EVENT_WORKCLOTHES_RULE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_UNKNWON,
        /// <summary>
        /// 安全帽
        /// Helmet
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_HELMET,
        /// <summary>
        /// 工作服
        /// Clothes
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_CLOTHES,
        /// <summary>
        /// 工作裤
        /// Pant
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_PANTS,
        /// <summary>
        /// 防护服
        /// ProtectiveSuit
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_PROTECTIVESUIT,
        /// <summary>
        /// 鞋套
        /// ShoesCover
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_SHOESCOVER,
        /// <summary>
        /// 安全绳
        /// SafetyRope
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_SAFETYROPE,
        /// <summary>
        /// 普通帽
        /// NormalHat
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_NORMALHAT,
        /// <summary>
        /// 口罩
        /// Mask
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_MASK,
        /// <summary>
        /// 围裙
        /// Apron
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_APRON,
        /// <summary>
        /// 手套
        /// Glove
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_GLOVE,
        /// <summary>
        /// 靴子
        /// Boot
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_BOOT,
        /// <summary>
        /// 无帽子
        /// NoHat
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_NOHAT,
        /// <summary>
        /// 防护面罩
        /// Protective mask
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_TYPE_PROHLMET,
        /// <summary>
        /// 防火衣
        /// FireProofClothes
        /// </summary>
        EM_EVENT_WORKCLOTHES_RULE_FIREPROOFCLOTHES,
    }

    /// <summary>
    /// 穿戴状态
    /// Wear state
    /// </summary>
    public enum EM_WEARING_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_WEARING_STATE_UNKNOWN,
        /// <summary>
        /// 没有穿戴
        /// not wearing
        /// </summary>
        EM_WEARING_STATE_NOTWEAR,
        /// <summary>
        /// 有穿戴
        /// Wear
        /// </summary>
        EM_WEARING_STATE_WEAR,
        /// <summary>
        /// 不存在指定颜色的帽子
        /// There is no hat of the specified color
        /// </summary>
        EM_WEARING_STATE_NO_EXIT,
    }

    /// <summary>
    /// 合规检测状态
    /// Compliance detection status
    /// </summary>
    public enum EM_COMPLIANCE_STATE
    {
        /// <summary>
        /// 合规
        /// Compliant
        /// </summary>
        EM_COMPLIANCE_STATE_COMPLIANT,
        /// <summary>
        /// 不合规
        /// not compliant
        /// </summary>
        EM_COMPLIANCE_STATE_NONCOMPLIANT,
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_COMPLIANCE_STATE_UNKNOWN,
    }

    /// <summary>
    /// 普通帽子相关属性状态信息
    /// Normal hat related attribute status information
    /// </summary>
    public struct NET_NORMALHAT_ATTRIBUTE
    {
        /// <summary>
        /// 是否有戴普通帽
        /// Whether a normal hat is worn
        /// </summary>
        public EM_WEARING_STATE emHasHat;
        /// <summary>
        /// 帽子检测结果
        /// hat detection result
        /// </summary>
        public EM_COMPLIANCE_STATE emHasLegalHat;
    }

    /// <summary>
    /// 口罩相关属性状态信息
    /// Mask related attribute status information
    /// </summary>
    public struct NET_MASK_ATTRIBUTE
    {
        /// <summary>
        /// 是否有戴口罩
        /// Whether there is a mask
        /// </summary>
        public EM_WEARING_STATE emHasMask;
        /// <summary>
        /// 口罩检测结果
        /// Mask detection result
        /// </summary>
        public EM_COMPLIANCE_STATE emHasLegalMask;
    }

    /// <summary>
    /// 围裙相关属性状态信息
    /// Apron related property status information
    /// </summary>
    public struct NET_APRON_ATTRIBUTE
    {
        /// <summary>
        /// 是否有穿围裙
        /// Whether you are wearing an apron
        /// </summary>
        public EM_WEARING_STATE emHasApron;
        /// <summary>
        /// 围裙检测结果
        /// apron detection result
        /// </summary>
        public EM_COMPLIANCE_STATE emHasLegalApron;
    }

    /// <summary>
    /// 手套相关属性状态信息
    /// Glove related attribute status information
    /// </summary>
    public struct NET_GLOVE_ATTRIBUTE
    {
        /// <summary>
        /// 是否有戴手套
        /// Whether you are wearing gloves
        /// </summary>
        public EM_WEARING_STATE emHasGlove;
        /// <summary>
        /// 手套检测结果
        /// Glove test result
        /// </summary>
        public EM_COMPLIANCE_STATE emHasLegalGlove;
    }

    /// <summary>
    /// 靴子相关属性状态信息
    /// Boot related property status information
    /// </summary>
    public struct NET_BOOT_ATTRIBUTE
    {
        /// <summary>
        /// 是否有穿靴子
        /// Whether there are boots
        /// </summary>
        public EM_WEARING_STATE emHasBoot;
        /// <summary>
        /// 靴子检测结果
        /// Boot detection result
        /// </summary>
        public EM_COMPLIANCE_STATE emHasLegalBoot;
    }

    /// <summary>
    /// 鞋套相关属性状态信息
    /// Shoe cover related attribute status information
    /// </summary>
    public struct NET_SHOESCOVER_ATTRIBUTE
    {
        /// <summary>
        /// 是否有穿鞋套
        /// Whether there is a shoe cover
        /// </summary>
        public EM_WEARING_STATE emHasCover;
        /// <summary>
        /// 鞋套检测结果
        /// shoe cover detection result
        /// </summary>
        public EM_COMPLIANCE_STATE emHasLegalCover;
    }

    /// <summary>
    /// 无帽子相关属性状态信息
    /// No hat related property status information
    /// </summary>
    public struct NET_NOHAT_ATTRIBUTE
    {
        /// <summary>
        /// 是否有戴帽子
        /// Whether there is a hat
        /// </summary>
        public EM_WEARING_STATE emHasHat;
        /// <summary>
        /// 帽子检测结果
        /// hat detection result
        /// </summary>
        public EM_COMPLIANCE_STATE emHasLegalHat;
    }

    /// <summary>
    /// 防护面罩相关属性状态信息
    /// Relevant attribute status information of protective mask
    /// </summary>
    public struct NET_PROHELMET_ATTRIBUTE
    {
        /// <summary>
        /// 是否有戴防护面罩
        /// Are you wearing a protective mask
        /// </summary>
        public EM_WEARING_STATE emHasHat;
        /// <summary>
        /// 帽子颜色
        /// Hat color
        /// </summary>
        public EM_CLOTHES_COLOR emHatColor;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// 是否穿着防火衣
    /// FireProofClothes state
    /// </summary>
    public enum EM_FIREPROOF_CLOTHES_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_FIREPROOF_CLOTHES_STATE_UNKNOWN,
        /// <summary>
        /// 没有穿着防火衣
        /// not FireProofClothes
        /// </summary>
        EM_FIREPROOF_CLOTHES_STATE_NO,
        /// <summary>
        /// 有穿着防火衣
        /// FireProofClothes
        /// </summary>
        EM_FIREPROOF_CLOTHES_STATE_YES,
        /// <summary>
        /// 不存在指定颜色的防火衣
        /// There is no hat of the specified color
        /// </summary>
        EM_FIREPROOF_CLOTHES_STATE_NOEXIT,
    }

    /// <summary>
    /// 防火衣相关属性状态信息
    /// Relevant attribute status information of fireproof clothing
    /// </summary>
    public struct NET_FIREPROOF_CLOTHES
    {
        /// <summary>
        /// 是否穿着防火衣
        /// Whether there is a FireProofClothes
        /// </summary>
        public EM_FIREPROOF_CLOTHES_STATE emHasFireProofClothes;
        /// <summary>
        /// 防火衣颜色
        /// FireProofClothes color
        /// </summary>
        public EM_CLOTHES_COLOR emFireProofClothesColor;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// 智能物体全局唯一物体标识
    /// Intelligent object global unique object identification
    /// </summary>
    public struct NET_MSG_OBJECT_OBJECTUUID_INFO
    {
        /// <summary>
        /// / 物体全局唯一性标识
        /// / Object global unique identification
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szUUID;
        /// <summary>
        /// / 扩展字节
        /// / Extended bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 208)]
        public string szReserved;
    }

    /// <summary>
    /// VideoAnalyseObject中车辆信息的额外扩展
    /// Additional extensions to vehicle information in VideoAnalyseObject
    /// </summary>
    public struct NET_VAO_EXTRA_VEHICLE_INFO
    {
        /// <summary>
        /// / 货物状态：0：位置载货状态 1：空载状态 2：正常载货状态 3：超载状态
        /// / Cargo status: 0: Position Cargo status 1: Empty status 2: Normal cargo status 3: Overloaded status
        /// </summary>
        public int nCargoState;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 视频分析物体信息扩展结构体,扩展版本2
    /// Video analysis object info extension structure, extension version 2.
    /// </summary>
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]
    public struct NET_A_MSG_OBJECT_EX2
    {
        public uint dwSize;
        /// <summary>
        /// 物体ID,每个ID表示一个唯一的物体
        /// Object ID. Each ID presents one object.
        /// </summary>
        public int nObjectID;
        /// <summary>
        /// 物体类型
        /// Object type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szObjectType;
        /// <summary>
        /// 置信度(0~255),值越大表示置信度越高
        /// Confiidence(0-255). The higher the value is, the higher the confidence is.
        /// </summary>
        public int nConfidence;
        /// <summary>
        /// 物体动作:1:Appear 2:Move 3:Stay 4:Remove 5:Disappear 6:Split 7:Merge 8:Rename
        /// Object operation. 1:Appear 2:Move 3:Stay 4:Remove 5:Disappear 6:Split 7:Merge 8:Rename
        /// </summary>
        public int nAction;
        /// <summary>
        /// 包围盒
        /// Surrounding rectangle
        /// </summary>
        public NET_A_RECT_EX BoundingBox;
        /// <summary>
        /// 物体型心
        /// Object size centre
        /// </summary>
        public NET_POINT Center;
        /// <summary>
        /// 多边形顶点个数
        /// Top amount of the polygon
        /// </summary>
        public int nPolygonNum;
        /// <summary>
        /// 较精确的轮廓多边形
        /// Polygon of generaly accurate frame
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_POINT[] Contour;
        /// <summary>
        /// 表示车牌、车身等物体主要颜色；按字节表示,分别为红、绿、蓝和透明度,例如:RGB值为(0,255,0),透明度为0时, 其值为0x00ff0000.
        /// The plate and the vehicle body main color. Use byte to present: red, green, blue and transparent. When RGB value is (0,255,0), transparent is 0, the value is 0x00ff0000.
        /// </summary>
        public uint rgbaMainColor;
        /// <summary>
        /// 同MSG_OBJECT相应字段
        /// The same as the string of the MSG_OBJECT
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szText;
        /// <summary>
        /// 物体子类别,根据不同的物体类型,可以取以下子类型：
        /// 同MSG_OBJECT相应字段
        /// Object sub-type. It has the following sub-tyes.
        /// The same as the string of the MSG_OBJECT
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szObjectSubType;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved1;
        /// <summary>
        /// 是否有物体对应图片文件信息
        /// There is image file info of the corresponding object
        /// </summary>
        public byte bPicEnble;
        /// <summary>
        /// 物体对应图片信息
        /// Image info of the object
        /// </summary>
        public NET_PIC_INFO stPicInfo;
        /// <summary>
        /// 是否是抓拍张的识别结果
        /// Has been snapped or not
        /// </summary>
        public byte bShotFrame;
        /// <summary>
        /// 物体颜色(rgbaMainColor)是否可用
        /// Object color (rgbaMainColor) is usable or not.
        /// </summary>
        public byte bColor;
        /// <summary>
        /// 下半身颜色(rgbaLowerBodyColor)是否可用
        /// The lower part color (rgbaLowerBodyColor) is usable or not
        /// </summary>
        public byte bLowerBodyColor;
        /// <summary>
        /// 时间表示类型,详见EM_TIME_TYPE说明
        /// Time type. Please refer to EM_TIME_TYPE.
        /// </summary>
        public byte byTimeType;
        /// <summary>
        /// 针对视频浓缩,当前时间戳（物体抓拍或识别时,会将此识别智能帧附在一个视频帧或jpeg图片中,此帧所在原始视频中的出现时间）
        /// For video synopsis. Current time stampl (When snap or recognize the object, use the recognition intelligent frame on one video frame or JPEG. It is the appearing time of the frame on the original video. )
        /// </summary>
        public NET_TIME_EX stuCurrentTime;
        /// <summary>
        /// 开始时间戳（物体开始出现时）
        /// Start time stamp(When the object first appear )
        /// </summary>
        public NET_TIME_EX stuStartTime;
        /// <summary>
        /// 结束时间戳（物体最后出现时）
        /// End time (When the object last appear )
        /// </summary>
        public NET_TIME_EX stuEndTime;
        /// <summary>
        /// 包围盒(绝对坐标)
        /// Surrounding box(Absolute coordinates)
        /// </summary>
        public NET_A_RECT_EX stuOriginalBoundingBox;
        /// <summary>
        /// 车标坐标包围盒
        /// Vehicle symbol surrounding box
        /// </summary>
        public NET_A_RECT_EX stuSignBoundingBox;
        /// <summary>
        /// 当前帧序号（抓下这个物体时的帧）
        /// Current frame SN(Frame when snap the object )
        /// </summary>
        public uint dwCurrentSequence;
        /// <summary>
        /// 开始帧序号（物体开始出现时的帧序号）
        /// Start frame SN (The frame SN when the object start appearing)
        /// </summary>
        public uint dwBeginSequence;
        /// <summary>
        /// 结束帧序号（物体消逝时的帧序号）
        /// End frame SN (The frame SN when the object disappering)
        /// </summary>
        public uint dwEndSequence;
        /// <summary>
        /// 开始时文件偏移, 单位: 字节（物体开始出现时,视频帧在原始视频文件中相对于文件起始处的偏移）
        /// The file offset when start. Unit:byte. (When the object appearing, the video frame offset value comparing with the file start positon in the original video)
        /// </summary>
        public long nBeginFileOffset;
        /// <summary>
        /// 结束时文件偏移, 单位: 字节（物体消逝时,视频帧在原始视频文件中相对于文件起始处的偏移）
        /// The file offset when stop. Unit: byte. (When the object disappearing, the video frame offset value comparing with the file start position in the original video)
        /// </summary>
        public long nEndFileOffset;
        /// <summary>
        /// 物体颜色相似度,取值范围：0-100,数组下标值代表某种颜色,详见EM_COLOR_TYPE
        /// Object color similarity level. The valur ranges from 0 to 100. The underline value of the array represents one color. Plase refer to EM_COLOR_TYPE.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] byColorSimilar;
        /// <summary>
        /// 上半身物体颜色相似度(物体类型为人时有效)
        /// The top body color similarity leve; (When the object is the human)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] byUpperBodyColorSimilar;
        /// <summary>
        /// 下半身物体颜色相似度(物体类型为人时有效)
        /// The lower body color similarity leve; (When the object is the human)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] byLowerBodyColorSimilar;
        /// <summary>
        /// 相关物体ID
        /// Related object ID
        /// </summary>
        public int nRelativeID;
        /// <summary>
        /// "ObjectType"为"Vehicle"或者"Logo"时,表示车标下的某一车系,比如奥迪A6L,由于车系较多,SDK实现时透传此字段,设备如实填写。
        /// When "ObjectType" is "Vehicle" or "Logo", it represents one car series under the card symbol such as Audio A6L. Since there are too many card series, SDK use the network to realize COM transmission (szSubText) to realize this function.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szSubText;
        /// <summary>
        /// 入侵人员身高,单位cm
        /// Intrusion person height. Unit is cm.
        /// </summary>
        public int nPersonStature;
        /// <summary>
        /// 人员入侵方向
        /// Intrusion person direction
        /// </summary>
        public EM_MSG_OBJ_PERSON_DIRECTION emPersonDirection;
        /// <summary>
        /// 使用方法同rgbaMainColor,物体类型为人时有效
        /// The same usage as the rgbaMainColor, it is valid when the object type is human.
        /// </summary>
        public uint rgbaLowerBodyColor;
        /// <summary>
        /// 浓缩速度域值,共分1~10共十个档位,5表示浓缩后只保留5以上速度的物体。是个相对单位
        /// 为0时,该字段无效
        /// Synopsis speed threshold. There are ten levels (1 to 10). 5 means only reserve the object of speed higher than 5. It is a relative unit.
        /// When it is 0, the string is invalid.
        /// </summary>
        public int nSynopsisSpeed;
        /// <summary>
        /// 浓缩尺寸域值,共分1~10共十个档位,3表示浓缩后只保留3以上大小的物体。是个相对单位
        /// 为0时,该字段无效
        /// Synopsis dimension threshold. There are ten levels (1 to 10). 3 means only reserve the object of speed higher than 3. It is a relative unit.
        /// When it is o, the string is invalid.
        /// </summary>
        public uint nSynopsisSize;
        /// <summary>
        /// 为True时,对物体运动方向做过滤
        /// 为False时,不对物体运动方向做过滤,
        /// When it is True, filter the object moving direction.
        /// When it is False, do not filter the object moving direction.
        /// </summary>
        public bool bEnableDirection;
        /// <summary>
        /// 浓缩运动方向,起始坐标点,点的坐标归一化到[0,8191]区间,bEnableDirection为True时有效
        /// Synopsis moving direction, start coordinates. The point coordinates [0,8191], it is valid when bEnableDirection is True.
        /// </summary>
        public NET_POINT stuSynopsisStartLocation;
        /// <summary>
        /// 浓缩运动方向,终止坐标点,点的坐标归一化到[0,8191]区间,bEnableDirection为True时有效
        /// Synopsis moving direction, stop coordinates. The point coordinates [0,8191], it is valid when bEnableDirection is True.
        /// </summary>
        public NET_POINT stuSynopsisEndLocation;
        /// <summary>
        /// 智能物体全局唯一物体标识
        /// 有效数据位21位，包含’\0’
        /// 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
        /// 中间14位YYYYMMDDhhmmss:年月日时分秒
        /// 后5位%u%u%u%u%u：物体ID，如00001
        /// Intelligent object global unique object identification
        /// Valid data bits are 21 bits, including '\0'
        /// Top 2 bits %d%d: 01-video clip, 02-picture, 03-file, 99-other
        /// Middle 14 bit yyyymmddhhmmss
        /// Last 5 bits %U%U%U%U%U: object ID, such as 00001
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 22)]
        public string szSerialUUID;
        /// <summary>
        /// 对齐
        /// For align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2)]
        public string szReserved;
        /// <summary>
        /// / 物体类别的类型, 0:未知, 1:Category, 2:InductiveVehicleType
        /// Type of object category, 0: unknown, 1: Category, 2: InductiveVehicleType
        /// </summary>
        public int nCategoryType;
        /// <summary>
        /// / 在Category类型基础上对车辆类型归纳后的类型
        /// Summarize the types of vehicles based on the Category type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szInductiveVehicleType;
        /// <summary>
        /// / 移动方向(比如钢包运动检测方向)LeftToRight,从左到右,RightToLeft,从右到左,TopToBottom，从上到下,BottomToTop，从下到上
        /// Move direction LeftToRight, RightToLeft, TopToBottom, BottomToTop
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szTextDirection;
        /// <summary>
        /// / 车辆上的二维码识别结果
        /// / QR code recognition result on the vehicle
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szQRCode;
        /// <summary>
        /// / 智能物体全局唯一物体标识
        /// / Intelligent object global unique object identification
        /// </summary>
        public NET_MSG_OBJECT_OBJECTUUID_INFO stuObjectUUID;
        /// <summary>
        /// / Text文本内容对应的区域编号
        /// / The area number corresponding to the text content
        /// </summary>
        public uint nTextRegionID;
        /// <summary>
        /// / 和相邻检测目标的距离，目前指的是工程车，单位：cm
        /// / Distance to the adjacent detection target, currently refers to the engineering vehicle, unit: cm
        /// </summary>
        public uint nCloseDistance;
        /// <summary>
        /// / 物体速度,单位为km/h
        /// / Object speed, unit: km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// / 车架号
        /// / VehicleID Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szVehicleIDNumber;
        /// <summary>
        /// / 车辆绊线方向 0:未知，1:A到B，2:B到A
        /// / Car Trip LineDirection: 0: unknown, 1: from A to B, 2: from B to A.
        /// </summary>
        public uint nCarTripLineDirection;
        /// <summary>
        /// / 车辆扩展信息，ObjectType为Vehicle时有效
        /// / Vehicle extension information, valid when Object Type is Vehicle
        /// </summary>
        public NET_VAO_EXTRA_VEHICLE_INFO stuVehicleExtra;
        /// <summary>
        /// / 交通违章UUID
        /// / Traffic violation UUID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]
        public string szTrafficUUID;
        /// <summary>
        /// / 字节对齐
        /// / For align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
        public string szReserved2;
        /// <summary>
        /// / 经度，单位：度,正为东经，负为西经，取值范围[-180,180]
        /// / Longitude, unit: degrees, positive for east longitude, negative for west longitude, range of values [-180180]
        /// </summary>
        public double dbLongitude;
        /// <summary>
        /// / 纬度，单位：度,正为北纬，负为南纬，取值范围[-90,90]
        /// / Latitude, unit: degrees, positive for north latitude, negative for south latitude, range of values [-90,90]
        /// </summary>
        public double dbLatitude;
        /// <summary>
        /// / 高程信息，单位：米
        /// / Elevation information, unit: meter
        /// </summary>
        public int nElevation;
        /// <summary>
        /// / 扩展字节
        /// / Extended bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 412)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 眼镜检测规则中报警类型
    /// glasses detection rule alarm type
    /// </summary>
    public enum EM_GLASSES_RULE_TYPE
    {
        /// <summary>
        /// 未知
        /// the unknown
        /// </summary>
        EM_GLASSES_RULE_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 无眼镜
        /// No glasses
        /// </summary>
        EM_GLASSES_RULE_TYPE_NO_GLASSES,
        /// <summary>
        /// 太阳镜
        /// sunglasses
        /// </summary>
        EM_GLASSES_RULE_TYPE_SUN_GLASSES,
        /// <summary>
        /// 黑框眼镜
        /// black-rimmed glasses
        /// </summary>
        EM_GLASSES_RULE_TYPE_BLACK_RIMMED_GLASSES,
        /// <summary>
        /// 半框眼镜
        /// half-rimmed glasses
        /// </summary>
        EM_GLASSES_RULE_TYPE_HALF_RIMMED_GLASSES,
        /// <summary>
        /// 无框眼镜
        /// his rimless glasses
        /// </summary>
        EM_GLASSES_RULE_TYPE_RIMLESS_GLASSES,
        /// <summary>
        /// 普通眼镜
        /// ordinary glasses
        /// </summary>
        EM_GLASSES_RULE_TYPE_NORMAL_GLASSES,
        /// <summary>
        /// 工业护目镜
        /// Industrial goggles
        /// </summary>
        EM_GLASSES_RULE_TYPE_INDUSTRIAL_SAFETY_GLASSES,
    }

    /// <summary>
    /// 眼镜相关属性状态信息
    /// Indicates the status of glasses related properties
    /// </summary>
    public struct NET_GLASSES_RELATED_INFO
    {
        /// <summary>
        /// 眼镜检测规则中报警类型
        /// Alarm type in glasses detection rules
        /// </summary>
        public EM_GLASSES_RULE_TYPE emGlassesType;
        /// <summary>
        /// 眼镜检测结果, 0-合规 1-不合规 2-未知
        /// Glasses test result: 0- compliant 1- non-compliant 2- unknown
        /// </summary>
        public int nGlassesLegalMask;
        /// <summary>
        /// 预留字节
        /// Reserve bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szReserved;
    }

    /// <summary>
    /// 呼吸面罩相关属性状态信息
    /// Indicates the status of glasses related properties
    /// </summary>
    public struct NET_BREATHING_MASK_INFO
    {
        /// <summary>
        /// 呼吸面罩检测结果, 0:未知，1:不合规，2:合规
        /// Respirator test results, 0: unknown, 1: non compliant, 2: compliant
        /// </summary>
        public int nHasLegalBreathingMask;
        /// <summary>
        /// 是否有穿着呼吸面罩, 0: 未知 1: 没有 2: 有
        /// Whether wearing a breathing mask, 0: unknown 1: no 2: yes
        /// </summary>
        public int nHasBreathingMask;
        /// <summary>
        /// 预留字节
        /// Reserve bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 56)]
        public string byReserved;
    }

    /// <summary>
    /// 防护服相关属性状态信息
    /// Relevant attribute status information of protective clothing
    /// </summary>
    public struct NET_PROTECTIVE_SUIT_INFO
    {
        /// <summary>
        /// 是否有穿着防护服, 0: 未知, 1: 没有, 2: 有, 3:不存在指定颜色的防护服
        /// Whether wearing protective Suit, 0: Unknown, 1: None, 2: Yes, 3: No protective clothing of the specified color exists
        /// </summary>
        public int nHasProtectiveSuit;
        /// <summary>
        /// 防护服颜色
        /// Protective Suit Color
        /// </summary>
        public EM_CLOTHES_COLOR emProtectiveSuitColor;
        /// <summary>
        /// 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
        public string szReserved;
    }

    /// <summary>
    /// 制服相关属性状态信息
    /// Status information of uniform related attributes
    /// </summary>
    public struct NET_UNIFORM_INFO
    {
        /// <summary>
        /// 是否有穿着制服, 0: 未知, 1: 没有, 2: 有, 3:不存在指定颜色制服
        /// Whether wearing uniform, 0: Unknown, 1: None, 2: Yes, 3: No uniform of the specified color exists
        /// </summary>
        public int nHasUniform;
        /// <summary>
        /// 制服颜色
        /// Uniform Color
        /// </summary>
        public EM_CLOTHES_COLOR emUniformColor;
        /// <summary>
        /// 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
        public string szReserved;
    }

    /// <summary>
    /// 安全绳相关属性状态信息
    /// Status information of relevant properties of safety ropes
    /// </summary>
    public struct NET_SAFETY_ROPE_INFO
    {
        /// <summary>
        /// 佩戴带安全绳是否合规, 0-不合规 1-合规 2-未知
        /// Whether the safety rope is in compliance, 0 - non-compliance 1 - compliance 2 - unknown
        /// </summary>
        public int nCompliantType;
        /// <summary>
        /// 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 28)]
        public string szReserved;
    }

    /// <summary>
    /// 安全带相关属性状态信息
    /// Safety belt related attribute status information
    /// </summary>
    public struct NET_SAFE_BELT_INFO
    {
        /// <summary>
        /// 是否穿安全带 , 0:未知，1:未穿安全带，2:穿了安全带
        /// Whether to wear safety belt, 0: unknown, 1: not wearing safety belt, 2: wearing safety belt
        /// </summary>
        public int nHasSafeBelt;
        /// <summary>
        /// 安全带检测结果, 0-合规 1-不合规 2-未知
        /// Safety belt test result, 0-compliant 1-noncompliant 2-unknown
        /// </summary>
        public int nHasLegalSafeBelt;
        /// <summary>
        /// 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
        public string szReserved;
    }

    /// <summary>
    /// 反光背心相关属性状态信息
    /// Reflective vest related attribute status information
    /// </summary>
    public struct NET_VEST_INFO
    {
        /// <summary>
        /// 是否穿反光背心, 0:未知，1:未穿反光背心，2:穿了反光背心
        /// Whether to wear reflective vest, 0: unknown, 1: no reflective vest, 2: reflective vest
        /// </summary>
        public int nHasVest;
        /// <summary>
        /// 反光背心检测结果, 0-合规 1-不合规 2-未知
        /// Reflective vest test result, 0-compliant 1-nonconforming 2-unknown
        /// </summary>
        public int nHasLegalVest;
        /// <summary>
        /// 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
        public string szReserved;
    }

    /// <summary>
    /// 劳保鞋相关属性状态信息
    /// Attribute status information about labor protection shoes
    /// </summary>
    public struct NET_SAFETY_SHOES_INFO
    {
        /// <summary>
        /// 是否穿劳保鞋, 0:未知，1:未穿劳保鞋，2:穿了劳保鞋
        /// Whether to wear labor protection shoes, 0: unknown, 1: no labor protection shoes, 2: wear labor protection shoes
        /// </summary>
        public int nHasSafetyShoes;
        /// <summary>
        /// 劳保鞋检测结果 , 0-合规 1-不合规 2-未知
        /// Test result of labor protection shoes, 0- compliance 1- non-compliance 2- unknown
        /// </summary>
        public int nHasLegalSafetyShoes;
        /// <summary>
        /// 预留字节
        /// Reserve bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
        public string szReserved;
    }

    /// <summary>
    /// 防割护腕相关属性状态信息
    /// Attribute status information about the anti-cutting wrist guard
    /// </summary>
    public struct NET_WRIST_GUARD_INFO
    {
        /// <summary>
        /// 是否穿防割护腕, 0:未知，1:未穿防割护腕，2:穿了防割护腕
        /// 0: unknown, 1: not worn, and 2: Yes
        /// </summary>
        public int nHasWristGuard;
        /// <summary>
        /// 防割护腕检测结果 , 0-合规 1-不合规 2-未知
        /// Test result of anti-cutting wrist guard: 0- compliant 1- non-compliant 2- unknown
        /// </summary>
        public int nHasLegalWristGuard;
        /// <summary>
        /// 预留字节
        /// Reserve bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_WORKCLOTHES_DETECT(工装(安全帽/工作服等)检测事件)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_WORKCLOTHES_DETECT (work clothes(helmet/clothes)detection)
    /// </summary>
    public struct NET_DEV_EVENT_WORKCLOTHES_DETECT_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 智能事件所属大类
        /// Class type
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Rule ID
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 物体ID
        /// Object ID
        /// </summary>
        public uint nObjectID;
        /// <summary>
        /// 事件组ID，一次检测的多个nGroupID相同
        /// Event group ID,A detection of multiple workclothes detectionat the same nGroupID
        /// </summary>
        public uint nGroupID;
        /// <summary>
        /// 一个事件组内的抓拍张数,一次检测的多个nCountInGroup相同
        /// the captured workclothes number within an event group,A detection of multiple workclothes detection at the same nCountInGroup
        /// </summary>
        public uint nCountInGroup;
        /// <summary>
        /// 一个事件组内的抓拍序号，从1开始
        /// capture Index of an event group,starting from 1
        /// </summary>
        public uint nIndexInGroup;
        /// <summary>
        /// 全景大图信息
        /// Scene image info
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 人体小图信息
        /// Human image info
        /// </summary>
        public NET_HUMAN_IMAGE_INFO stuHumanImage;
        /// <summary>
        /// 安全帽属性
        /// Helmet attribute
        /// </summary>
        public NET_HELMET_ATTRIBUTE stuHelmetAttribute;
        /// <summary>
        /// 工作服属性
        /// Work clothes attribute
        /// </summary>
        public NET_WORKCLOTHES_ATTRIBUTE stuWorkClothesAttribute;
        /// <summary>
        /// 工作裤颜色
        /// Work pants attribute
        /// </summary>
        public NET_WORKPANTS_ATTRIBUTE stuWorkPantsAttribute;
        /// <summary>
        /// 不规范报警类型 0-未知 1-防护服不规范 2: 工作服不规范3:安全帽不规范4:安全帽和工作服不规范
        /// Unstandard alarm type 0-unknown 1-Protective clothing no standard 2: Work clothes no standard 3:Helmet no standard 4:Work clothes and Helmet no standard
        /// </summary>
        public int nAlarmType;
        /// <summary>
        /// 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析，产生的多个事件的SourceID相同
        /// 格式：类型+时间+序列号，其中类型2位，时间14位，序列号5位
        /// 类型：02-图像 时间：YYYYMMDDhhmmss 序列号：00001
        /// Event source ID. When the same object or the same image is analyzed differently, the source ID of multiple events generated is the same
        /// Format: type + time + serial number, type 2, time 14, serial number 5
        /// Type: 02 image time: yyyymmddhhmmss serial number: 00001
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;
        /// <summary>
        /// 报警规则类型
        /// Rule type of work clothes(helmet/clothes)detection
        /// </summary>
        public EM_EVENT_WORKCLOTHES_RULE_TYPE emRuleType;
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 普通帽子相关属性状态信息
        /// Normal hat related attribute status information
        /// </summary>
        public NET_NORMALHAT_ATTRIBUTE stuNormalHat;
        /// <summary>
        /// 口罩相关属性状态信息
        /// Mask related attribute status information
        /// </summary>
        public NET_MASK_ATTRIBUTE stuMask;
        /// <summary>
        /// 围裙相关属性状态信息
        /// Apron related attribute status information
        /// </summary>
        public NET_APRON_ATTRIBUTE stuApron;
        /// <summary>
        /// 手套相关属性状态信息
        /// Glove related attribute status information
        /// </summary>
        public NET_GLOVE_ATTRIBUTE stuGlove;
        /// <summary>
        /// 靴子相关属性状态信息
        /// Boot related attribute status information
        /// </summary>
        public NET_BOOT_ATTRIBUTE stuBoot;
        /// <summary>
        /// 鞋套相关属性状态信息
        /// Shoe cover related attribute status information
        /// </summary>
        public NET_SHOESCOVER_ATTRIBUTE stuShoesCover;
        /// <summary>
        /// 无帽子相关属性状态信息
        /// No hat related attribute status information
        /// </summary>
        public NET_NOHAT_ATTRIBUTE stuNoHat;
        /// <summary>
        /// 防护面罩相关属性状态信息
        /// Relevant attribute status information of protective mask
        /// </summary>
        public NET_PROHELMET_ATTRIBUTE stuProhelmet;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 防火衣相关属性状态信息
        /// Relevant attribute status information of fireproof clothing
        /// </summary>
        public NET_FIREPROOF_CLOTHES stuFireProofClothes;
        /// <summary>
        /// 物体信息数据 < NET_A_MSG_OBJECT_EX2 >
        /// object info data < NET_A_MSG_OBJECT_EX2 >
        /// </summary>
        public IntPtr pstObjectInfo;
        /// <summary>
        /// 物体信息数
        /// object info number
        /// </summary>
        public uint nObjectNum;
        /// <summary>
        /// 眼镜相关属性状态信息
        /// Glasses info
        /// </summary>
        public NET_GLASSES_RELATED_INFO stuGlassesInfo;
        /// <summary>
        /// 呼吸面罩相关属性状态信息
        /// Status information of respiratory mask related attributes
        /// </summary>
        public NET_BREATHING_MASK_INFO stuBreathingMaskInfo;
        /// <summary>
        /// 防护服相关属性状态信息
        /// Relevant attribute status information of protective clothing
        /// </summary>
        public NET_PROTECTIVE_SUIT_INFO stuProtectiveSuitInfo;
        /// <summary>
        /// 制服相关属性状态信息
        /// Status information of uniform related attributes
        /// </summary>
        public NET_UNIFORM_INFO stuUniformInfo;
        /// <summary>
        /// 安全绳相关属性状态信息
        /// Status information of relevant properties of safety ropes
        /// </summary>
        public NET_SAFETY_ROPE_INFO stuSafetyRopeInfo;
        /// <summary>
        /// 安全带相关属性状态信息
        /// Safety belt related attribute status information
        /// </summary>
        public NET_SAFE_BELT_INFO stuSafeBeltInfo;
        /// <summary>
        /// 反光背心相关属性状态信息
        /// Reflective vest related attribute status information
        /// </summary>
        public NET_VEST_INFO stuVestInfo;
        /// <summary>
        /// 劳保鞋相关属性状态信息
        /// Safety shoes info
        /// </summary>
        public NET_SAFETY_SHOES_INFO stuSafetyShoesInfo;
        /// <summary>
        /// 防割护腕相关属性状态信息
        /// Wrist guard info
        /// </summary>
        public NET_WRIST_GUARD_INFO stuWristGuardInfo;
        /// <summary>
        /// 报警方式, 0:未知, 1:有不合规项即报警 2:所有合规才报警
        /// Legal Alarm Type, 0: Unknown, 1: Alarm if there are non compliant items, 2: Alarm only if all comply
        /// </summary>
        public uint nLegalAlarmType;
        /// <summary>
        /// 是否上报了Helmet属性
        /// Has the Helmet attribute been reported
        /// </summary>
        public byte bHelmet;
        /// <summary>
        /// 是否上报了Clothes属性
        /// Has the Clothes attribute been reported
        /// </summary>
        public byte bClothes;
        /// <summary>
        /// 是否上报了WorkPants属性
        /// Has the WorkPants attribute been reported
        /// </summary>
        public byte bWorkPants;
        /// <summary>
        /// 是否上报了NormalHat属性
        /// Has the NormalHat attribute been reported
        /// </summary>
        public byte bNormalHat;
        /// <summary>
        /// 是否上报了Mask属性
        /// Has the Mask attribute been reported
        /// </summary>
        public byte bMask;
        /// <summary>
        /// 是否上报了Apron属性
        /// Has the Apron attribute been reported
        /// </summary>
        public byte bApron;
        /// <summary>
        /// 是否上报了Glove属性
        /// Has the Glove attribute been reported
        /// </summary>
        public byte bGlove;
        /// <summary>
        /// 是否上报了Boot属性
        /// Has the Boot attribute been reported
        /// </summary>
        public byte bBoot;
        /// <summary>
        /// 是否上报了ShoesCover属性
        /// Has the ShoesCover attribute been reported
        /// </summary>
        public byte bShoesCover;
        /// <summary>
        /// 是否上报了NoHat属性
        /// Has the NoHat attribute been reported
        /// </summary>
        public byte bNoHat;
        /// <summary>
        /// 是否上报了Prohelmet属性
        /// Has the Prohelmet attribute been reported
        /// </summary>
        public byte bProhelmet;
        /// <summary>
        /// 是否上报了Glasses属性
        /// Has the Glasses attribute been reported
        /// </summary>
        public byte bGlasses;
        /// <summary>
        /// 是否上报了FireProofClothes属性
        /// Has the FireProofClothes attribute been reported
        /// </summary>
        public byte bFireProofClothes;
        /// <summary>
        /// 是否上报了ProtectiveSuit属性
        /// Has the ProtectiveSuit attribute been reported
        /// </summary>
        public byte bProtectiveSuit;
        /// <summary>
        /// 是否上报了Uniform属性
        /// Has the Uniform attribute been reported
        /// </summary>
        public byte bUniform;
        /// <summary>
        /// 是否上报了BreathingMask属性
        /// Has the BreathingMask attribute been reported
        /// </summary>
        public byte bBreathingMask;
        /// <summary>
        /// 是否上报了SafeBelt属性
        /// Has the SafeBelt attribute been reported
        /// </summary>
        public byte bSafeBelt;
        /// <summary>
        /// 是否上报了Vest属性
        /// Has the Vest attribute been reported
        /// </summary>
        public byte bVest;
        /// <summary>
        /// 是否上报了SafetyShoes属性
        /// Has the SafetyShoes attribute been reported
        /// </summary>
        public byte bSafetyShoes;
        /// <summary>
        /// 是否上报了WristGuard属性
        /// Has the WristGuard attribute been reported
        /// </summary>
        public byte bWristGuard;
        /// <summary>
        /// 是否上报了SafetyRope属性
        /// Has the SafetyRope attribute been reported
        /// </summary>
        public byte bSafetyRope;
        /// <summary>
        /// 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
        public string szResvered1;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 304 - 8)]
        public sbyte[] byReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 304 - 4)]
        public sbyte[] byReserved;
#endif
    }

    /// <summary>
    /// 安全帽属性
    /// </summary>
    public struct NET_HELMET_ATTRIBUTE
    {
        public EM_WORK_HELMET_STATE emHelmetState; // 安全帽佩戴状态
        public EM_CLOTHES_COLOR emHelmetColor; // 安全帽颜色
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved; // 保留字节,留待扩展.
    }
    // 安全帽佩戴状态
    public enum EM_WORK_HELMET_STATE
    {
        UNKNOWN,                                    // 未知  
        NOTWEAR,                                    // 不带安全帽
        WEAR,                                       // 有带安全帽
        EM_HELMET_STATE_INCONFORMITY_COLOR,     // 不存在指定颜色的安全帽
    }

    /// <summary>
    /// 工作服合法状态
    /// Legal status of work clothes
    /// </summary>
    public enum EM_CLOTHES_LEGAL_STATE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_CLOTHES_LEGAL_STATE_UNKNOWN,
        /// <summary>
        /// 不合法
        /// Wrongful
        /// </summary>
        EM_CLOTHES_LEGAL_STATE_WRONGFUL,
        /// <summary>
        /// 合法
        /// Legal
        /// </summary>
        EM_CLOTHES_LEGAL_STATE_LEGAL,
    }

    /// <summary>
    /// 工作服属性
    /// Attribute of work clothes
    /// </summary>
    public struct NET_WORKCLOTHES_ATTRIBUTE
    {
        /// <summary>
        /// 工作服穿戴状态
        /// The state of work clothes
        /// </summary>
        public EM_WORKCLOTHES_STATE emWorkClothesState;
        /// <summary>
        /// 工作服颜色
        /// Color of work clothes
        /// </summary>
        public EM_CLOTHES_COLOR emWorkClothColor;
        /// <summary>
        /// 工作服合法状态
        /// Work clothes legal state
        /// </summary>
        public EM_CLOTHES_LEGAL_STATE emWorkClothesLegalState;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }
    // 工作服穿戴状态
    public enum EM_WORKCLOTHES_STATE
    {
        UNKNOWN,                                    // 未知  
        NOTWEAR,                                    // 无工作服
        WEAR,                                       // 有工作服
    }

    /// <summary>
    /// 安全门人员通过方向
    /// Security gate person pass direction
    /// </summary>
    public enum EM_SECURITYGATE_PERSON_PASS_DIRECTION
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_SECURITYGATE_PERSON_PASS_DIRECTION_UNKNOWN = 0,
        /// <summary>
        /// 进入
        /// in
        /// </summary>
        EM_SECURITYGATE_PERSON_PASS_DIRECTION_IN,
        /// <summary>
        /// 离开
        /// out
        /// </summary>
        EM_SECURITYGATE_PERSON_PASS_DIRECTION_OUT,
    }

    /// <summary>
    /// 安全门人员报警级别
    /// Security gate person alarm level
    /// </summary>
    public enum EM_SECURITYGATE_ALARM_LEVEL
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_SECURITYGATE_ALARM_LEVEL_UNKNOWN = 0,
        /// <summary>
        /// 无报警
        /// no alarm
        /// </summary>
        EM_SECURITYGATE_ALARM_LEVEL_NON,
        /// <summary>
        /// 低危报警级别
        /// low level alarm
        /// </summary>
        EM_SECURITYGATE_ALARM_LEVEL_LOW,
        /// <summary>
        /// 中危报警级别
        /// middle level alarm
        /// </summary>
        EM_SECURITYGATE_ALARM_LEVEL_MIDDLE,
        /// <summary>
        /// 高危报警级别
        /// high level alarm
        /// </summary>
        EM_SECURITYGATE_ALARM_LEVEL_HIGH,
    }

    /// <summary>
    /// 安全门报警位置
    /// Position of security gate alarm
    /// </summary>
    public enum EM_SECURITYGATE_ALARM_POSITION
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_UNKNWON = -1,
        /// <summary>
        /// 左1
        /// left 1
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_LEFT_1,
        /// <summary>
        /// 左2
        /// left 2
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_LEFT_2,
        /// <summary>
        /// 左3
        /// left 3
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_LEFT_3,
        /// <summary>
        /// 左4
        /// left 4
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_LEFT_4,
        /// <summary>
        /// 左5
        /// left 5
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_LEFT_5,
        /// <summary>
        /// 左6
        /// left 6
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_LEFT_6,
        /// <summary>
        /// 中1
        /// middle 1
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_MIDDLE_1,
        /// <summary>
        /// 中2
        /// middle 2
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_MIDDLE_2,
        /// <summary>
        /// 中3
        /// middle 3
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_MIDDLE_3,
        /// <summary>
        /// 中4
        /// middle 4
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_MIDDLE_4,
        /// <summary>
        /// 中5
        /// middle 5
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_MIDDLE_5,
        /// <summary>
        /// 中6
        /// middle 6
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_MIDDLE_6,
        /// <summary>
        /// 右1
        /// right 1
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_RIGHT_1,
        /// <summary>
        /// 右2
        /// right 2
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_RIGHT_2,
        /// <summary>
        /// 右3
        /// right 3
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_RIGHT_3,
        /// <summary>
        /// 右4
        /// right 4
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_RIGHT_4,
        /// <summary>
        /// 右5
        /// right 5
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_RIGHT_5,
        /// <summary>
        /// 右6
        /// right 6
        /// </summary>
        EM_SECURITYGATE_ALARM_POSITION_RIGHT_6,
    }

    /// <summary>
    /// 安检门事件小图
    /// Small image of security check incident
    /// </summary>
    public struct NET_SECURITYGATE_ALARM_FACEIMAGE_INFO
    {
        /// <summary>
        /// 在二进制数据块中的偏移
        /// Offset in binary data block
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// 图片大小,单位字节
        /// Picture size, unit byte
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 安检门事件人员性别
    /// Gender of security gate incident personnel
    /// </summary>
    public enum EM_SECURITYGATE_SEX_TYPE
    {
        /// <summary>
        /// 男
        /// Man
        /// </summary>
        EM_SECURITYGATE_SEX_MAN = 0,
        /// <summary>
        /// 女
        /// Female
        /// </summary>
        EM_SECURITYGATE_SEX_WOMEN,
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_SECURITYGATE_SEX_UNKNOWN,
    }

    /// <summary>
    /// 安检门事件人员表情
    /// Security gate incident staff expression
    /// </summary>
    public enum EM_SECURITYGATE_EXPRESSION_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_SECURITYGATE_EXPRESSION_UNKNOWN = -1,
        /// <summary>
        /// 未识别
        /// Undefine
        /// </summary>
        EM_SECURITYGATE_EXPRESSION_UNDEFINE,
        /// <summary>
        /// 生气
        /// Anger
        /// </summary>
        EM_SECURITYGATE_EXPRESSION_ANGER,
        /// <summary>
        /// 悲伤
        /// Sad
        /// </summary>
        EM_SECURITYGATE_EXPRESSION_SAD,
        /// <summary>
        /// 厌恶
        /// Digust
        /// </summary>
        EM_SECURITYGATE_EXPRESSION_DISGUST,
        /// <summary>
        /// 恐惧
        /// Fear
        /// </summary>
        EM_SECURITYGATE_EXPRESSION_FEAR,
        /// <summary>
        /// 诧异
        /// Suipprised
        /// </summary>
        EM_SECURITYGATE_EXPRESSION_SURPRISED,
        /// <summary>
        /// 平静
        /// Calm
        /// </summary>
        EM_SECURITYGATE_EXPRESSION_CALM,
        /// <summary>
        /// 微笑
        /// Smile
        /// </summary>
        EM_SECURITYGATE_EXPRESSION_SMILE,
        /// <summary>
        /// 大笑
        /// Laugh
        /// </summary>
        EM_SECURITYGATE_EXPRESSION_LAUGH,
        /// <summary>
        /// 高兴
        /// Happy
        /// </summary>
        EM_SECURITYGATE_EXPRESSION_HAPPY,
        /// <summary>
        /// 困惑
        /// Confuse
        /// </summary>
        EM_SECURITYGATE_EXPRESSION_CONFUSE,
        /// <summary>
        /// 尖叫
        /// Scream
        /// </summary>
        EM_SECURITYGATE_EXPRESSION_SCREAM,
    }

    /// <summary>
    /// 安检门事件人员是否戴眼镜
    /// Whether the security check incident personnel wear glasses
    /// </summary>
    public enum EM_SECURITYGATE_GLASSES_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_SECURITYGATE_GLASSES_UNKNOWN = -1,
        /// <summary>
        /// 未识别
        /// Undefine
        /// </summary>
        EM_SECURITYGATE_GLASSES_UNDEFINE,
        /// <summary>
        /// 未戴眼镜
        /// Without glasses
        /// </summary>
        EM_SECURITYGATE_WITHOUT_GLASSES,
        /// <summary>
        /// 戴眼镜
        /// wear glasses
        /// </summary>
        EM_SECURITYGATE_WITH_GLASSES,
    }

    /// <summary>
    /// 温度类型
    /// Temperature type
    /// </summary>
    public enum EM_TEMPERATURE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_TEMPERATURE_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 未识别
        /// Undefine
        /// </summary>
        EM_TEMPERATURE_TYPE_UNDEFINE,
        /// <summary>
        /// 体温异常
        /// Abnormal
        /// </summary>
        EM_TEMPERATURE_TYPE_LOW,
        /// <summary>
        /// 体温正常
        /// Normal
        /// </summary>
        EM_TEMPERATURE_TYPE_NORMAL,
        /// <summary>
        /// 体温异常
        /// Abnormal
        /// </summary>
        EM_TEMPERATURE_TYPE_HIGH,
    }

    /// <summary>
    /// 安检门事件人员信息
    /// Security gate incident personnel information
    /// </summary>
    public struct NET_SECURITYGATE_ALARM_FACE_INFO
    {
        /// <summary>
        /// 性别
        /// gender
        /// </summary>
        public EM_SECURITYGATE_SEX_TYPE emSex;
        /// <summary>
        /// 年龄
        /// Age
        /// </summary>
        public int nAge;
        /// <summary>
        /// 表情
        /// Expression
        /// </summary>
        public EM_SECURITYGATE_EXPRESSION_TYPE emEmotion;
        /// <summary>
        /// 是否戴眼镜
        /// Whether to wear glasses
        /// </summary>
        public EM_SECURITYGATE_GLASSES_TYPE emGlasses;
        /// <summary>
        /// 是否带口罩
        /// Whether to wear a mask
        /// </summary>
        public EM_MASK_STATE_TYPE emMask;
        /// <summary>
        /// 是否有胡子
        /// Whether you have a beard
        /// </summary>
        public EM_BEARD_STATE_TYPE emBeard;
        /// <summary>
        /// 魅力值
        /// Charm value
        /// </summary>
        public int nAttractive;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// 嘴巴状态
        /// Mouth state
        /// </summary>
        public EM_MOUTH_STATE_TYPE emMouth;
        /// <summary>
        /// 眼睛状态
        /// Eye condition
        /// </summary>
        public EM_EYE_STATE_TYPE emEye;
        /// <summary>
        /// 体温
        /// Temperature
        /// </summary>
        public float fTemperature;
        /// <summary>
        /// 温度单位
        /// Temperature unit
        /// </summary>
        public EM_TEMPERATURE_UNIT emTempUnit;
        /// <summary>
        /// 体温类型
        /// Body temperature type
        /// </summary>
        public EM_TEMPERATURE_TYPE emTempType;
        /// <summary>
        /// 保留字段
        /// reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 考生考试信息
    /// Candidate exam information
    /// </summary>
    public struct NET_A_FACERECOGNITION_CUSTOM_EXAMINEE_INFO
    {
        /// <summary>
        /// 准考证号
        /// Examinee Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szExamineeNumber;
        /// <summary>
        /// 考场号
        /// Examinee Room Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szExamineeRoomNumber;
        /// <summary>
        /// 座位号
        /// Examinee Seat Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szExamineeSeatNumber;
        /// <summary>
        /// 保留字段
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 安全门注册人员信息
    /// Security gate registrant information
    /// </summary>
    public struct NET_SECURITYGATE_PERSON
    {
        /// <summary>
        /// 人员唯一标识符,首次由服务端生成,区别于ID字段
        /// The unique identifier of the person, generated by the server for the first time, different from the ID field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUID;
        /// <summary>
        /// 人员所属组ID
        /// ID of the group to which the person belongs
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupID;
        /// <summary>
        /// 性别
        /// gender
        /// </summary>
        public EM_SEX_TYPE emSexType;
        /// <summary>
        /// 姓名
        /// name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPersonName;
        /// <summary>
        /// 生日
        /// birthday
        /// </summary>
        public NET_TIME stuBirthday;
        /// <summary>
        /// 国籍,符合ISO3166规范
        /// Nationality, in line with ISO3166 specifications
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
        public string szCountry;
        /// <summary>
        /// 省份
        /// province
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProvince;
        /// <summary>
        /// 城市
        /// city
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCity;
        /// <summary>
        /// 地址
        /// adress
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szHomeAddress;
        /// <summary>
        /// 类型
        /// type
        /// </summary>
        public EM_CERTIFICATE_TYPE emCertificateType;
        /// <summary>
        /// 人员证件号码,工号,或其他编号
        /// Personnel ID number, job number, or other numbers
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szID;
        /// <summary>
        /// 考生考试信息
        /// Candidate exam information
        /// </summary>
        public NET_A_FACERECOGNITION_CUSTOM_EXAMINEE_INFO stuCustomExamineeInfo;
        /// <summary>
        /// 保留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 572)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 安全门候选人信息
    /// Security gate candidate information
    /// </summary>
    public struct NET_SECURITYGATE_CANDIDATE
    {
        /// <summary>
        /// 人员信息
        /// Personnel information
        /// </summary>
        public NET_SECURITYGATE_PERSON stuPerson;
        /// <summary>
        /// 抓拍相似度 1~100
        /// The similarity of captured 1~100
        /// </summary>
        public int nSimilarity;
        /// <summary>
        /// 保留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 分类报警信息
    /// Classification alarm information
    /// </summary>
    public struct NET_SECURITYGATE_ALARM_INFO
    {
        /// <summary>
        /// 报警位置，范围：0-9，分别对应10个区位
        /// Alarm position, range: 0-9, corresponding to 10 locations
        /// </summary>
        public uint nPosition;
        /// <summary>
        /// 分类检测结果物品类型 0:未分类, 1:手机类, 2:刀枪工具类, 3:易拉罐类, 4:马口铁类
        /// Item type of classified inspection result, 0: Uncategorized, 1: Mobile phone, 2: Knife and gun tools, 3: Cans, 4: Tinplate
        /// </summary>
        public uint nObjectType;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szResvered;
    }

    /// <summary>
    /// 注册库人员图片信息
    /// Registration database personnel image information
    /// </summary>
    public struct NET_SECURITYGATE_ALARM_CANDIDATE_IMAGES_INFO
    {
        /// <summary>
        /// 在二进制数据块中的偏移
        /// Offset
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// 图片大小,单位字节
        /// Image size in bytes
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 预留字节
        /// Reserved Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_SECURITYGATE_PERSONALARM （安全门人员报警事件）对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_SECURITYGATE_PERSONALARM (security gate person alarm)
    /// </summary>
    public struct NET_A_DEV_EVENT_SECURITYGATE_PERSONALARM_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 人员通过方向
        /// Direction
        /// </summary>
        public EM_SECURITYGATE_PERSON_PASS_DIRECTION emDirection;
        /// <summary>
        /// 报警级别
        /// Alarm level
        /// </summary>
        public EM_SECURITYGATE_ALARM_LEVEL emAlarmLevel;
        /// <summary>
        /// 关联进入通道
        /// In channel
        /// </summary>
        public int nChannelIn;
        /// <summary>
        /// 关联离开通道
        /// Out channel
        /// </summary>
        public int nChannelOut;
        /// <summary>
        /// 图片信息
        /// Image info
        /// </summary>
        public NET_INTELLIGENCE_IMAGE_INFO stuImageInfo;
        /// <summary>
        /// 报警位置个数
        /// Count of alarm position
        /// </summary>
        public uint nAlarmPositionNum;
        /// <summary>
        /// 报警位置 建议使用 emAlarmPositionEx
        /// Position of alarm It is recommended to use emAlarmPositionEx
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
        public EM_SECURITYGATE_ALARM_POSITION[] emAlarmPosition;
        /// <summary>
        /// 小图
        /// Small picture
        /// </summary>
        public NET_SECURITYGATE_ALARM_FACEIMAGE_INFO stuFaceImageInfo;
        /// <summary>
        /// 信息
        /// target info
        /// </summary>
        public NET_SECURITYGATE_ALARM_FACE_INFO stuSecurityGateFaceInfo;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// 候选人个数, 最大支持50
        /// Number of candidates, maximum support 50
        /// </summary>
        public int nCandidateNum;
        /// <summary>
        /// 候选人信息
        /// Candidate information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_SECURITYGATE_CANDIDATE[] stuCandidates;
        /// <summary>
        /// 门体分区 0表示6分区 1表示12分区 2表示18分区 3:表示10分区;4:表示33分区;
        /// 5:表示1分区;6:表示2分区;7:表示3分区;8:表示4分区;9:表示8分区;10:表示9分区;
        /// 11:表示16分区;12:表示20分区;13:表示24分区;14:表示36分区;15:表示40分区;16:表示45分区;17:表示48分区;18:表示60分区
        /// Door partition 0 means 6 partitions 1 means 12 partitions 2 means 18 partitions 3:means 10 partitions;4:means 33 partitions;
        /// 5:means 1 partitions;6:means 2 partitions;7:means 3 partitions;8:means 4 partitions;9:means 8 partitions;10:means 9 partitions;
        /// 11:means 16 partitions;12:means 20 partitions;13:means 24 partitions;14:means 36 partitions;15:means 40 partitions;16:means 45 partitions;17:means 48 partitions;18:means 60 partitions
        /// </summary>
        public uint nDoorRegion;
        /// <summary>
        /// 报警位置个数
        /// Number of alarm positions
        /// </summary>
        public int nAlaramPositionNum;
        /// <summary>
        /// 报警位置数组 建议使用 nAlaramPositionEx; 当nDoorRegion为0时，数组个数最多6个 0表示1区，1表示2区...5表示6区
        /// 当nDoorRegion为1时，数组个数最多12个 0表示左1,1表示右1,2表示左2,3表示右2...10表示左6,11表示右6
        /// 当nDoorRegion为2时，数组个数最多18个 0表示左1,1表示中1,2表示右2,3表示左1,4表示中1,5表示右2...15表示左6,16表示中6,17表示右6
        /// Alarm position array It is recommended to use nAlaramPositionEx When nDoorRegion is 0, the number of arrays is at most 6. 0 means zone 1, 1 means zone 2...5 means zone 6
        /// When nDoorRegion is 1, the number of arrays is up to 12, 0 means left 1, 1 means right 1, 2 means left 2, 3 means right 2...10 means left 6, 11 means right 6
        /// When nDoorRegion is 2, the number of arrays is at most 18. 0 means left 1, 1 means middle 1, 2 means right 2, 3 means left 1, 4 means middle 1, 5 means right 2...15 means left 6, 16 Means 6 in the middle, 17 means 6 from the right
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
        public uint[] nAlaramPosition;
        /// <summary>
        /// 报警位置个数拓展
        /// Number of alarm positions
        /// </summary>
        public uint nPositionNumEx;
        /// <summary>
        /// 报警位置拓展
        /// Alarm location expansion
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public EM_SECURITYGATE_ALARM_POSITION[] emAlarmPositionEx;
        /// <summary>
        /// 报警位置个数拓展
        /// Expansion of alarm position array number
        /// </summary>
        public int nAlaramPositionNumEx;
        /// <summary>
        /// 报警位置数组拓展 门体分区相关
        /// Expansion of alarm position array Door partition correlation
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public uint[] nAlaramPositionEx;
        /// <summary>
        /// 分类报警信息个数
        /// Number of classified alarm messages
        /// </summary>
        public int nAlarmInfoNum;
        /// <summary>
        /// 分类报警信息
        /// Classification alarm information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_SECURITYGATE_ALARM_INFO[] stuAlarmInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// DoorRegion门体分区对应的区位分布的行数
        /// DoorRegion partition row
        /// </summary>
        public int nPartitionRow;
        /// <summary>
        /// DoorRegion门体分区对应的区位分布的列数
        /// DoorRegion partition column
        /// </summary>
        public int nPartitionColumn;
        /// <summary>
        /// 注册库人员图片
        /// Registration database personnel image
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_SECURITYGATE_ALARM_CANDIDATE_IMAGES_INFO[] stuCandidateImages;
        /// <summary>
        /// 注册库人员图片个数
        /// Number of images of registered database personnel
        /// </summary>
        public int nCandidateImagesNum;
        /// <summary>
        /// / 分类报警信息个数
        /// / Number of classified alarm messages
        /// </summary>
        public int nAlarmInfoExNum;
        /// <summary>
        /// / 分类报警信息
        /// / Classification alarm information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_SECURITYGATE_ALARM_INFO[] stuAlarmInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 500)]
        public string szResvered;
    }

    // 事件类型 EVENT_IVS_RIOTERDETECTION (聚众事件)对应的数据块描述信息
    public struct NET_DEV_EVENT_RIOTERL_INFO
    {
        public int nChannelID;                         // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                        // 事件名称
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;                      // 字节对齐
        public double PTS;                                // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                // 事件发生的时间
        public int nEventID;                           // 事件ID
        public int nObjectNum;                         // 检测到的物体个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_MSG_OBJECT[] stuObjectIDs;   // 检测到的物体
        public NET_EVENT_FILE_INFO stuFileInfo;                        // 事件对应文件信息
        public byte bEventAction;                       // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;                      // 保留字节
        public byte byImageIndex;                       // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        public int nDetectRegionNum;                   // 规则检测区域顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;    // 规则检测区域
        public uint dwSnapFlagMask;                     // 抓图标志(按位),具体见NET_RESERVED_COMMON    
        public int nSourceIndex;                       // 事件源设备上的index,-1表示数据无效
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;           // 事件源设备唯一标识,字段不存在或者为空表示本地设备
        public uint nOccurrenceCount;                   // 事件触发累计次数
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;         // 智能事件公共信息
        public NET_EXTENSION_INFO stuExtensionInfo;                   // 扩展信息
        /// <summary>
        /// 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析，产生的多个事件的SourceID相同
        /// 缺省时为空字符串，表示无此信息
        /// 格式：类型+时间+序列号，其中类型2位，时间14位，序列号5位
        /// Event source ID. The application scenario is different analysis of the same object or the same picture, resulting in the same sourceid of multiple events
        /// The default is an empty string, indicating no such information
        /// Format: type + time + serial number, in which type 2 digits, time 14 digits and serial number 5 digits
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 328)]
        public byte[] bReserved;
    };

    /// <summary>
    /// 二维空间点
    /// 2 dimension point
    /// </summary>
    public struct NET_POINT_EX
    {
        public ushort nx;
        public ushort ny;
    }

    // 事件类型 EVENT_IVS_TUMBLE_DETECTION(倒地报警事件)对应数据块描述信息
    public struct NET_DEV_EVENT_TUMBLE_DETECTION_INFO
    {
        public int nChannelID;                         // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                        // 事件名称
        public int nAction;                            // 事件动作,1表示持续性事件开始,2表示持续性事件结束;
        public double PTS;                                // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                // 事件发生的时间
        public int nEventID;                           // 事件ID
        public int UTCMS;                            // UTC时间对应的毫秒数	
        public EM_CLASS_TYPE emClassType;                                // 智能事件所属大类
        public uint nObjectID;                            // 目标ID
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szObjectType;                                     // 物体类型,支持以下:
        //"Unknown", "Human", "Vehicle", "Fire", "Smoke", "Plate", "HumanFace",
        // "Container", "Animal", "TrafficLight", "PastePaper", "HumanHead", "BulletHole", "Entity"
        public NET_RECT stuBoundingBox;                                    // 包围盒(8192坐标系)
        /// <summary>
        /// 智能物体全局唯一物体标识
        /// 有效数据位21位，包含’\0’
        /// 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
        /// 中间14位YYYYMMDDhhmmss:年月日时分秒
        /// 后5位%u%u%u%u%u：物体ID，如00001
        /// Intelligent object global unique object identification
        /// Valid data bits are 21 bits, including '\0'
        /// Top 2 bits %d%d: 01-video clip, 02-picture, 03-file, 99-other
        /// Middle 14 bit yyyymmddhhmmss
        /// Last 5 bits %U%U%U%U%U: object ID, such as 00001
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 22)]
        public string szSerialUUID;
        /// <summary>
        /// 全景广角图
        /// Panoramic wide-angle map
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 检测区个数
        /// The number of vertices in the detection area
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 检测区
        /// Detection area,[0,8191]
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT_EX[] stuDetectRegion;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 834)]
        public byte[] bReserved;
    };

    /// <summary>
    /// 检测模式
    /// Detection mode
    /// </summary>
    public enum EM_EVENT_DETECT_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_EVENT_DETECT_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 小于等于阈值报警
        /// Less than or equal to the threshold alarm
        /// </summary>
        EM_EVENT_DETECT_TYPE_LESS_OR_EQUAL,
        /// <summary>
        /// 大于等于阈值报警
        /// greater than or equal to the threshold alarm
        /// </summary>
        EM_EVENT_DETECT_TYPE_GREATER_OR_EQUAL,
        /// <summary>
        /// 等于阀值报警
        /// equal to threshold alarm
        /// </summary>
        EM_EVENT_DETECT_TYPE_EQUAL,
        /// <summary>
        /// 不等于阀值报警
        /// Not equal to threshold alarm
        /// </summary>
        EM_EVENT_DETECT_TYPE_NOEQUAL,
        /// <summary>
        /// 人数变化报警
        /// Alarm for changes in the number of people
        /// </summary>
        EM_EVENT_DETECT_TYPE_CHANGE,
        /// <summary>
        /// 大于阈值报警
        /// greater than the threshold alarm
        /// </summary>
        EM_EVENT_DETECT_TYPE_GREATER,
        /// <summary>
        /// 小于阈值报警
        /// less than threshold alarm
        /// </summary>
        EM_EVENT_DETECT_TYPE_LESS,
        /// <summary>
        /// 区间内报警，检测人数在区间范围内报警，包括边界值。区间值对应PersonNum字段
        /// Alarm in the interval, the number of people detected in the interval is alarmed, including the boundary value.
        /// </summary>
        EM_EVENT_DETECT_TYPE_IN_INTERVAL,
        /// <summary>
        /// 区间外报警，检测人数在区间范围外报警，不包括边界值。区间值对应PersonNum字段
        /// Alarm outside the interval, alarm when the number of people detected is outside the interval, excluding the boundary value.
        /// </summary>
        EM_EVENT_DETECT_TYPE_OUT_INTERVAL,
    }

    // 事件类型EVENT_IVS_MAN_NUM_DETECTION(立体视觉区域内人数统计事件)对应数据块描述信息
    public struct NET_DEV_EVENT_MANNUM_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// </summary>
        public int nAction;
        /// <summary>
        /// 区域人员列表数量
        /// </summary>
        public int nManListCount;
        /// <summary>
        /// 区域内人员列表
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_MAN_NUM_LIST_INFO[] stuManList;
        /// <summary>
        /// 智能事件公共信息
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 区域ID(一个预置点可以对应多个区域ID)
        /// </summary>
        public uint nAreaID;
        /// <summary>
        /// 变化前人数
        /// </summary>
        public uint nPrevNumber;
        /// <summary>
        /// 当前人数
        /// </summary>
        public uint nCurrentNumber;
        /// <summary>
        /// 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析，产生的多个事件的SourceID相同
        /// 缺省时为空字符串，表示无此信息
        /// 格式：类型+时间+序列号，其中类型2位，时间14位，序列号5位
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szSourceID;
        /// <summary>
        /// 规则名称
        /// rule name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 检测模式
        /// Detection mode
        /// </summary>
        public EM_EVENT_DETECT_TYPE emDetectType;
        /// <summary>
        /// 实际触发报警的人数
        /// Alert number
        /// </summary>
        public uint nAlertNum;
        /// <summary>
        /// 报警类型. 0:未知, 1:从人数正常到人数异常, 2:从人数异常到人数正常
        /// Alarm type. 0: unknown, 1: from normal to abnormal, 2: from abnormal to normal
        /// </summary>
        public int nAlarmType;
        /// <summary>
        /// 图片信息数组 < NET_IMAGE_INFO_EX2 >
        /// Image information array < NET_IMAGE_INFO_EX2 >
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 检测区个数
        /// The number of vertices in the detection area
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 检测区
        /// Detection area,[0,8191]
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT_EX[] stuDetectRegion;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 700)]
        public string szReversed;
    }

    /// <summary>
    /// 立体视觉站立事件区域内人员列表
    /// </summary>
    public struct NET_MAN_NUM_LIST_INFO
    {
        public NET_A_RECT_EX stuBoudingBox;// 人员包围盒,8192坐标系
        public int nStature;// 人员身高，单位cm
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szReversed;                     // 保留字节
    }

    // 事件类型EVENT_IVS_TAILDETECTION(尾随事件)对应的数据块描述信息
    public struct NET_DEV_EVENT_TAIL_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel Id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 规则检测区域顶点数
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 抓图标志(按位),具体见 NET_RESERVED_COMMON
        /// 
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件源设备上的index,-1表示数据无效
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// 事件触发累计次数
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 智能事件公共信息
        /// 
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 图片信息数组
        /// Image information
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Image information number
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 484 - 8)]
        public byte[] bReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 484 - 4)]
        public byte[] bReserved;
#endif
    }

    /// <summary>
    /// 预置点的坐标和放大倍数
    /// Coordinates and magnification of preset points
    /// </summary>
    public struct NET_A_PTZ_PRESET_UNIT
    {
        /// <summary>
        /// 水平坐标，范围[0,3599]，表示0度到359.9度，度数扩大10倍表示。
        /// Horizontal coordinates, range [0,3599], which means 0 degrees to 359.9 degrees, and the number of degrees is expanded by 10 times.
        /// </summary>
        public int nPositionX;
        /// <summary>
        /// 垂直坐标，范围[-1800,1800]，表示-180.0度到+180.0度，度数扩大10倍表示。
        /// Vertical coordinates, range [-1800,1800], which means -180.0 degrees to +180.0 degrees, and the number of degrees is expanded by 10 times.
        /// </summary>
        public int nPositionY;
        /// <summary>
        /// 放大参数，范围[0,127]，表示最小倍到最大倍的变倍位置
        /// Zoom parameter, range [0,127], indicating the zoom position from minimum to maximum
        /// </summary>
        public int nZoom;
        /// <summary>
        /// 预留32字节
        /// Reserve 32 bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReserve;
    }

    /// <summary>
    /// 联动信息，保存其他设备传输的信息
    /// Linkage information, save information transmitted by other devices
    /// </summary>
    public struct NET_LINK_INFO
    {
        /// <summary>
        /// 联动物体ID
        /// Linked ObjectID
        /// </summary>
        public uint nLinkObjectID;
        /// <summary>
        /// 联动事件ID
        /// Linked EventID
        /// </summary>
        public uint nLinkEventID;
        /// <summary>
        /// 联动物体速度，单位米/秒，扩大100倍
        /// Linked object speed, in m/s, expanded by 100 times
        /// </summary>
        public uint nSpeedValue;
        /// <summary>
        /// 报警类型, 第0bit位表示是否超速(1表示超速,0表示未超速), 第1bit位表示是否AIS匹配, 第2bit位表示是否禁行, 第3bit位表示是否逆行
        /// Alarm type, the 0th bit indicates whether it is overspeeding (1 indicates overspeeding, 0 indicates not overspeeding), the 1st bit indicates whether the AIS matches, the 2nd bit indicates whether it is forbidden, and the 3rd bit indicates whether it is reversed
        /// </summary>
        public uint nAlarmType;
        /// <summary>
        /// 联动物体经度，(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274
        /// The longitude of the linked object, (unit is millionths of degrees, range 0-360 degrees) such as east longitude 120.178274 degrees is expressed as 300178274
        /// </summary>
        public uint nLongitude;
        /// <summary>
        /// 联动物体纬度，(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382
        /// 经纬度的具体转换方式可以参考结构体 NET_WIFI_GPS_INFO 中的注释
        /// The latitude of the linked object, (units are millionths of degrees, the range is 0-180 degrees), such as 30.183382 degrees north latitude, it is expressed as 120183382
        /// For the specific conversion method of latitude and longitude, please refer to the comments in the structure NET_WIFI_GPS_INFO
        /// </summary>
        public uint nLatitude;
        /// <summary>
        /// 联动物体距离，单位米，扩大100倍
        /// Linked object distance, in meters, expanded by 100 times
        /// </summary>
        public uint nDistance;
        /// <summary>
        /// 跟踪物体类型
        /// Track object type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szObjectType;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 212)]
        public string szResvered;
    }

    /// <summary>
    /// 全景广角图
    /// Scene Image info
    /// </summary>
    public struct NET_SCENE_IMAGE_INFO_EX2
    {
        /// <summary>
        /// 在二进制数据块中的偏移
        /// Offset in binary data block
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// 图片大小,单位字节
        /// Picture size, unit byte
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string byReserved;
    }

    // 事件类型EVENT_IVS_STAYDETECTION(停留事件)对应的数据块描述信息
    public struct NET_DEV_EVENT_STAY_INFO
    {
        public int nChannelID;                         // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                        // 事件名称
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;                      // 字节对齐
        public double PTS;                                // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                // 事件发生的时间
        public int nEventID;                           // 事件ID
        public NET_MSG_OBJECT stuObject;                //检测到的物体
        public NET_EVENT_FILE_INFO stuFileInfo;                        // 事件对应文件信息
        public byte bEventAction;                       // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;                      // 保留字节
        public byte byImageIndex;                       // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        public int nDetectRegionNum;                   // 规则检测区域顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;    // 规则检测区域
        public uint dwSnapFlagMask;                     // 抓图标志(按位),具体见NET_RESERVED_COMMON    
        public int nSourceIndex;                       // 事件源设备上的index,-1表示数据无效
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;           // 事件源设备唯一标识,字段不存在或者为空表示本地设备
        public uint nOccurrenceCount;                   // 事件触发累计次数
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;         // 智能事件公共信息
        public int nObjectNum;                         // 检测到的物体个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_MSG_OBJECT[] stuObjectIDs;   // 检测到的物体
        public uint nAreaID;							// 区域ID(一个预置点可以对应多个区域ID)
        public bool bIsCompliant;                       // 该场景下是否合规
        /// <summary>
        /// 预置点的坐标和放大倍数
        /// Coordinates and magnification of preset points
        /// </summary>
        public NET_A_PTZ_PRESET_UNIT stPosition;
        /// <summary>
        /// 当前报警通道的横向视场角,单位：度，实际角度乘以100
        /// The lateral field of view angle of the current alarm channel, unit: degree, the actual angle is multiplied by 100
        /// </summary>
        public uint nCurChannelHFOV;
        /// <summary>
        /// 当前报警通道的垂直视场角,单位：度，实际角度乘以100
        /// The vertical field of view angle of the current alarm channel, unit: degree, the actual angle is multiplied by 100
        /// </summary>
        public uint nCurChannelVFOV;
        /// <summary>
        /// 全景广角图
        /// Panoramic wide-angle map
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 联动信息，保存其他设备传输的信息
        /// Linkage information, save information transmitted by other devices
        /// </summary>
        public NET_LINK_INFO stuLinkInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 船只物体信息
        /// boat object
        /// </summary>
        public IntPtr pstuBoatObject;
        /// <summary>
        /// 船只物体信息个数
        /// boat object number
        /// </summary>
        public int nBoatObjectNum;
        /// <summary>
        /// 保留字节,留待扩展.
        /// reserved.
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 620 - 8)]
        public byte[] bReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 620 - 4)]
        public byte[] bReserved;
#endif
    }

    // 事件类型 EVENT_IVS_DISTANCE_DETECTION (异常间距事件) 对应的数据块描述信息
    public struct NET_DEV_EVENT_DISTANCE_DETECTION_INFO
    {
        public int nChannelID;                         // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                        // 事件名称
        public int nAction;                                      // 0:脉冲 1:开始 2:停止
        public double PTS;                                // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                // 事件发生的时间
        public int nEventID;                           // 事件ID
        public NET_MSG_OBJECT stuObject;                // 检测到的物体
        public int nDetectRegionNum;                   // 规则检测区域顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;       // 检测区域
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;         // 智能事件公共信息
        /// <summary>
        /// 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析，产生的多个事件的SourceID相同
        /// 缺省时为空字符串，表示无此信息
        /// 格式：类型+时间+序列号，其中类型2位，时间14位，序列号5位
        /// Event source ID. The application scenario is different analysis of the same object or the same picture, resulting in the same sourceid of multiple events
        /// The default is an empty string, indicating no such information
        /// Format: type + time + serial number, in which type 2 digits, time 14 digits and serial number 5 digits
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 980)]
        public byte[] byReserved;
    }

    //流量统计信息配置
    public struct NET_CFG_TRAFFIC_FLOWSTAT_INFO
    {
        public byte abPeriod;
        /// <summary>
        /// 保留字段1
        /// Reserved field 1
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved1;
        /// <summary>
        /// 统计周期，单位分钟
        /// Statistic period, unit: minute
        /// </summary>
        public int nPeriod;
        /// <summary>
        /// 车道数
        /// Lane number
        /// </summary>
        public int nLaneNum;
        /// <summary>
        /// 每个车道的流量配置，下标对应车道号
        /// Traffic flow setup of each lane, subscription is lane number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CFG_TRAFFIC_FLOWSTAT_INFO_LANE[] stuTrafficFlowstat;
        /// <summary>
        /// 车道数扩充最大值(用于申请内存),多场景应用多余的车道信息需要
        /// Lane number expanded maximum (used in application memory), more application scenario extra lane information needs
        /// </summary>
        public uint dwLaneExtraMaxNum;
        /// <summary>
        /// 多场景应用多余的车道数实际个数
        /// Multi-application scenarios actual number of extra lanes
        /// </summary>
        public uint dwLaneExtraRetNum;
        /// <summary>
        /// 多场景的车道数, stuTrafficFlowstat数组放不开的车道在这里继续保存，序号从车道MAX_LANE_NUM+1开始
        /// Scene on the number of lanes, stuTrafficFlowstat array put don't open lane here continue to save, the serial number starting from the driveway MAX_LANE_NUM + 1
        /// </summary>
        public IntPtr pstuTrafficFlowstat;
        /// <summary>
        /// 车流量统计周期，和nPeriod一起使用。单位毫秒,范围[0, 59999]
        /// Statistic period，use with nPeriod together。unit: milisecond,range [0, 59999]
        /// </summary>
        public uint nPeriodByMili;
        /// <summary>
        /// 保留字段2
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string bReserved2;
    }

    // 流量统计报警信息配置
    public struct NET_CFG_TRAFFIC_FLOWSTAT_ALARM_INFO
    {
        /// <summary>
        /// 是否使能
        /// Enable or not
        /// </summary>
        public byte bEnable;
        /// <summary>
        /// 统计周期，单位：分钟
        /// Statistic period, unit:minute
        /// </summary>
        public int nPeriod;
        /// <summary>
        /// 统计周期内车辆数上下限，单位：辆
        /// Vehicle max and min limit during the statistics period, unit: vehicle
        /// </summary>
        public int nLimit;
        /// <summary>
        /// 统计周期内报警恢复车辆数，单位：辆
        /// Alarm resume vehicle number during the statistics period, unit: vehicle
        /// </summary>
        public int nRestore;
        /// <summary>
        /// 检测到报警发生到开始上报的时间, 单位:秒,范围1~65535
        /// Period from the alarm detection to the alarm upload. Unit:second range 1~65535
        /// </summary>
        public int nDelay;
        /// <summary>
        /// 报警间隔时间, 单位:秒, 范围1~65535
        /// Alarm interval, unit:second, range value 1~65535
        /// </summary>
        public int nInterval;
        /// <summary>
        /// 上报次数,1~255
        /// Report times:1~255
        /// </summary>
        public int nReportTimes;
        /// <summary>
        /// 当前计划时间段
        /// Current schedule period
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stCurrentTimeSection;
        /// <summary>
        /// 报警联动
        /// Alarm linkage
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
    }

    //流量统计信息每个车道配置
    public struct NET_CFG_TRAFFIC_FLOWSTAT_INFO_LANE
    {
        public byte abEnable;
        /// <summary>
        /// 是否使能
        /// Enable or not
        /// </summary>
        public byte bEnable;
        /// <summary>
        /// 报警上线参数
        /// Alarm max limit
        /// </summary>
        public NET_CFG_TRAFFIC_FLOWSTAT_ALARM_INFO stuAlarmUpperInfo;
        /// <summary>
        /// 报警下线参数
        /// Alarm min limit
        /// </summary>
        public NET_CFG_TRAFFIC_FLOWSTAT_ALARM_INFO stuAlarmLowInfo;
        /// <summary>
        /// 检测区顶点数
        /// detect region point
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区域
        /// detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 当前车道规则名称，不同规则不能重名
        /// lane rule name,not repeat
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 云台所在预置点编号(仅球机有效)
        /// PTZ in the preset point number (ball machine effectively only)
        /// </summary>
        public int nPresetID;
        /// <summary>
        /// 表示车流量检测线是否有效
        /// the detection line of vehicle flow is effective or not
        /// </summary>
        public bool bIsDetectLine;
        /// <summary>
        /// 车流量检测线,若不配置，算法自动生成检测线
        /// the detection line of vehicle flow
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_CFG_POLYGON[] stuDetectLine;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_FLOWSTATE(交通流量事件)对应数据块描述信息
    /// EVENT_IVS_TRAFFIC_FLOWSTATE (Corresponding data block description)
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_FLOW_STATE
    {
        /// <summary>
        /// / 通道号
        /// (Channel number)
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件名称
        /// (Event name)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 规则编号,用于标示哪个规则触发的事件，缺省时默认为0
        /// Rule ID, used to indicate which rule triggers the event. The default value is 0
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// / 字节对齐
        /// (Byte alignment)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// (Timestamp (in milliseconds))
        /// </summary>
        public uint PTS;
        /// <summary>
        /// / 事件发生的时间
        /// (Time for the event occurred)
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// / 事件ID
        /// (Event ID)
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / 序号
        /// (No.)
        /// </summary>
        public int nSequence;
        /// <summary>
        /// / 流量状态数量
        /// (the number of traffic state)
        /// </summary>
        public int nStateNum;
        /// <summary>
        /// / 流量状态, 每个车道对应数组中一个元素
        /// (Flow state, each lane corresponding to an element in the array)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_TRAFFIC_FLOW_STATE[] stuStates;
        /// <summary>
        /// / 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// / 静止车辆数，当前时刻检测范围内车速小于某个阀值的车辆数，单位：辆
        /// Vehicle count of speed lower than the threshold value
        /// </summary>
        public int nStopVehiclenum;
        /// <summary>
        /// / 车辆总数，当前时刻检测范围内检测到的所有车道内的车辆总数，单位：辆
        /// Vehicle count in the detection area
        /// </summary>
        public int nDetectionAreaVehicleNum;
        /// <summary>
        /// / 保留字节
        /// (Reserved bytes)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 884)]
        public byte[] bReserved;
    }

    // 车辆行驶方向
    public enum EM_NET_FLOWSTAT_DIRECTION
    {
        UNKNOW = 0,                                        //兼容之前
        APPROACH,                                          //上行,即车辆离设备部署点越来越近
        LEAVE,                                             //下行,即车辆离设备部署点越来越远
    }

    /// <summary>
    /// 车辆流量统计车辆行驶方向信息
    /// Vehicle flow statistics lane direction information
    /// </summary>
    public struct NET_TRAFFIC_FLOWSTAT_INFO_DIR
    {
        /// <summary>
        /// /行驶方向
        /// (Driving direction)
        /// </summary>
        public EM_NET_FLOWSTAT_DIRECTION emDrivingDir;
        /// <summary>
        /// /上行地点
        /// (Uplink locations)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szUpGoing;
        /// <summary>
        /// /下行地点
        /// (Go down location)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDownGoing;
        /// <summary>
        /// /保留字节
        /// (Reserved bytes)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] reserved;
    }

    /// <summary>
    /// 道路拥挤状况
    /// road jam status
    /// </summary>
    public enum EM_NET_TRAFFIC_JAM_STATUS
    {
        /// <summary>
        /// /未知
        /// unknown
        /// </summary>
        UNKNOW = 0,
        /// <summary>
        /// /通畅
        /// clear
        /// </summary>
        CLEAR,
        /// <summary>
        /// /拥堵
        /// jammed
        /// </summary>
        JAMMED,
        /// <summary>
        /// /缓行
        /// slowed
        /// </summary>
        SLOWED,
    }

    /// <summary>
    /// 道路等级
    /// road rank
    /// </summary>
    public enum EM_NET_TRAFFIC_ROAD_RANK
    {
        UNKNOWN = 0,
        /// <summary>
        /// /快速路
        /// rapid
        /// </summary>
        RAPID = 1,
        /// <summary>
        /// /主干路
        /// trunk
        /// </summary>
        TRUNK = 2,
        /// <summary>
        /// /次干路
        /// subtrunk
        /// </summary>
        SUBTRUNK = 3,
        /// <summary>
        /// /支路
        /// branch
        /// </summary>
        BRANCH = 4,
    }

    //车道流量信息属性
    public enum EM_NET_FLOW_ATTRIBUTE
    {
        UNKNOWN = 0,
        FLOW_DETECTION,								// 流量监测
        QUEUE_DETECTION,							// 排队检测
    }

    /// <summary>
    /// 车道流量信息属性
    /// Flow attribute
    /// </summary>
    public enum EM_NET_EM_FLOW_ATTRIBUTE
    {
        EM_FLOW_ATTRIBUTE_UNKNOWN = 0,
        /// <summary>
        /// / 流量监测
        /// Flow detection
        /// </summary>
        EM_FLOW_ATTRIBUTE_FLOW_DETECTION,
        /// <summary>
        /// / 排队检测
        /// Queue detection
        /// </summary>
        EM_FLOW_ATTRIBUTE_QUEUE_DETECTION,
    }

    /// <summary>
    /// 车辆排队长度溢出状态
    /// overflow state of car queue
    /// </summary>
    public enum EM_NET_EM_OVER_FLOW_STATE
    {
        /// <summary>
        /// / 状态未知
        /// unknown
        /// </summary>
        EM_OVER_FLOW_STATE_UNKNOWN = 0,
        /// <summary>
        /// / 未溢出
        /// not overflow
        /// </summary>
        EM_OVER_FLOW_STATE_NOT_OVERFLOW,
        /// <summary>
        /// / 溢出
        /// overflow
        /// </summary>
        EM_OVER_FLOW_STATE_OVERFLOW,
    }

    /// <summary>
    /// 空间占有率统计信息
    /// Space Occupancy Statistics
    /// </summary>
    public struct NET_SPACE_OCCUPY_RATIO_MULTI
    {
        /// <summary>
        /// / 空间占有率统计区域的ID
        /// ID of the space occupancy statistics area
        /// </summary>
        public uint nID;
        /// <summary>
        /// / 对应ID的空间占有率，即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离
        /// The space occupancy rate of the corresponding ID, that is, the sum of the vehicle lengths measured as a percentage divided by the average distance traveled by the vehicle in the time interval
        /// </summary>
        public float fSpaceOccupyRatio;
        /// <summary>
        /// / 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szReserverd;
    }

    /// <summary>
    /// 车辆类型流量
    /// Vehicle type flow rate
    /// </summary>
    public struct NET_VEHICLE_TYPE_FLOW
    {
        /// <summary>
        /// / 铲车交通量(辆/单位时间)
        /// / Forklift traffic volume (vehicles/unit time)
        /// </summary>
        public int nShovelLoaderVehicles;
        /// <summary>
        /// / 禽畜车交通量(辆/单位时间)
        /// / Traffic volume of livestock and poultry vehicles (vehicles/unit time)
        /// </summary>
        public int nPoultryVehicles;
        /// <summary>
        /// / 押运车交通量(辆/单位时间)
        /// / Traffic volume of escort vehicles (vehicles/unit time)
        /// </summary>
        public int nEscortVehicles;
        /// <summary>
        /// / 泵车交通量(辆/单位时间)
        /// / Pump truck traffic volume (vehicles/unit time)
        /// </summary>
        public int nPumpTruckVehicles;
        /// <summary>
        /// / 吊车交通量(辆/单位时间)
        /// / Crane traffic volume (vehicles/unit time)
        /// </summary>
        public int nCraneVehicles;
        /// <summary>
        /// / 推土车交通量(辆/单位时间)
        /// / Traffic volume of bulldozers (vehicles/unit time)
        /// </summary>
        public int nBulldozerVehicles;
        /// <summary>
        /// / 挖掘车交通量(辆/单位时间)
        /// / Excavation vehicle traffic volume (vehicles/unit time)
        /// </summary>
        public int nExcavatorVehicles;
        /// <summary>
        /// / 不载人敞篷三轮车交通量(辆/单位时间)
        /// / Traffic volume of open top tricycles without passengers (vehicles/unit time)
        /// </summary>
        public int nNoMannedConvertibleTricycleVehicles;
        /// <summary>
        /// / 载人敞篷三轮车交通量(辆/单位时间)
        /// / Traffic volume of manned open top tricycles (vehicles/unit time)
        /// </summary>
        public int nMannedConvertibleTricycleVehicles;
        /// <summary>
        /// / 厢式三轮车交通量(辆/单位时间)
        /// / Traffic volume of box type tricycles (vehicles/unit time)
        /// </summary>
        public int nVanTricycleVehicles;
        /// <summary>
        /// / 自行车交通量(辆/单位时间)
        /// / Bicycle traffic volume (vehicles/unit time)
        /// </summary>
        public int nBicycleVehicles;
        /// <summary>
        /// / 校车交通量(辆/单位时间)
        /// / School bus traffic volume (vehicles/unit time)
        /// </summary>
        public int nSchoolBusVehicles;
        /// <summary>
        /// / 二轮车交通量(辆/单位时间)
        /// / Traffic volume of two wheeled vehicles (vehicles/unit time)
        /// </summary>
        public int nTwocycleVehicles;
        /// <summary>
        /// / 普通罐车交通量(辆/单位时间)
        /// / Traffic volume of ordinary tank trucks (vehicles/unit time)
        /// </summary>
        public int nNormalTankTrunkVehicles;
        /// <summary>
        /// / 吸污车交通量(辆/单位时间)
        /// / Traffic volume of suction vehicles (vehicles/unit time)
        /// </summary>
        public int nSuctionSewageTruckVehicles;
        /// <summary>
        /// / 粉粒物料车交通量(辆/单位时间)
        /// / Traffic volume of powder material trucks (vehicles/unit time)
        /// </summary>
        public int nPowerLotVehicleVehicles;
        /// <summary>
        /// / 工程车交通量(辆/单位时间)
        /// / Traffic volume of construction vehicles (vehicles/unit time)
        /// </summary>
        public int nMachineshopTruckVehicles;
        /// <summary>
        /// / 拖拉机交通量(辆/单位时间)
        /// / Tractor traffic volume (vehicles/unit time)
        /// </summary>
        public int nTractorVehicles;
        /// <summary>
        /// / 消防车交通量(辆/单位时间)
        /// / Traffic volume of fire trucks (vehicles/unit time)
        /// </summary>
        public int nFireEngineVehicles;
        /// <summary>
        /// / 环卫车交通量(辆/单位时间)（包括洒水车、垃圾车、清扫车等）
        /// / Traffic volume of sanitation vehicles (vehicles/unit time) (including sprinkler trucks, garbage trucks, cleaning vehicles, etc.)
        /// </summary>
        public int nWateringCarVehicles;
        /// <summary>
        /// / 救护车交通量(辆/单位时间)
        /// / Ambulance traffic volume (vehicles/unit time)
        /// </summary>
        public int nAmbulanceVehicles;
        /// <summary>
        /// / 警车交通量((辆/单位时间)
        /// / Police vehicle traffic volume (vehicles/unit time)
        /// </summary>
        public int nPoliceVehicles;
        /// <summary>
        /// / 出租车交通量(辆/单位时间)
        /// / Taxi traffic volume (vehicles/unit time)
        /// </summary>
        public int nTaxiVehicles;
        /// <summary>
        /// / 槽罐车车交通量(辆/单位时间)
        /// / Traffic volume of tank car vehicles (vehicles/unit time)
        /// </summary>
        public int nSlotTankCarVehicles;
        /// <summary>
        /// / 渣土车交通量(辆/单位时间)
        /// / Traffic volume of dump trucks (vehicles/unit time)
        /// </summary>
        public int nDregsCarVehicles;
        /// <summary>
        /// / 混凝土搅拌车交通量(辆/单位时间)
        /// / Traffic volume of concrete mixer trucks (vehicles/unit time)
        /// </summary>
        public int nConcreteMixerTruckVehicles;
        /// <summary>
        /// / 挂车交通量(辆/单位时间)
        /// / Trailer traffic volume (vehicles/unit time)
        /// </summary>
        public int nTrailerVehicles;
        /// <summary>
        /// / 保留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserverd;
    }

    /// <summary>
    /// 流量状态
    /// Vehicle type flow rate
    /// </summary>
    public struct NET_TRAFFIC_FLOW_STATE
    {
        /// <summary>
        /// / 车道号
        /// (Lane number)
        /// </summary>
        public int nLane;
        /// <summary>
        /// / 状态值 若emJamState字段为有效值(不为 JAM_STATUS_UNKNOW) ,则dwState字段无效
        /// / 1- 流量过大
        /// / 2- 流量过大恢复
        /// / 3- 正常
        /// / 4- 流量过小
        /// / 5- 流量过小恢复
        /// (State value) if emJamState is valid,then dwState is invalid
        /// (1 - heavy traffic)
        /// (2-heavy traffic recovery)
        /// (3-normal)
        /// (4 - Flow is too little)
        /// (5-Traffic too low recovery)
        /// </summary>
        public uint dwState;
        /// <summary>
        /// / 流量值, 单位: 辆
        /// (Flow value, units: vehicles)
        /// </summary>
        public uint dwFlow;
        /// <summary>
        /// / 流量值对应的统计时间, 单位:分钟。与dwPeriodByMili一起使用。
        /// Corresponding statistical time of the flow value,Unit:minute,Used with dwPeriodByMili.
        /// </summary>
        public uint dwPeriod;
        /// <summary>
        /// / 车道方向信息
        /// (Lane direction information)
        /// </summary>
        public NET_TRAFFIC_FLOWSTAT_INFO_DIR stTrafficFlowDir;
        /// <summary>
        /// / 通过车辆总数
        /// (Total number of passing vehicles)
        /// </summary>
        public int nVehicles;
        /// <summary>
        /// / 平均车速,单位km/h
        /// (Average speed, unit km / h)
        /// </summary>
        public float fAverageSpeed;
        /// <summary>
        /// / 平均车长,单位米
        /// (The average vehicle length, unit meters)
        /// </summary>
        public float fAverageLength;
        /// <summary>
        /// / 时间占有率,即单位时间内通过断面的车辆所用时间的总和占单位时间的比例
        /// (Share of the time , i.e., The ratio of the sum time for the vehicle passing the cross-section in the unit time and per unit time )
        /// </summary>
        public float fTimeOccupyRatio;
        /// <summary>
        /// / 空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离
        /// (Share of the space ,is the result that the average driving distance intervals vehicle is divided the sum of the length of the vehicle measured by the percentage
        /// </summary>
        public float fSpaceOccupyRatio;
        /// <summary>
        /// / 车头间距,相邻车辆之间的距离,单位米/辆
        /// (Headway, the distance between adjacent vehicles in m / vehicle)
        /// </summary>
        public float fSpaceHeadway;
        /// <summary>
        /// / 车头时距,单位秒/辆
        /// (Headway in seconds / vehicle)
        /// </summary>
        public float fTimeHeadway;
        /// <summary>
        /// / 车辆密度,每公里的车辆数,单位辆/km
        /// (Vehicle density, the number of vehicles per kilometer, unit vehicles / km)
        /// </summary>
        public float fDensity;
        /// <summary>
        /// / 超速车辆数
        /// (The number of Speeding vehicles)
        /// </summary>
        public int nOverSpeedVehicles;
        /// <summary>
        /// / 低速车辆数
        /// (The number of low speeding vehicles)
        /// </summary>
        public int nUnderSpeedVehicles;
        /// <summary>
        /// / 大车交通量(9米<车长<12米),辆/单位时间
        /// (Carts traffic (9 m <car length <12 m), vehicle / unit time)
        /// </summary>
        public int nLargeVehicles;
        /// <summary>
        /// / 中型车交通量(6米<车长<9米),辆/单位时间
        /// (Medium car Traffic 6 m <car length <9 meters), vehicle / unit time
        /// </summary>
        public int nMediumVehicles;
        /// <summary>
        /// / 小车交通量(4米<车长<6米),辆/单位时间,
        /// (Car Traffic 4 m <car length <6 meters), vehicle / unit time
        /// </summary>
        public int nSmallVehicles;
        /// <summary>
        /// / 摩托交通量(微型车,车长<4米),辆/单位时间,
        /// (Motorized traffic (mini-car, car length <4 m), vehicle / unit time,
        /// </summary>
        public int nMotoVehicles;
        /// <summary>
        /// / 超长交通量(车长>=12米),辆/单位时间,
        /// (long traffic (car length> = 12 m), vehicle / unit time,
        /// </summary>
        public int nLongVehicles;
        /// <summary>
        /// / 交通量, 辆/单位时间, 某时间间隔通过车道、道路或其他通道上一点的车辆数,常以1小时计,
        /// (Traffic, vehicles / unit time, the number of vehicles which pass through the lane, the road and other vehicles, caculated in one hour)
        /// </summary>
        public int nVolume;
        /// <summary>
        /// / 流率小车当量,辆/小时, 车辆通过车道、道路某一断面或某一路段的当量小时流量
        /// (Flow rate of the car, Vehicles / hour, equivalent hours for Vehicle through the lane, a section or a section of the road)
        /// </summary>
        public int nFlowRate;
        /// <summary>
        /// / 排队长度,单位：米, 从信号交叉口停车线到上游排队车辆末端之间的距离(建议废掉 改用dBackOfQueue下面)
        /// (Queue length, unit: m, distance from the signalized intersection stop line between the upstream end of the line vehicle)(proposed repeal)
        /// </summary>
        public int nBackOfQueue;
        /// <summary>
        /// / 旅行时间,单位：秒, 车辆通过某一条道路所用时间。包括所有停车延误
        /// (Travel time, unit: second, a road vehicle used by a certain time. Including all parking delays)
        /// </summary>
        public int nTravelTime;
        /// <summary>
        /// / 延误,单位：秒,驾驶员、乘客或行人花费的额外的行程时间
        /// (Delay unit: seconds, extra travel time for the driver, passenger or pedestrian spend)
        /// </summary>
        public int nDelay;
        /// <summary>
        /// / 车道方向,详见NET_ROAD_DIRECTION
        /// lane direction, see NET_ROAD_DIRECTION
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] byDirection;
        /// <summary>
        /// / 车道行驶方向个数
        /// lane direction quantity
        /// </summary>
        public byte byDirectionNum;
        /// <summary>
        /// / 字节对齐
        /// text align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] reserved1;
        /// <summary>
        /// / 道路拥挤状况 若此字段为有效值(不为 JAM_STATUS_UNKNOW) ,则以此字段为准, dwState字段无效
        /// road jam status. if emJamState is valid,then dwState is invalid
        /// </summary>
        public EM_NET_TRAFFIC_JAM_STATUS emJamState;
        /// <summary>
        /// / 客车交通量(辆/单位时间)
        /// Passenger vehicle statistics amount (amount/hour)
        /// </summary>
        public int nPassengerCarVehicles;
        /// <summary>
        /// / 大货车交通量(辆/单位时间)
        /// Large truck statistics amount
        /// </summary>
        public int nLargeTruckVehicles;
        /// <summary>
        /// / 中货车交通量(辆/单位时间)
        /// Medium truck statistics amount (amount/hour)
        /// </summary>
        public int nMidTruckVehicles;
        /// <summary>
        /// / 轿车交通量(辆/单位时间)
        /// Car statistics amount (amount/hour)
        /// </summary>
        public int nSaloonCarVehicles;
        /// <summary>
        /// / 面包车交通量(辆/单位时间)
        /// Minivan statistics amount (amount/hour)
        /// </summary>
        public int nMicrobusVehicles;
        /// <summary>
        /// / 小货车交通量(辆/单位时间)
        /// Small van statistics amount (amount/hour)
        /// </summary>
        public int nMicroTruckVehicles;
        /// <summary>
        /// / 三轮车交通量(辆/单位时间)
        /// Tricycle statistics amount (amount/hour)
        /// </summary>
        public int nTricycleVehicles;
        /// <summary>
        /// / 摩托车交通量(辆/单位时间)
        /// Motor statistics amount (amount/hour)
        /// </summary>
        public int nMotorcycleVehicles;
        /// <summary>
        /// / 行人交通量(辆/单位时间)
        /// Pedestrian statistics amount (amount/hour)
        /// </summary>
        public int nPasserbyVehicles;
        /// <summary>
        /// / 道路等级
        /// road rank
        /// </summary>
        public EM_NET_TRAFFIC_ROAD_RANK emRank;
        /// <summary>
        /// / 流量状态
        /// / 1- 流量过大(拥堵)
        /// / 2- 流量过大恢复(略堵)
        /// / 3- 正常
        /// / 4- 流量过小(通畅)
        /// / 5- 流量过小恢复(良好)
        /// State value
        /// (1 - heavy traffic)
        /// (2-heavy traffic recovery)
        /// (3-normal)
        /// (4 - Flow is too little)
        /// (5-Traffic too low recovery)
        /// </summary>
        public int nState;
        /// <summary>
        /// / 车头虚拟线圈是否被占用 TURE表示占用，FALSE表示未占用
        /// indicating whether the head coil is occupyied
        /// </summary>
        public bool bOccupyHeadCoil;
        /// <summary>
        /// / 车尾虚拟线圈是否被占用 TURE表示占用，FALSE表示未占用
        /// indicating whether the tail coil is occupyied
        /// </summary>
        public bool bOccupyTailCoil;
        /// <summary>
        /// / 流量数据是否有效 TURE表示有效，FALSE表示无效
        /// indicating whether the statistics is valid
        /// </summary>
        public bool bStatistics;
        /// <summary>
        /// / 左转车辆总数,单位:分钟
        /// (Total nubmer of turn left Vehicles, unit: min)
        /// </summary>
        public int nLeftVehicles;
        /// <summary>
        /// / 右转车辆总数,单位:分钟
        /// (Total number of turn right Vehicles, unit: min)
        /// </summary>
        public int nRightVehicles;
        /// <summary>
        /// / 直行车辆总数,单位:分钟
        /// (Total number of straight-head Vehicles,unit: min)
        /// </summary>
        public int nStraightVehicles;
        /// <summary>
        /// / 掉头车辆总数,单位:分钟
        /// (Total number of U-turn Vehicles,unit: min)
        /// </summary>
        public int nUTurnVehicles;
        /// <summary>
        /// / 每个车道的最后一辆车坐标,采用8192坐标系
        /// the last car coordinate in a quene of lane,coordinate value range: [0,8191]
        /// </summary>
        public NET_POINT stQueueEnd;
        /// <summary>
        /// / 排队长度,单位：米, 从信号交叉口停车线到上游排队车辆末端之间的距离
        /// (Queue length, unit: m, distance from the signalized intersection stop line between the upstream end of the line vehicle)
        /// </summary>
        public double dBackOfQueue;
        /// <summary>
        /// / 流量值的毫秒时间,值不超过60000,和dwPeriod一起使用,流量值总时间:dwPeriod*60*1000+dwPeriodByMili(单位：毫秒)
        /// Corresponding statistical time of the flow millisecond value,Value is not more than 60000.Used with dwPeriod,statistical total time of the flow value:dwPeriod*60*1000+dwPeriodByMili(Unit:millisecond)
        /// </summary>
        public uint dwPeriodByMili;
        /// <summary>
        /// / 公交车交通量(辆/单位时间)
        /// Bus vehicle statistics amount (amount/hour)
        /// </summary>
        public int nBusVehicles;
        /// <summary>
        /// / MPV交通量(辆/单位时间)
        /// MPV vehiclestatistics amount (amount/hour)
        /// </summary>
        public int nMPVVehicles;
        /// <summary>
        /// / 中客车交通量(辆/单位时间)
        /// midpassenger car vehicle statistics amount (amount/hour)
        /// </summary>
        public int nMidPassengerCarVehicles;
        /// <summary>
        /// / 微型轿车交通量(辆/单位时间)
        /// mini carriage vehicle statistics amount (amount/hour)
        /// </summary>
        public int nMiniCarriageVehicles;
        /// <summary>
        /// / 油罐车交通量(辆/单位时间)
        /// oil tank trunk vehicle statistics amount (amount/hour)
        /// </summary>
        public int nOilTankTruckVehicles;
        /// <summary>
        /// / 皮卡车交通量(辆/单位时间)
        /// pick up vehicle statistics amount (amount/hour)
        /// </summary>
        public int nPickupVehicles;
        /// <summary>
        /// / SUV交通量(辆/单位时间)
        /// SUV vehicle statistics amount (amount/hour)
        /// </summary>
        public int nSUVVehicles;
        /// <summary>
        /// / SUV或者MPV交通量(辆/单位时间)
        /// SUV or MPV vehicle statistics amount (amount/hour)
        /// </summary>
        public int nSUVorMPVVehicles;
        /// <summary>
        /// / 危化品车交通量(辆/单位时间)
        /// Hazardous chemical vehicle vehicle statistics amount (amount/hour)
        /// </summary>
        public int nTankCarVehicles;
        /// <summary>
        /// / 未知车辆交通量(辆/单位时间)
        /// unknown vehicle statistics amount (amount/hour)
        /// </summary>
        public int nUnknownVehicles;
        /// <summary>
        /// / 车道流量信息属性
        /// Flow attribute
        /// </summary>
        public EM_NET_EM_FLOW_ATTRIBUTE emCustomFlowAttribute;
        /// <summary>
        /// / 道路空闲长度，例：如设定路段长度为100米，实际检测到排队长度为30米，那么道路空闲长度就为70米，单位：米
        /// Road Free Length. unit:meter
        /// </summary>
        public int nRoadFreeLength;
        /// <summary>
        /// / 溢出状态。例：如给当前路段设定允许排队长度阀值，实际排队长度超过阀值后就判定当前时刻该路段有溢出。
        /// overflow state of car queue.
        /// </summary>
        public EM_NET_EM_OVER_FLOW_STATE emOverflowState;
        /// <summary>
        /// / 排队车辆数，单位：辆
        /// Number of queued vehicles
        /// </summary>
        public int nQueueVehicleNum;
        /// <summary>
        /// / 空间占有率统计个数
        /// Count of Space Occupancy Statistics
        /// </summary>
        public int nSpaceOccupyRatioMultiCount;
        /// <summary>
        /// / 空间占有率统计信息
        /// Space Occupancy Statistics
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_SPACE_OCCUPY_RATIO_MULTI[] stuSpaceOccupyRatioMulti;
        /// <summary>
        /// / 停车次数，周期内该车道内所有目标的总停车次数，单位:次
        /// Number of stops, total number of stops of all targets in the lane in the cycle, unit: Times
        /// </summary>
        public uint nTotalStopNum;
        /// <summary>
        /// / 延误时间，周期内该车道内所有目标的总延误时间，单位：毫秒
        /// Delay time, total delay time of all targets in the lane in the cycle, unit: ms
        /// </summary>
        public uint nTotalDelayTime;
        /// <summary>
        /// / 目标总数量，周期内进入该车道内所有目标总数量，单位 辆
        /// Total target quantity, total target quantity of all vehicles entering the lane in the cycle, unit: Vehicle
        /// </summary>
        public uint nTotalNum;
        /// <summary>
        /// / 平均停车次数，周期内该车道所有目标的平均停车次数。单位：次
        /// average number of stops, average number of stops of all targets in the lane in the cycle, unit: Times
        /// </summary>
        public float fAverageStopNum;
        /// <summary>
        /// / 平均延误时间，周期内该车道所有目标的平均延误时间。单位：毫秒
        /// average delay time, average delay time of all targets in the lane in the cycle, unit: ms
        /// </summary>
        public float fAverageDelayTime;
        /// <summary>
        /// / 流量饱和度，该车道内的流量饱和度
        /// Flow saturation ratio,flow saturation ratio in the lane
        /// </summary>
        public float fFlowSaturationRatio;
        /// <summary>
        /// / 最大排队长度，周期内最大排队长度，单位:米
        /// the maximum queue length,the maximum queue length in the lane in the cycle,unit:meter
        /// </summary>
        public float fMaxQueueLen;
        /// <summary>
        /// / 排队开始位置，排队时队首距设备的位置，以设备方向为正，负数表示队首在设备后方，单位：米
        /// Queue starting point,The position at the head of the queue away from the device,take the device direction as positive,unit:meter
        /// </summary>
        public float fQueueStartingPoint;
        /// <summary>
        /// / 排队结束位置，排队时队尾距设备的位置，以设备方向为正，负数表示队尾在设备后方，单位：米
        /// Queue finishing point,The position at the end of the queue away from the device,take the device direction as positive,unit:meter
        /// </summary>
        public float fQueueFinishingPoint;
        /// <summary>
        /// / 空间占有目标个数，即区域车辆数，该车道内指定区域的车辆数目，支持车道内多区域统计，不同区域车辆数使用|符号分隔。
        /// The number of space occupancy targets, that is, the number of vehicles in the area. The number of vehicles in the designated area in the lane supports the multi-area statistics in the lane. The number of vehicles in different areas is separated by the | symbol.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSpaceOccupyNum;
        /// <summary>
        /// / 云台预置点,球机预置点必大于0
        /// / Preset point of the head, the preset point of the ball machine must be greater than 0
        /// </summary>
        public int nPresetID;
        /// <summary>
        /// / 车辆类型流量
        /// / Vehicle type flow rate
        /// </summary>
        public IntPtr pstuVehicleTypeFlow;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 88 - 8)]
        public byte[] reserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 88 - 4)]
        public byte[] reserved;
#endif
    }

    // 交通流量记录查询条件
    public struct NET_FIND_RECORD_TRAFFICFLOW_CONDITION
    {
        public uint dwSize;
        public bool abChannelId;                      // 通道号查询条件是否有效  
        public int nChannelId;                        // 通道号
        public bool abLane;                           // 车道号查询条件是否有效
        public int nLane;                             // 车道号
        public bool bStartTime;                       // 开始时间查询条件是否有效   
        public NET_TIME stStartTime;                      // 开始时间
        public bool bEndTime;                        // 结束时间查询条件是否有效
        public NET_TIME stEndTime;                        // 结束时间 
        public bool bStatisticsTime;                 // 查询是否为统计时间，bStartTime及bEndTime均为TRUE
    }

    // 交通流量记录
    public struct NET_RECORD_TRAFFIC_FLOW_STATE
    {
        public uint dwSize;
        public int nRecordNum;                 // 记录编号
        public int nChannel;                   // 通道号   
        public int nLane;                      // 车道号
        public int nVehicles;                  // 通过车辆总数
        public float fAverageSpeed;              // 平均车速,单位km/h
        public float fTimeOccupyRatio;           // 时间占有率,即单位时间内通过断面的车辆所用时间的总和占单位时间的比例
        public float fSpaceOccupyRatio;          // 空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离
        public float fSpaceHeadway;              // 车头间距,相邻车辆之间的距离,单位米/辆
        public float fTimeHeadway;               // 车头时距,单位秒/辆
        public int nLargeVehicles;             // 大车交通量(9米<车长<12米),辆/单位时间
        public int nMediumVehicles;            // 中型车交通量(6米<车长<9米),辆/单位时间
        public int nSmallVehicles;             // 小车交通量(4米<车长<6米),辆/单位时间,
        public float fBackOfQueue;               // 排队长度,单位：米, 从信号交叉口停车线到上游排队车辆末端之间的距离
        public int nPasserby;                  // 通过行人数
    }

    // 外部报警状态信息对应结构体
    public struct NET_CLIENT_ALARM_STATE
    {
        public uint dwSize;
        public int alarminputcount;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public uint[] dwAlarmState; //每一个DWORD按位表示32通道的报警状态, 0-表示无报警, 1-表示有报警
    }

    /// <summary>
    /// 投放文件信息
    /// delivery file infoex
    /// </summary>
    public struct NET_DELIVERY_FILE_INFOEX
    {
        /// <summary>
        /// 文件类型
        /// file type
        /// </summary>
        public EM_DELIVERY_FILE_TYPE emFileType;
        /// <summary>
        /// 文件的资源地址
        /// fiel URL
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFileURL;
        /// <summary>
        /// 每张图片停留多长时间，单位秒 (emFileType为EM_DELIVERY_FILE_TYPE_IMAGE时此字段有效)
        /// How long each picture stays, in seconds (this field is valid when emFileType is EM_DELIVERY_FILE_TYPE_IMAGE)
        /// </summary>
        public int nImageSustain;
        /// <summary>
        /// 文件所属的模式
        /// The mode the file belongs to
        /// </summary>
        public EM_PLAY_WITH_MODE emPlayWithMode;
        /// <summary>
        /// NET_OUT_GET_ADVERTIMENT_CAPS中bSupport为true时填写此字段，并且szFileURL填空
        /// Fill in this field when bSupport in NET_OUT_GET_ADVERTIMENT_CAPS is true, and fill in szFileURL
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szFileURLEx;
        /// <summary>
        /// 播放时间段。
        /// Time section
        /// </summary>
        public NET_CFG_TIME_SCHEDULE stuTimeSection;
        /// <summary>
        /// 文件大小
        /// size
        /// </summary>
        public int nSize;
        /// <summary>
        /// 文件编号
        /// ID
        /// </summary>
        public int nID;
        /// <summary>
		/// 文字广告 
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szTXTContents;
        /// <summary>
		/// 屏蔽播放时间段字段
        /// UnUse TimeSection
        /// </summary>
        public bool bUnUseTimeSection;
        /// <summary>
		/// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 操作类型
    /// operatetype
    /// </summary>
    public enum EM_VIDEO_PLAY_OPERATE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_VIDEO_PLAY_OPERATE_TYPE_UNKNOWN,
        /// <summary>
        /// 替换
        /// replace
        /// </summary>
        EM_VIDEO_PLAY_OPERATE_TYPE_REPLACE,
        /// <summary>
        /// 新增
        /// add
        /// </summary>
        EM_VIDEO_PLAY_OPERATE_TYPE_ADD,
        /// <summary>
        /// 删除
        /// remove
        /// </summary>
        EM_VIDEO_PLAY_OPERATE_TYPE_REMOVE,
        /// <summary>
        /// 清空
        /// clear
        /// </summary>
        EM_VIDEO_PLAY_OPERATE_TYPE_CLEAR,
    }

    // 向视频输出口投放视频和图片文件对应结构体
    public struct NET_CTRL_DELIVERY_FILE
    {
        public uint dwSize;                             // 结构体大小
        public int nPort;                               // 视频输出口
        public EM_VIDEO_PLAY_MODE_TYPE emPlayMode;      // 播放类型
        public NET_TIME stuStartPlayTime;               // 开始播放的时间
        public NET_TIME stuStopPlayTime;                // 结束播放的时间，emPlayMode为EM_VIDEO_PLAY_MODE_TYPE.REPEAT时，此值有效    
        public int nFileCount;                          // 投放的文件个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_DELIVERY_FILE_INFO[] stuFileInfo;    // 投放的文件信息
        /// <summary>
        /// 操作类型。如无该字段，默认为EM_VIDEO_PLAY_OPERATE_TYPE_REPLACE
        /// Operation type. If there is no such field, the default is EM_VIDEO_PLAY_OPERATE_TYPE_REPLACE
        /// </summary>
        public EM_VIDEO_PLAY_OPERATE_TYPE emOperateType;
        /// <summary>
        /// 投放的文件个数
        /// file count
        /// </summary>
        public int nFileCountEx;
        /// <summary>
        /// 投放的文件信息
        /// file info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_DELIVERY_FILE_INFOEX[] stuFileInfoEx;
        /// <summary>
        /// 当前广告计划编号,调用者可以通过此编号来设置不同广告计划
        /// The current advertising plan number, the caller can use this number to set up different advertising plans
        /// </summary>
        public int nNumber;
        /// <summary>
        /// 播放时间段
        /// Play time period
        /// </summary>
        public NET_CFG_TIME_SCHEDULE stuTimeSection;
        /// <summary>
        /// 播放使能
        /// Play enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 广告名称
        /// Advertisement name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
		/// <summary>
		/// 屏蔽播放时间段字段
        /// UnUse TimeSection
        /// </summary>
        public bool bUnUseTimeSection;
    }

    //视频播放模式
    public enum EM_VIDEO_PLAY_MODE_TYPE
    {
        UNKNOWN = 0,// 未知
        ONCE = 1,	//播放一次
        REPEAT,     // 循环播放
    }

    // 投放文件信息
    public struct NET_DELIVERY_FILE_INFO
    {
        public EM_DELIVERY_FILE_TYPE emFileType;        // 文件类型
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFileURL;                        // 文件的资源地址
        public int nImageSustain;                       // 每张图片停留多长时间，单位秒 (emFileType为EM_DELIVERY_FILE_TYPE.IMAGE时此字段有效)
        public EM_PLAY_WITH_MODE emPlayWithMode;        // 文件所属的模式
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;                         // 保留字节
    }

    //投放的文件类型
    public enum EM_DELIVERY_FILE_TYPE
    {
        UNKNOWN = 0, // 未知
        VIDEO,	     // 视频
        IMAGE,       // 图片
        AUDIO,       // 音频
    }

    //文件所属的模式
    public enum EM_PLAY_WITH_MODE
    {
        UNKNOWN = 0, // 未知
        RECOGNITION,                      // 识别模式
        INFORMATION_RELEASE,              // 信息发布模式
        MAIN_INTERFACE,                   // 主界面模式
    }

    //AccessControlCustomPassword记录集中密码的保存方式
    public enum EM_CUSTOM_PASSWORD_ENCRYPTION_MODE
    {
        UNKNOWN = 0,                    // 未知
        PLAINTEXT,                      // 明文
        MD5,                            // MD5加密方式
    }

    //是否支持功能
    public enum EM_SUPPORTFINGERPRINT
    {
        UNKNOWN = 0,                    // 未知
        NONSUPPORT,                      // 不支持功能
        SUPPORT,                            // 支持功能
    }

    // 假日计划
    public struct NET_SPECIAL_DAYS_SCHEDULE
    {
        public bool bSupport;                      // 是否支持假日计划
        public int nMaxSpecialDaysSchedules;       // 设备支持的最大计划数量
        public int nMaxTimePeriodsPerDay;          // 每天最多的时间段
        public int nMaxSpecialDayGroups;           // 设备支持的最大假日组数
        public int nMaxDaysInSpecialDayGroup;      // 每个假日组里最大的假日数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;                         // 保留字节
    }

    //是否支持门禁快速导入功能
    public enum EM_SUPPORT_FAST_IMPORT_TYPE
    {
        UNKNOWN = -1,            // 未知
        NONSUPPORT,              // 不支持
        SUPPORT,                 // 支持
    }

    //是否支持门禁快速复核功能
    public enum EM_SUPPORT_FAST_CHECK_TYPE
    {
        UNKNOWN = -1,            // 未知
        NONSUPPORT,              // 不支持
        SUPPORT,                 // 支持
    }

    public enum EM_CITIZENIDCARD_EC_TYPE
    {
        Unknown = 0,             // 未知
        Han,                     // 汉族
        Mongolian,               // 蒙古族
        Hui,                     // 回族
        Tibetan,                 // 藏族
        Uygur,                   // 维吾尔族
        Miao,                    // 苗族
        Yi,                      // 彝族
        Zhuang,                  // 壮族
        Bouyei,                  // 布依族
        Korean,                  // 朝鲜族
        Manchu,                  // 满族
        Dong,                    // 侗族
        Yao,                     // 瑶族
        Bai,                     // 白族
        Tujia,                   // 土家族
        Hani,                    // 哈尼族
        Kazak,                   // 哈萨克族
        Dai,                     // 傣族
        Li,                      // 黎族
        Lisu,                    // 傈僳族
        Va,                      // 佤族
        She,                     // 畲族
        Gaoshan,                 // 高山族
        Lahu,                    // 拉祜族
        Shui,                    // 水族
        Dongxiang,               // 东乡族
        Naxi,                    // 纳西族
        Jingpo,                  // 景颇族
        Kirgiz,                  // 柯尔克孜族
        Tu,                      // 土族
        Daur,                    // 达斡尔族
        Mulam,                   // 仫佬族
        Qoiang,                  // 羌族
        Blang,                   // 布朗族
        Salar,                   // 撒拉族
        Maonan,                  // 毛南族
        Gelo,                    // 仡佬族
        Xibe,                    // 锡伯族
        Achang,                  // 阿昌族
        Pumi,                    // 普米族
        Tajik,                   // 塔吉克族
        Nu,                      // 怒族
        Ozbek,                   // 乌孜别克族
        Russian,                 // 俄罗斯族
        Ewenkl,                  // 鄂温克族
        Deang,                   // 德昂族
        Bonan,                   // 保安族
        Yugur,                   // 裕固族
        Jing,                    // 京族
        Tatar,                   // 塔塔尔族
        Drung,                   // 独龙族
        Oroqen,                  // 鄂伦春族
        Hezhen,                  // 赫哲族
        Moinba,                  // 门巴族
        Lhoba,                   // 珞巴族
        Jino                     // 基诺族
    }

    // 性别
    public enum NET_ACCESSCTLCARD_SEX
    {
        UNKNOWN,
        MALE,                           // 男
        FEMALE,                         // 女    
    }

    // 帽子款式
    public enum EM_HAT_STYLE
    {
        UNKNOWN,                                 // 未知
        ORDINARY,                                // 普通帽子
        HELMET,                                  // 头盔
        SAFETYHAT,                               // 安全帽
        EAVELESS,                                // 无檐帽
        PEAKEDCAP,                               // 鸭舌帽
        FISHERMANHAT,                            // 渔夫帽
        NONE,                                    // 未戴帽
    }

    // 统一后的颜色枚举
    public enum EM_UNIFIED_COLOR_TYPE
    {
        TRANSPARENT = -1,              // 透明
        UNKNOWN,                       // 未知
        WHITE,                         // 白色
        ORANGE,                        // 橙色
        PINK,                          // 粉色
        BLACK,                         // 黑色
        RED,                           // 红色
        YELLOW,                        // 黄色
        GRAY,                          // 灰色
        BLUE,                          // 蓝色
        GREEN,                         // 绿色
        PURPLE,                        // 紫色
        BROWN,                         // 棕色	
    }

    // 其他规则
    public enum EM_OTHER_RULE_TYPE
    {
        UNKOWN,              // 未知
        AVERAGE_STAYTIME,    // 平均滞留时间	
    }

    // 错误代码，emOperateType操作类型为ET_FACERECONGNITIONDB_DELETE_BY_UID时使用
    public enum EM_ERRORCODE_TYPE
    {
        UNKNOWN = -1,               // 未知错误
        SUCCESS,               // 成功
        PERSON_NOT_EXIST,            // 人员不存在
        DATABASE_ERROR,             //  数据库操作失败
    }

    // 以图搜图查询模式
    public enum EM_FINDPIC_QUERY_MODE
    {
        UNKNOWN,               // 未知
        PASSIVE,               // 被动查询
        ACTIVE,                // 主动推送
    }

    // 以图搜图结果上报排序方式
    public enum EM_FINDPIC_QUERY_ORDERED
    {
        SIMILARITY,         // 按相似度从高到底
        TIME_FORWARD,       // 按时间正序
        TIME_REVERSE,       // 按时间倒序
    }

    // 对象目标类型NET_FACE_MATCH_OPTIONS
    public enum EM_OBJECT_TYPE
    {
        UNKNOWN = -1,         // 未知
        FACE,                    // 人脸
        HUMAN,                   // 人体
        VECHILE,                 // 机动车
        NOMOTOR,                 // 非机动车
        ALL,                     // 所有类型
    }

    // 注册库属性
    public enum EM_REGISTER_DB_TYPE
    {
        UNKNOWN,        // 未知
        NORMAL,         // 普通库
        BLACKLIST,      // 禁止名单
        WHITELIST,      // 允许名单
        VIP,            // 
        STAFF,          // 员工库
        LEADER,         // 领导库
    }


    // 硬盘电源状态
    public enum EM_STORAGE_DISK_POWERMODE
    {
        UNKNOWN,                                  // UNKnown状态（不是以下状态中的值）
        NONE,                                     // 未知状态
        ACTIVE,                                   // 活动状态
        STANDBY,                                  // 休眠状态
        IDLE,                                     // 空闲状态
    }

    // 硬盘预检状态(字段,配合磁盘预检功能使用)
    public enum EM_STORAGE_DISK_PREDISKCHECK
    {
        UNKNOWN,                               // UnKnown状态
        GOOD,                                  // 硬盘读速度到120以上,smart信息里有少量的错误,其他无任何错误.
        WARN,                                  // cmd信息里有少量错误记录,smart信息有错误记录
        ERROR,                                 // cmd信息有错误记录,smart信息由错误记录.坏扇区有坏扇区记录
        WILLFAIL,                              // 硬盘速度比较低64M以下.cmd信息有错误记录,smart信息由错误记录.坏扇区有坏扇区记录
        FAIL,                                  // 硬盘返回错误
        NONE,                                  // 未知状态
        BECHECK,                               // 正在查询中状态
        CHECKFAIL,                             // 查询失败状态
    }

    //对应C++中的NET_PIC_INFO，名字被占用，换个名字
    public struct NET_PIC_INFO_CPP
    {
        public uint dwFileLenth;                   // 文件大小, 单位:字节
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;                         // 文件路径
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] bReserved;                         // 保留字节
    }

    // 开始打标签, CLIENT_TagManagerStartTag 输入参数
    public struct NET_IN_TAGMANAGER_STARTTAG_INFO
    {
        public uint dwSize;                   // 结构体大小
        public int nChannel;                               // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szContext;                         // 标签内容	
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szContextEx;                         // 标签内容扩展
        public byte bIsUsingContextEx;                      // 扩展标签是否有用
    }

    // 开始打标签, CLIENT_TagManagerStartTag 输出参数
    public struct NET_OUT_TAGMANAGER_STARTTAG_INFO
    {
        public uint dwSize;                   // 结构体大小
    }

    // 子标签信息
    public struct NET_TAGMANAGER_SUB_TAG_INFO
    {
        public NET_TIME stuTime;                               // 子标签时间
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSubTagName;// 子标签名字
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;                         // 保留字节
    }

    // 标签状态
    public struct NET_TAGMANAGER_TAGSTATE_INFO
    {
        public int nChannel;                               // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szContext;// 标签内容,废弃,请使用szContextEx	
        public NET_TIME stuStartTime;                          // 标签开始时间
        public int nSubTagVaildNum;                        // 子标签(stuSubTag)有效个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_TAGMANAGER_SUB_TAG_INFO[] stuSubTag;                         // 保留字节
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szContextEx;                         // 标签内容扩展
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 768)]
        public byte[] byReserved;                         // 保留字节
    }

    // 获取设备打标签状态, CLIENT_TagManagerGetTagState 输入参数
    public struct NET_IN_TAGMANAGER_GETTAGSTATE_INFO
    {
        public uint dwSize;                   // 结构体大小
    }

    // 获取设备打标签状态, CLIENT_TagManagerGetTagState 输出参数
    public struct NET_OUT_TAGMANAGER_GETTAGSTATE_INFO
    {
        public uint dwSize;                   // 结构体大小
        public int nState;                             // 打标签状态, 0未打标签, 1正在打标签
        public int nMaxTagStaeNumber;                  // 标签数组(pstuTagStateInfo)的最大个数
        public int nRetTagStaeNumber;                  // 标签数组(pstuTagStateInfo)的实际返回的个数
        public IntPtr pstuTagStateInfo;                 // 标签数组的指针, 用户分配内存, 大小为sizeof(NET_TAGMANAGER_TAGSTATE_INFO)*nMaxTagStaeNumber
    }

    // 开始查询标签信息, CLIENT_TagManagerStartFind  输入参数
    public struct NET_IN_TAGMANAGER_STARTFIND_INFO
    {
        public uint dwSize;                   // 结构体大小
        public int nChannel;                               // 通道
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szContext; // 标签内容
        public NET_TIME stuStartTime;                           // 开始时间
        public NET_TIME stuEndTime;                             // 结束时间
    }

    // 开始查询标签信息, CLIENT_TagManagerStartFind 输出参数
    public struct NET_OUT_TAGMANAGER_STARTFIND_INFO
    {
        public uint dwSize;                   // 结构体大小
        public int nTotalCount;                            // 查询返回的条数
    }
    // 获取标签查询结果信息, CLIENT_TagManagerDoFind  输入参数
    public struct NET_IN_TAGMANAGER_DOFIND_INFO
    {
        public uint dwSize;                   // 结构体大小
        public int nBeginNumber;                           // 起始查询编号
        public int nCount;                                 // 查询数量, 最大请参考CLIENT_TagManagerGetCaps返回的设备查询能力
    }
    // 获取标签查询结果信息, CLIENT_TagManagerDoFind 输出参数
    public struct NET_OUT_TAGMANAGER_DOFIND_INFO
    {
        public uint dwSize;                   // 结构体大小
        public uint nMaxTagInfoCount;                       // 本次查询最多可以接受到标签数量，用户预先分配好的pstuTagInfo内存个数
        public uint nRetTagInfoCount;                       // 设备返回的实际标签数量，返回0或者小于CLIENT_TagManagerDoFind查询的Count都代表查询结束
        public IntPtr pstuTagInfo;                            // 查找的标签信息，需要用户预先分配好内存,对应结构体NET_FINDTAG_INFO
    }

    // 获取标签查询能力, CLIENT_TagManagerGetCaps 输入参数
    public struct NET_IN_TAGMANAGER_GETCAPS_INFO
    {
        public uint dwSize;                   // 结构体大小
    }

    // 获取标签查询能力, CLIENT_TagManagerGetCaps 输出参数
    public struct NET_OUT_TAGMANAGER_GETCAPS_INFO
    {
        public uint dwSize;                   // 结构体大小
        public uint nMaxCount;                              // 每次最大查询条数
    }

    // 停止打标签, CLIENT_TagManagerStopTag 输入参数
    public struct NET_IN_TAGMANAGER_STOPTAG_INFO
    {
        public uint dwSize;                   // 结构体大小
        public int nChannel;                               // 通道号
    }

    // 停止打标签, CLIENT_TagManagerStopTag 输出参数
    public struct NET_OUT_TAGMANAGER_STOPTAG_INFO
    {
        public uint dwSize;                   // 结构体大小
    }

    // 子标签信息
    public struct NET_FINDSUBTAG_INFO
    {
        public NET_TIME stuStartTime;                           // 子标签开始时间
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSubTagName; // 子标签内容
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;                         // 保留字节
    }

    // 录像标签信息
    public struct NET_FINDTAG_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szContext; // 子标签内容
        public NET_TIME stuStartTime;                           // 开始时间
        public NET_TIME stuEndTime;                             // 结束时间
        public int nSubtagInfoCount;                       // 子标签信息个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_FINDSUBTAG_INFO[] stuSubTagInfo;                         // 保留字节
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;                         // 保留字节
    }

    // 广告禁用时段配置信息
    public struct NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO
    {
        public bool bEnable;                            // 时间段使能
        public NET_TIME_EX1 stuBeginTime;                       // 广告禁用开始时间
        public NET_TIME_EX1 stuEndTime;                         // 广告结束开始时间
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] reserved;                         // 保留字节
    }

    // 广告禁用时段配置 对应枚举 NET_EM_CFG_FORBIDDEN_ADVERT_PLAY
    public struct NET_CFG_FORBIDDEN_ADVERT_PLAY
    {
        public uint dwSize;                   // 结构体大小
        public uint nAdvertNum;                  // 广告配置时间段个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO[] stuAdvertInfo;   // 广告禁用时段配置信息
    }

    // 设备的当前模式配置 对应枚举 NET_EM_CFG_BGY_CUSTOMERCFG
    public struct NET_CFG_BGY_CUSTOMERCFG
    {
        public uint dwSize;                   // 结构体大小
        public EM_PLAY_WITH_MODE ModeType;    // 模式类别
    }

    public struct NET_TIME_EX1
    {
        public uint dwHour;                  // 时
        public uint dwMinute;                // 分
        public uint dwSecond;                // 秒
    }
    // 卡片信息
    public struct NET_ACCESS_CARD_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;                // 卡号 
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;				// 用户ID
        public EM_ACCESSCTLCARD_TYPE emType;                                     // 卡类型,只支持一般卡、胁迫卡和母卡
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDynamicCheckCode;	// 动态校验码
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4096)]
        public byte[] byReserved;
    }

    // 证件类型
    public enum EM_TYPE_OF_CERTIFICATE
    {
        UNKNOWN,             // 未知
        IDCARD,              // 证
        HKMRPERMIT,          // 港澳居住证
        CHNPASSPORT,         // 中国护照
        FORPASSPORT,         // 国外护照
        PERRESIDENCE_PERMI,  // 永久居住证
        OTHER = 9,           // 其他
    }

    /// <summary>
    /// 用户类型
    /// user type
    /// </summary>
    public enum EM_USER_TYPE
    {
        /// <summary>
        /// 未知用户
        /// unknown
        /// </summary>
        UNKNOWN = -1,
        /// <summary>
        /// 普通用户
        /// normal
        /// </summary>
        NORMAL,
        /// <summary>
        /// 禁止名单用户
        /// prohibit
        /// </summary>
        BLACKLIST,
        /// <summary>
        /// 来宾账户
        /// guset
        /// </summary>
        GUEST,
        /// <summary>
        /// 巡逻用户
        /// patrol
        /// </summary>
        PATROL,
        /// <summary>
        /// 
        /// 
        /// </summary>
        VIP,
        /// <summary>
        /// 残障人士用户
        /// handicap
        /// </summary>
        HANDICAP,
        /// <summary>
        /// 自定义用户1
        /// Custom user1
        /// </summary>
        CUSTOM1,
        /// <summary>
        /// 自定义用户2
        /// Custom user2
        /// </summary>
        CUSTOM2,
    }

    /// <summary>
    /// 人员健康状态
    /// Health status of personnel
    /// </summary>
    public enum EM_GREENCNHEALTH_STATUS
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_GREENCNHEALTH_STATUS_UNKNOWN = 0,
        /// <summary>
        /// 绿码
        /// green (health) code
        /// </summary>
        EM_GREENCNHEALTH_STATUS_GREEN,
        /// <summary>
        /// 黄码
        /// Yellow code
        /// </summary>
        EM_GREENCNHEALTH_STATUS_YELLOW,
        /// <summary>
        /// 红码
        /// The red code
        /// </summary>
        EM_GREENCNHEALTH_STATUS_RED,
        /// <summary>
        /// 无效
        /// invalid
        /// </summary>
        EM_GREENCNHEALTH_STATUS_INVALID,
    }

    /// <summary>
    /// 电子通行证状态
    /// E-pass Status 
    /// </summary>
    public enum EM_ALLOW_PERMIT_FLAG
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ALLOW_PERMIT_FLAG_UNKNOWN = 0,
        /// <summary>
        /// 没有电子通行证
        /// No e-pass
        /// </summary>
        EM_ALLOW_PERMIT_FLAG_NO,
        /// <summary>
        /// 电子通行证有效
        /// E-pass valid
        /// </summary>
        EM_ALLOW_PERMIT_FLAG_EFFECTIVE,
        /// <summary>
        /// 电子通行证无效
        /// E-pass invalid
        /// </summary>
        EM_ALLOW_PERMIT_FLAG_INVALID,
    }

    /// <summary>
    /// 用户信息
    /// User Info extension
    /// </summary>
    public struct NET_ACCESS_USER_INFO_EX
    {
        /// <summary>
        /// 消费时间段
        /// 每天最多6个时间段，每6个元素对应一天。一共7天。
        /// 每个时段格式为"星期 时:分:秒-时:分:秒 消费类型 可消费次数 可消费金额"，
        /// 星期从0开始，表示周日，前6个时段前面都是0，表示周日的6个时段，
        /// 剩下依次周一，周二... 一共42个时段。消费类型包括：0为定额消费，
        /// 1为非定额消费；可消费次数最大上限200次；可消费金额最高999900，也就是9999元
        /// Consumption TimeSections
        /// every day has six TimeSections
        /// the TimeSection format is: "DayNo hour:minute:second-hour:minute:second type times amount"
        /// DayNo starts with 0, 0 means Sunday, the DayNo of the the first six TimeSections is 0
        /// type is the Consumption type, 0 means quota, 1 means nonquota
        /// times is the Consumable times, the max is 200
        /// amount is the Consumable amount, the max is 999900 cents
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 42 * 34)]
        public string szConsumptionTimeSections;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 用户信息
    /// User Info
    /// </summary>
    public struct NET_ACCESS_USER_INFO
    {
        /// <summary>
        /// 用户ID
        /// user ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// 人员名称
        /// user name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
        /// <summary>
        /// 用户类型
        /// user type
        /// </summary>
        public EM_USER_TYPE emUserType;
        /// <summary>
        /// 用户状态, 0 正常, 1 冻结
        /// user status, 0 normal, 1 freeze
        /// </summary>
        public uint nUserStatus;
        /// <summary>
        /// 来宾卡的通行次数
        /// user times of guest
        /// </summary>
        public int nUserTime;
        /// <summary>
        /// 证号码
        /// no
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCitizenIDNo;
        /// <summary>
        /// UserID+密码开门时密码
        /// UserID+password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPsw;
        /// <summary>
        /// 有效的门数目;
        /// door number;
        /// </summary>
        public int nDoorNum;
        /// <summary>
        /// 有权限的门序号,即 CFG_CMD_ACCESS_EVENT 配置的数组下标
        /// Privileged Door Number,That is CFG_CMD_ACCESS_EVENT Configure Array Subscript
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nDoors;
        /// <summary>
        /// 有效的的开门时间段数目
        /// the Number of Effective Open Time
        /// </summary>
        public int nTimeSectionNum;
        /// <summary>
        /// 开门时间段索引,即 CFG_ACCESS_TIMESCHEDULE_INFO 的数组下标
        /// Open Time Segment Index,That is CFG_ACCESS_TIMESCHEDULE_INFO Array subscript
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nTimeSectionNo;
        /// <summary>
        /// 假日计划表示数量
        /// the number of specialday
        /// </summary>
        public int nSpecialDaysScheduleNum;
        /// <summary>
        /// 假日计划标识, 即 NET_EM_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE 配置的下标
        /// Open specialday index, That is NET_EM_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE Array subscript
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public int[] nSpecialDaysSchedule;
        /// <summary>
        /// 开始有效期
        /// Valid Begin Time
        /// </summary>
        public NET_TIME stuValidBeginTime;
        /// <summary>
        /// 结束有效期
        /// Valid End Time
        /// </summary>
        public NET_TIME stuValidEndTime;
        /// <summary>
        /// 是否拥有首卡权限
        /// has first card or not
        /// </summary>
        public bool bFirstEnter;
        /// <summary>
        /// 拥有首用户权限的门数量
        /// has first card door number
        /// </summary>
        public int nFirstEnterDoorsNum;
        /// <summary>
        /// 拥有首用户权限的门序号，bFirstEnter为TRUE时有效,-1表示全通道
        /// has first card door No,FirstEnter-1 means all channels
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nFirstEnterDoors;
        /// <summary>
        /// 用户权限，可选
        /// user authority
        /// </summary>
        public EM_ATTENDANCE_AUTHORITY emAuthority;
        /// <summary>
        /// 反潜超时时间
        /// repeatenter timeout time
        /// </summary>
        public int nRepeatEnterRouteTimeout;
        /// <summary>
        /// 有效的楼层数量
        /// floor number
        /// </summary>
        public int nFloorNum;
        /// <summary>
        /// 楼层号
        /// floor
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64 * 16)]
        public string szFloorNo;
        /// <summary>
        /// 房间个数
        /// room number
        /// </summary>
        public int nRoom;
        /// <summary>
        /// 房间号列表
        /// room
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32 * 16)]
        public string szRoomNo;
        /// <summary>
        /// szFloorNoEx 是否有效
        /// if szFloorNoEx is valid, TRUE:valid, else invalid
        /// </summary>
        public bool bFloorNoExValid;
        /// <summary>
        /// 有效的楼层数量扩展
        /// floor number extended
        /// </summary>
        public int nFloorNumEx;
        /// <summary>
        /// 楼层号扩展
        /// floor info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256 * 4)]
        public string szFloorNoEx;
        /// <summary>
        /// 班级信息
        /// class info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szClassInfo;
        /// <summary>
        /// 学号
        /// student num
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szStudentNo;
        /// <summary>
        /// 证地址
        /// address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCitizenAddress;
        /// <summary>
        /// 出生日期（年月日有效）
        /// birth day (year month day are valid)
        /// </summary>
        public NET_TIME stuBirthDay;
        /// <summary>
        /// 性别
        /// sex
        /// </summary>
        public NET_ACCESSCTLCARD_SEX emSex;
        /// <summary>
        /// 部门
        /// department
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDepartment;
        /// <summary>
        /// 站点码
        /// site code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSiteCode;
        /// <summary>
        /// 手机号码
        /// PhoneNumber
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPhoneNumber;
        /// <summary>
        /// 默认楼层号
        /// Default floor number (elevator control requirements)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szDefaultFloor;
        /// <summary>
        /// 是否使用扩展结构体
        /// stuFloorsEx2 wheather valid
        /// </summary>
        public bool bFloorNoEx2Valid;
        /// <summary>
        /// 楼层号（再次扩展）
        /// Floor number (extended again)
        /// </summary>
        public IntPtr pstuFloorsEx2;
        /// <summary>
        /// 人员健康状态 
        /// Personnel health status 
        /// </summary>
        public bool bHealthStatus;
        /// <summary>
        /// 用户自身的开门时间段校验有效个数
        /// The number of valid verifications for the user's own door opening time
        /// </summary>
        public int nUserTimeSectionsNum;
        /// <summary>
        /// 针对用户自身的开门时间段校验
        /// Check the user's own door opening time period
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6 * 20)]
        public string szUserTimeSections;
        /// <summary>
        /// MZ
        /// Nation
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szECType;
        /// <summary>
        /// 证件类型
        /// type of certificate
        /// </summary>
        public EM_TYPE_OF_CERTIFICATE emTypeOfCertificate;
        /// <summary>
        /// 国籍或所在地区代码，符合GB/T 2659-2000的规范
        /// Nationality or area code, in line with GB/T 2659-2000
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szCountryOrAreaCode;
        /// <summary>
        /// 国籍或所在地区名称，符合GB/T 2659-2000的规范
        /// Nationality or area name, in line with GB/T 2659-2000
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCountryOrAreaName;
        /// <summary>
        /// 永久居住证的证件版本号
        /// The version number of the permanent residence permit
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCertificateVersionNumber;
        /// <summary>
        /// 申请受理机关代码
        /// Application acceptance agency code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szApplicationAgencyCode;
        /// <summary>
        /// 签发机关
        /// issuing authority
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szIssuingAuthority;
        /// <summary>
        /// 证件有效开始时间
        /// Start time of certificate validity
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szStartTimeOfCertificateValidity;
        /// <summary>
        /// 证件有效结束时间
        /// End time of certificate validity
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szEndTimeOfCertificateValidity;
        /// <summary>
        /// 证件签发次数
        /// Number of certificates issued
        /// </summary>
        public int nSignNum;
        /// <summary>
        /// 实际家庭住址
        /// Actual home address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 108)]
        public string szActualResidentialAddr;
        /// <summary>
        /// 工作班别
        /// Work class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szWorkClass;
        /// <summary>
        /// 有效时间段内启动时间
        /// Start time within valid time period
        /// </summary>
        public NET_TIME stuStartTimeInPeriodOfValidity;
        /// <summary>
        /// 测试项目
        /// Test items
        /// </summary>
        public EM_TEST_ITEMS emTestItems;
        /// <summary>
        /// szNameEx 是否有效，为TRUE时，使用szNameEx字段
        /// Whether to use the szNameEx field
        /// </summary>
        public bool bUseNameEx;
        /// <summary>
        /// 人员名称扩展
        /// Name extension
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szNameEx;
        /// <summary>
        /// 是否使用用户信息结构体
        /// pstuUserInfoEx wheather valid
        /// </summary>
        public bool bUserInfoExValid;
        /// <summary>
        /// 扩展用户信息 < NET_ACCESS_USER_INFO_EX >
        /// User Info (extended) < NET_ACCESS_USER_INFO_EX > 
        /// </summary>
        public IntPtr pstuUserInfoEx;
        /// <summary>
        /// 授权时间、过期时间，时间单位: 小时
        /// Authorization time, expiration time, time unit: hour
        /// </summary>
        public uint nAuthOverdueTime;
        /// <summary>
        /// 人员健康状态
        /// Staff health status
        /// </summary>
        public EM_GREENCNHEALTH_STATUS emGreenCNHealthStatus;
        /// <summary>
        /// 电子通行证状态
        /// E-pass status
        /// </summary>
        public EM_ALLOW_PERMIT_FLAG emAllowPermitFlag;
        /// <summary>
        /// 
        /// 
        /// </summary>
        public int nHolidayGroupIndex;
        /// <summary>
        /// 信息更新时间,UTC时间
        /// Info UpdateTime,UTC time
        /// </summary>
        public NET_TIME stuUpdateTime;
        /// <summary>
        /// 用户的门通道起始有效期,每个通道设置一个有效期,数组元素与门通道一一对应
        /// The initial validity period of the user's door channel, each channel is set to a validity period, and the array elements correspond to the door channels one-to-one
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 24)]
        public string szValidFroms;
        /// <summary>
        /// 用户的门通道起始有效期有效个数, 最大值为8
        /// The valid number of the user's door channel starting valid, the maximum value is 8
        /// </summary>
        public int nValidFromsNum;
        /// <summary>
        /// 用户的门通道截止有效期有效个数, 最大值为8
        /// User's gate channel expiration valid number, the maximum value is 8
        /// </summary>
        public int nValidTosNum;
        /// <summary>
        /// 用户的门通道截止有效期,每个通道设置一个有效期,数组元素与门通道一一对应
        /// The user's door channel expires valid period, each channel is set to a valid period, and the array elements correspond to the door channel one-to-one
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 24)]
        public string szValidTos;
        /// <summary>
        /// 用户ID扩展，当前只支持32位有效值下发
        /// User ID extension, currently only 32-bit valid values are supported
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserIDEx;
        /// <summary>
        /// szUserIDEx 是否有效，为TRUE时，使用szUserIDEx字段
        /// Whether szUserIDEx is valid. If true, use the szUserIDEx field
        /// </summary>
        public bool bUserIDEx;
        /// <summary>
        /// 金融业务库的人员权限，-1:表示未知, 0:存取人, 1:复核人, 2:管理员
        /// Personnel permissions of financial business library, -1:unknown,0:accessor,1:reviewer,2:administrator
        /// </summary>
        public int nFinancialUserType;
        /// <summary>
        /// 自定义人员类型枚举 0 : 未知，1：轻工类型
        /// Enumeration of user-defined personnel type 0: Unknown, 1: Customized type of Wuhan light industry
        /// </summary>
        public int nCustomUserType;
        /// <summary>
        /// 自定义类型的枚举
        /// 0默认值 1学生 2教师 3保安 4保障人员 5其他 6家属 7受限用户 8临时 9临时人员 10维修工
        /// 11博士 12硕士 13本科 14特定学生 15在编 16校聘 17特殊岗位 19一般 20特殊 21蒋钱湾居民
        /// 22立信公寓长城别苑居民 23社区居民 24常住户 25租户 26教职工家属 27预留1 28预留2 29预留3 30预留4
        /// 31预留5 32预留6 33预留7 34预留8 35预留9 36预留10 37预留11 38预留12 39预留13 40预留14
        /// Enumeration of custom types
        /// 0 Default value 1 Student 2 Teacher 3 Security 4 SupportPersonnel 5 Other 6 Folk 7 BlockList 8 Tmp 9 TmpPersonnel 10 MaintenanceMan
        /// 11 Doctor 12 Mastter 13 Undergraduate 14 SpecialStudent 15 BeOnRegularPayroll 16 UniversityEmployment 17 SpecialPost 19 Normal 20 Special 21 JiangQianwanResident
        /// 22 LixinChangchengBieyuan 23 CommunityResident 24 Resident 25 Tenant 26 FamilyMembersOfStaff 27 Obligate1 28 Obligate2 29 Obligate3 30 Obligate4
        /// 31 Obligate5 32 Obligate6 33 Obligate7 34 Obligate8 35 Obligate9 36 Obligate10 37 Obligate11 38 Obligate12 39 Obligate13 40 Obligate14
        /// </summary>
        public uint nCustomUserTypeValue;
        /// <summary>
        /// 允许签入的时间点
        /// The point in time at which check-ins are allowed
        /// </summary>
        public NET_TIME_EX stuAllowCheckInTime;
        /// <summary>
        /// 允许签出的时间点
        /// Check out time allowed
        /// </summary>
        public NET_TIME_EX stuAllowCheckOutTime;
        /// <summary>
        /// 扩展用户信息V2
        /// User Info (extended V2)
        /// </summary>
        public IntPtr pstuUserInfoEx2;
        /// <summary>
        /// 是否使用用户信息结构体V2
        /// pstuUserInfoEx2 wheather valid
        /// </summary>
        public bool bUserInfoEx2Valid;
        /// <summary>
        /// 人员角色ID
        /// Role ID
        /// </summary>
        public uint nRoleID;
        /// <summary>
        /// 保留字节
        /// reserve
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 656 - 2 * 8)]
        public byte[] byReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 656 - 2 * 4)]
        public byte[] byReserved;
#endif
    }

    public struct NET_COMMON_STRING_4
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szContent;
    }

    public struct NET_COMMON_STRING_16
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szContent;
    }

    /// <summary>
    /// 用户类型
    /// user type
    /// </summary>
    public enum EM_USER_TYPE_EX
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_USER_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 普通用户
        /// ordinary user
        /// </summary>
        EM_USER_TYPE_ORDINARY,
        /// <summary>
        /// 禁止名单用户
        /// prohibit user
        /// </summary>
        EM_USER_TYPE_BLACKLIST,
        /// <summary>
        /// 
        /// 
        /// </summary>
        EM_USER_TYPE_VIP,
        /// <summary>
        /// 来宾用户
        /// guest user
        /// </summary>
        EM_USER_TYPE_GUEST,
        /// <summary>
        /// 巡逻用户
        /// patrol user
        /// </summary>
        EM_USER_TYPE_PATROL,
        /// <summary>
        /// 残障人士用户
        /// CZ user
        /// </summary>
        EM_USER_TYPE_DISABLED,
        /// <summary>
        /// 冻结用户
        /// frozen user
        /// </summary>
        EM_USER_TYPE_FROZEN,
        /// <summary>
        /// 注销用户
        /// logout user
        /// </summary>
        EM_USER_TYPE_LOGOUT,
        /// <summary>
        /// 挂失卡
        /// loss card
        /// </summary>
        EM_USER_TYPE_LOSSCARD,
    }


    // 操作错误码

    public struct NET_EM_FAILCODE
    {
        public EM_FAILCODE emCode;
    }

    // 新增或更新用户信息入参
    public struct NET_IN_ACCESS_USER_SERVICE_INSERT
    {
        public uint dwSize;
        public int nInfoNum;                                   // 用户信息数量
        public IntPtr pUserInfo;                                  // 用户信息,内存由用户申请释放，申请大小不小于nInfoNum*sizeof(NET_ACCESS_USER_INFO);
    }



    // 新增或更新用户信息出参
    public struct NET_OUT_ACCESS_USER_SERVICE_INSERT
    {
        public uint dwSize;
        public int nMaxRetNum;                                 // 最大返回的错误信息数量,不小于nInfoNum
        public IntPtr pFailCode;                                  // 插入失败时，对应插入的每一项的结果,返回个数同NET_IN_ACCESS_USER_SERVICE_INSERT中nInfoNum
    }

    // 人员信息操作类型
    public enum EM_ACCESS_CTL_USER_SERVICE
    {
        INSERT = 0,                              // 添加人员信息, pInbuf = NET_IN_ACCESS_USER_SERVICE_INSERT , pOutBuf = NET_OUT_ACCESS_USER_SERVICE_INSERT
        GET,                                     // 获取人员信息, pInbuf = NET_IN_ACCESS_USER_SERVICE_GET , pOutBuf = NET_OUT_ACCESS_USER_SERVICE_GET
        REMOVE,                                  // 删除人员信息,包含所有授权信息 pInbuf = NET_IN_ACCESS_USER_SERVICE_REMOVE , pOutBuf = NET_OUT_ACCESS_USER_SERVICE_REMOVE
        CLEAR,                                   // 清空所有人员信息, pInbuf = NET_IN_ACCESS_USER_SERVICE_CLEAR , pOutBuf = NET_OUT_ACCESS_USER_SERVICE_CLEAR    
    }


    // 获取用户信息入参
    public struct NET_IN_ACCESS_USER_SERVICE_GET
    {
        public uint dwSize;
        public int nUserNum;                                   // 查询的数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_STRING_32_USER_ID[] szUserID; // 用户ID
        /// <summary>
        /// 用户ID扩展，当前只支持32位有效值下发
        /// User ID extension, currently only 32-bit valid values are supported
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100 * 128)]
        public string szUserIDEx;
        /// <summary>
        /// szUserIDEx 是否有效，为TRUE时，使用szUserIDEx字段
        /// Whether szUserIDEx is valid. If true, use the szUserIDEx field
        /// </summary>
        public bool bUserIDEx;

    }

    // 获取用户信息出参
    public struct NET_OUT_ACCESS_USER_SERVICE_GET
    {
        public uint dwSize;
        public int nMaxRetNum;                                 // 查询返回的最大数量
        public IntPtr pUserInfo;                                  // 用户信息,内存由用户申请释放，申请大小不小于 nUserNum*sizeof(NET_ACCESS_USER_INFO)
                                                                  // 返回个数同NET_IN_ACCESS_USER_SERVICE_GET中nUserNum
        public IntPtr pFailCode;                                  // 查询失败时，内存由用户申请释放,对应查询的每一项的结果，返回个数同NET_IN_ACCESS_USER_SERVICE_GET中nUserNum
    }

    public struct NET_STRING_32_USER_ID
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
    }

    // 新增卡片信息入参
    public struct NET_IN_ACCESS_CARD_SERVICE_INSERT
    {
        public uint dwSize;
        public int nInfoNum;                                   // 用户信息数量
        public IntPtr pCardInfo;                                  // 卡片信息,用户分配内存,大小为sizeof(NET_ACCESS_CARD_INFO)*nInfoNum
    }

    /// <summary>
    /// 错误详情
    /// Error details
    /// </summary>
    public struct NET_ERROR_DETAIL
    {
        /// <summary>
        /// / 下发失败时，对失败原因的一个补充描述
        /// / A supplementary description of the reason for the failure when issuing a failure
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20 * 256)]
        public string szExtraInfo;
        /// <summary>
        /// / 补充描述有效个数
        /// / Number of valid supplementary descriptions
        /// </summary>
        public uint nRetExtraInfoNum;
        /// <summary>
        /// / 预留字节
        /// / Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 新增卡片信息出参
    /// output of insert card
    /// </summary>
    public struct NET_OUT_ACCESS_CARD_SERVICE_INSERT
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 最大返回的用户信息数量,不小于NET_IN_ACCESS_CARD_SERVICE_INSERT中nInfoNum
        /// return number ,greater than nInfoNum in NET_IN_ACCESS_CARD_SERVICE_INSERT
        /// </summary>
        public int nMaxRetNum;
        /// <summary>
        /// / 用户分配释放内存,插入失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_CARD_SERVICE_INSERT中nInfoNum
        /// error code,return number is nInfoNum in NET_IN_ACCESS_CARD_SERVICE_INSERT
        /// </summary>
        public IntPtr pFailCode;
        /// <summary>
        /// / 错误详情
        /// Error details
        /// </summary>
        public NET_ERROR_DETAIL stuDetail;
    }

    /// <summary>
    /// 卡片信息操作类型
    /// ACCESS CTL CARD Operate type
    /// </summary>
    public enum EM_ACCESS_CTL_CARD_SERVICE
    {
        INSERT = 0,                              // 添加, pInbuf = NET_IN_ACCESS_CARD_SERVICE_INSERT , pOutBuf = NET_OUT_ACCESS_CARD_SERVICE_INSERT
        GET,                                     // 获取, pInbuf = NET_IN_ACCESS_CARD_SERVICE_GET , pOutBuf = NET_OUT_ACCESS_CARD_SERVICE_GET
        UPDATE,                                  // 更新, pInbuf = NET_IN_ACCESS_CARD_SERVICE_UPDATE , pOutBuf = NET_OUT_ACCESS_CARD_SERVICE_UPDATE
        REMOVE,                                  // 删除, pInbuf = NET_IN_ACCESS_CARD_SERVICE_REMOVE , pOutBuf = NET_OUT_ACCESS_CARD_SERVICE_REMOVE
        CLEAR,                                   // 清空, pInbuf = NET_IN_ACCESS_CARD_SERVICE_CLEAR , pOutBuf = NET_OUT_ACCESS_CARD_SERVICE_CLEAR
    }

    // 删除指定ID人员信息入参
    public struct NET_IN_ACCESS_USER_SERVICE_REMOVE
    {
        public uint dwSize;
        public int nUserNum;                                   // 删除的数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_STRING_32_USER_ID[] szUserID; // 用户ID
        /// <summary>
        /// 用户ID扩展，当前只支持32位有效值下发
        /// User ID extension, currently only 32-bit valid values are supported
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100 * 128)]
        public string szUserIDEx;
        /// <summary>
        /// szUserIDEx 是否有效，为TRUE时，使用szUserIDEx字段
        /// Whether szUserIDEx is valid. If true, use the szUserIDEx field
        /// </summary>
        public bool bUserIDEx;
    }

    // 删除指定ID人员信息出参
    public struct NET_OUT_ACCESS_USER_SERVICE_REMOVE
    {
        public uint dwSize;
        public int nMaxRetNum;                                 // 返回的最大数量,不小于 NET_IN_ACCESS_USER_SERVICE_REMOVE中nUserNum
        public IntPtr pFailCode;                                  // 插入失败时，内存由用户申请释放,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_USER_SERVICE_REMOVE中nUserNum
    }

    // 获取卡片信息入参
    public struct NET_IN_ACCESS_CARD_SERVICE_GET
    {
        public uint dwSize;
        public int nCardNum;                                   // 查询的数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_STRING_32_CARD_NO[] szCardNo;                          // 卡号 
    };

    // 获取卡片信息出参
    public struct NET_OUT_ACCESS_CARD_SERVICE_GET
    {
        public uint dwSize;
        public int nMaxRetNum;                                 // 查询返回的最大数量
        public IntPtr pCardInfo;                                  // 卡片信息,内存由用户申请释放，申请大小不小于nCardNum*sizeof(NET_ACCESS_CARD_INFO);
                                                                  // 返回个数同NET_IN_ACCESS_CARD_SERVICE_GET中nCardNum
        public IntPtr pFailCode;                                  // 查询失败时，对应查询的每一项的结果,返回个数同NET_IN_ACCESS_CARD_SERVICE_GET中nCardNum
    };

    public struct NET_STRING_32_CARD_NO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;
    }

    // 删除指定卡号信息入参
    public struct NET_IN_ACCESS_CARD_SERVICE_REMOVE
    {
        public uint dwSize;
        public int nCardNum;                                   // 删除的数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_STRING_32_CARD_NO[] szCardNo;                          // 卡号  
    };

    // 删除指定卡号信息出参
    public struct NET_OUT_ACCESS_CARD_SERVICE_REMOVE
    {
        public uint dwSize;
        public int nMaxRetNum;                                 // 最大返回信息数量,不小于 NET_IN_ACCESS_CARD_SERVICE_REMOVE中nCardNum
        public IntPtr pFailCode;                                  // 插入失败时,对应删除的每一项的结果,返回个数同NET_IN_ACCESS_CARD_SERVICE_REMOVE中nCardNum
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
    };

    // 更新卡片信息入参
    public struct NET_IN_ACCESS_CARD_SERVICE_UPDATE
    {
        public uint dwSize;                                     // 结构体大小
        public int nInfoNum;                                    // 用户信息数量
        public IntPtr pCardInfo;                                // 卡片信息,用户分配释放内存,大小为sizeof(NET_ACCESS_CARD_INFO)*nInfoNum
    }

    /// <summary>
    /// 更新卡片信息出参
    /// output of update card info
    /// </summary>
    public struct NET_OUT_ACCESS_CARD_SERVICE_UPDATE
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 最大返回的用户信息数量,不小于NET_IN_ACCESS_CARD_SERVICE_UPDATE中nInfoNum
        /// max return number,greater than nInfoNum in NET_IN_ACCESS_CARD_SERVICE_UPDATE
        /// </summary>
        public int nMaxRetNum;
        /// <summary>
        /// / 用户分配释放内存,插入失败时，对应插入的每一项的结果,返回个数同NET_IN_ACCESS_CARD_SERVICE_UPDATE中nInfoNum
        /// error code,return number is nInfoNum in NET_IN_ACCESS_CARD_SERVICE_UPDATE
        /// </summary>
        public IntPtr pFailCode;
        /// <summary>
        /// / 错误详情
        /// Error details
        /// </summary>
        public NET_ERROR_DETAIL stuDetail;
    }

    // 删除所有人员信息入参
    public struct NET_IN_ACCESS_USER_SERVICE_CLEAR
    {
        public uint dwSize;
    }

    // 删除所有人员信息出参
    public struct NET_OUT_ACCESS_USER_SERVICE_CLEAR
    {
        public uint dwSize;
    }

    // 删除所有卡片信息入参
    public struct NET_IN_ACCESS_CARD_SERVICE_CLEAR
    {
        public uint dwSize;
    };

    // 删除所有卡片信息出参
    public struct NET_OUT_ACCESS_CARD_SERVICE_CLEAR
    {
        public uint dwSize;
    };

    // 事件信息
    public struct NET_EVENT_INFO
    {
        public int nEvent;                             // 事件类型,参见智能事件类型，如 EVENT_IVS_ALL
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_OBJECT_TYPE[] arrayObejctType;             // 支持的物体类型，当前支持 EM_OBJECT_TYPE_HUMAN, EM_OBJECT_TYPE_VECHILE, EM_OBJECT_TYPE_NOMOTOR, EM_OBJECT_TYPE_ALL
        public int nObjectCount;                       // szObejctType 数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;   // 预留字段
    }

    // 是否合并录像
    public enum EM_COMBINATION_MODE
    {
        DEFAULT = 0,                    // 默认为合并
        YES,                            // 合并
        NO,                             // 不合并
    }

    // 视频抓拍速度来源
    public enum EM_MIX_SNAP_SPEED_SOURCE
    {
        UNKNOWN,   // 未知
        VIDEO,     // 视频
        RADAR,     // 雷达
    }

    /// <summary>
    /// 报警联动信息扩展
    /// Alarm activation information
    /// </summary>
    public struct NET_A_CFG_ALARM_MSG_HANDLE_EX
    {
        /// <summary>
        /// /标题文本字体大小，单位像素,对应SnapshotTitle，个数与stuSnapshotTitle匹配。
        /// Snapshot Title Font Size
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nSnapshotTitleFontSize;
        /// <summary>
        /// / 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    // CFG_CMD_INTELLECTIVETRAFFIC
    public struct NET_CFG_TRAFFICSNAPSHOT_INFO
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szDeviceAddress;
        public uint nVideoTitleMask;                      // OSD叠加类型掩码	从低位到高位分别表示：0-时间 1-地点 2-车牌3-车长 4-车速 5-限速6-大车限速 7-小车限速8-超速 9-违法代码10-车道号 11-车身颜色 12-车牌类型 13-车牌颜色14-红灯点亮时间 15-违章类型 16-雷达方向 17-设备编号 18-标定到期时间 19-车型 20-行驶方向
        public int nRedLightMargin;                      // 红灯冗余间隔时间	红灯开始的一段时间内，车辆通行不算闯红灯，单位：秒
        public float fLongVehicleLengthLevel;              // 超长车长度最小阈值	单位：米，包含
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public float[] arfLargeVehicleLengthLevel;        // 大车长度阈值	单位：米，包含小值
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public float[] arfMediumVehicleLengthLevel;       // 中型车长度阈值	单位：米，包含小值
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public float[] arfSmallVehicleLengthLevel;        // 小车长度阈值	单位：米，包含小值
        public float fMotoVehicleLengthLevel;              // 摩托车长度最大阈值	单位：米，不包含

        public NET_BREAKINGSNAPTIMES_INFO stBreakingSnapTimes;                  // 违章抓拍张数

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_DETECTOR_INFO[] arstDetector;// 车检器配置，下标是车道号
        public int nCarType;                              // 抓拍车辆类型	0-大小车都抓拍1-抓拍小车2-抓拍大车3-大小车都不抓拍
        public int nMaxSpeed;                             // 当测得的速度超过最大速度时，则以最大速度计	0~255km/h
        public int nFrameMode;                        // 帧间隔模式	1-速度自适应（超过速度上限取0间隔，低于速度下限取2间隔，中间取1间隔）2-由联动参数决定
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] arnAdaptiveSpeed;                  // 速度自适应下限和上限
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;                      // 交通抓拍联动参数
        public bool abSchemeRange;                        // TRUE:方案针对相机,以车到0的值为准;FALSE:方案针对车道。不可以修改此字段数据, 只内部使用

        public uint nVideoTitleMask1;                    // 从低位到高位分别表示：0-车标 1-红灯结束时间 2-设备制造长商 3-小车低限速 4-大车低限速 5-小车高限速 6-大车高限速 7-设备工作模式 8-通用自定义 9-车道自定义 10-抓拍触发源 11-停车场区域12-车辆类型(面包车、轿车等等) 13-中车低限速 14-中车高限速 15-道路方向 16-GPS信息
        public uint nMergeVideoTitleMask;                 // 合成图片OSD叠加类型掩码	参照nVideoTitleMask字段
        public uint nMergeVideoTitleMask1;                   // 合成图片OSD叠加类型掩码	参照nVideoTitleMask1字段
        public int nTriggerSource;                    // 触发源掩码 0-RS232 1-RS485 2-IO 3-Video 4-Net
        public int nSnapMode;                             // 抓拍模式 0-全部抓拍 1-超速抓拍 2-逆向抓拍 3-PK模式
        public int nWorkMode;                             // 工作模式 0-自动模式，1-线圈抓拍模式，2-线圈抓拍识别，3-视频抓拍，4-视频识别, 5-混合抓拍（带识别）
        public int nCarThreShold;                         // 车长阈值  区分大小车长的阈值，单位: cm
        public int nSnapType;                             // 抓拍或抓录选择 0-正常抓拍模式 1-视频抓拍模式 2-黑屏快抓模式
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public int[] nCustomFrameInterval;               // 自定义抓拍帧间隔 第一个元素指车速小于速度自适应下限时的抓拍帧间隔，依次类推
        public int nKeepAlive;                        // 与雷达、车检器的默认保活周期 单位秒
        public NET_OSD_INFO stOSD;                                // 原始图片OSD参数配置
        public NET_OSD_INFO stMergeOSD;                           // 合成图片OSD参数配置
        public NET_CFG_NET_TIME stValidUntilTime;                     // 标定到期时间，指该时间点之前抓拍照片有效
        public NET_RADAR_INFO stRadar;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRoadwayCode;         // 道路代码
        public uint nVideoTitleMask2;                    // 原始图片OSD叠加类型掩码2 从低位到高位分别表示：0-国别 1-尾气数据    
        public uint nMergeVideoTitleMask2;                   // 合成图片OSD叠加类型掩码2 参照nVideoTitleMask2字段
        public int nParkType;                            // 出入口类型，0-默认( 兼容以前，不区分出口/入口 )，1-入口相机， 2-出口相机

        public uint nCoilSpeedAdjustDelayFrameTime;       // 线圈速度校正等待时间，范围【500, 4000】，单位：毫秒
        public bool bCoilSpeedAdjustEnable;               // 线圈速度校正使能，TRUE：校正 FALSE：不校正
        public uint nSnapSigMinConfidence;                // 触发雷达信号抓拍值，范围【0~100】
        public EM_MIX_SNAP_SPEED_SOURCE emMixSnapSpeedSource;				   // 视频抓拍速度来源
        /// <summary>
        /// 交通抓拍联动参数扩展
        /// Snap event handler ex
        /// </summary>
        public NET_A_CFG_ALARM_MSG_HANDLE_EX stuEventHandlerEx;
    }

    // BreakingSnapTimes
    public struct NET_BREAKINGSNAPTIMES_INFO
    {
        public int nNormal;                          // 正常
        public int nRunRedLight;                     // 闯红灯
        public int nOverLine;                      // 压线
        public int nOverYellowLine;                    // 压黄线
        public int nRetrograde;                        // 逆向
        public int nUnderSpeed;                        // 欠速
        public int nOverSpeed;                     // 超速
        public int nWrongRunningRoute;             // 有车占道
        public int nYellowInRoute;                 // 黄牌占道
        public int nSpecialRetrograde;             // 特殊逆行
        public int nTurnLeft;                      // 违章左转
        public int nTurnRight;                     // 违章右转
        public int nCrossLane;                     // 违章变道
        public int nU_Turn;                            // 违章调头
        public int nParking;                           // 违章停车
        public int nWaitingArea;                       // 违章进入待行区
        public int nWrongRoute;                        // 不按车道行驶		
        public int nParkingSpaceParking;             // 车位有车
        public int nParkingSpaceNoParking;           // 车位无车

        public int nRunYellowLight;                    // 闯黄灯
        public int nStay;                          // 违章停留
        public int nPedestrainPriority;                // 斑马线行人优先违章
        public int nVehicleInBusRoute;               // 违章占道
        public int nBacking;                         // 违章倒车
        public int nOverStopLine;                  // 压停止线
        public int nParkingOnYellowBox;            // 黄网格线停车	
        public int nRestrictedPlate;                   // 受限车牌	
        public int nNoPassing;                     // 禁行	
        public int nWithoutSafeBelt;                 // 不系安全带
        public int nDriverSmoking;                   // 驾驶员抽烟
        public int nDriverCalling;                   // 驾驶员打电话
        public int nPedestrianRunRedLight;           // 行人闯红灯
        public int nPassNotInOrder;                  // 未按规定依次通行
    }

    public struct NET_DETECTOR_INFO
    {
        public int nDetectBreaking;                  // 违章类型掩码	从低位到高位依次是：0-正常1-闯红灯2-压线3-逆行4-欠速5-超速6-有车占道
        // 7-黄牌占道 8-闯黄灯 9-违章占公交车道 10-不系安全带 11-驾驶员抽烟 12-驾驶员打电话

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public NET_COILCONFIG_INFO[] arstCoilCfg;      // 线圈配置数组
        public int nRoadwayNumber;                  // 车道号	1-16 ; 0表示不启用
        public int nRoadwayDirection;                // 车道方向（车开往的方向）	0-南向北 1-西南向东北 2-东 3-西北向东南 4-北向南 5-东北向西南 6-东向西 7-东南向西北 8-忽略
        public int nRedLightCardNum;                 // 卡口图片序号	表示将电警中的某一张图片作为卡口图片（共三张），0表示不采用，1~3,表示采用对应序号的图片
        public int nCoilsNumber;                     // 线圈个数	1-3
        public int nOperationType;                   // 业务模式	0-卡口电警1-电警2-卡口
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public int[] arnCoilsDistance;              // 两两线圈的间隔	范围0-1000，单位为厘米
        public int nCoilsWidth;                      // 每个线圈的宽度	0~200cm
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] arnSmallCarSpeedLimit;         // 小型车辆速度下限和上限	0~255km/h，不启用大小车限速时作为普通车辆限速
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] arnBigCarSpeedLimit;           // 大型车辆速度下限和上限	0~255km/h，启用大小车限速时有效
        public int nOverSpeedMargin;                // 限高速宽限值	单位：km/h
        public int nBigCarOverSpeedMargin;           // 大车限高速宽限值	单位：km/h，启用大小车限速时有效
        public int nUnderSpeedMargin;               // 限低速宽限值	单位：km/h
        public int nBigCarUnderSpeedMargin;          // 大车限低速宽限值	单位：km/h，启用大小车限速时有效
        public byte bSpeedLimitForSize;               // 是否启用大小车限速
        public byte bMaskRetrograde;                    // 逆行是否视为违章行为
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;                    // 保留对齐
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 768)]
        public string szDrivingDirection; //
        // "DrivingDirection" : ["Approach", "上海", "杭州"],行驶方向
        // "Approach"-上行，即车辆离设备部署点越来越近；"Leave"-下行，
        // 即车辆离设备部署点越来越远，第二和第三个参数分别代表上行和
        // 下行的两个地点，UTF-8编码
        public int nOverPercentage;                  // 超速百分比，超过限速百分比后抓拍
        public int nCarScheme;                       // 具体的方案Index,具体方案含义参参考打包环境local.png;根据CFG_TRAFFICSNAPSHOT_INFO.abSchemeRange字段区分作用范围
        public int nSigScheme;                       // 同上，非卡口使用
        public bool bEnable;                          // 车道是否有效，只有有效时才抓拍

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] nYellowSpeedLimit;            //黄牌车限速上限和下限 范围0~255km/h
        public int nRoadType;                       //工作路段 0 普通公路 1 高速公路
        public int nSnapMode;                       //抓拍模式 0-全部抓拍 1-超速抓拍 2-逆向抓拍（鄞州项目用）
        public int nDelayMode;                      //延时抓拍方案 0-使DelaySnapshotDistance，1-使用DelayTime
        public int nDelayTime;                      //延时抓拍时间 闯红灯第三张抓拍位置距离最后一个线圈的时间，单位毫秒
        public int nTriggerMode;                    //触发模式 0-入线圈触发 1-出线圈触发 2-出入都抓拍 3-关闭
        public int nErrorRange;                         //速度误差值，进线圈2与进线圈3之间的速度误差值，若实际误差大于或等于该值，视速度无效，否则取平均速度 0-20
        public double dSpeedCorrection;                 //速度校正系数，即速度值为测出的值乘以该系数 
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] nDirection;                    //相对车道方向需要上报车辆行驶方向,nDirection[0] 0--空 1--正向 ; nDirection[1] 0--空 1--反向	
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]
        public string szCustomParkNo; // 自定义车位号（停车场用）
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] btReserved;
        public int nCoilMap;                        // 有多少对线圈映射关系
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_COIL_MAP_INFO[] stuCoilMap;                  // 线圈号映射关系
    }

    // CoilConfig
    public struct NET_COILCONFIG_INFO
    {
        public int nDelayFlashID;                 // 延时闪光灯序号	每个线圈对应的延时闪关灯序号，范围0~5，0表示不延时任何闪光灯
        public int nFlashSerialNum;               // 闪光灯序号	范围0~5，0表示不打开闪光灯（鄞州项目用）
        public int nRedDirection;                 // 红灯方向	每个线圈对应的红灯方向：0-不关联,1-左转红灯,2-直行红灯,3-右转红灯,4-待左,5-待直,6-待右, 只在电警中有效
        public int nTriggerMode;                 // 线圈触发模式	触发模式：0-入线圈触发1-出线圈触发（鄞州项目用）
        public int nFlashSerialNum2;                //多抓第二张对应闪光灯序号 范围0~5，0表示不打开闪光灯
        public int nFlashSerialNum3;                //多抓第三张对应闪光灯序号 范围0~5，0表示不打开闪光灯
    }

    // 线圈映射
    public struct NET_COIL_MAP_INFO
    {
        public uint nPhyCoilID;         // 物理线圈号
        public uint nLogicCoilID;       // 逻辑线圈号
    }

    //OSD黑边
    public struct NET_BLACK_REGION_INFO
    {
        public int nHeight;            //黑边高度 取值范围：0 ~ ( 8192-原图片高度)
        public int nOSDPosition;       //黑边位置 0=未知 , 1=顶部 , 2=底部
    }

    //OSD属性
    public struct NET_OSD_INFO
    {
        public NET_BLACK_REGION_INFO stBackRegionInfo;     //OSD黑边属性
        public int nOSDAttrScheme;         //OSD属性配置方案 0=未知 , 1=全体OSD项共用属性 , 2=每个OSD项一个属性
        public NET_OSD_WHOLE_ATTR stOSDAttrScheme;        //OSD属性配置方案内容
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_OSD_CUSTOM_SORT[] stOSDCustomSorts;    //OSD叠加内容自定义排序
        public int nOSDCustomSortNum;
        public int nRedLightTimeDisplay;   //OSD红灯时间配置 0=未知,1=违法最后一张,2=所有张
        public char cSeperater;             //OSD不同项之间的分隔符
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved;           //字节对齐
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szOSDOrder;
        public int nOSDContentScheme;      //0=未知, 1=Mask , 2=CustomizeSort
        public NET_OSD_CUSTOM_INFO stOSDCustomInfo;        //OSD自定义项
    }

    //全体OSD项共用属性
    public struct NET_OSD_WHOLE_ATTR
    {
        public bool bPositionAsBlackRegion;     //位置是否同黑边相同,true时，下面的Position无效
        public NET_CFG_RECT stPostion;                  //位置,不能超过图片范围
        public bool bNewLine;                   //超出矩形范围是否换行,bPositionAsBlackRegion为true时有效
        public bool bLoneVehicle;                //车辆信息独立显示,true 一行显示一辆车信息,false 允许多辆车信息显示在一行
    }

    //OSD叠加内容自定义排序
    public struct NET_OSD_CUSTOM_SORT
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_OSD_CUSTOM_ELEMENT[] stElements;     //具体叠加元素
        public int nElementNum;
    }

    //OSD具体叠加元素
    public struct NET_OSD_CUSTOM_ELEMENT
    {
        public int nNameType;                          //名称类型,	0:szName字段含义参照szOSDOrder字段定义的项
        //             1:"Name"字段表示自定义项，无需解析
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szName;                           // 该项名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPrefix;      // 叠加前缀字符串	
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPostfix;     //叠加后缀字符串
        public int nSeperaterCount;                    //后面添加分隔符个数
    }

    //OSD自定义项
    public struct NET_OSD_CUSTOM_INFO
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_OSD_CUSTOM_GENERAL_INFO[] stGeneralInfos;     //具体叠加元素
        public int nGeneralInfoNum;
    }

    /// <summary>
    /// 叠加配置信息
    /// osd general Info
    /// </summary>
    public struct NET_OSD_CUSTOM_GENERAL_INFO
    {
        /// <summary>
        /// / 是否叠加
        /// enable
        /// </summary>
        public bool bEnable;
    }

    // 时间
    public struct NET_CFG_NET_TIME
    {
        public int nStructSize;
        public uint dwYear;               // 年
        public uint dwMonth;              // 月
        public uint dwDay;                // 日
        public uint dwHour;               // 时
        public uint dwMinute;             // 分
        public uint dwSecond;             // 秒
    }

    public struct NET_RADAR_INFO
    {
        public int nAngle;                 //角度,用于修正雷达探头安装的角度造成的速度误差,范围[0,90]
        public int nAntiJammingValue;      //抗干扰门槛值
        public int nComeInValue;           //来向进入门槛值,取值范围[0,65535]
        public int nComeOutValue;          //来向离开门槛值
        public int nDelayTime;             //雷达延时,单位ms，范围[0,255]
        public uint nDetectBreaking;        //违章类型掩码,从低位到高位依次是:
        //0-正常,1-闯红灯, 2-压线, 3-逆行,4-欠速
        //5-超速,6-有车占道,7-黄牌占道,8-闯黄灯,9-违章占公交车道
        public int nDetectMode;            //检测模式  0-车头检测 1-车尾检测 2-双向检测
        public int nInstallMode;           //雷达安装方式  0-侧面安装 1-上方安装
        public int nLevel;                 //灵敏度,0级灵敏度最高,范围[0,5]
        public int nMultiTargetFilter;     //多目标过滤模式,0-正常 1-过滤
        public int nWentEndValue;          //去向信号结束门槛值
        public int nWentInValue;           //去向进入门槛值
        public int nWentOutValue;          //去向离开门槛值
    }

    // CFG_CMD_TRAFFICGLOBAL 交通全局配置配置表
    public struct NET_CFG_TRAFFICGLOBAL_INFO
    {
        public NET_VIOLATIONCODE_INFO stViolationCode;                            // 违章代码配置表                          
        public bool bEnableRedList;                             // 使能红名单检测，使能后，名单内车辆违章不上报

        public bool abViolationTimeSchedule;                    // 是否携带违章抓拍自定义时间配置
        public NET_VIOLATION_TIME_SCHEDULE stViolationTimeSchedule;                    // 违章抓拍自定义时间配置

        public bool abEnableBlackList;                          // 是否携带使能禁止名单检测信息
        public bool bEnableBlackList;                           // 使能禁止名单检测

        public bool abPriority;                                 // 是否携带违章优先级参数
        public uint nPriority;                          // 违章优先级个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256 * 256)]
        public byte[] szPriority;                  // 违章优先级, 0为最高优先级    

        public bool abNamingFormat;                             // 是否携带图片命名格式参数
        public NET_TRAFFIC_NAMING_FORMAT stNamingFormat;                             // 图片命名格式参数配置

        public bool abVideoNamingFormat;                        // 是否携带录像命名格式参数
        public NET_TRAFFIC_NAMING_FORMAT stVideoNamingFormat;                        // 录像命名格式参数配置

        public bool abCalibration;                              // 是否携带标定信息
        public NET_TRAFFIC_CALIBRATION_INFO stCalibration;                             // 标定信息

        public bool abAddress;                                  // 是否携带查询地址参数
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szAddress;                                // 查询地址，UTF-8编码

        public bool abTransferPolicy;                           // 是否携带传输策略参数
        public EM_TRANSFER_POLICY emTransferPolicy;                           // 传输策略

        public bool abSupportModeMaskConfig;                    // 是否携带违章掩码 
        public NET_TRAFFIC_EVENT_CHECK_MASK stSupportModeMaskConfig;                   // 违章类型支持的检测模式掩码配置

        public bool abIsEnableLightState;                       // 是否携带灯组状态
        public NET_ENABLE_LIGHT_STATE_INFO stIsEnableLightState;                       // 交通全局配置对应图片命名格式参数配置

        public bool abMixModeInfo;                              // 是否含有混合模式配置
        public NET_MIX_MODE_CONFIG stMixModeInfo;                              // 混合模式配置
    }


    // 交通全局配置对应灯组状态配置
    public struct NET_ENABLE_LIGHT_STATE_INFO
    {
        public bool bEnable;      // 是否启动应用层收到的灯组状态给底层
    };

    /// <summary>
    /// 交通配置对应传输策略
    /// </summary>
    public enum EM_TRANSFER_POLICY
    {
        UNKNOWN = 0,            // 未知策略
        REALTIME = 1,           // "RealtimePriority" 实时优先
        SEQUENCE = 1,           // "SequencePriority" 顺序优先

    };

    /// <summary>
    ///  违章类型支持的检测模式掩码配置
    /// </summary>
    public struct NET_TRAFFIC_EVENT_CHECK_MASK
    {
        public bool abTrafficGate;                  // 是否携带交通卡口信息
        public int nTrafficGate;                   // 交通卡口检测模式掩码

        public bool abTrafficJunction;              // 是否携带交通路口信息
        public int nTrafficJunction;               // 交通路口检测模式掩码

        public bool abTrafficTollGate;              // 是否携带新交通卡口信息
        public int nTrafficTollGate;               // 新交通卡口检测模式掩码

        public bool abTrafficRunRedLight;           // 是否携带交通闯红灯信息
        public int nTrafficRunRedLight;            // 交通闯红灯检测模式掩码

        public bool abTrafficRunYellowLight;        // 是否携带交通闯黄灯信息
        public int nTrafficRunYellowLight;         // 交通闯黄灯检测模式掩码

        public bool abTrafficOverLine;              // 是否携带交通压线信息
        public int nTrafficOverLine;               // 交通压线检测模式掩码

        public bool abTrafficOverYellowLine;        // 是否携带交通压黄线信息
        public int nTrafficOverYellowLine;         // 交通压黄线检测模式掩码

        public bool abTrafficRetrograde;            // 是否携带交通逆行信息
        public int nTrafficRetrograde;             // 交通逆行检测模式掩码

        public bool abTrafficTurnLeft;              // 是否携带交通违章左转信息
        public int nTrafficTurnLeft;               // 交通违章左转检测模式掩码

        public bool abTrafficTurnRight;             // 是否携带交通违章右转信息
        public int nTrafficTurnRight;              // 交通路口违章右转类型

        public bool abTrafficU_Turn;                // 是否携带交通违章掉头信息
        public int nTrafficU_Turn;                 // 交通违章掉头检测模式掩码

        public bool abTrafficCrossLane;             // 是否携带交通违章变道信息
        public int nTrafficCrossLane;              // 交通违章变道检测模式掩码

        public bool abTrafficParking;               // 是否携带交通违章停车信息
        public int nTrafficParking;                // 交通违章停车检测模式掩码

        public bool abTrafficJam;                   // 是否携带交通拥堵信息
        public int nTrafficJam;                    // 交通拥堵检测模式掩码

        public bool abTrafficIdle;                  // 是否携带交通交通空闲信息
        public int nTrafficIdle;                   // 交通交通空闲检测模式掩码

        public bool abTrafficWaitingArea;           // 是否携带交通违章驶入待行区信息
        public int nTrafficWaitingArea;            // 交通违章驶入待行区检测模式掩码

        public bool abTrafficUnderSpeed;            // 是否携带交通欠速信息
        public int nTrafficUnderSpeed;             // 交通欠速检测模式掩码

        public bool abTrafficOverSpeed;             // 是否携带交通超速信息
        public int nTrafficOverSpeed;              // 交通超速检测模式掩码

        public bool abTrafficWrongRoute;            // 是否携带交通不按车道行驶信息
        public int nTrafficWrongRoute;             // 交通不按车道行驶检测模式掩码

        public bool abTrafficYellowInRoute;         // 是否携带交通黄牌占道信息
        public int nTrafficYellowInRoute;          // 交通黄牌占道检测模式掩码

        public bool abTrafficVehicleInRoute;        // 是否携带交通有车占道信息
        public int nTrafficVehicleInRoute;         // 交通有车占道检测模式掩码

        public bool abTrafficControl;               // 是否携带交通交通GZ信息
        public int nTrafficControl;                // 交通交通GZ检测模式掩码

        public bool abTrafficObjectAlarm;           // 是否携带交通指定类型抓拍信息
        public int nTrafficObjectAlarm;            // 交通指定类型抓拍检测模式掩码

        public bool abTrafficAccident;              // 是否携带交通交通事故信息
        public int nTrafficAccident;               // 交通交通事故检测模式掩码

        public bool abTrafficStay;                  // 是否携带交通交通停留/滞留信息
        public int nTrafficStay;                   // 交通交通停留/滞留检测模式掩码

        public bool abTrafficPedestrainPriority;    // 是否携带交通斑马线行人优先信息
        public int nTrafficPedestrainPriority;     // 交通斑马线行人优先检测模式掩码

        public bool abTrafficPedestrain;            // 是否携带交通交通行人事件信息
        public int nTrafficPedestrain;             // 交通交通行人事件检测模式掩码

        public bool abTrafficThrow;                 // 是否携带交通交通抛洒物品事件信息
        public int nTrafficThrow;                  // 交通交通抛洒物品事件检测模式掩码

        public bool abTrafficVehicleInBusRoute;     // 是否携带交通违章占道信息
        public int nTrafficVehicleInBusRoute;      // 交通违章占道检测模式掩码

        public bool abTrafficBacking;               // 是否携带交通违章倒车信息
        public int nTrafficBacking;                // 交通违章倒车检测模式掩码

        public bool abTrafficOverStopLine;          // 是否携带交通压停止线信息
        public int nTrafficOverStopLine;           // 交通压停止线检测模式掩码

        public bool abTrafficParkingOnYellowBox;    // 是否携带交通黄网格线抓拍信息
        public int nTrafficParkingOnYellowBox;     // 交通黄网格线抓拍检测模式掩码

        public bool abTrafficParkingSpaceParking;   // 是否携带交通车位有车信息
        public int nTrafficParkingSpaceParking;    // 交通车位有车检测模式掩码

        public bool abTrafficParkingSpaceNoParking; // 是否携带交通车位无车信息
        public int nTrafficParkingSpaceNoParking;  // 交通车位无车检测模式掩码

        public bool abTrafficParkingSpaceOverLine;  // 是否携带交通车位有车压线信息
        public int nTrafficParkingSpaceOverLine;   // 交通车位有车压线检测模式掩码

        public bool abParkingSpaceDetection;        // 是否携带交通多停车位状态检测信息
        public int nParkingSpaceDetection;         // 交通多停车位状态检测检测模式掩码

        public bool abTrafficRestrictedPlate;       // 是否携带交通受限车牌信息
        public int nTrafficRestrictedPlate;        // 交通受限车牌检测模式掩码

        public bool abTrafficWithoutSafeBelt;       // 是否携带交通不系安全带信息
        public int nTrafficWithoutSafeBelt;        // 交通不系安全带检测模式掩码

        public bool abTrafficNoPassing;             // 是否携带交通禁行信息
        public int nTrafficNoPassing;              // 交通禁行检测模式掩码

        public bool abVehicleAnalyse;               // 是否携带交通车辆特征检测分析信息
        public int nVehicleAnalyse;                // 交通车辆特征检测模式掩码

        public bool abCrossLineDetection;           // 是否携带交通拌线入侵信息
        public int nCrossLineDetection;            // 交通拌线入侵检测模式掩码

        public bool abCrossFenceDetection;          // 是否携带交通穿越围栏信息
        public int nCrossFenceDetection;           // 交通穿越围栏检测模式掩码

        public bool abCrossRegionDetection;         // 是否携带交通区域入侵信息
        public int nCrossRegionDetection;          // 交通区域入侵检测模式掩码

        public bool abPasteDetection;               // 是否携带交通ATM贴条信息
        public int nPasteDetection;                // 交通ATM贴条检测模式掩码

        public bool abLeftDetection;                // 是否携带交通物品遗留信息
        public int nLeftDetection;                 // 交通物品遗留检测模式掩码

        public bool abPreservation;                 // 是否携带交通物品保全信息
        public int nPreservation;                  // 交通物品保全检测模式掩码

        public bool abTakenAwayDetection;           // 是否携带交通物品搬移信息
        public int nTakenAwayDetection;            // 交通物品搬移检测模式掩码

        public bool abStayDetection;                // 是否携带交通停留/滞留信息
        public int nStayDetection;                 // 交通停留/滞留检测模式掩码

        public bool abParkingDetection;             // 是否携带交通非法停车信息
        public int nParkingDetection;              // 交通非法停车检测模式掩码

        public bool abWanderDetection;              // 是否携带交通徘徊信息
        public int nWanderDetection;               // 交通徘徊检测模式掩码

        public bool abMoveDetection;                // 是否携带交通运动信息
        public int nMoveDetection;                 // 交通运动检测模式掩码

        public bool abTailDetection;                // 是否携带交通尾随信息
        public int nTailDetection;                 // 交通尾随检测模式掩码

        public bool abRioterDetection;              // 是否携带交通聚集信息
        public int nRioterDetection;               // 交通聚集检测模式掩码

        public bool abFightDetection;               // 是否携带交通打架信息
        public int nFightDetection;                // 交通打架检测模式掩码

        public bool abRetrogradeDetection;          // 是否携带交通逆行信息
        public int nRetrogradeDetection;           // 交通逆行检测模式掩码

        public bool abFireDetection;                // 是否携带交通火焰信息
        public int nFireDetection;                 // 交通火焰检测模式掩码

        public bool abSmokeDetection;               // 是否携带交通烟雾信息
        public int nSmokeDetection;                // 交通烟雾检测模式掩码

        public bool abNumberStat;                   // 是否携带交通数量统计信息
        public int nNumberStat;                    // 交通数量统计检测模式掩码

        public bool abVideoAbnormalDetection;       // 是否携带交通视频异常信息
        public int nVideoAbnormalDetection;        // 交通视频异常检测模式掩码

        public bool abPSRiseDetection;        // 
        public int nPSRiseDetection;         // 

        public bool abFaceDetection;                // 是否携带目标检测信息
        public int nFaceDetection;                 // 目标检测检测模式掩码

        public bool abFaceRecognition;              // 是否携带目标识别信息
        public int nFaceRecognition;               // 目标识别检测模式掩码

        public bool abDensityDetection;             // 是否携带密集度检测信息
        public int nDensityDetection;              // 密集度检测检测模式掩码

        public bool abQueueDetection;               // 是否携带排队检测信息
        public int nQueueDetection;                // 排队检测检测模式掩码

        public bool abClimbDetection;               // 是否携带攀高检测信息
        public int nClimbDetection;                // 攀高检测模式掩码

        public bool abLeaveDetection;               // 是否携带离岗检测信息
        public int nLeaveDetection;                // 离岗检测模式掩码

        public bool abVehicleOnPoliceCar;           // 是否携带车载警车信息
        public int nVehicleOnPoliceCar;            // 车载警车检测模式掩码

        public bool abVehicleOnBus;                 // 是否携带车载公交信息
        public int nVehicleOnBus;                  // 车载公交检测模式掩码

        public bool abVehicleOnSchoolBus;           // 是否携带车载校车信息
        public int nVehicleOnSchoolBus;            // 车载校车检测模式掩码 
    };


    // 交通全局配置对应标定相关配置
    public struct NET_TRAFFIC_CALIBRATION_INFO
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szUnit; // 标定单位
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szCertificate; // 标定证书
        NET_PERIOD_OF_VALIDITY stPeriodOfValidity; // 标定有效期
    };

    /// <summary>
    /// 电子围栏报警时间段信息
    /// </summary>
    public struct NET_ENCLOSURE_TIME_SCHEDULE_INFO
    {
        public int nEnclosureID;                                        // 围栏的ID号
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8 * 6)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;  // 事件响应时间段 NET_CFG_TIME_SECTION[8,6]
    }

    /// <summary>
    /// 违章抓拍时间配置表
    /// </summary>
    public struct NET_TIME_SCHEDULE_INFO
    {
        public bool bEnable; // 是否启用时间表
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 6)]
        public NET_CFG_TIME_SECTION[] stuTimeSchedule; // 时间表
    }

    /// <summary>
    /// 违章抓拍自定义时间配置
    /// </summary>
    public struct NET_VIOLATION_TIME_SCHEDULE
    {
        public bool abTrafficGate;                  // 是否携带交通卡口信息
        public NET_TIME_SCHEDULE_INFO stTrafficGate;                  // 交通卡口时间配置

        public bool abTrafficJunction;              // 是否携带交通路口信息
        public NET_TIME_SCHEDULE_INFO stTrafficJunction;              // 交通路口时间配置

        public bool abTrafficTollGate;              // 是否携带新交通卡口信息
        public NET_TIME_SCHEDULE_INFO stTrafficTollGate;              // 新交通卡口时间配置

        public bool abTrafficRunRedLight;           // 是否携带交通闯红灯信息
        public NET_TIME_SCHEDULE_INFO stTrafficRunRedLight;           // 交通闯红灯时间配置

        public bool abTrafficRunYellowLight;        // 是否携带交通闯黄灯信息
        public NET_TIME_SCHEDULE_INFO stTrafficRunYellowLight;        // 交通闯黄灯时间配置

        public bool abTrafficOverLine;              // 是否携带交通压线信息
        public NET_TIME_SCHEDULE_INFO stTrafficOverLine;              // 交通压线时间配置

        public bool abTrafficOverYellowLine;        // 是否携带交通压黄线信息
        public NET_TIME_SCHEDULE_INFO stTrafficOverYellowLine;        // 交通压黄线时间配置

        public bool abTrafficRetrograde;            // 是否携带交通逆行信息
        public NET_TIME_SCHEDULE_INFO stTrafficRetrograde;            // 交通逆行时间配置

        public bool abTrafficTurnLeft;              // 是否携带交通违章左转信息
        public NET_TIME_SCHEDULE_INFO stTrafficTurnLeft;              // 交通违章左转时间配置

        public bool abTrafficTurnRight;             // 是否携带交通违章右转信息
        public NET_TIME_SCHEDULE_INFO stTrafficTurnRight;             // 交通路口违章右转类型

        public bool abTrafficU_Turn;                // 是否携带交通违章掉头信息
        public NET_TIME_SCHEDULE_INFO stTrafficU_Turn;                // 交通违章掉头时间配置

        public bool abTrafficCrossLane;             // 是否携带交通违章变道信息
        public NET_TIME_SCHEDULE_INFO stTrafficCrossLane;             // 交通违章变道时间配置

        public bool abTrafficParking;               // 是否携带交通违章停车信息
        public NET_TIME_SCHEDULE_INFO stTrafficParking;               // 交通违章停车时间配置

        public bool abTrafficJam;                   // 是否携带交通拥堵信息
        public NET_TIME_SCHEDULE_INFO stTrafficJam;                   // 交通拥堵时间配置

        public bool abTrafficIdle;                  // 是否携带交通交通空闲信息
        public NET_TIME_SCHEDULE_INFO stTrafficIdle;                  // 交通交通空闲时间配置

        public bool abTrafficWaitingArea;           // 是否携带交通违章驶入待行区信息
        public NET_TIME_SCHEDULE_INFO stTrafficWaitingArea;           // 交通违章驶入待行区时间配置

        public bool abTrafficUnderSpeed;            // 是否携带交通欠速信息
        public NET_TIME_SCHEDULE_INFO stTrafficUnderSpeed;            // 交通欠速时间配置

        public bool abTrafficOverSpeed;             // 是否携带交通超速信息
        public NET_TIME_SCHEDULE_INFO stTrafficOverSpeed;             // 交通超速时间配置

        public bool abTrafficWrongRoute;            // 是否携带交通不按车道行驶信息
        public NET_TIME_SCHEDULE_INFO stTrafficWrongRoute;            // 交通不按车道行驶时间配置

        public bool abTrafficYellowInRoute;         // 是否携带交通黄牌占道信息
        public NET_TIME_SCHEDULE_INFO stTrafficYellowInRoute;         // 交通黄牌占道时间配置

        public bool abTrafficVehicleInRoute;        // 是否携带交通有车占道信息
        public NET_TIME_SCHEDULE_INFO stTrafficVehicleInRoute;        // 交通有车占道时间配置

        public bool abTrafficControl;               // 是否携带交通交通GZ信息
        public NET_TIME_SCHEDULE_INFO stTrafficControl;               // 交通交通GZ时间配置

        public bool abTrafficObjectAlarm;           // 是否携带交通指定类型抓拍信息
        public NET_TIME_SCHEDULE_INFO stTrafficObjectAlarm;           // 交通指定类型抓拍时间配置

        public bool abTrafficAccident;              // 是否携带交通交通事故信息
        public NET_TIME_SCHEDULE_INFO stTrafficAccident;              // 交通交通事故时间配置

        public bool abTrafficStay;                  // 是否携带交通交通停留/滞留信息
        public NET_TIME_SCHEDULE_INFO stTrafficStay;                  // 交通交通停留/滞留时间配置

        public bool abTrafficPedestrainPriority;    // 是否携带交通斑马线行人优先信息
        public NET_TIME_SCHEDULE_INFO stTrafficPedestrainPriority;    // 交通斑马线行人优先时间配置

        public bool abTrafficPedestrain;            // 是否携带交通交通行人事件信息
        public NET_TIME_SCHEDULE_INFO stTrafficPedestrain;            // 交通交通行人事件时间配置

        public bool abTrafficThrow;                 // 是否携带交通交通抛洒物品事件信息
        public NET_TIME_SCHEDULE_INFO stTrafficThrow;                 // 交通交通抛洒物品事件时间配置

        public bool abTrafficVehicleInBusRoute;     // 是否携带交通违章占道信息
        public NET_TIME_SCHEDULE_INFO stTrafficVehicleInBusRoute;     // 交通违章占道时间配置

        public bool abTrafficBacking;               // 是否携带交通违章倒车信息
        public NET_TIME_SCHEDULE_INFO stTrafficBacking;               // 交通违章倒车时间配置

        public bool abTrafficOverStopLine;          // 是否携带交通压停止线信息
        public NET_TIME_SCHEDULE_INFO stTrafficOverStopLine;          // 交通压停止线时间配置

        public bool abTrafficParkingOnYellowBox;    // 是否携带交通黄网格线抓拍信息
        public NET_TIME_SCHEDULE_INFO stTrafficParkingOnYellowBox;    // 交通黄网格线抓拍时间配置

        public bool abTrafficParkingSpaceParking;   // 是否携带交通车位有车信息
        public NET_TIME_SCHEDULE_INFO stTrafficParkingSpaceParking;   // 交通车位有车时间配置

        public bool abTrafficParkingSpaceNoParking; // 是否携带交通车位无车信息
        public NET_TIME_SCHEDULE_INFO stTrafficParkingSpaceNoParking; // 交通车位无车时间配置

        public bool abTrafficParkingSpaceOverLine;  // 是否携带交通车位有车压线信息
        public NET_TIME_SCHEDULE_INFO stTrafficParkingSpaceOverLine;  // 交通车位有车压线时间配置

        public bool abParkingSpaceDetection;        // 是否携带交通多停车位状态检测信息
        public NET_TIME_SCHEDULE_INFO stParkingSpaceDetection;        // 交通多停车位状态检测时间配置

        public bool abTrafficRestrictedPlate;       // 是否携带交通受限车牌信息
        public NET_TIME_SCHEDULE_INFO stTrafficRestrictedPlate;       // 交通受限车牌时间配置

        public bool abTrafficWithoutSafeBelt;       // 是否携带交通不系安全带信息
        public NET_TIME_SCHEDULE_INFO stTrafficWithoutSafeBelt;       // 交通不系安全带时间配置

        public bool abTrafficNoPassing;             // 是否携带交通禁行信息
        public NET_TIME_SCHEDULE_INFO stTrafficNoPassing;             // 交通禁行时间配置

        public bool abVehicleAnalyse;               // 是否携带交通车辆特征检测分析信息
        public NET_TIME_SCHEDULE_INFO stVehicleAnalyse;               // 交通车辆特征时间配置

        public bool abCrossLineDetection;           // 是否携带交通拌线入侵信息
        public NET_TIME_SCHEDULE_INFO stCrossLineDetection;           // 交通拌线入侵时间配置

        public bool abCrossFenceDetection;          // 是否携带交通穿越围栏信息
        public NET_TIME_SCHEDULE_INFO stCrossFenceDetection;          // 交通穿越围栏时间配置

        public bool abCrossRegionDetection;         // 是否携带交通区域入侵信息
        public NET_TIME_SCHEDULE_INFO stCrossRegionDetection;         // 交通区域入侵时间配置

        public bool abPasteDetection;               // 是否携带交通ATM贴条信息
        public NET_TIME_SCHEDULE_INFO stPasteDetection;               // 交通ATM贴条时间配置

        public bool abLeftDetection;                // 是否携带交通物品遗留信息
        public NET_TIME_SCHEDULE_INFO stLeftDetection;                // 交通物品遗留时间配置

        public bool abPreservation;                 // 是否携带交通物品保全信息
        public NET_TIME_SCHEDULE_INFO stPreservation;                 // 交通物品保全时间配置

        public bool abTakenAwayDetection;           // 是否携带交通物品搬移信息
        public NET_TIME_SCHEDULE_INFO stTakenAwayDetection;           // 交通物品搬移时间配置

        public bool abStayDetection;                // 是否携带交通停留/滞留信息
        public NET_TIME_SCHEDULE_INFO stStayDetection;                // 交通停留/滞留时间配置

        public bool abParkingDetection;             // 是否携带交通非法停车信息
        public NET_TIME_SCHEDULE_INFO stParkingDetection;             // 交通非法停车时间配置

        public bool abWanderDetection;              // 是否携带交通徘徊信息
        public NET_TIME_SCHEDULE_INFO stWanderDetection;              // 交通徘徊时间配置

        public bool abMoveDetection;                // 是否携带交通运动信息
        public NET_TIME_SCHEDULE_INFO stMoveDetection;                // 交通运动时间配置

        public bool abTailDetection;                // 是否携带交通尾随信息
        public NET_TIME_SCHEDULE_INFO stTailDetection;                // 交通尾随时间配置

        public bool abRioterDetection;              // 是否携带交通聚集信息
        public NET_TIME_SCHEDULE_INFO stRioterDetection;              // 交通聚集时间配置

        public bool abFightDetection;               // 是否携带交通打架信息
        public NET_TIME_SCHEDULE_INFO stFightDetection;               // 交通打架时间配置

        public bool abRetrogradeDetection;          // 是否携带交通逆行信息
        public NET_TIME_SCHEDULE_INFO stRetrogradeDetection;          // 交通逆行时间配置

        public bool abFireDetection;                // 是否携带交通火焰信息
        public NET_TIME_SCHEDULE_INFO stFireDetection;                // 交通火焰时间配置

        public bool abSmokeDetection;               // 是否携带交通烟雾信息
        public NET_TIME_SCHEDULE_INFO stSmokeDetection;               // 交通烟雾时间配置

        public bool abNumberStat;                   // 是否携带交通数量统计信息
        public NET_TIME_SCHEDULE_INFO stNumberStat;                   // 交通数量统计时间配置

        public bool abVideoAbnormalDetection;       // 是否携带交通视频异常信息
        public NET_TIME_SCHEDULE_INFO stVideoAbnormalDetection;       // 交通视频异常时间配置

        public bool abPSRiseDetection;        // 
        public NET_TIME_SCHEDULE_INFO stPSRiseDetection;        // 

        public bool abFaceDetection;                // 是否携带目标检测信息
        public NET_TIME_SCHEDULE_INFO stFaceDetection;                // 目标检测时间配置

        public bool abFaceRecognition;              // 是否携带目标识别信息
        public NET_TIME_SCHEDULE_INFO stFaceRecognition;              // 目标识别时间配置

        public bool abDensityDetection;             // 是否携带密集度检测信息
        public NET_TIME_SCHEDULE_INFO stDensityDetection;             // 密集度检测时间配置

        public bool abQueueDetection;               // 是否携带排队检测信息
        public NET_TIME_SCHEDULE_INFO stQueueDetection;               // 排队检测时间配置

        public bool abClimbDetection;               // 是否携带攀高检测信息
        public NET_TIME_SCHEDULE_INFO stClimbDetection;               // 攀高时间配置

        public bool abLeaveDetection;               // 是否携带离岗检测信息
        public NET_TIME_SCHEDULE_INFO stLeaveDetection;               // 离岗时间配置

        public bool abVehicleOnPoliceCar;           // 是否携带车载警车信息
        public NET_TIME_SCHEDULE_INFO stVehicleOnPoliceCar;           // 车载警车时间配置

        public bool abVehicleOnBus;                 // 是否携带车载公交信息
        public NET_TIME_SCHEDULE_INFO stVehicleOnBus;                 // 车载公交时间配置

        public bool abVehicleOnSchoolBus;           // 是否携带车载校车信息
        public NET_TIME_SCHEDULE_INFO stVehicleOnSchoolBus;           // 车载校车时间配置

        public bool abTrafficNonMotorHoldUmbrella;  // 是否携带非机动车装载伞具时间配置
        public NET_TIME_SCHEDULE_INFO stTrafficNonMotorHoldUmbrella;  // 非机动车装载伞具时间配置
    };

    /// <summary>
    /// 交通全局配置对应图片命名格式参数配置
    /// </summary>
    public struct NET_TRAFFIC_NAMING_FORMAT
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szFormat; // 图片格式
    }

    /// <summary>
    /// MixModeConfig 混合模式违章配置
    /// </summary>
    public struct NET_MIX_MODE_CONFIG
    {
        public bool bLaneDiffEnable;                    // 是否按车道区分
        public NET_MIX_MODE_LANE_INFO stLaneInfo;
        public NET_TRAFFIC_EVENT_CHECK_INFO stCheckInfo;
    }

    /// <summary>
    ///  MixModeConfig中关于车道配置信息
    /// </summary>
    public struct NET_MIX_MODE_LANE_INFO
    {
        /// <summary>
        /// 车道配置个数
        /// </summary>
        public int nLaneNum;

        /// <summary>
        /// 车道配置对应事件检测信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_TRAFFIC_EVENT_CHECK_INFO[] stCheckInfo;
    };

    public struct NET_TRAFFIC_EVENT_CHECK_INFO
    {
        public bool abTrafficGate;                  // 是否携带交通卡口信息
        public EM_CHECK_TYPE emTrafficGate;                  // 交通卡口检测类型

        public bool abTrafficJunction;              // 是否携带交通路口信息
        public EM_CHECK_TYPE emTrafficJunction;              // 交通路口检测类型

        public bool abTrafficTollGate;              // 是否携带新交通卡口信息
        public EM_CHECK_TYPE emTrafficTollGate;              // 新交通卡口检测类型

        public bool abTrafficRunRedLight;           // 是否携带交通闯红灯信息
        public EM_CHECK_TYPE emTrafficRunRedLight;           // 交通闯红灯检测类型

        public bool abTrafficRunYellowLight;        // 是否携带交通闯黄灯信息
        public EM_CHECK_TYPE emTrafficRunYellowLight;        // 交通闯黄灯检测类型

        public bool abTrafficOverLine;              // 是否携带交通压线信息
        public EM_CHECK_TYPE emTrafficOverLine;              // 交通压线检测类型

        public bool abTrafficOverYellowLine;        // 是否携带交通压黄线信息
        public EM_CHECK_TYPE emTrafficOverYellowLine;        // 交通压黄线检测类型

        public bool abTrafficRetrograde;            // 是否携带交通逆行信息
        public EM_CHECK_TYPE emTrafficRetrograde;            // 交通逆行检测类型

        public bool abTrafficTurnLeft;              // 是否携带交通违章左转信息
        public EM_CHECK_TYPE emTrafficTurnLeft;              // 交通违章左转检测类型

        public bool abTrafficTurnRight;             // 是否携带交通违章右转信息
        public EM_CHECK_TYPE emTrafficTurnRight;             // 交通路口违章右转类型

        public bool abTrafficU_Turn;                // 是否携带交通违章掉头信息
        public EM_CHECK_TYPE emTrafficU_Turn;                // 交通违章掉头检测类型

        public bool abTrafficCrossLane;             // 是否携带交通违章变道信息
        public EM_CHECK_TYPE emTrafficCrossLane;             // 交通违章变道检测类型

        public bool abTrafficParking;               // 是否携带交通违章停车信息
        public EM_CHECK_TYPE emTrafficParking;               // 交通违章停车检测类型

        public bool abTrafficJam;                   // 是否携带交通拥堵信息
        public EM_CHECK_TYPE emTrafficJam;                   // 交通拥堵检测类型

        public bool abTrafficIdle;                  // 是否携带交通交通空闲信息
        public EM_CHECK_TYPE emTrafficIdle;                  // 交通交通空闲检测类型

        public bool abTrafficWaitingArea;           // 是否携带交通违章驶入待行区信息
        public EM_CHECK_TYPE emTrafficWaitingArea;           // 交通违章驶入待行区检测类型

        public bool abTrafficUnderSpeed;            // 是否携带交通欠速信息
        public EM_CHECK_TYPE emTrafficUnderSpeed;            // 交通欠速检测类型

        public bool abTrafficOverSpeed;             // 是否携带交通超速信息
        public EM_CHECK_TYPE emTrafficOverSpeed;             // 交通超速检测类型

        public bool abTrafficWrongRoute;            // 是否携带交通不按车道行驶信息
        public EM_CHECK_TYPE emTrafficWrongRoute;            // 交通不按车道行驶检测类型

        public bool abTrafficYellowInRoute;         // 是否携带交通黄牌占道信息
        public EM_CHECK_TYPE emTrafficYellowInRoute;         // 交通黄牌占道检测类型

        public bool abTrafficVehicleInRoute;        // 是否携带交通有车占道信息
        public EM_CHECK_TYPE emTrafficVehicleInRoute;        // 交通有车占道检测类型

        public bool abTrafficControl;               // 是否携带交通交通GZ信息
        public EM_CHECK_TYPE emTrafficControl;               // 交通交通GZ检测类型

        public bool abTrafficObjectAlarm;           // 是否携带交通指定类型抓拍信息
        public EM_CHECK_TYPE emTrafficObjectAlarm;           // 交通指定类型抓拍检测类型

        public bool abTrafficAccident;              // 是否携带交通交通事故信息
        public EM_CHECK_TYPE emTrafficAccident;              // 交通交通事故检测类型

        public bool abTrafficStay;                  // 是否携带交通交通停留/滞留信息
        public EM_CHECK_TYPE emTrafficStay;                  // 交通交通停留/滞留检测类型

        public bool abTrafficPedestrainPriority;    // 是否携带交通斑马线行人优先信息
        public EM_CHECK_TYPE emTrafficPedestrainPriority;    // 交通斑马线行人优先检测类型

        public bool abTrafficPedestrain;            // 是否携带交通交通行人事件信息
        public EM_CHECK_TYPE emTrafficPedestrain;            // 交通交通行人事件检测类型

        public bool abTrafficThrow;                 // 是否携带交通交通抛洒物品事件信息
        public EM_CHECK_TYPE emTrafficThrow;                 // 交通交通抛洒物品事件检测类型

        public bool abTrafficVehicleInBusRoute;     // 是否携带交通违章占道信息
        public EM_CHECK_TYPE emTrafficVehicleInBusRoute;     // 交通违章占道检测类型

        public bool abTrafficBacking;               // 是否携带交通违章倒车信息
        public EM_CHECK_TYPE emTrafficBacking;               // 交通违章倒车检测类型

        public bool abTrafficOverStopLine;          // 是否携带交通压停止线信息
        public EM_CHECK_TYPE emTrafficOverStopLine;          // 交通压停止线检测类型

        public bool abTrafficParkingOnYellowBox;    // 是否携带交通黄网格线抓拍信息
        public EM_CHECK_TYPE emTrafficParkingOnYellowBox;    // 交通黄网格线抓拍检测类型

        public bool abTrafficParkingSpaceParking;   // 是否携带交通车位有车信息
        public EM_CHECK_TYPE emTrafficParkingSpaceParking;   // 交通车位有车检测类型

        public bool abTrafficParkingSpaceNoParking; // 是否携带交通车位无车信息
        public EM_CHECK_TYPE emTrafficParkingSpaceNoParking; // 交通车位无车检测类型

        public bool abTrafficParkingSpaceOverLine;  // 是否携带交通车位有车压线信息
        public EM_CHECK_TYPE emTrafficParkingSpaceOverLine;  // 交通车位有车压线检测类型

        public bool abParkingSpaceDetection;        // 是否携带交通多停车位状态检测信息
        public EM_CHECK_TYPE emParkingSpaceDetection;        // 交通多停车位状态检测检测类型

        public bool abTrafficRestrictedPlate;       // 是否携带交通受限车牌信息
        public EM_CHECK_TYPE emTrafficRestrictedPlate;       // 交通受限车牌检测类型

        public bool abTrafficWithoutSafeBelt;       // 是否携带交通不系安全带信息
        public EM_CHECK_TYPE emTrafficWithoutSafeBelt;       // 交通不系安全带检测类型

        public bool abTrafficNoPassing;             // 是否携带交通禁行信息
        public EM_CHECK_TYPE emTrafficNoPassing;             // 交通禁行检测类型

        public bool abVehicleAnalyse;               // 是否携带交通车辆特征检测分析信息
        public EM_CHECK_TYPE emVehicleAnalyse;               // 交通车辆特征检测类型

        public bool abCrossLineDetection;           // 是否携带交通拌线入侵信息
        public EM_CHECK_TYPE emCrossLineDetection;           // 交通拌线入侵检测类型

        public bool abCrossFenceDetection;          // 是否携带交通穿越围栏信息
        public EM_CHECK_TYPE emCrossFenceDetection;          // 交通穿越围栏检测类型

        public bool abCrossRegionDetection;         // 是否携带交通区域入侵信息
        public EM_CHECK_TYPE emCrossRegionDetection;         // 交通区域入侵检测类型

        public bool abPasteDetection;               // 是否携带交通ATM贴条信息
        public EM_CHECK_TYPE emPasteDetection;               // 交通ATM贴条检测类型

        public bool abLeftDetection;                // 是否携带交通物品遗留信息
        public EM_CHECK_TYPE emLeftDetection;                // 交通物品遗留检测类型

        public bool abPreservation;                 // 是否携带交通物品保全信息
        public EM_CHECK_TYPE emPreservation;                 // 交通物品保全检测类型

        public bool abTakenAwayDetection;           // 是否携带交通物品搬移信息
        public EM_CHECK_TYPE emTakenAwayDetection;           // 交通物品搬移检测类型

        public bool abStayDetection;                // 是否携带交通停留/滞留信息
        public EM_CHECK_TYPE emStayDetection;                // 交通停留/滞留检测类型

        public bool abParkingDetection;             // 是否携带交通非法停车信息
        public EM_CHECK_TYPE emParkingDetection;             // 交通非法停车检测类型

        public bool abWanderDetection;              // 是否携带交通徘徊信息
        public EM_CHECK_TYPE emWanderDetection;              // 交通徘徊检测类型

        public bool abMoveDetection;                // 是否携带交通运动信息
        public EM_CHECK_TYPE emMoveDetection;                // 交通运动检测类型

        public bool abTailDetection;                // 是否携带交通尾随信息
        public EM_CHECK_TYPE emTailDetection;                // 交通尾随检测类型

        public bool abRioterDetection;              // 是否携带交通聚集信息
        public EM_CHECK_TYPE emRioterDetection;              // 交通聚集检测类型

        public bool abFightDetection;               // 是否携带交通打架信息
        public EM_CHECK_TYPE emFightDetection;               // 交通打架检测类型

        public bool abRetrogradeDetection;          // 是否携带交通逆行信息
        public EM_CHECK_TYPE emRetrogradeDetection;          // 交通逆行检测类型

        public bool abFireDetection;                // 是否携带交通火焰信息
        public EM_CHECK_TYPE emFireDetection;                // 交通火焰检测类型

        public bool abSmokeDetection;               // 是否携带交通烟雾信息
        public EM_CHECK_TYPE emSmokeDetection;               // 交通烟雾检测类型

        public bool abNumberStat;                   // 是否携带交通数量统计信息
        public EM_CHECK_TYPE emNumberStat;                   // 交通数量统计检测类型

        public bool abVideoAbnormalDetection;       // 是否携带交通视频异常信息
        public EM_CHECK_TYPE emVideoAbnormalDetection;       // 交通视频异常检测类型

        public bool abPSRiseDetection;        // 
        public EM_CHECK_TYPE emPSRiseDetection;        // 

        public bool abFaceDetection;                // 是否携带目标检测信息
        public EM_CHECK_TYPE emFaceDetection;                // 目标检测检测类型

        public bool abFaceRecognition;              // 是否携带目标识别信息
        public EM_CHECK_TYPE emFaceRecognition;              // 目标识别检测类型

        public bool abDensityDetection;             // 是否携带密集度检测信息
        public EM_CHECK_TYPE emDensityDetection;             // 密集度检测检测类型

        public bool abQueueDetection;               // 是否携带排队检测信息
        public EM_CHECK_TYPE emQueueDetection;               // 排队检测检测类型

        public bool abClimbDetection;               // 是否携带攀高检测信息
        public EM_CHECK_TYPE emClimbDetection;               // 攀高检测类型

        public bool abLeaveDetection;               // 是否携带离岗检测信息
        public EM_CHECK_TYPE emLeaveDetection;               // 离岗检测类型

        public bool abVehicleOnPoliceCar;           // 是否携带车载警车信息
        public EM_CHECK_TYPE emVehicleOnPoliceCar;           // 车载警车检测类型

        public bool abVehicleOnBus;                 // 是否携带车载公交信息
        public EM_CHECK_TYPE emVehicleOnBus;                 // 车载公交检测类型

        public bool abVehicleOnSchoolBus;           // 是否携带车载校车信息
        public EM_CHECK_TYPE emVehicleOnSchoolBus;           // 车载校车检测类型  

        public bool abStandUpDetection;				// 是否携带学生起立信息
        public EM_CHECK_TYPE emStandUpDetection;				// 学生起立检测类型
    }

    /// <summary>
    /// 车道检测类型
    /// </summary>
    public enum EM_CHECK_TYPE
    {
        UNKNOWN = 0,             // 不识别的检测类型
        PHYSICAL = 1,            // 物理检测
        VIDEO = 2,               // 视频检测
    };

    public struct NET_PERIOD_OF_VALIDITY
    {
        /// <summary>
        ///标定开始时间 
        /// </summary>
        public NET_CFG_NET_TIME stBeginTime;

        /// <summary>
        ///标定到期时间
        /// </summary>
        public NET_CFG_NET_TIME stEndTime;
    }

    //ViolationCode 违章代码配置表
    public struct NET_VIOLATIONCODE_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szRetrograde;// 逆行

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRetrogradeDesc;  // 违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRetrogradeShowName;  //显示名称

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szRetrogradeHighway;  // 逆行-高速公路
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRetrogradeHighwayDesc;  //违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szRunRedLight;  // 闯红灯
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRunRedLightDesc;  //违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szCrossLane;  // 违章变道
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCrossLaneDesc;  //违章描述信息
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCrossLaneShowName;  //违章变道显示名称

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szTurnLeft;  // 违章左转
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szTurnLeftDesc;  //违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szTurnRight;  // 违章右转
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szTurnRightDesc;  //违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szU_Turn;  // 违章掉头
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szU_TurnDesc;  //违章描述信息
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szU_TurnShowName;  //显示信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szJam;  // 交通拥堵
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szJamDesc;  //违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szParking;  // 违章停车
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szParkingDesc;  //违章描述信息
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szParkingShowName;  //违章停车显示名称

        // 超速 和 超速比例 只需且必须有一个配置
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szOverSpeed;  // 超速
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szOverSpeedDesc;  //违章描述信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public NET_CFG_OVERSPEED_INFO[] stOverSpeedConfig;                       // 超速比例代码

        // 超速(高速公路) 和 超速比例(高速公路) 只需且必须有一个配置
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szOverSpeedHighway;  // 超速-高速公路
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szOverSpeedHighwayDesc;  //超速-违章描述信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public NET_CFG_OVERSPEED_INFO[] stOverSpeedHighwayConfig;                       // 超速比例代码

        // 欠速 和 欠速比例 只需且必须有一个配置
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szUnderSpeed;  // 欠速
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUnderSpeedDesc;  //违章描述信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public NET_CFG_OVERSPEED_INFO[] stUnderSpeedConfig;                       // 欠速配置信息	是一个数组，不同的欠速比违章代码不同，为空表示违章代码不区分超速比

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szOverLine;  // 压线
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szOverLineDesc;  //违章描述信息
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szOverLineShowName;  //压线显示名称

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szOverYellowLine;  // 压黄线
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szOverYellowLineDesc;  //违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szYellowInRoute;  // 黄牌占道
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szYellowInRouteDesc;  //黄牌占道违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szWrongRoute;  // 不按车道行驶
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szWrongRouteDesc;  //不按车道行驶违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDrivingOnShoulder;  // 路肩行驶
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDrivingOnShoulderDesc;  //路肩行驶违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPassing;  // 正常行驶
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassingDesc;  //正常行驶违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szNoPassing;  // 禁止行驶
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNoPassingDesc;  //禁止行驶违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szFakePlate;  // 套牌
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szFakePlateDesc;  //套牌违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szParkingSpaceParking;  // 车位有车
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szParkingSpaceParkingDesc;  //车位有车违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szParkingSpaceNoParking;  // 车位无车
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szParkingSpaceNoParkingDesc;  //车位无车违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szWithoutSafeBelt;  // 不系安全带
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szWithoutSafeBeltShowName;  //不系安全带显示名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szWithoutSafeBeltDesc;  //不系安全带违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDriverSmoking;  // 驾驶员抽烟
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDriverSmokingShowName;  //驾驶员抽烟显示名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDriverSmokingDesc;  //驾驶员抽烟带违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDriverCalling;  // 驾驶员打电话
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDriverCallingShowName;  //驾驶员打电话显示名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDriverCallingDesc;  //驾驶员打电话违章描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szBacking;  // 违章倒车
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szBackingShowName;  //违章倒车显示名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szBackingDesc;  //违章倒车描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szVehicleInBusRoute;  // 违章占道
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVehicleInBusRouteShowName;  //违章占道显示名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVehicleInBusRouteDesc;  //违章占道描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPedestrianRunRedLight;  // 行人闯红灯
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPedestrianRunRedLightShowName;  //行人闯红灯显示名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPedestrianRunRedLightDesc;  //行人闯红灯描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPassNotInOrder;  // 未按规定依次通行
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassNotInOrderShowName;  //未按规定依次通行显示名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassNotInOrderDesc;  //未按规定依次通行描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szTrafficBan;  // 机动车违法禁令标识
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szTrafficBanShowName;  //机动车违法禁令标识显示名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szTrafficBanDesc;  //描述信息

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szParkingB;  // B类违章停车
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szParkingBDesc;  //B类违章描述信息
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szParkingBShowName;  //B类违章停车显示名称

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szParkingC;  // C类违章停车
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szParkingCDesc;  //C类违章描述信息
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szParkingCShowName;  //C类违章停车显示名称

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szParkingD;  // D类违章停车
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szParkingDDesc;  //D类违章描述信息
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szParkingDShowName;  //D类违章停车显示名称

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szNonMotorHoldUmbrella;  // 非机动车装载伞具代码
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNonMotorHoldUmbrellaDesc;  //非机动车装载伞具描述信息
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNonMotorHoldUmbrellaShowName;  //非机动车装载伞具显示名称
        public int nBigCarOverSpeedConfigNum;                  // 大车超速配置信息数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public NET_CFG_OVERSPEED_INFO[] stBigCarOverSpeedConfig;       // 大车超速配置信息
    }

    public struct NET_CFG_OVERSPEED_INFO
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] nSpeedingPercentage;                        // 超速百分比区间要求区间不能重叠。有效值为0,正数,-1，-1表示无穷大值
        // 如果是欠速：要求区间不能重叠。有效值为0,正数,-1，-1表示无穷大值，欠速百分比的计算方式：限低速-实际车速/限低速
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szCode;  //违章代码
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDescription;  //违章描述
    }

    // 非机动车子类型
    public enum EM_CATEGORY_NONMOTOR_TYPE
    {
        UNKNOWN,                                  // 未知
        TRICYCLE,                                 // "Tricycle" 三轮车
        MOTORCYCLE,                               // "Motorcycle" 摩托车
        NON_MOTOR,                                // "Non-Motor" 非机动车 
        BICYCLE,                                  // "Bicycle" 自行车     
        DUALTRIWHEELMOTORCYCLE,                   // "DualTriWheelMotorcycle"两、三轮摩托车
        LIGHTMOTORCYCLE,                          // "LightMotorcycle" 轻便摩托车
        EMBASSYMOTORCYCLE,                        // "EmbassyMotorcycle "使馆摩托车
        MARGINALMOTORCYCLE,                       // "MarginalMotorcycle " 领馆摩托车
        AREAOUTMOTORCYCLE,                        // "AreaoutMotorcycle " 境外摩托车
        FOREIGNMOTORCYCLE,                        // "ForeignMotorcycle " 外籍摩托车
        TRIALMOTORCYCLE,                          // "TrialMotorcycle " 试验摩托车
        COACHMOTORCYCLE,                          // "CoachMotorcycle " 教练摩托车
        PASSERBY,                                 // "Passerby" 行人
        VANTRICYCLE,                              // "VanTricycle" 厢式三轮车
        MANNEDCONVERTIBLETRICYCLE,                // "MannedConvertibleTricycle" 载人敞篷三轮车
        NOMANNEDCONVERTIBLETRICYCLE,              // "NoMannedConvertibleTricycle" 不载人敞篷三轮车
    }

    // 颜色类型
    public enum EM_OBJECT_COLOR_TYPE
    {
        UNKNOWN,                                       // 未知
        WHITE,                                         // 白色
        ORANGE,                                        // 橙色
        PINK,                                          // 粉色
        BLACK,                                         // 黑色
        RED,                                           // 红色
        YELLOW,                                        // 黄色
        GRAY,                                          // 灰色
        BLUE,                                          // 蓝色
        GREEN,                                         // 绿色
        PURPLE,                                        // 紫色
        BROWN,                                         // 棕色
        SLIVER,                                        // 银色
        DARKVIOLET,                                    // 暗紫罗兰色
        MAROON,                                        // 栗色
        DIMGRAY,                                       // 暗灰色
        WHITESMOKE,                                    // 白烟色
        DARKORANGE,                                    // 深橙色
        MISTYROSE,                                     // 浅玫瑰色
        TOMATO,                                        // 番茄红色
        OLIVE,                                         // 橄榄色
        GOLD,                                          // 金色
        DARKOLIVEGREEN,                                // 暗橄榄绿色
        CHARTREUSE,                                    // 黄绿色
        GREENYELLOW,                                   // 绿黄色
        FORESTGREEN,                                   // 森林绿色
        SEAGREEN,                                      // 海洋绿色
        DEEPSKYBLUE,                                   // 深天蓝色
        CYAN,                                          // 青色
        OTHER,                                         // 无法识别
    }

    /// <summary>
    /// 非机动车抠图信息
    /// Non-Motor Image
    /// </summary>
    public struct NET_NONMOTOR_PIC_INFO
    {
        /// <summary>
        /// 在二进制数据块中的偏移
        /// Offset
        /// </summary>
        public uint uOffset;
        /// <summary>
        /// 图片大小,单位：字节
        /// Image size, Unit : Byte
        /// </summary>
        public uint uLength;
        /// <summary>
        /// 图片宽度
        /// Image Width
        /// </summary>
        public uint uWidth;
        /// <summary>
        /// 图片高度
        /// Image Height
        /// </summary>
        public uint uHeight;
        /// <summary>
        /// 文件路径
        /// FilePath
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;
        /// <summary>
        /// 在上传图片数据中的图片序号
        /// Index in data
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 新上衣类型
    /// New up clothes type
    /// </summary>
    public enum EM_NEWUPCLOTHES_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_UNKNOWN,
        /// <summary>
        /// 长袖
        /// long sleeve
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_LONG_SLEEVE,
        /// <summary>
        /// 短袖
        /// long sleeve
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_SHORT_SLEEVE,
        /// <summary>
        /// 长款大衣
        /// long coat
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_LONGCOAT,
        /// <summary>
        /// 夹克及牛仔服
        /// jacket and jeans
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_JACKET_AND_JEANS,
        /// <summary>
        /// T恤
        /// T-shirt
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_TSHIRT,
        /// <summary>
        /// 运动装
        /// sport wear
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_SPORTWEAR,
        /// <summary>
        /// 羽绒服
        /// down jackets
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_DOWNJACKETS,
        /// <summary>
        /// 衬衫
        /// shirt
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_SHIRT,
        /// <summary>
        /// 连衣裙
        /// dirss
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_DRESS,
        /// <summary>
        /// 西装
        /// suit
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_SUIT,
        /// <summary>
        /// 毛衣
        /// sweater
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_SWEATER,
        /// <summary>
        /// 无袖
        /// sleeveless
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_SLEEVELESS,
        /// <summary>
        /// 背心
        /// vest
        /// </summary>
        EM_NEWUPCLOTHES_TYPE_VEST,
    }

    /// <summary>
    /// 新下衣类型
    /// New down clothes type
    /// </summary>
    public enum EM_NEWDOWNCLOTHES_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_NEWDOWNCLOTHES_TYPE_UNKNOWN,
        /// <summary>
        /// 长裤
        /// trousers
        /// </summary>
        EM_NEWDOWNCLOTHES_TYPE_TROUSERS,
        /// <summary>
        /// 短裤
        /// shorts
        /// </summary>
        EM_NEWDOWNCLOTHES_TYPE_SHORTS,
        /// <summary>
        /// 裙子
        /// skirt
        /// </summary>
        EM_NEWDOWNCLOTHES_TYPE_SKIRT,
    }

    /// <summary>
    /// 骑车人信息
    /// Rider information
    /// </summary>
    public struct NET_RIDER_INFO
    {
        /// <summary>
        /// 是否识别到特征信息, TRUE时下面数据才有效
        /// Enable
        /// </summary>
        public bool bFeatureValid;
        /// <summary>
        /// 性别
        /// its sex
        /// </summary>
        public EM_SEX_TYPE emSex;
        /// <summary>
        /// 年龄
        /// its age
        /// </summary>
        public int nAge;
        /// <summary>
        /// 头盔状态
        /// Whether or not wearing a helmet
        /// </summary>
        public EM_NONMOTOR_OBJECT_STATUS emHelmet;
        /// <summary>
        /// 是否在打电话
        /// Whether on the phone
        /// </summary>
        public EM_NONMOTOR_OBJECT_STATUS emCall;
        /// <summary>
        /// 是否有背包
        /// Whether or not have bag
        /// </summary>
        public EM_NONMOTOR_OBJECT_STATUS emBag;
        /// <summary>
        /// 有没有手提包
        /// Whether or not have carrierbag
        /// </summary>
        public EM_NONMOTOR_OBJECT_STATUS emCarrierBag;
        /// <summary>
        /// 是否打伞
        /// Whether an umbrella
        /// </summary>
        public EM_NONMOTOR_OBJECT_STATUS emUmbrella;
        /// <summary>
        /// 是否有带眼镜
        /// Whether or not wear glasses
        /// </summary>
        public EM_NONMOTOR_OBJECT_STATUS emGlasses;
        /// <summary>
        /// 是否带口罩
        /// Whether to wear a face mask
        /// </summary>
        public EM_NONMOTOR_OBJECT_STATUS emMask;
        /// <summary>
        /// 表情
        /// Emotion
        /// </summary>
        public EM_EMOTION_TYPE emEmotion;
        /// <summary>
        /// 上衣类型
        /// UpClothes type
        /// </summary>
        public EM_CLOTHES_TYPE emUpClothes;
        /// <summary>
        /// 下衣类型
        /// DownClothes type
        /// </summary>
        public EM_CLOTHES_TYPE emDownClothes;
        /// <summary>
        /// 上衣颜色
        /// UpClothes color
        /// </summary>
        public EM_OBJECT_COLOR_TYPE emUpperBodyColor;
        /// <summary>
        /// 下衣颜色
        /// DownClothes color
        /// </summary>
        public EM_OBJECT_COLOR_TYPE emLowerBodyColor;
        /// <summary>
        /// 是否有骑车人人脸抠图信息
        /// Whether rider's face image information is contained
        /// </summary>
        public bool bHasFaceImage;
        /// <summary>
        /// 骑车人人脸特写描述
        /// Rider face image
        /// </summary>
        public NET_RIDER_FACE_IMAGE_INFO stuFaceImage;
        /// <summary>
        /// 是否有人脸属性
        /// Whether rider's face Attributes is contained
        /// </summary>
        public bool bHasFaceAttributes;
        /// <summary>
        /// 人脸属性
        /// face Attributes
        /// </summary>
        public NET_FACE_ATTRIBUTE_EX stuFaceAttributes;
        /// <summary>
        /// 是否戴帽子
        /// whether has hat
        /// </summary>
        public EM_HAS_HAT emHasHat;
        /// <summary>
        /// 帽类型
        /// Cap type
        /// </summary>
        public EM_CAP_TYPE emCap;
        /// <summary>
        /// 头发样式
        /// Hair style
        /// </summary>
        public EM_HAIR_STYLE emHairStyle;
        /// <summary>
        /// 目标特征值数据在二进制数据中的位置信息
        /// Location information of Face characteristic value data in binary data
        /// </summary>
        public NET_FACE_FEATURE_VECTOR_INFO stuFaceFeatureVectorInfo;
        /// <summary>
        /// 目标特征值版本号
        /// Face feature versio
        /// </summary>
        public EM_FEATURE_VERSION emFaceFeatureVersion;
        /// <summary>
        /// 人体特征值数据在二进制数据中的位置信息
        /// Location information of Human characteristic value data in binary data
        /// </summary>
        public NET_HUMAN_FEATURE_VECTOR_INFO stuHumanFeatureVectorInfo;
        /// <summary>
        /// 人体特征值版本号
        /// Human feature versio
        /// </summary>
        public EM_FEATURE_VERSION emHumanFeatureVersion;
        /// <summary>
        /// 年龄段置信度
        /// Age confidence
        /// </summary>
        public uint nAgeConf;
        /// <summary>
        /// 上衣颜色置信度
        /// Jacket color confidence
        /// </summary>
        public uint nUpColorConf;
        /// <summary>
        /// 下衣颜色置信度
        /// Lower garment color confidence
        /// </summary>
        public uint nDownColorConf;
        /// <summary>
        /// 上衣种类置信度
        /// Confidence of coat type
        /// </summary>
        public uint nUpTypeConf;
        /// <summary>
        /// 下衣种类置信度
        /// nDownTypeConf
        /// </summary>
        public uint nDownTypeConf;
        /// <summary>
        /// 帽子类型置信度
        /// Hat type confidence
        /// </summary>
        public uint nHatTypeConf;
        /// <summary>
        /// 发型种类置信度
        /// Confidence of hairstyle type
        /// </summary>
        public uint nHairTypeConf;
        /// <summary>
        /// 上半身衣服图案
        /// Upper garment pattern
        /// </summary>
        public EM_CLOTHES_PATTERN emUpperPattern;
        /// <summary>
        /// 上衣类型 0:未知 1:长袖 2:短袖 3:长款大衣 4:夹克及牛仔服 5:T恤
        /// 6:运动装 7:羽绒服 8:衬衫 9:连衣裙 10:西装 11:毛衣 12:无袖 13:背心
        /// Type of coat 0:Unknown 1:Long sleeve 2:Short sleeve 3:Long coat 4:Jacket and jeans 5: T-shirt
        /// 6:Sportswear 7:Down-filled coat 8:shirt 9:Dress 10:suit 11:sweater 12:Sleeveless 13:vest
        /// </summary>
        public uint nUpClothes;
        /// <summary>
        /// 制服类型
        /// Uniform type
        /// </summary>
        public EM_UNIFORM_STYLE emUniformStyle;
        /// <summary>
        /// 是否有雨披 0:未识别 1:无 2:有
        /// Poncho 0:unrecognized 1:none 2:Yes
        /// </summary>
        public uint nRainCoat;
        /// <summary>
        /// 上衣款式
        /// Coat style
        /// </summary>
        public EM_COAT_TYPE emCoatStyle;
        /// <summary>
        /// 年龄段
        /// Age segmentation
        /// </summary>
        public EM_AGE_SEG emAgeSeg;
        /// <summary>
        /// 是否有肩包 0-未识别 1-无 2-有
        /// Is there a shoulder bag 0:unrecognized 1:none 2:Yes
        /// </summary>
        public uint nShoulderBag;
        /// <summary>
        /// 是否有斜挎包 0-未识别 1-无 2-有
        /// Is there a messenger bag 0:unrecognized 1:none 2:Yes
        /// </summary>
        public uint nMessengerBag;
        /// <summary>
        /// 是否支持新上衣类型
        /// whether support emNewUpClothes
        /// </summary>
        public bool bNewUpClothes;
        /// <summary>
        /// 新上衣类型
        /// New up clothes type
        /// </summary>
        public EM_NEWUPCLOTHES_TYPE emNewUpClothes;
        /// <summary>
        /// 是否支持新下衣类型
        /// whether support emNewDownClothes
        /// </summary>
        public bool bNewDownClothes;
        /// <summary>
        /// 新下衣类型
        /// New down clothes type
        /// </summary>
        public EM_NEWDOWNCLOTHES_TYPE emNewDownClothes;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 140)]
        public byte[] byReserved;
    }

    // 事件/物体状态
    public enum EM_NONMOTOR_OBJECT_STATUS
    {
        UNKNOWN,                                // 未识别
        NO,                                     // 否
        YES,                                    // 是
    }

    // 表情
    public enum EM_EMOTION_TYPE
    {
        UNKNOWN,                                          // 未知
        NORMAL,                                           // 普通/正常
        SMILE,                                            // 微笑
        ANGER,                                            // 愤怒
        SADNESS,                                          // 悲伤
        DISGUST,                                          // 厌恶
        FEAR,                                             // 害怕
        SURPRISE,                                         // 惊讶
        NEUTRAL,                                          // 正常
        LAUGH,                                            // 大笑
        HAPPY,                                            // 高兴
        CONFUSED,                                         // 困惑
        SCREAM,                                           // 尖叫
        CALMNESS,                                         // 平静
    }

    public enum EM_CLOTHES_TYPE
    {
        UNKNOWN,                                          //未知
        LONG_SLEEVE,                                      //长袖
        SHORT_SLEEVE,                                     //短袖
        TROUSERS,                                         //长裤
        SHORTS,                                           //短裤
        SKIRT,                                            //裙子
        WAISTCOAT,                                        //背心
        MINIPANTS,                                        //超短裤
        MINISKIRT,                                        //超短裙
    }

    /// <summary>
    /// 人脸属性
    /// Face attribute
    /// </summary>
    public struct NET_FACE_ATTRIBUTE_EX
    {
        /// <summary>
        /// 性别
        /// Sex
        /// </summary>
        public EM_SEX_TYPE emSex;
        /// <summary>
        /// 年龄,-1表示该字段数据无效
        /// age,-1 means invalid
        /// </summary>
        public int nAge;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved;
        /// <summary>
        /// 眼睛状态
        /// Eye state
        /// </summary>
        public EM_EYE_STATE_TYPE emEye;
        /// <summary>
        /// 嘴巴状态
        /// Mouth state
        /// </summary>
        public EM_MOUTH_STATE_TYPE emMouth;
        /// <summary>
        /// 口罩状态
        /// Mask state
        /// </summary>
        public EM_MASK_STATE_TYPE emMask;
        /// <summary>
        /// 胡子状态
        /// Beard state
        /// </summary>
        public EM_BEARD_STATE_TYPE emBeard;
        /// <summary>
        /// 魅力值, 0未识别，识别时范围1-100,得分高魅力高
        /// Attractive, 0 Not distinguish,Range[1,100], the higher value the more attractive
        /// </summary>
        public int nAttractive;
        /// <summary>
        /// 眼镜
        /// Glasses
        /// </summary>
        public EM_HAS_GLASS emGlass;
        /// <summary>
        /// 表情
        /// Emotion
        /// </summary>
        public EM_EMOTION_TYPE emEmotion;
        /// <summary>
        /// 包围盒(8192坐标系)
        /// BoundingBox(8192 Coordinate)
        /// </summary>
        public NET_A_RECT_EX stuBoundingBox;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// 斜视状态
        /// Strabismus
        /// </summary>
        public EM_STRABISMUS_TYPE emStrabismus;
        /// <summary>
        /// 人脸抓拍角度, 三个角度依次分别是
        /// Pitch（仰俯角）, 指抬头低头的角度, 范围是-70~60;
        /// yaw（偏航角）, 指左右转头的角度, 范围是-90~90;
        /// Roll（翻滚角）, 指左右倾斜的角度, 范围是-90~90;
        /// [180,180,180]表示未识别到角度
        /// Face capture angle, three angles are respectively
        /// Pitch(pitch angle), refers to the angle of head up and head down, with the range of - 70 ~ 60;
        /// Yaw(yaw angle), refers to the angle of left and right turning head, and the range is - 90 ~ 90;
        /// Roll (roll angle), refers to the angle of left and right tilt, the range is - 90 ~ 90;
        /// [180180180] indicates the angle is not recognized
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public int[] nAngle;
        /// <summary>
        /// 物体型心(不是包围盒中心), 0-8191相对坐标, 相对于大图
        /// Center of object(not center of bounding box), 0-8191 relative coordinates, relative to large graph
        /// </summary>
        public NET_POINT stuObjCenter;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
        public byte[] byReserved;
    }

    // 是否带眼镜
    public enum EM_HAS_GLASS
    {
        UNKNOWN,           // 未知
        NO,                // 未戴
        NORMAL,            // 戴普通眼镜
        SUN,               // 戴太阳眼镜
        BLACK,             // 戴黑框眼镜
    }

    // 斜视状态
    public enum EM_STRABISMUS_TYPE
    {
        UNKNOWN,          // 未知
        NORMAL,           // 正常
        YES,              // 斜视
    }

    /// <summary>
    /// 非机动车特征值数据在二进制数据中的位置信息
    /// Position info of non-motor feature data in binary data
    /// </summary>
    public struct NET_NONMOTOR_FEATURE_VECTOR_INFO
    {
        /// <summary>
        /// 非机动车特征值在二进制数据中的偏移, 单位:字节
        /// The offset of non-motor feature data in binary data, unit:bytes
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 非机动车特征值数据长度, 单位:字节
        /// The length of non-motor feature data, unit:bytes
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 用于标识特征值是否加密
        /// Identifies whether the feature is encrypted
        /// </summary>
        public bool bFeatureEnc;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 28)]
        public byte[] byReserved;
    }

    // 特征值版本类型
    public enum EM_FEATURE_VERSION
    {
        UNKNOWN,                                 // 未知
        FACE_LARGE_1_01_001 = 1,    // 人脸，大模型，1.01.001
        FACE_LARGE_1_02_001,                     // 人脸，大模型，1.02.001
        FACE_LARGE_1_03_001,                     // 人脸，大模型，1.03.001
        FACE_LARGE_1_04_001,                     // 人脸，大模型，1.04.001
        FACE_MIDDLE_1_01_002 = 31,   // 人脸，中模型，1.01.002
        FACE_MIDDLE_1_02_002,                    // 人脸，中模型，1.02.002
        FACE_MIDDLE_1_03_002,                    // 人脸，中模型，1.03.002
        FACE_MIDDLE_1_04_002,                    // 人脸，中模型，1.04.002
        FACE_SMALL_1_01_003 = 61,   // 人脸，小模型，1.01.003
        FACE_SMALL_1_02_003,                     // 人脸，小模型，1.02.003

        HUMAN_NONMOTOR = 91,   // 人和非机动车，全局无版本号
        HUMAN_NONMOTOR_FLOAT_1_00_01,            // 人和非机动车，全局浮点，1.00.01
        HUMAN_NONMOTOR_HASH_1_00_01,             // 人和非机动车，全局哈希，1.00.01
        HUMAN_NONMOTOR_FLOAT_1_01_00,            // 人和非机动车，全局浮点，1.01.00
        HUMAN_NONMOTOR_HASH_1_01_00,             // 人和非机动车，全局哈希，1.01.00

        TRAFFIC = 121,  // 机动车，全局无版本号
        TRAFFIC_FLOAT,                           // 机动车，全局浮点版本号0
        TRAFFIC_FLOAT_1_00_01,                   // 机动车，全局浮点版本号1.00.01
        TRAFFIC_HASH_1_00_01,                    // 机动车，全局哈希版本号1.00.01
        TRAFFIC_FLOAT_1_00_02,                   // 机动车，全局浮点版本号1.00.02
        TRAFFIC_HASH_1_00_02,                    // 机动车，全局哈希版本号1.00.02

        SHANGTANG_FACE_1_5_0 = 151,  // 商汤，人脸，1.5.0
        SHANGTANG_FACE_1_8_1,                    // 商汤，人脸，1.8.1
        SHANGTANG_FACE_2_1_3,                    // 商汤，人脸，2.1.3
        SHANGTANG_FACE_2_39_6,                   // 商汤，人脸，2.39.6
        SHANGTANG_FACE_2_39_7,                   // 商汤，人脸，2.39.7
        SHANGTANG_FACE_2_39_8,                   // 商汤，人脸，2.39.8
        SHANGTANG_FACE_239,                      // 商汤，人脸，239
        SHANGTANG_FACE_242,                      // 商汤，人脸，242
        SHANGTANG_FACE_244,                      // 商汤，人脸，244
        SHANGTANG_FACE_245,                      // 商汤，人脸，245

        SHENMO_HUMAN_TRAFFIC_NON_2_4_2 = 181,  // 深瞐，人脸/机动车/非机动车，2.4.2
        SHENMO_HUMAN_TRAFFIC_NON_2_5_7,          // 深瞐，人脸/机动车/非机动车，2.5.7
    }

    // 非机动车配牌信息
    public struct NET_NONMOTOR_PLATE_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPlateNumber;// 非机动车车牌号
        public NET_RECT stuBoundingBox;                     // 包围盒， 非机动车矩形框，0~8191相对坐标
        public NET_RECT stuOriginalBoundingBox;             // 包围盒， 非机动车矩形框，绝对坐标
        public NET_NONMOTOR_PLATE_IMAGE stuPlateImage;                      // 非机动车车牌抠图
        public EM_PLATE_COLOR_TYPE emPlateColor;                       // 车牌颜色

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 132)]
        public byte[] byReserved;// 保留字节
    }

    /// <summary>
    /// 非机动车车牌图片信息
    /// The plate image of no-motor
    /// </summary>
    public struct NET_NONMOTOR_PLATE_IMAGE
    {
        /// <summary>
        /// 在二进制数据块中的偏移
        /// picture offset in binary data
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 图片大小
        /// picture size,unit:byte
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 图片宽度
        /// Image width(Unit:pixel)
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// 图片高度
        /// Image height(Unit:pixel)
        /// </summary>
        public uint nHeight;
        /// <summary>
        /// 在上传图片数据中的图片序号
        /// Index in data
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 车牌颜色
    /// Plate color
    /// </summary>
    public enum EM_PLATE_COLOR_TYPE
    {
        /// <summary>
        /// 未知 "Unknown"
        /// "Unknown"
        /// </summary>
        EM_PLATE_COLOR_UNKNOWN,
        /// <summary>
        /// 其他颜色 "Other"
        /// "Other"
        /// </summary>
        EM_PLATE_COLOR_OTHER,
        /// <summary>
        /// 蓝色 "Blue"
        /// "Blue"
        /// </summary>
        EM_PLATE_COLOR_BLUE,
        /// <summary>
        /// 黄色 "Yellow"
        /// "Yellow"
        /// </summary>
        EM_PLATE_COLOR_YELLOW,
        /// <summary>
        /// 白色 "White"
        /// "White"
        /// </summary>
        EM_PLATE_COLOR_WHITE,
        /// <summary>
        /// 黑色 "Black"
        /// "Black"
        /// </summary>
        EM_PLATE_COLOR_BLACK,
        /// <summary>
        /// 红色 "Red"
        /// "Red"
        /// </summary>
        EM_PLATE_COLOR_RED,
        /// <summary>
        /// 绿色 "Green"
        /// "Green"
        /// </summary>
        EM_PLATE_COLOR_GREEN,
        /// <summary>
        /// 渐变绿 "ShadowGreen"
        /// "ShadowGreen"
        /// </summary>
        EM_PLATE_COLOR_SHADOW_GREEN,
        /// <summary>
        /// 黄绿双拼 "YellowGreen""
        /// "YellowGreen""
        /// </summary>
        EM_PLATE_COLOR_YELLOW_GREEN,
        /// <summary>
        /// 黄底黑字 "YellowbottomBlackText"
        /// "YellowbottomBlackText"
        /// </summary>
        EM_PLATE_COLOR_YELLOW_BOTTOM_BLACK_TEXT,
        /// <summary>
        /// 蓝底白字 "BluebottomWhiteText"
        /// "BluebottomWhiteText"
        /// </summary>
        EM_PLATE_COLOR_BLUE_BOTTOM_WHITE_TEXT,
        /// <summary>
        /// 黑底白字 "BlackBottomWhiteText"
        /// "BlackBottomWhiteText"
        /// </summary>
        EM_PLATE_COLOR_BLACK_BOTTOM_WHITE_TEXT,
    }

    // 图片类型
    public enum EM_FIREWARNING_PIC_TYPE
    {
        UNKNOWN,     // 未知
        NONE,        // 无
        OVERVIEW,    // 全景图
        DETAIL,      // 细节图
    }

    // 雷达自由流信息
    public struct NET_RADAR_FREE_STREAM
    {
        public ulong nABSTime;    // 1年1月1日0时起至今的毫秒数
        public int nVehicleID; // 车辆ID
        public uint unOBUMAC;  // OBU的MAC地址
    }

    /// <summary>
    /// 智能事件抓图信息
    /// intelli image information
    /// </summary>
    public struct NET_INTELLIGENCE_IMAGE_INFO
    {
        /// <summary>
        /// 在二进制数据块中的偏移
        /// The offset of image data in binary data
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// 图片大小,单位字节
        /// The image data length, Unit:Byte
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 图片宽度(像素)
        /// Image width(pixel)
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// 图片高度(像素)
        /// Image height(pixel)
        /// </summary>
        public uint nHeight;
        /// <summary>
        /// 在上传图片数据中的图片序号
        /// The serial number of the picture in the uploaded picture data
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 44)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 全景广角图
    /// Scene image
    /// </summary>
    public struct NET_SCENE_IMAGE_INFO_EX
    {
        /// <summary>
        /// 在二进制数据块中的偏移
        /// mage offset in the data
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// 图片大小,单位字节
        /// image data length
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 图片宽度(像素)
        /// image width(pixel)
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// 图片高度(像素)
        /// image Height(pixel)
        /// </summary>
        public uint nHeight;
        /// <summary>
        /// 全景图片路径
        /// file path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;
        /// <summary>
        /// 在上传图片数据中的图片序号
        /// The serial number of the picture in the uploaded picture data
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// 图片ID
        /// Image ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 42)]
        public string szImageID;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6)]
        public string szReserved;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 460)]
        public byte[] byReserved;
    }

    /// <summary>
    /// large picture information of animal testing
    /// 动物检测的大图信息
    /// </summary>
    public struct NET_ANIMAL_SCENE_IMAGE_INFO
    {
        /// <summary>
        /// offset in binary data
        /// 在二进制数据块中的偏移
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// image data lenth
        /// 图片大小,单位字节
        /// </summary>
        public uint nLength;
        /// <summary>
        /// image serial number
        /// 在上传图片数据中的图片序号
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// reserved byte
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 运动状态
    /// Move Status
    /// </summary>
    public enum EM_A_ENUM_MOTION_STATUS
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        ENUM_MOTION_STATUS_UNKNOWN,
        /// <summary>
        /// 静止
        /// Static
        /// </summary>
        ENUM_MOTION_STATUS_STATIC,
        /// <summary>
        /// 运动
        /// Move
        /// </summary>
        ENUM_MOTION_STATUS_MOVE,
    }

    /// <summary>
    /// 区域内状态
    /// In-region status
    /// </summary>
    public enum EM_A_ENUM_IN_REGION_STATUS
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        ENUM_IN_REGION_STATUS_UNKNOWN,
        /// <summary>
        /// 在区域内
        /// In region
        /// </summary>
        ENUM_IN_REGION_STATUS_YES,
        /// <summary>
        /// 不在区域内
        /// Out region
        /// </summary>
        ENUM_IN_REGION_STATUS_NO,
    }

    /// <summary>
    /// 动物类型
    /// Animal category
    /// </summary>
    public enum EM_ANINAL_CATEGORY
    {
        /// <summary>
        /// 未知类型
        /// Unknown
        /// </summary>
        EM_ANINAL_CATEGORY_UNKNOWN,
        /// <summary>
        /// 猪
        /// Pig
        /// </summary>
        EM_ANINAL_CATEGORY_PIG,
        /// <summary>
        /// 猫
        /// Cat
        /// </summary>
        EM_ANINAL_CATEGORY_CAT,
        /// <summary>
        /// 狗
        /// Dog
        /// </summary>
        EM_ANINAL_CATEGORY_DOG,
        /// <summary>
        /// 鸟
        /// Bird
        /// </summary>
        EM_ANINAL_CATEGORY_BIRD,
        /// <summary>
        /// 金丝猴
        /// GoldenMonkey
        /// </summary>
        EM_ANINAL_CATEGORY_GOLDEN_MONKEY,
        /// <summary>
        /// 黑颈鹤
        /// BlackBeckedCrane
        /// </summary>
        EM_ANINAL_CATEGORY_BLACK_BECKED_CRANE,
    }

    /// <summary>
    /// 视频分析物体(动物)
    /// Video Analyse Animal info
    /// </summary>
    public struct NET_A_VA_OBJECT_ANIMAL
    {
        /// <summary>
        /// 物体ID, 每个ID表示一个唯一的物体
        /// Object ID
        /// </summary>
        public uint nObjectID;
        /// <summary>
        /// 目标动物类型
        /// Animal Category
        /// </summary>
        public EM_ANINAL_CATEGORY emCategory;
        /// <summary>
        /// 包围盒 动物对象在全景图中的框坐标,为0~8191相对坐标
        /// BoundingBox, The frame coordinates of the animal object in the panorama
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 动物对象重量，单位:g
        /// Object weight, unit:g
        /// </summary>
        public uint nObjectWeight;
        /// <summary>
        /// 物体截图
        /// Object screenshot
        /// </summary>
        public NET_OBJECT_IMAGE_INFO stuImage;
        /// <summary>
        /// 运动状态
        /// Move Status
        /// </summary>
        public EM_A_ENUM_MOTION_STATUS emMoveStatus;
        /// <summary>
        /// 区域内状态
        /// In-region status
        /// </summary>
        public EM_A_ENUM_IN_REGION_STATUS emInRegionStatus;
        /// <summary>
        /// 结果类型 0-实时 1-非实时
        /// Result Type. 0-realtime 1- no reel-time
        /// </summary>
        public int nResultType;
        /// <summary>
        /// 保留字节,留待扩展
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// animal statistics info
    /// 动物统计信息
    /// </summary>
    public struct NET_ANIMAL_OBJECTS_STATISTICS
    {
        /// <summary>
        /// 动物总数
        /// Total number of animals
        /// </summary>
        public uint nAnimalsAmount;
        /// <summary>
        /// 动物类型
        /// animals type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_A_VA_OBJECT_ANIMAL[] stuAnimalTypes;
        /// <summary>
        /// 保留字节
        /// Reserve byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 132)]
        public byte[] bReserved;
    }

    /// <summary>
    /// scene type of the animal statistics
    /// 动物检测规则下的场景类型
    /// </summary>
    public enum EM_DETECTION_SCENE_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        EM_DETECTION_SCENE_TYPE_UNKNOWN,
        /// <summary>
        /// Animal scene, which can detect animals, people and cars
        /// 兽类场景，可检测动物、人、车
        /// </summary>
        EM_DETECTION_SCENE_TYPE_ANIMAL,
        /// <summary>
        /// Bird scene, which can detect birds, people and cars
        /// 鸟类场景，可检测鸟类，人、车
        /// </summary>
        EM_DETECTION_SCENE_TYPE_BIRD,
    }

    // 检测到的人信息
    public struct NET_VAOBJECT_NUMMAN
    {
        public uint nObjectID;                          // 物体ID，每个ID表示一个唯一的物体
        public EM_UNIFORM_STYLE emUniformStyle;                     // 制服样式
        public NET_RECT stuBoundingBox;                     // 包围盒,手套对象在全景图中的框坐标,为0~8191相对坐标
        public NET_RECT stuOriginalBoundingBox;             // 包围盒,绝对坐标
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;// 保留字节
    }

    /// <summary>
    /// 制服样式
    /// Uniform style
    /// </summary>
    public enum EM_UNIFORM_STYLE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_UNIFORM_STYLE_UNKNOWN,
        /// <summary>
        /// 警服
        /// Police uniform
        /// </summary>
        EM_UNIFORM_STYLE_POLICE,
        /// <summary>
        /// 无制服
        /// No uniform
        /// </summary>
        EM_UNIFORM_STYLE_NOUNIFORM,
        /// <summary>
        /// 中石化制服
        /// Sinopec uniform
        /// </summary>
        EM_UNIFORM_STYLE_SINOPEC,
        /// <summary>
        /// 防护服
        /// Protective uniform
        /// </summary>
        EM_UNIFORM_STYLE_GUARD,
        /// <summary>
        /// 马甲
        /// Vest
        /// </summary>
        EM_UNIFORM_STYLE_VEST,
        /// <summary>
        /// 环卫服
        /// Sanitation uniform
        /// </summary>
        EM_UNIFORM_STYLE_SATNITATION,
        /// <summary>
        /// 外卖服
        /// Takeout uniform
        /// </summary>
        EM_UNIFORM_STYLE_TAKEOUT,
        /// <summary>
        /// 军装
        /// Mltry uniform
        /// </summary>
        EM_UNIFORM_STYLE_JUN,
        /// <summary>
        /// 快递服
        /// Express uniform
        /// </summary>
        EM_UNIFORM_STYLE_EXPRESS,
        /// <summary>
        /// 保安服
        /// Security uniform
        /// </summary>
        EM_UNIFORM_STYLE_SECURITY,
    }

    // 货物通道信息
    public struct NET_CUSTOM_INFO
    {
        public int nCargoChannelNum;                       // 货物通道个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public float[] fCoverageRate; // 货物覆盖率
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
        public byte[] byReserved;// 保留字节
    }

    // 当前门采集状态
    public enum EM_CARD_STATE
    {
        UNKNOWN = -1,         // 未知
        SWIPE,                // 门禁刷卡
        COLLECTION,           // 门禁采集卡
    }

    /// <summary>
    /// 梯控方式触发者
    /// Ladder control trigger
    /// </summary>
    public enum EM_LIFT_CALLER_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_LIFT_CALLER_TYPE_UNKNOWN = 0,
        /// <summary>
        /// VTO 呼叫
        /// VTO Call
        /// </summary>
        EM_LIFT_CALLER_TYPE_VTO,
        /// <summary>
        /// 平台呼叫
        /// Platform call
        /// </summary>
        EM_LIFT_CALLER_TYPE_PLATFORM,
        /// <summary>
        /// 本机鉴权呼叫
        /// Local authentication call
        /// </summary>
        EM_LIFT_CALLER_TYPE_LOCAL_AUTH,
        /// <summary>
        /// 门禁呼梯
        /// Access control call elevator 
        /// </summary>
        EM_LIFT_CALLER_TYPE_ACCESS_CONTROL,
    }

    // 门禁出入记录排序字段
    public enum EM_RECORD_ACCESSCTLCARDREC_ORDER_FIELD
    {
        UNKNOWN = 0,         // 未知
        RECNO,               // 记录集编号
        CREATETIME,          // 创建时间
    }

    // 门禁出入记录排序规则详情
    public struct NET_FIND_RECORD_ACCESSCTLCARDREC_ORDER
    {
        public EM_RECORD_ACCESSCTLCARDREC_ORDER_FIELD emField;     // 排序字段
        public EM_RECORD_ORDER_TYPE emOrderType;    // 排序类型
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] byReverse;// 保留字节
    }

    // 排序类型
    public enum EM_RECORD_ORDER_TYPE
    {
        UNKNOWN,                               // 未知
        ASCENT,                                // 升序
        DESCENT                                // 降序
    }

    // 存储特征值信息
    public struct NET_FEATURE_VECTOR
    {
        public uint dwOffset;                         // 人脸小图特征值在二进制数据块中的偏移
        public uint dwLength;                         // 人脸小图特征值长度，单位:字节
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 120)]
        public byte[] byReserved;// 保留字节
    }

    // 人脸在摄像机画面中的状态
    public enum EM_FACE_DETECT_STATUS
    {
        UNKNOWN,             // 未知
        APPEAR,              // 出现
        INPICTURE,           // 在画面中
        EXIT,                // 离开
    }

    // 路人信息
    public struct NET_PASSERBY_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPasserbyUID;// 路人唯一标识符
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPasserbyGroupId; // 路人库ID
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPasserbyGroupName; // 路人库名称
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;// 保留字节
    }

    // 显示源码流加密方式
    public struct NET_SOURCE_STREAM_ENCRYPT
    {
        public EM_ENCRYPT_LEVEL emEncryptLevel;         // 加密等级
        public EM_ENCRYPT_ALGORITHM_TYPE emAlgorithm;            // 加密算法
        public EM_KEY_EXCHANGE_TYPE emExchange;             // 密钥交换方式
        public bool bUnvarnished;           // MTS使用场景,true为交互MIKEY后让数据不进行加/解密
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1032)]
        public string szPSK;            // 密钥
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;// 保留字节
    }

    // 加密等级
    public enum EM_ENCRYPT_LEVEL
    {
        UNKNOWN,           // 未知
        NONE,              // 不加密
        IFRAME256,         // 加密I帧前256字节
        IFRAME_WHOLE,      // 加密整个I帧
        IAXFRAME,          // 对I帧, 音频帧及其他辅助帧进行加密
    }

    // 码流加密方式
    public enum EM_ENCRYPT_ALGORITHM_TYPE
    {
        UNKNOWN,           // 未知
        AES,               // AES加密
        DES,              // DES加密
        _3DES,              // 3DES加密
    }

    // 密钥交换方式
    public enum EM_KEY_EXCHANGE_TYPE
    {
        UNKNOWN,            // 未知
        MIKEY,              // Mikey密钥
        PSK,                // 预共享密钥
        PK,                 // 公共密钥
        DH,                 // 霍夫曼密钥
    }

    // 目标人脸信息
    public struct NET_FACE_INFO_OBJECT
    {
        /// <summary>
        /// 物体截图信息
        /// </summary>
        public NET_IMAGE_INFO stuImageInfo;
        /// <summary>
        /// 性别类型
        /// </summary>
        public EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex;
        /// <summary>
        /// 年龄
        /// </summary>
        public uint nAge;
        /// <summary>
        /// 是否戴眼镜
        /// </summary>
        public EM_FACEDETECT_GLASSES_TYPE emGlasses;
        /// <summary>
        /// 人脸表情
        /// </summary>
        public EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion;
        /// <summary>
        /// Reserved
        /// 保留字节,留待扩展.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// 眼睛状态
        /// </summary>
        public EM_EYE_STATE_TYPE emEye;
        /// <summary>
        /// 嘴巴状态
        /// </summary>
        public EM_MOUTH_STATE_TYPE emMouth;
        /// <summary>
        /// 是否带口罩
        /// </summary>
        public EM_MASK_STATE_TYPE emMask;
        /// <summary>
        /// 是否有胡子
        /// </summary>
        public EM_BEARD_STATE_TYPE emBeard;
        /// <summary>
        /// 魅力值,0表示未识别,识别时范围1-100,得分高魅力高
        /// </summary>
        public int nAttractive;
        /// <summary>
        /// 人脸在抓拍图片中的角度信息,角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效
        /// nPitch:抬头低头的俯仰角, 
        /// nYaw左右转头的偏航角, 
        /// nRoll头在平面内左偏右偏的翻滚角
        /// </summary>
        public NET_EULER_ANGLE stuFaceCaptureAngle;
        /// <summary>
        /// 人脸抓拍质量分数
        /// </summary>
        public uint nFaceQuality;
        /// <summary>
        /// 温度信息
        /// </summary>
        public double dMaxTemp;
        /// <summary>
        /// 
        /// </summary>
        public uint nIsOverTemp;
        /// <summary>
        /// 
        /// </summary>
        public uint nIsUnderTemp;
        /// <summary>
        /// 温度单位
        /// </summary>
        public EM_TEMPERATURE_UNIT emTempUnit;
        /// <summary>
        /// 保留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2012)]
        public byte[] byReserved;
    }

    // 物体截图信息
    public struct NET_IMAGE_INFO
    {
        public int nLength;            // 图片大小,单位:字节
        public int nWidth;             // 图片宽度
        public int nHeight;            // 图片高度
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;            // 文件路径
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;// 保留字节
    }

    // 目标检测人脸戴眼镜特征类型
    public enum EM_FACEDETECT_GLASSES_TYPE
    {
        GLASSES_UNKNOWN,      // 未知
        WITH_GLASSES,         // 戴眼镜
        WITHOUT_GLASSES,      // 不戴眼镜
    }

    // 姿态角数据
    public struct NET_EULER_ANGLE
    {
        public int nPitch;             // 仰俯角
        public int nYaw;               // 偏航角
        public int nRoll;              // 翻滚角
    }

    // 分割窗口OSD信息
    public struct NET_SPLIT_OSD
    {
        public uint dwSize;
        public bool bEnable;                    // 使能
        public NET_COLOR_RGBA stuFrontColor;              // 前景颜色
        public NET_COLOR_RGBA stuBackColor;               // 背景颜色
        public NET_A_RECT_EX stuFrontRect;               // 前景区域
        public NET_A_RECT_EX stuBackRect;                // 背景区域
        public bool bRoll;                      // 是否滚动显示, 只对文本有效
        public byte byRollMode;                 // 滚动模式, 只对文本有效, 0-从左往右, 1-从右往左, 2-从上往下滚动, 3-从下往上滚动
        public byte byRoolSpeed;                // 滚动速率, 只对文本有效, 0~4, 数值越大滚动越快
        public byte byFontSize;                 // 字体大小, 只对文本有效
        public byte byTextAlign;                // 对齐方式, 0-靠左, 1-居中, 2-靠右
        public byte byType;                     // OSD类型, 0-文本, 1-图标, 2-时间
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] Reserved;// 保留字节
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szContent;       // OSD内容
                                       // 若类型为图标, 内容为图标名称
                                       // 若类型为Time，内容为”Date”(日期),”Week”(星期),”Time”(时间),”\n”(换行)的自由组合。
                                       // 例如：不同行显示，需要将此字段填为"Date\nTime",在屏幕上就会显示
                                       // 2018年4月23日
                                       // 16:49:15
                                       // 同行显示，需要将此字段填为"DateTime",在屏幕上就会显示
                                       // 2018年4月23日16:49:15
        public float fPitch;                     // 字符间距, 0.0 ~ 5.0
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szFontType; // 字体类型
        /// <summary>
        /// 文本显示模式 Row:横排(默认) Column:竖排
        /// Text display mode Row:Horizontal (default) Column:Vertical row
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szPattern;
        /// <summary>
        /// OSD内容
        /// OSD content
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szContentEx;
    }

    // 拼接区底图信息
    public struct NET_SCREEEN_BACKGROUD
    {
        public bool bEnable;                        // 底图是否开启
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 130)]
        public string szName;       // 底图名称,底图是已经上传的文件，不带路径名称
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 130)]
        public byte[] byReserved;// 保留字节
    }

    //图片信息
    public struct NET_DEV_ACCESS_CTL_IMAGE_INFO
    {
        public EM_ACCESS_CTL_IMAGE_TYPE emType;                    // 图片类型
        public uint nOffSet;               // 二进制块偏移字节
        public uint nLength;               // 图片大小
        public uint nWidth;                    // 图片宽度(单位:像素)
        public uint nHeight;               // 图片高度(单位:像素)
        public NET_RECT stuBoundingBox;         // 包围盒
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
        public byte[] byReserved;// 保留字节
    }

    //图片类型
    public enum EM_ACCESS_CTL_IMAGE_TYPE
    {
        UNKNOWN = -1,                   // 未知
        LOCAL,                          // 本地人脸图库
        SCENE,                          // 拍摄场景抠图
        FACE,                           // 人脸抠图
        INFRARED,                       // 红外抓图
    }


    // 人员信息
    public struct NET_DEV_ACCESS_CTL_CUSTOM_WORKER_INFO
    {
        public NET_ACCESSCTLCARD_SEX emSex;                                      // 性别
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRole;        // 角色
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szProjectNo;        // 项目ID
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProjectName; // 项目名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szBuilderName;// 施工单位全称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szBuilderID;// 施工单位ID
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szBuilderType; // 施工单位类型
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szBuilderTypeID; // 施工单位类别ID
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPictureID;     // 人员照片ID
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szContractID;// 原合同系统合同编号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szWorkerTypeID;// 工种ID
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szWorkerTypeName; // 工种名称
        public bool bPersonStatus;        // 人员状态, TRUE:启用, FALSE:禁用
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;// 保留字节
    }

    // 动检区域信息
    public struct NET_MOTIONDETECT_REGION_INFO
    {
        public uint nRegionID;                 // 区域ID
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRegionName; // 区域名称
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] bReserved; // 保留字节
    }


    // 动检触发类型
    public enum EM_MOTION_DETECT_TYPE
    {
        UNKNOWN,           // 未知
        HUMAN,             // 人
        VEHICLE,           // 车
        HUMAN_AND_VEHICLE, // 人和车
    }

    // WIFI扫描及配置支持的版本类型
    public enum EM_WLAN_SCAN_AND_CONFIG_TYPE
    {
        UNKNOWN,    // 未知
        V2,         // V2:二代协议
        V3,         // v3:三代协议
    }

    /// <summary>
    /// 各类物体的子类型
    /// Type of category
    /// </summary>
    public enum EM_CFG_CATEGORY_TYPE
    {
        /// <summary>
        /// 未知类型
        /// 车型相关子类别
        /// Unknown type
        /// Related sub categories of vehicles
        /// </summary>
        CFG_CATEGORY_TYPE_UNKNOW,
        /// <summary>
        /// "Motor" 机动车
        /// "Motor"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_MOTOR,
        /// <summary>
        /// "Non-Motor"非机动车
        /// "Non-Motor"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_NON_MOTOR,
        /// <summary>
        /// "Bus"公交车
        /// "Bus"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_BUS,
        /// <summary>
        /// "Bicycle" 自行车
        /// "Bicycle"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_BICYCLE,
        /// <summary>
        /// "Motorcycle"摩托车
        /// "Motorcycle"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_MOTORCYCLE,
        /// <summary>
        /// "UnlicensedMotor": 无牌机动车
        /// "UnlicensedMotor"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_UNLICENSEDMOTOR,
        /// <summary>
        /// "LargeCar" 大型汽车
        /// "LargeCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_LARGECAR,
        /// <summary>
        /// "MicroCar" 小型汽车
        /// "MicroCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_MICROCAR,
        /// <summary>
        /// "EmbassyCar" 使馆汽车
        /// "EmbassyCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_EMBASSYCAR,
        /// <summary>
        /// "MarginalCar" 领馆汽车
        /// "MarginalCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_MARGINALCAR,
        /// <summary>
        /// "AreaoutCar" 境外汽车
        /// "AreaoutCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_AREAOUTCAR,
        /// <summary>
        /// "ForeignCar" 外籍汽车
        /// "ForeignCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_FOREIGNCAR,
        /// <summary>
        /// "DualTriWheelMotorcycle"两、三轮摩托车
        /// "DualTriWheelMotorcycle"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_DUALTRIWHEELMOTORCYCLE,
        /// <summary>
        /// "LightMotorcycle" 轻便摩托车
        /// "LightMotorcycle"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_LIGHTMOTORCYCLE,
        /// <summary>
        /// "EmbassyMotorcycle "使馆摩托车
        /// "EmbassyMotorcycle"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_EMBASSYMOTORCYCLE,
        /// <summary>
        /// "MarginalMotorcycle "领馆摩托车
        /// "MarginalMotorcycle"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_MARGINALMOTORCYCLE,
        /// <summary>
        /// "AreaoutMotorcycle "境外摩托车
        /// "AreaoutMotorcycle"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_AREAOUTMOTORCYCLE,
        /// <summary>
        /// "ForeignMotorcycle "外籍摩托车
        /// "ForeignMotorcycle "
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_FOREIGNMOTORCYCLE,
        /// <summary>
        /// "FarmTransmitCar" 农用运输车
        /// "FarmTransmitCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_FARMTRANSMITCAR,
        /// <summary>
        /// "Tractor" 拖拉机
        /// "Tractor"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_TRACTOR,
        /// <summary>
        /// "Trailer" 挂车
        /// "Trailer"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_TRAILER,
        /// <summary>
        /// "CoachCar"教练汽车
        /// "CoachCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_COACHCAR,
        /// <summary>
        /// "CoachMotorcycle "教练摩托车
        /// "CoachMotorcycle "
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_COACHMOTORCYCLE,
        /// <summary>
        /// "TrialCar" 试验汽车
        /// "TrialCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_TRIALCAR,
        /// <summary>
        /// "TrialMotorcycle "试验摩托车
        /// "TrialMotorcycle "
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_TRIALMOTORCYCLE,
        /// <summary>
        /// "TemporaryEntryCar"临时入境汽车
        /// "TemporaryEntryCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_TEMPORARYENTRYCAR,
        /// <summary>
        /// "TemporaryEntryMotorcycle"临时入境摩托车
        /// "TemporaryEntryMotorcycle"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_TEMPORARYENTRYMOTORCYCLE,
        /// <summary>
        /// "TemporarySteerCar"临时行驶车
        /// "TemporarySteerCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_TEMPORARYSTEERCAR,
        /// <summary>
        /// "PassengerCar" 客车
        /// "PassengerCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_PASSENGERCAR,
        /// <summary>
        /// "LargeTruck" 大货车
        /// "LargeTruck"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_LARGETRUCK,
        /// <summary>
        /// "MidTruck" 中货车
        /// "MidTruck"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_MIDTRUCK,
        /// <summary>
        /// "SaloonCar" 轿车
        /// "SaloonCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_SALOONCAR,
        /// <summary>
        /// "Microbus"面包车
        /// "Microbus"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_MICROBUS,
        /// <summary>
        /// "MicroTruck"小货车
        /// "MicroTruck"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_MICROTRUCK,
        /// <summary>
        /// "Tricycle"三轮车
        /// "Tricycle"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_TRICYCLE,
        /// <summary>
        /// "Passerby" 行人
        /// "Passerby"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_PASSERBY,
        /// <summary>
        /// "OilTankTruck" 油罐车
        /// "OilTankTruck"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_OILTANKTRUCK,
        /// <summary>
        /// "TankCar" 槽罐车
        /// "TankCar"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_TANKCAR,
        /// <summary>
        /// "SUV" SUV
        /// "SUV"
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_SUV,
        /// <summary>
        /// "MPV" MPV
        /// 车牌相关子类别
        /// "MPV"
        /// Related sub categories of licence plate
        /// </summary>
        CFG_CATEGORY_VEHICLE_TYPE_MPV,
        /// <summary>
        /// "Normal" 蓝牌黑字
        /// "Normal"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_NORMAL,
        /// <summary>
        /// "Yellow" 黄牌
        /// "Yellow"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_YELLOW,
        /// <summary>
        /// "DoubleYellow" 双层黄尾牌
        /// "DoubleYellow"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_DOUBLEYELLOW,
        /// <summary>
        /// "Police" 警牌
        /// "Police"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_POLICE,
        CFG_CATEGORY_PLATE_TYPE_WJ,
        CFG_CATEGORY_PLATE_TYPE_OUTERGUARD,
        CFG_CATEGORY_PLATE_TYPE_DOUBLEOUTERGUARD,
        /// <summary>
        /// "SAR" 港澳特区号牌
        /// "SAR"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_SAR,
        /// <summary>
        /// "Trainning" 教练车号牌
        /// "Trainning"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_TRAINNING,
        /// <summary>
        /// "Personal" 个性号牌
        /// "Personal"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_PERSONAL,
        /// <summary>
        /// "Agri" 农用牌
        /// "Agri"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_AGRI,
        /// <summary>
        /// "Embassy" 使馆号牌
        /// "Embassy"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_EMBASSY,
        /// <summary>
        /// "Moto" 摩托车号牌
        /// "Moto"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_MOTO,
        /// <summary>
        /// "Tractor" 拖拉机号牌
        /// "Tractor"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_TRACTOR,
        /// <summary>
        /// "OfficialCar" 公务车
        /// "OfficialCar"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_OFFICIALCAR,
        /// <summary>
        /// "PersonalCar" 私家车
        /// "PersonalCar"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_PERSONALCAR,
        CFG_CATEGORY_PLATE_TYPE_WARCAR,
        /// <summary>
        /// "Other" 其他号牌
        /// "Other"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_OTHER,
        /// <summary>
        /// "Civilaviation" 民航号牌
        /// "Civilaviation"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_CIVILAVIATION,
        /// <summary>
        /// "Black" 黑牌
        /// "Black"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_BLACK,
        /// <summary>
        /// "PureNewEnergyMicroCar" 纯电动新能源小车
        /// "PureNewEnergyMicroCar"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_PURENEWENERGYMICROCAR,
        /// <summary>
        /// "MixedNewEnergyMicroCar" 混合新能源小车
        /// "MixedNewEnergyMicroCar"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_MIXEDNEWENERGYMICROCAR,
        /// <summary>
        /// "PureNewEnergyLargeCar" 纯电动新能源大车
        /// "PureNewEnergyLargeCar"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_PURENEWENERGYLARGECAR,
        /// <summary>
        /// "MixedNewEnergyLargeCar" 混合新能源大车
        /// "MixedNewEnergyLargeCar"
        /// </summary>
        CFG_CATEGORY_PLATE_TYPE_MIXEDNEWENERGYLARGECAR,
    }

    //SCADA类型
    public enum EM_ALARM_SCADA_DEV_TYPE
    {
        UNKNOWN,                     // 未知
        LEAKAGE,                     // 漏水检测
        THCONTROLLER,                // 湿温度
        UPS,                         // UPS
        SWITCH,                      // 开关电源
        ELECTRICMETER,               // 智能电表
        COMMERCIALPOWER,             // 市电检测
        BATTERY,                     // 蓄电池
        AIRCONDITION,                // 空调
        ACCESS,                      // 门禁
        SMOKINGSENSOR,               // 烟感
        INFRARED,                    // 红外
        CHEMICAL,                    // 化工
        PERIMETER,                   // 周界
        DOORMAGNETISM,               // 门磁
        DISTANCE,                    // 测距
        WINDSENSOR,                  // 风速
        LOCATION,                    // 位置
        ATMOSPHERE,                  // 大气
        SOLARPOWER,                  // 太阳能
    }

    //设备状态
    public enum EM_SCADA_DEVICE_STATUS
    {
        KNOWN = -1,                              // 未知
        NORMAL,                                  // 正常
        ALARM,                                   // 报警
        OFFLINE,                                 // 离线
    }

    // 客户自定义信息
    public struct NET_XRAY_CUSTOM_INFO
    {
        /// <summary>
        /// / 视角类型
        /// View type
        /// </summary>
        public EM_XRAY_VIEW_TYPE emViewType;
        /// <summary>
        /// / 流水号
        /// Serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSerialNumber;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 124)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 登陆时TLS加密模式
    /// TLS encryption mode when logging in
    /// </summary>
    public enum EM_LOGIN_TLS_TYPE
    {
        /// <summary>
        /// 不走tls加密, 默认方式
        /// Do not use TLS encryption, the default method
        /// </summary>
        EM_LOGIN_TLS_TYPE_NO_TLS = 0,
        /// <summary>
        /// 自适应tls加密
        /// Adaptive tls encryption
        /// </summary>
        EM_LOGIN_TLS_TYPE_TLS_ADAPTER = 1,
        /// <summary>
        /// 强制tls加密
        /// force tls encryption
        /// </summary>
        EM_LOGIN_TLS_TYPE_TLS_COMPEL = 2,
        /// <summary>
        /// 部分tls加密
        /// Partial tls encryption
        /// </summary>
        EM_LOGIN_TLS_TYPE_TLS_MAIN_ONLY = 3,
        /// <summary>
        /// 通用tls加密
        /// General tls encryptions
        /// </summary>
        EM_LOGIN_TLS_TYPE_TLS_GENERAL = 4,
    }

    /// <summary>
    /// CLIENT_LoginWithHighLevelSecurity 输入参数
    /// input param of CLIENT_LoginWithHighLevelSecurity
    /// </summary>
    public struct NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / IP
        /// IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szIP;
        /// <summary>
        /// / 端口
        /// port
        /// </summary>
        public int nPort;
        /// <summary>
        /// / 用户名
        /// user name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUserName;
        /// <summary>
        /// / 密码
        /// passwd
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassword;
        /// <summary>
        /// / 登录模式
        /// login mode
        /// </summary>
        public EM_LOGIN_SPAC_CAP_TYPE emSpecCap;
        /// <summary>
        /// / 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// / 见 CLIENT_LoginEx 接口 pCapParam 与 nSpecCap 关系
        /// see the relationship between pCapParam and nSpecCap in CLIENT_LoginEx
        /// </summary>
        public IntPtr pCapParam;
        /// <summary>
        /// 登录的TLS模式，目前仅支持emSpecCap为EM_LOGIN_SPEC_CAP_TCP，EM_LOGIN_SPEC_CAP_SERVER_CONN 模式下的 tls登陆(TLS加密优先使用该选项)
        /// TLS mode of login, currently only supports emSpecCap for EM_LOGIN_SPEC_CAP_TCP and EM_LOGIN_SPEC_CAP_SERVER_CONN mode tls login(Use this option first for TLS encryption)
        /// </summary>
        public EM_LOGIN_TLS_TYPE emTLSCap;
        /// <summary>
        /// / 本地ip
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szLocalIP;
    }

    /// <summary>
    /// CLIENT_LoginWithHighLevelSecurity 输出参数
    /// output param of CLIENT_LoginWithHighLevelSecurity
    /// </summary>
    public struct NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 设备信息
        /// device info
        /// </summary>
        public NET_DEVICEINFO_Ex stuDeviceInfo;
        /// <summary>
        /// / 错误码，见 CLIENT_Login 接口错误码
        /// error code , see error in CLIENT_Login
        /// </summary>
        public int nError;
        /// <summary>
        /// / 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 132)]
        public byte[] byReserved;
    }

    // 事件类型 EVENT_IVS_PSRISEDETECTION  对应的数据块描述信息
    public struct NET_DEV_EVENT_PSRISEDETECTION_INFO
    {
        public int nChannelID;                                 // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                        // 事件名称
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;                   // 字节对齐
        public double PTS;                                        // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                        // 事件发生的时间
        public int nEventID;                                   // 事件ID
        public NET_MSG_OBJECT stuObject;                        // 检测到的物体
        public int nDetectRegionNum;                           // 规则检测区域顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;                        // 规则检测区域
        public NET_EVENT_FILE_INFO stuFileInfo;                 // 事件对应文件信息
        public double dInitialUTC;                                // 事件初始UTC时间    UTC为事件的UTC (1970-1-1 00:00:00)秒数。
        public byte bEventAction;// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;                     // 保留字节,留待扩展.
        public byte byImageIndex;// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        public uint dwSnapFlagMask;// 抓图标志(按位),具体见NET_RESERVED_COMMON    
        public int nSourceIndex;                               // 事件源设备上的index,-1表示数据无效
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        public uint nOccurrenceCount; // 事件触发累计次数
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 616)]
        public byte[] bReserved;                     // 保留字节,留待扩展.        
    }

    // CLIENT_GetHumanRadioCaps 接口输入参数
    public struct NET_IN_GET_HUMAN_RADIO_CAPS
    {
        public uint dwSize;
        public int nChannel;
    }

    // CLIENT_GetHumanRadioCaps 接口输出参数
    public struct NET_OUT_GET_HUMAN_RADIO_CAPS
    {
        public uint dwSize;
        public bool bSupportRegulatorAlarm;
    }

    // 全景图
    public struct NET_VIS_SCENE_IMAGE
    {
        public uint nOffset;               // 在二进制数据块中的偏移
        public uint nLength;               // 图片大小, 单位字节
        public uint nWidth;                    // 图片宽度, 像素
        public uint nHeight;               // 图片高度, 像素
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] byReserved;                     // 预留字段
    }

    // 热成像全景图
    public struct NET_THERMAL_SCENE_IMAGE
    {
        public uint nOffset;               // 在二进制数据块中的偏移
        public uint nLength;               // 图片大小, 单位字节
        public uint nWidth;                    // 图片宽度, 像素
        public uint nHeight;               // 图片高度, 像素
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] byReserved;                     // 预留字段
    }

    // 事件类型EVENT_IVS_ANATOMY_TEMP_DETECT(人体测温检测事件)对应的数据块描述信息
    public struct NET_DEV_EVENT_ANATOMY_TEMP_DETECT_INFO
    {
        public int nChannelID;             // 通道号
        public int nAction;                // 1:开始 2:停止
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                        // 事件名称
        public double PTS;                 // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                    // 事件发生的时间
        public int nEventID;               // 事件ID

        public EM_CLASS_TYPE emClassType;          // 智能事件所属大类
        public uint nPresetID;                     // 事件触发的预置点号, 从1开始, 没有该字段,表示预置点未知
        public NET_MAN_TEMP_INFO stManTempInfo;          // 区域内人员体温信息 
        public NET_VIS_SCENE_IMAGE stVisSceneImage;        // 可见光全景图
        public NET_THERMAL_SCENE_IMAGE stThermalSceneImage;    // 热成像全景图
        public uint nSequence;             // 帧序号
        public uint nEventRelevanceID;     // 事件关联ID
        /// <summary>
        /// 是否做过后智能的目标识别
        /// whether has been Target recognition
        /// </summary>
        public bool bIsFaceRecognition;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1004)]
        public byte[] byReserved;
    }

    // 区域内人员体温信息
    public struct NET_MAN_TEMP_INFO
    {
        public uint nObjectID;             // 物体ID
        public NET_RECT stRect;                    // 人员头肩信息, 8192坐标系
        public double dbHighTemp;              // 最大温度
        public uint nTempUnit;             // 温度单位(0摄氏度 1华氏度 2开尔文)
        public bool bIsOverTemp;           // 
        public bool bIsUnderTemp;          // 
        public uint nOffset;               // 人脸小图特征值在二进制数据块中的偏移
        public uint nLength;               // 人脸小图特征值长度, 单位:字节
        public EM_MASK_DETECT_RESULT_TYPE emMaskDetectResult;		// 口罩检测结果
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] byReserved;                     // 预留字段
    }

    // 口罩检测结果类型
    public enum EM_MASK_DETECT_RESULT_TYPE
    {
        EM_MASK_DETECT_TYPE_UNKNOWN,                // 未知
        EM_MASK_DETECT_TYPE_NO_MASK,                // 未戴口罩
        EM_MASK_DETECT_TYPE_WEAR_MASK,              // 戴口罩
    }

    // 事件类型 ALARM_ANATOMY_TEMP_DETECT_INFO(人体温智能检测事件)对应的数据块描述信息
    public struct NET_ALARM_ANATOMY_TEMP_DETECT_INFO
    {
        public int nChannelID;                             // 通道号
        public int nAction;                                // 0:脉冲 1:开始 2:停止
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                        // 事件名称
        public double PTS;                                 // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                    // 事件发生的时间
        public uint nEventID;                              // 事件ID

        public uint nPresetID;                             // 事件触发的预置点号, 从1开始, 没有该字段,表示预置点未知
        public NET_MAN_TEMP_INFO stManTempInfo;                            // 区域内人员体温信息 
        public uint nSequence;                             // 帧序号
        public uint nEventRelevanceID;                     // 事件关联ID 
        public bool bIsFaceRecognition;                    // 是否做过后智能的目标识别
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;                     // 预留字段
    }

    // 事件类型 ALARM_REGULATOR_ABNORMAL_INFO(标准黑体源异常报警事件)对应的数据块描述信息
    public struct NET_ALARM_REGULATOR_ABNORMAL_INFO
    {
        public int nChannelID;                             // 通道号
        public int nAction;                                // 0:脉冲 1:开始 2:停止
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                        // 事件名称
        public double PTS;                                 // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                    // 事件发生的时间
        public uint nEventID;                              // 事件ID
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szTypes;                        // 异常类型
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;                     // 预留字段
    }

    // 校准源信息
    public struct NET_REGULATOR_INFO
    {
        public uint nDistance;             // 校准源距离, 单位cm
        public uint nTemperature;          // 校准源温度, 精度0.1, 放大10倍
        public NET_RECT stRect;                    // 校准源矩形位置取值0-8191
        public uint nHeight;               // 校准源高度, 单位cm
        public int nDiffTemperature;       // 温度偏差值, 精度0.01, 放大100倍
        public int nEmissivity;			   // 黑体辐射率，精度0.01，放大100倍，范围50-100
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 28)]
        public byte[] byReserve;                     // 预留字段
    }

    // 人体测温标准黑体配置, 对应枚举 NET_EM_CFG_RADIO_REGULATOR
    public struct NET_CFG_RADIO_REGULATOR
    {
        public uint dwSize;                 // 结构体大小
        public bool bEnable;               // 标准黑体配置使能
        public uint nPresetId;             // 预置点编号, 对于无预置点设备为0
        public uint nCamerHeight;          // 热成像相机安装高度, 单位cm
        public int nCamerAngle;            // 相机安装角度, 精度0.1, 放大10倍
        public NET_REGULATOR_INFO stRegulatorInfo;     // 校准源信息
    }

    /// <summary>
    /// Conveyer belt detection type
    /// 传送带检测类型
    /// </summary>
    public enum EM_CFG_CONVEYER_BELT_DETECT_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// Full load
        /// 满载
        /// </summary>
        FULL_LOAD,
        /// <summary>
        /// Non load
        /// 空载
        /// </summary>
        NON_LOAD,
        /// <summary>
        /// Run off
        /// 跑偏
        /// </summary>
        RUN_OFF,
        /// <summary>
        /// Block
        /// 阻塞
        /// </summary>
        BLOCK,
        /// <summary>
        /// Bulk
        /// 大块异物
        /// </summary>
        BULK,
        /// <summary>
        /// CoalRatio
        /// 煤量占比
        /// </summary>
	    COALRATIO,
    }

    /// <summary>
    /// Alarm mode
    /// 报警模式
    /// </summary>
    public enum EM_CFG_ALARM_OUT_MODE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN = -1,
        /// <summary>
        /// Alarm output 1 output
        /// 报警输出1输出
        /// </summary>
        MODE_0,
        /// <summary>
        /// Alarm output 2 output
        /// 报警输出2输出
        /// </summary>
        MODE_1,
        /// <summary>
        /// Alarm output 1 and 2 are output at the same time
        /// 报警输出1,2同时输出
        /// </summary>
        MODE_2,
    }

    /// <summary>
    /// Proportion of coal allocation
    /// 煤量占比配置
    /// </summary>
    public struct NET_CFG_COAL_RATIO_LEVEL
    {
        /// <summary>
        /// The minimum coal content, which is used to define the minimum value of the current coal level. Value 0-1
        /// 煤量占比最小值，用于界定当前等级煤量的最小值。取值0-1
        /// </summary>
        public float fCoalLevelMin;
        /// <summary>
        /// The maximum coal content, which is used to define the maximum coal content of the current level. Value 0-1
        /// 煤量占比最大值，用于界定当前等级煤量的最大值。取值0-1
        /// </summary>
        public float fCoalLevelMax;
        /// <summary>
        /// Alarm mode, used to define the alarm output alarm mode corresponding to different coal content levels
        /// 报警模式，用于界定不同煤量占比等级对应报警输出报警模式
        /// </summary>
        public EM_CFG_ALARM_OUT_MODE emAlarmOutMode;
    }

    /// <summary>
    /// 检测异物类型
    /// Detect the type of foreign body
    /// </summary>
    public enum EM_CFG_ARTICLE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_CFG_ARTICLE_TYPE_UNKNOWN,
        /// <summary>
        /// 锚杆
        /// AnchorRod
        /// </summary>
        EM_CFG_ARTICLE_TYPE_ANCHORROD,
    }

    /// <summary>
    /// Rule type EVENT_IVS_CONVEYER_BELT_DETECT(Conveyer belt detection) configuration
    /// EVENT_IVS_CONVEYER_BELT_DETECT(传送带检测)对应的规则配置
    /// </summary>
    public struct NET_CFG_CONVEYER_BELT_DETECT_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name, different rules cannot have a same name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public bool bRuleEnable;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 报警联动
        /// Alarm activation
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event response time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ pre set Id 0~65535, -1 means inefficacy
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 检测区域顶点数
        /// Detect region number
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区域
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 传送带检测类型
        /// Conveyer belt detection type
        /// </summary>
        public EM_CFG_CONVEYER_BELT_DETECT_TYPE emDetectType;
        /// <summary>
        /// 最短持续时间，单位秒, 取值：[3-30]
        /// Minimum duration, in seconds, value: [3-30]
        /// </summary>
        public uint nMinDuration;
        /// <summary>
        /// 报告时间间隔，单位秒, 取值：[1-300]
        /// Report time interval, in seconds, value: [1-300]
        /// </summary>
        public uint nReportInterval;
        /// <summary>
        /// 灵敏度，值越小灵敏度越低。取值1-10
        /// The smaller the sensitivity, the lower the sensitivity. Values 1-10
        /// </summary>
        public uint nSensitivity;
        /// <summary>
        /// 对比线，用于表示检测区域内传送带的平均宽度
        /// 直线类型，直中每个端点的坐标归一化到[0,8192)区间
        /// The contrast line is used to represent the average width of the conveyor belt in the detection area
        /// For line type, the coordinates of each end point in the line are normalized to [08192] interval
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_CFG_POLYLINE[] stuComparetLine;
        /// <summary>
        /// 大块物占比值，尺寸大于SizeFilterThreshold / 10* ComparetLine表示的传送带平均宽度 的物体被认为是大块异物,取值[2-8]
        /// The proportion of large objects, which is larger than the average width of conveyor belt indicated by sizefilterthreshold / 10 * comparetline, is considered as large foreign objects, and the value is [2-8]
        /// </summary>
        public uint nSizeFilterThreshold;
        /// <summary>
        /// 预警值，用于界定跑偏的程度；0<预警值<停机值<10, 取值[1-9]
        /// Warning value, used to define the degree of deviation; 0 < warning value < stop value < 10, value [1-9]
        /// </summary>
        public uint nWarningThreshold;
        /// <summary>
        /// 停机值，用于界定跑偏的程度；0<预警值<停机值<10, 取值[1-9]
        /// Stop value, used to define the degree of deviation; 0 < warning value < stop value < 10, value [1-9]
        /// </summary>
        public uint nDowntimeThreshold;
        /// <summary>
        /// 煤量占比配置，默认三组，对应煤量占比三个等级，每个等级由煤量占比最大值、最小值组成煤量阈值，三档的阈值互不冲突。
        /// Coal ratio configuration, the default is three groups, corresponding to three levels of coal ratio, each level is composed of the maximum and minimum coal ratio, and the thresholds of the three levels are mutually Do not conflict.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public NET_CFG_COAL_RATIO_LEVEL[] stuCoalRatioLevel;
        /// <summary>
        /// 煤量占比配置数
        /// Coal ratio configuration number
        /// </summary>
        public int nCoalRatioLevelNums;
        /// <summary>
        /// 阻塞报警阈值;取值0-10
        /// Block alarm threshold; value 0-10
        /// </summary>
        public uint nClogThreshold;
        /// <summary>
        /// 输出不同皮带运动状态时的报警， 0代表该报警不考虑皮带是否运动(默认，即包含1和2),1代表仅在皮带静止时输出报警,2代表仅在皮带运动时输出报警
        /// Output alarms in different belt movement states, 0 means that the alarm does not consider whether the belt is moving (default, including 1 and 2), 1 means that the alarm is only output when the belt is stationary, 2 means that it is only when the belt is moving Output alarm
        /// </summary>
        public uint nIsMoveAlarm;
        /// <summary>
        /// 皮带跑偏报警标识，皮带是否跑偏至托辊外，0表示无效值，1代表托辊内，2代表托辊外
        /// Belt deviation alarm sign, whether the belt deviates to the outside of the idler, 0 represents invalid value, 1 represents the inside of the idler, and 2 represents the outside of the idler
        /// </summary>
        public uint nRunOffFlag;
        /// <summary>
        /// 检测异物类型
        /// Detect the type of foreign body
        /// </summary>
        public EM_CFG_ARTICLE_TYPE emArticleType;
        /// <summary>
        /// 皮带实际物理宽度,范围[0-1000],单位cm
        /// Actual physical width of belt, range [0-1000], unit: cm
        /// </summary>
        public uint nConveyorBeltWidth;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4036)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 人体检测及人体识别支持的脸部特征
    /// face trait of facebody detect or analyse
    /// </summary>
    public enum EM_A_CFG_EM_FACE_TRAIT
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        CFG_EM_FACE_TRAIT_UNKNOWN,
        /// <summary>
        /// 性别
        /// sex
        /// </summary>
        CFG_EM_FACE_TRAIT_SEX,
        /// <summary>
        /// 年龄
        /// age
        /// </summary>
        CFG_EM_FACE_TRAIT_AGE,
        /// <summary>
        /// 眼镜
        /// glasses
        /// </summary>
        CFG_EM_FACE_TRAIT_GLASSES,
        /// <summary>
        /// 胡子
        /// beard
        /// </summary>
        CFG_EM_FACE_TRAIT_BEARD,
        /// <summary>
        /// 口罩
        /// mask
        /// </summary>
        CFG_EM_FACE_TRAIT_MASK,
        /// <summary>
        /// 表情
        /// emotion
        /// </summary>
        CFG_EM_FACE_TRAIT_EMOTION,
    }

    // 人脸属性类型
    public enum EM_FACEFEATURE_TYPE
    {
        UNKNOWN,         // 未知
        SEX,             // 性别
        AGE,             // 年龄
        EMOTION,         // 表情
        GLASSES,         // 眼镜状态
        EYE,             // 眼睛状态
        MOUTH,           // 嘴巴状态
        MASK,            // 口罩状态
        BEARD,           // 胡子状态
        ATTRACTIVE,      // 魅力值
    }

    /// <summary>
    /// 人Lian美化
    /// Face beautification
    /// </summary>
    public struct NET_CFG_FACE_BEAUTIFICATION
    {
        /// <summary>
        /// / 使能
        /// / Enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 降噪等级取值为0~100，默认值50, 等级0与人Lian美化使能不开效果一致，等级越高，降噪程度越大，对人Lian美化效果越高
        /// / Noise reduction level, range from 0 to 100, default value is 50. Higher levels result in more noise reduction and better face beautification effects.
        /// </summary>
        public uint nBeautyLevel;
        /// <summary>
        /// / 0:手动，1：自动，默认手动
        /// / 0: Manual, 1: Automatic, default is manual.
        /// </summary>
        public uint nModelType;
        /// <summary>
        /// / 人Lian边缘锐度参数[0, 100]，默认50
        /// / Face edge sharpness parameter [0, 100], default value is 50.
        /// </summary>
        public uint nEeLevel;
        /// <summary>
        /// / 黑边抑制，取值范围[0, 100] 默认 50，值越大，黑边越明显
        /// / Black edge suppression, range from 0 to 100, default value is 50. Higher values result in more visible black edges.
        /// </summary>
        public uint nBlackEdge;
        /// <summary>
        /// / 白边抑制，取值范围[0, 100],默认 50 ，值越大，白边越明显
        /// / White edge suppression, range from 0 to 100, default value is 50. Higher values result in more visible white edges.
        /// </summary>
        public uint nWhiteEdge;
        /// <summary>
        /// / 亮度等级，取值[0,100], 默认50，值越大，亮度越高
        /// / Brightness level, range from 0 to 100, default value is 50. Higher values result in higher brightness.
        /// </summary>
        public uint nBrightness;
        /// <summary>
        /// / 颜色等级，取值[0,100], 默认50，值越大，颜色越鲜艳
        /// / Color level, range from 0 to 100, default value is 50. Higher values result in more vibrant colors.
        /// </summary>
        public uint nSaturation;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    // 事件类型EVENT_IVS_FACEDETECT(目标检测事件)对应的规则配置
    public struct NET_CFG_FACEDETECT_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name,different rule mast have different name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 检测区顶点数
        /// Detect region point number
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 触发事件的人脸类型个数
        /// Current face's number
        /// </summary>
        public int nHumanFaceTypeCount;
        /// <summary>
        /// 触发事件的人脸类型
        /// Current face list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 128)]
        public string szHumanFaceType;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset Id 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 最短触发时间,单位：秒
        /// Minimum Triggering Time, Unit: Second
        /// </summary>
        public int nMinDuration;
        /// <summary>
        /// 灵敏度,范围[1,10],灵敏度越高越容易检测
        /// sensitivity, range [1,10], the higher the sensitivity, the easier to detect
        /// </summary>
        public int nSensitivity;
        /// <summary>
        /// 重复报警间隔,单位:秒,[0,600](等于0表示不重复报警)
        /// repeat alarm interval, unit:s, [0,600] (when it is 0, it means no repeated alarm)
        /// </summary>
        public int nReportInterval;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// whether rule special dimension filter is valid or not
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// rule special dimension filter
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO_EX stuSizeFileter;
        /// <summary>
        /// 是否开启人脸属性识别, IPC增加
        /// (通过FaceDetection能力中的FeatureSupport来确定该配置是否可以设置)
        /// whether to open the face feature detection
        /// (it determined by featureSupport in the faceDetection capability)
        /// </summary>
        public bool bFeatureEnable;
        /// <summary>
        /// 需要检测的人脸属性个数
        /// the count of face feature
        /// </summary>
        public int nFaceFeatureNum;
        /// <summary>
        /// 需检测的人脸属性, 通过FaceDetection能力来获取支持哪些人脸属性
        /// the list of face feature
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_FACEFEATURE_TYPE[] emFaceFeatureType;
        /// <summary>
        /// / 目标美化
        /// / Face beautification
        /// </summary>
        public NET_CFG_FACE_BEAUTIFICATION stuFaceBeautification;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 人体测温其他参数
    /// Other parameters of body  Monitoring
    /// </summary>
    public struct NET_A_HUMAN_TEMP_PARAM_INFO
    {
        /// <summary>
        /// 温度优选时间,取值：0~20
        ///  optimization time, value: 0 ~ 20
        /// </summary>
        public int nTempPickTime;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;
    }

    // 人体测温规则配置
    public struct NET_CFG_ANATOMY_TEMP_DETECT_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name. Different rules cannot have the same name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public bool bRuleEnable;
        /// <summary>
        /// 相应物体类型个数
        /// Number of corresponding object types
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// List of corresponding object types
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// Preset point no. of PTZ 0 ~ 65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 报警联动
        /// Alarm linkage
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event response time period
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 触发跟踪使能,仅对拌线入侵事件,区域入侵规则有效
        /// Trigger tracking enable, only valid for cordon events, cordon rules
        /// </summary>
        public byte bTrackEnable;
        /// <summary>
        /// 多边形顶点数
        /// Polygon vertex
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区域，多边形
        /// Detection area, polygon
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 温度过高异常报警是否开启
        /// 
        /// </summary>
        public bool bHighEnable;
        /// <summary>
        /// 异常报警是否开启
        /// Whether the abnormal alarm is on
        /// </summary>
        public bool bLowEnable;
        /// <summary>
        /// 温度过高异常阈值，精度0.1，扩大10倍
        /// abnormal threshold, magnify × 10
        /// </summary>
        public int fHighThresholdTemp;
        /// <summary>
        /// 异常阈值，精度0.1，扩大10倍
        /// abnormal threshold, magnify × 10
        /// </summary>
        public int fLowThresholdTemp;
        /// <summary>
        /// 是否自动学习
        /// Automatic learning or not
        /// </summary>
        public bool bIsAutoStudy;
        /// <summary>
        /// 温度过高自动学习偏差值，精度0.1，扩大10倍
        /// Deviation value of automatic learning, magnify × 10
        /// </summary>
        public int fHighAutoOffset;
        /// <summary>
        /// 自动学习偏差值，精度0.1，扩大10倍
        /// Deviation value of  automatic learning,, magnify × 10
        /// </summary>
        public int fLowAutoOffset;
        /// <summary>
        /// 灵敏度 范围[1, 10]
        /// Sensitivity range [1, 10]
        /// </summary>
        public int nSensitivity;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// Is the rule specific size filter valid
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// Rule specific size filters
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO_EX stuSizeFileter;
        /// <summary>
        /// 是否上报正常体温信息
        /// Whether to report normal  information
        /// </summary>
        public bool bIsCaptureNormal;
        /// <summary>
        /// 人体测温其他参数
        /// Other parameters of body  Monitoring
        /// </summary>
        public NET_A_HUMAN_TEMP_PARAM_INFO stuHumanTempParamInfo;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 768)]
        public byte[] byReserved;
    }

    // 指码流传输的服务类型
    public enum EM_STREAM_TRANSMISSION_SERVICE_TYPE
    {
        UNKNOWN,                    // 未知
        TCP,                        // TCP
        UDP,                        // UDP
        MCAST,                      // MCAST
        AUTO,                       // AUTO
    }

    // 外设类型
    public enum EM_PERIPHERAL_TYPE
    {
        NUKNOWN,                  // 未知
        ASG_CONTROLLER,           // 闸机控制板
        ASG_MOTOR,                // 闸机电机驱动
    }

    // 设备的外设软件版本
    public struct NET_PERIPHERAL_VERSIONS
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVersion;// 对应外设的版本信息
        public EM_PERIPHERAL_TYPE emPeripheralType;       // 外设类型
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;                     // 保留字节
    }

    // 车辆信息，记录了车头、车尾车牌号和车牌颜色
    public struct NET_EVENT_PLATE_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szFrontPlateNumber;// 车头车牌号码
        public EM_PLATE_COLOR_TYPE emFrontPlateColor;                  // 车头车牌颜色
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szBackPlateNumber;// 车尾车牌号码
        public EM_PLATE_COLOR_TYPE emBackPlateColor; // 车尾车牌颜色
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] reversed;                     // 保留字节
    }

    // 课堂行为动作类型
    public enum EM_CLASSROOM_ACTION
    {
        UNKNOWN,            // 未知
        PLAY_PHONE,         // 玩手机
        HANDSUP,            // 举手
        LISTEN,             // 听讲
        READ_WRITE,         // 读写
        TABLE,              // 趴桌子
    }

    // 事件类型 EVENT_IVS_CLASSROOM_BEHAVIOR (课堂行为分析事件) 对应的数据块描述信息
    public struct NET_DEV_EVENT_CLASSROOM_BEHAVIOR_INFO
    {
        public int nChannelID;                                 // 通道号
        public int nAction;                                    // 0:脉冲 1:开始 2:停止
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                        // 事件名称
        public double PTS;                                     // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                        // 事件发生的时间
        public uint nEventID;                                  // 事件ID
        public NET_EVENT_FILE_INFO stuFileInfo;                             // 事件对应文件信息

        public EM_CLASS_TYPE emClassType;                              // 智能事件所属大类
        public uint nRuleID;                                   // 智能事件规则编号，用于标示哪个规则触发的事件
        public uint nObjectID;                                 // 物体ID
        public uint nSequence;                                 // 帧序号
        public EM_CLASSROOM_ACTION emClassroomAction;                          // 课堂行为动作
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;                        // 规则检测区域
        public int nDetectRegionNum;                           // 规则检测区域顶点数
        public uint nPresetID;                                 // 事件触发的预置点号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;                        // 事件触发的预置点名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 22)]
        public string szSerialUUID;                        //智能物体全局唯一物体标识
                                                           // 格式如下：前2位%d%d:01-视频片段,02-图片,03-文件,99-其他;
                                                           //中间14位YYYYMMDDhhmmss:年月日时分秒;后5位%u%u%u%u%u：物体ID，如00001
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;                     // 用于字节对齐
        public NET_A_RECT_EX stuBoundingBox;                             // 包围盒
        public NET_INTELLIGENCE_IMAGE_INFO stuSceneImage;                              // 人脸底图信息
        public NET_INTELLIGENCE_IMAGE_INFO stuFaceImage;                               // 人脸小图信息
        public NET_FACE_ATTRIBUTE_EX stuFaceAttributes;                            // 人脸属性
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved;
    }

    // 事件类型EVENT_IVS_MAN_STAND_DETECTION(立体视觉站立事件)对应数据块描述信息
    public struct NET_DEV_EVENT_MANSTAND_DETECTION_INFO
    {
        public int nChannelID;                 // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;                        // 事件名称
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;                    // 字节对齐,非保留字节
        public double PTS;                        // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                        // 事件发生的时间
        public int nEventID;                   // 事件ID
                                               /////////////以上为公共字段，除nChannelID外的其他字段是为了预留公共字段空间///////
        public int nAction;                    // 0:脉冲 1:开始 2:停止
        public int nManListCount;              // 区域人员列表数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_MAN_STAND_LIST_INFO[] stuManList;   // 区域内人员列表
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; // 智能事件公共信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2048)]
        public byte[] szReversed;                    // 保留字节
    }

    /// <summary>
    /// 立体视觉站立事件区域内人员列表
    /// </summary>
    public struct NET_MAN_STAND_LIST_INFO
    {
        /// <summary>
        /// 站立人员所在位置,8192坐标系
        /// </summary>
        public NET_POINT stuCenter;
        /// <summary>
        /// 智能物体全局唯一物体标识
        /// 有效数据位21位，包含’\0’
        /// 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
        /// 中间14位YYYYMMDDhhmmss:年月日时分秒
        /// 后5位%u%u%u%u%u：物体ID，如00001
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 22)]
        public string szSerialUUI;
        public NET_A_RECT_EX stuBoundingBox; // 包围盒
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 90)]
        public byte[] szReversed;
    }

    // 报警状态
    public struct NET_ALARMCTRL_PARAM
    {
        public uint dwSize;
        public int nAlarmNo;                   // 报警通道号,从0开始
        public int nAction;                    // 1：触发报警,0：停止报警
    }

    // 网络传输模式
    public enum CFG_ENUM_NET_TRANSMISSION_MODE
    {
        ADAPT,                            // 自适应
        HALF10M,                          // 10M半双工
        FULL10M,                          // 10M全双工
        HALF100M,                         // 100M半双工
        FULL100M,                         // 100M全双工
    };

    // 网口类型
    public enum CFG_ENUM_NET_INTERFACE_TYPE
    {
        UNKNOWN,                // 未知
        STANDARD,               // 标准网口
        MANAGER,                // 管理网口
        EXTEND,                 // 扩展网口
    }

    //三态布尔类型
    public enum CFG_THREE_STATUS_BOOL
    {
        UNKNOWN = -1,  //未知
        FALSE = 0,
        TRUE = 1,
    }

    // 网络接口
    public struct CFG_NETWORK_INTERFACE
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;			                // 网络接口名称
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szIP;			                // ip地址
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szSubnetMask;	                // 子网掩码
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szDefGateway;	                // 默认网关
        public bool bDhcpEnable;					// 是否开启DHCP
        public bool bDnsAutoGet;					// DNS获取方式，dhcp使能时可以设置为true，支持通过dhcp获取
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2 * 256)]
        public byte[] szDnsServers;	                // DNS服务器地址
        public int nMTU;							// 网络最大传输单元
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szMacAddress;	                // mac地址
        public bool bInterfaceEnable;               // 网络接口使能开关，表示该网口配置是否生效。不生效时，IP地址不设置到网卡上。
        public bool bReservedIPEnable;              // DHCP失败时是否使用保留IP，使用保留IP时还继续发DHCP请求
        public CFG_ENUM_NET_TRANSMISSION_MODE emNetTranmissionMode;// 网络传输模式，默认adapt自适应模式
        public CFG_ENUM_NET_INTERFACE_TYPE emInterfaceType;     // 网口类型
        public CFG_THREE_STATUS_BOOL bBond;               // 是否绑定虚拟网口
    }

    /// <summary>
    /// 网络传输模式
    /// network transmission mode
    /// </summary>
    public enum EM_A_CFG_ENUM_NET_TRANSMISSION_MODE
    {
        /// <summary>
        /// 自适应
        /// adapt
        /// </summary>
        CFG_ENUM_NET_MODE_ADAPT,
        /// <summary>
        /// 10M半双工
        /// half 10M
        /// </summary>
        CFG_ENUM_NET_MODE_HALF10M,
        /// <summary>
        /// 10M全双工
        /// full 10M
        /// </summary>
        CFG_ENUM_NET_MODE_FULL10M,
        /// <summary>
        /// 100M半双工
        /// half 100M
        /// </summary>
        CFG_ENUM_NET_MODE_HALF100M,
        /// <summary>
        /// 100M全双工
        /// full 100M
        /// </summary>
        CFG_ENUM_NET_MODE_FULL100M,
    }


    /// <summary>
    /// 三态布尔类型
    /// three state bool type
    /// </summary>
    public enum EM_A_CFG_THREE_STATUS_BOOL
    {
        /// <summary>
        /// 未知
        /// </summary>
        CFG_BOOL_STATUS_UNKNOWN = -1,
        CFG_BOOL_STATUS_FALSE = 0,
        CFG_BOOL_STATUS_TRUE = 1,
    }

    /// <summary>
    /// 网络传输模式
    /// Network transmission mode
    /// </summary>
    public enum EM_A_CFG_ENUM_NET_BOND_MODE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        CFG_ENUM_NET_BOND_MODE_UNKNOWN,
        /// <summary>
        /// RoundRobin负载均衡(为二代负载均衡对应值)
        /// RoundRobin load balancing (corresponding value for second-generation load balancing)
        /// </summary>
        CFG_ENUM_NET_BOND_MODE_BALANCERR,
        /// <summary>
        /// XOR负载均衡
        /// XOR load balancing
        /// </summary>
        CFG_ENUM_NET_BOND_MODE_BALANCEXOR,
        /// <summary>
        /// 自适应传输负载均衡
        /// Adaptive transmission load balancing
        /// </summary>
        CFG_ENUM_NET_BOND_MODE_BALANCETLB,
        /// <summary>
        /// 网卡虚拟化负载均衡
        /// Network card virtualization load balancing
        /// </summary>
        CFG_ENUM_NET_BOND_MODE_BALANCEALB,
        /// <summary>
        /// 主备模式(由于历史版本原因，设备以此值为容错模式，兼容性考虑，实现中作容错模式用)
        /// Active/standby mode (due to historical version reasons, the device uses this value as a fault-tolerant mode, compatibility considerations, use as fault-tolerant mode in implementation)
        /// </summary>
        CFG_ENUM_NET_BOND_MODE_ACTIVEBACKUP,
        /// <summary>
        /// 容错模式(为保持兼容性，此值无法使用)
        /// Fault tolerance mode (to maintain compatibility, this value cannot be used)
        /// </summary>
        CFG_ENUM_NET_BOND_MODE_BROADCAST,
        /// <summary>
        /// 动态链路聚合
        /// Dynamic link aggregation
        /// </summary>
        CFG_ENUM_NET_BOND_MODE_802_3AD,
        /// <summary>
        /// 网桥((二层交换机，借用bond的格式)
        /// Bridge ((Layer 2 switch, borrow the format of bond)
        /// </summary>
        CFG_ENUM_NET_BOND_MODE_BRIDGE,
    }

    /// <summary>
    /// 802.3ad链路聚合控制方式
    /// 802.3ad link aggregation control method
    /// </summary>
    public enum EM_A_CFG_ENUM_NET_BOND_LACP
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        CFG_ENUM_NET_BOND_LACP_UNKNOWN,
        /// <summary>
        /// 基于MAC地址
        /// Based on MAC address
        /// </summary>
        CFG_ENUM_NET_BOND_LACP_MAC,
        /// <summary>
        /// 基于IP地址和端口
        /// Based on IP address and port
        /// </summary>
        CFG_ENUM_NET_BOND_LACP_IPPORT,
        /// <summary>
        /// 基于IP地址和MAC地址
        /// Based on IP address and MAC address
        /// </summary>
        CFG_ENUM_NET_BOND_LACP_IPMAC,
        /// <summary>
        /// 基于IP地址
        /// ased on IP address
        /// </summary>
        CFG_ENUM_NET_BOND_LACP_IP,
        /// <summary>
        /// 基于端口
        /// ased on Port
        /// </summary>
        CFG_ENUM_NET_BOND_LACP_PORT,
    }

    /// <summary>
    /// 绑定虚拟网口
    /// Bind virtual network port
    /// </summary>
    public struct NET_A_CFG_NETWORK_BOND_INTERFACE
    {
        /// <summary>
        /// 是否绑定虚拟网口，只有网卡名是bondxx时，才允许有Bonding字段，其它网卡不能用
        /// true-绑定网卡生效,物理网口对外不可用
        /// false-解绑网卡(多址模式),使Members中的网卡可用
        /// Whether to bind the virtual network port, the bonding field is allowed only when the network card name is bondxx, and other network cards cannot be used
        /// true-the binding of the network card takes effect, and the physical network port is unavailable to the outside world
        /// false-Unbind the network card (multi-access mode) to make the network card in Members available
        /// </summary>
        public bool bBonding;
        /// <summary>
        /// 网卡绑定模式
        /// NIC bonding mode
        /// </summary>
        public EM_A_CFG_ENUM_NET_BOND_MODE emMode;
        /// <summary>
        /// 802.3ad链路聚合控制方式
        /// 802.3ad link aggregation control method
        /// </summary>
        public EM_A_CFG_ENUM_NET_BOND_LACP emLacp;
        /// <summary>
        /// 网络最大传输单元
        /// Network maximum transmission unit
        /// </summary>
        public int nMTU;
        /// <summary>
        /// 物理网口成员
        /// Physical network port member
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 16)]
        public string szMembers;
        /// <summary>
        /// ip地址
        /// IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szIP;
        /// <summary>
        /// 网络接口名称
        /// Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 网络接口名称
        /// Alias
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAlias;
        /// <summary>
        /// DNS服务器地址
        /// DNS Servers
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2 * 256)]
        public string szDnsServers;
        /// <summary>
        /// mac地址
        /// mac Address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMacAddress;
        /// <summary>
        /// 子网掩码
        /// Subnet mask
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szSubnetMask;
        /// <summary>
        /// 默认网关
        /// Default gateway
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szDefGateway;
        /// <summary>
        /// 是否开启DHCP
        /// Whether to enable DHCP
        /// </summary>
        public bool bDhcpEnable;
    }

    /// <summary>
    /// 空闲动作功能枚举
    /// idle action function enumeration
    /// </summary>
    public enum EM_CFG_IDLEMOTION_FUNCTION
    {
        /// <summary>
        /// 无
        /// none
        /// </summary>
        EM_CFG_IDLEMOTION_FUNCTION_NONE = 0,
        /// <summary>
        /// 预置点
        /// preset
        /// </summary>
        EM_CFG_IDLEMOTION_FUNCTION_PRESET,
        /// <summary>
        /// 自动线扫
        /// auto scan
        /// </summary>
        EM_CFG_IDLEMOTION_FUNCTION_SCAN,
        /// <summary>
        /// 巡航
        /// tour
        /// </summary>
        EM_CFG_IDLEMOTION_FUNCTION_TOUR,
        /// <summary>
        /// 自动巡迹
        /// auto pattern
        /// </summary>
        EM_CFG_IDLEMOTION_FUNCTION_PATTERN,
        /// <summary>
        /// 水平旋转
        /// Auto Pan Group
        /// </summary>
        EM_CFG_IDLEMOTION_FUNCTION_AUTOPANGROUP,
    }

    /// <summary>
    /// 空闲动作配置信息
    /// idle action config info
    /// </summary>
    public struct NET_A_CFG_IDLE_MOTION_INFO
    {
        /// <summary>
        /// 使能
        /// enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 启动空闲动作的时间1~60分钟
        /// enable idle action time 1~60 minute
        /// </summary>
        public int nTime;
        /// <summary>
        /// 空闲动作功能,见枚举 EM_CFG_IDLEMOTION_FUNCTION
        /// idle action function, see enumeration EM_CFG_IDLEMOTION_FUNCTION
        /// </summary>
        public EM_CFG_IDLEMOTION_FUNCTION emFunction;
        /// <summary>
        /// 预置点编号, 范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wPresetMin和wPresetMax
        /// preset no., rage refer to CFG_PTZ_PROTOCOL_CAPS_INFO wPresetMin and wPresetMax
        /// </summary>
        public int nPresetId;
        /// <summary>
        /// 自动线扫编号, 范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wAutoScanMin和wAutoScanMax
        /// auto scan no., range refer to CFG_PTZ_PROTOCOL_CAPS_INFO wAutoScanMin and wAutoScanMax
        /// </summary>
        public int nScanId;
        /// <summary>
        /// 巡航编号, 范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wTourMin和wTourMax
        /// tour no., range refer to CFG_PTZ_PROTOCOL_CAPS_INFO wTourMin and wTourMax
        /// </summary>
        public int nTourId;
        /// <summary>
        /// 自动巡迹编号, 范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wPatternMin和wPatternMax
        /// auto tour no., range refer to CFG_PTZ_PROTOCOL_CAPS_INFO wPatternMin and wPatternMax
        /// </summary>
        public int nPatternId;
        /// <summary>
        /// 启动空闲动作的时长（秒数）范围0-59秒,总时长为nTime * 60 + nSecond
        /// enable idle action time(second) 0~59 second, total time is nTime * 60 + nSecond
        /// </summary>
        public int nSecond;
    }

    /// <summary>
    /// 网桥
    /// Network Bridge
    /// </summary>
    public struct NET_A_CFG_NETWORK_BR_INTERFACE
    {
        /// <summary>
        /// 网络接口名称
        /// Network interface name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 使能
        /// enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 网络最大传输单元
        /// MTU
        /// </summary>
        public int nMTU;
        /// <summary>
        /// 物理网口成员
        /// Physical network port member
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 16)]
        public string szMembers;
        /// <summary>
        /// ip地址
        /// IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szIP;
        /// <summary>
        /// 子网掩码
        /// Subnet mask
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szSubnetMask;
        /// <summary>
        /// 默认网关
        /// Default gateway
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szDefGateway;
        /// <summary>
        /// DNS服务器地址
        /// DNS Servers
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2 * 256)]
        public string szDnsServers;
        /// <summary>
        /// 是否开启DHCP
        /// Whether to enable DHCP
        /// </summary>
        public bool bDhcpEnable;
        /// <summary>
        /// DHCP失败时是否使用保留IP，使用保留IP时还继续发DHCP请求
        /// Whether to use reserved IP when DHCP fails, and continue to send DHCP requests when reserved IP is used
        /// </summary>
        public bool bReservedIPEnable;
        /// <summary>
        /// DNS获取方式，dhcp使能时可以设置为true，支持通过dhcp获取
        /// DNS acquisition method, can be set to true when dhcp is enabled, and it can be acquired through dhcp
        /// </summary>
        public bool bDnsAutoGet;
    }

    // 网络接口配置
    public struct CFG_NETWORK_INFO
    {
        /// <summary>
        /// 主机名称
        /// Host name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szHostName;
        /// <summary>
        /// 所属域
        /// Belonging domain
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDomain;
        /// <summary>
        /// 默认使用的网卡
        /// Default network card
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDefInterface;
        /// <summary>
        /// 网卡数量
        /// Network card amount
        /// </summary>
        public int nInterfaceNum;
        /// <summary>
        /// 网卡列表
        /// Network card list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public CFG_NETWORK_INTERFACE[] stuInterfaces;
        /// <summary>
        /// 虚拟绑定网口数量
        /// Number of virtual binding network ports
        /// </summary>
        public int nBondInterfaceNum;
        /// <summary>
        /// 虚拟绑定网口列表
        /// Virtual bonding network port list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_A_CFG_NETWORK_BOND_INTERFACE[] stuBondInterfaces;
        /// <summary>
        /// 网桥数量
        /// Number of bridges
        /// </summary>
        public int nBrInterfaceNum;
        /// <summary>
        /// 网桥列表
        /// List of bridges
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_A_CFG_NETWORK_BR_INTERFACE[] stuBrInterfaces;
    }

    /// <summary>
    /// Time zone
    /// 时区
    /// </summary>
    public enum EM_CFG_TIME_ZONE_TYPE
    {
        ZONE_0,								// {0, 0*3600,"GMT+00:00"}
        ZONE_1,								// {1, 1*3600,"GMT+01:00"}
        ZONE_2,								// {2, 2*3600,"GMT+02:00"}
        ZONE_3,								// {3, 3*3600,"GMT+03:00"}
        ZONE_4,								// {4, 3*3600+1800,"GMT+03:30"}
        ZONE_5,								// {5, 4*3600,"GMT+04:00"}
        ZONE_6,								// {6, 4*3600+1800,"GMT+04:30"}
        ZONE_7,								// {7, 5*3600,"GMT+05:00"}
        ZONE_8,								// {8, 5*3600+1800,"GMT+05:30"}
        ZONE_9,								// {9, 5*3600+1800+900,"GMT+05:45"}
        ZONE_10,							// {10, 6*3600,"GMT+06:00"}
        ZONE_11,							// {11, 6*3600+1800,"GMT+06:30"}
        ZONE_12,							// {12, 7*3600,"GMT+07:00"}
        ZONE_13,							// {13, 8*3600,"GMT+08:00"}
        ZONE_14,							// {14, 9*3600,"GMT+09:00"}
        ZONE_15,							// {15, 9*3600+1800,"GMT+09:30"}
        ZONE_16,							// {16, 10*3600,"GMT+10:00"}
        ZONE_17,							// {17, 11*3600,"GMT+11:00"}
        ZONE_18,							// {18, 12*3600,"GMT+12:00"}
        ZONE_19,							// {19, 13*3600,"GMT+13:00"}
        ZONE_20,							// {20, -1*3600,"GMT-01:00"}
        ZONE_21,							// {21, -2*3600,"GMT-02:00"}
        ZONE_22,							// {22, -3*3600,"GMT-03:00"}
        ZONE_23,							// {23, -3*3600-1800,"GMT-03:30"}
        ZONE_24,							// {24, -4*3600,"GMT-04:00"}
        ZONE_25,							// {25, -5*3600,"GMT-05:00"}
        ZONE_26,							// {26, -6*3600,"GMT-06:00"}
        ZONE_27,							// {27, -7*3600,"GMT-07:00"}
        ZONE_28,							// {28, -8*3600,"GMT-08:00"}
        ZONE_29,							// {29, -9*3600,"GMT-09:00"}
        ZONE_30,							// {30, -10*3600,"GMT-10:00"}
        ZONE_31,							// {31, -11*3600,"GMT-11:00"}
        ZONE_32,							// {32, -12*3600,"GMT-12:00"}
        ZONE_33,							// {33, -4*3600-1800,"GMT-4:30"}
        ZONE_34,							// {34, 10.5*3600,"GMT+10:30"}
        ZONE_35,							// {35, 14*3600, "GMT+14:00"}
        ZONE_36,							// {36, -9*3600-1800,"GMT-09:30"}
        ZONE_37,							// {37, 8*3600+1800,"GMT+08:30"}
        ZONE_38,							// {38, 8*3600+2700,"GMT+08:45"}
        ZONE_39,							// {39, 12*3600+2700,"GMT+12:45"}
    }

    /// <summary>
    /// NTP Server
    /// NTP服务器
    /// </summary>
    public struct CFG_NTP_SERVER
    {
        /// <summary>
        /// Enable switch
        /// 使能
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// IP address or network name
        /// IP地址或网络名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szAddress;
        /// <summary>
        /// Port number
        /// 端口号
        /// </summary>
        public int nPort;
    }

    /// <summary>
    /// Time Synchronization Server Configuration
    /// 时间同步服务器配置
    /// </summary>
    public struct NET_CFG_NTP_INFO
    {
        /// <summary>
        /// Enable switch
        /// 使能开关
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// IP address or network name
        /// IP地址或网络名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szAddress;
        /// <summary>
        ///  Port number
        ///  端口号
        /// </summary>
        public int nPort;
        /// <summary>
        /// Update cycle, in minutes.
        /// 更新周期，单位为分钟
        /// </summary>
        public int nUpdatePeriod;
        /// <summary>
        /// Time zone
        /// 时区
        /// </summary>
        public EM_CFG_TIME_ZONE_TYPE emTimeZoneType;
        /// <summary>
        /// Time zone description
        /// 时区描述
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szTimeZoneDesc;
        /// <summary>
        /// The number of standby NTP servers
        /// 实际备用NTP服务器个数
        /// </summary>
        public int nSandbyServerNum;
        /// <summary>
        /// Standby NTP Servers
        /// 备选NTP服务器地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public CFG_NTP_SERVER[] stuStandbyServer;
        /// <summary>
        /// (Robot used)Time tolerance which meas the differ setting time and current time.Unit second. If the setting time is in rang of the tolerance, the device do not update the time. 0 means update time eveytime
        /// (机器人使用)表示设置的时间和当前时间的容差，单位为秒，如果设置的时间和当前的时间在容差范围内，则不更新当前时间。0 表示每次都修改。
        /// </summary>
        public int nTolerance;
    }

    /// <summary>
    /// DST Time
    /// DST时间
    /// </summary>
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]
    public struct AV_CFG_DSTTime
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public int nStructSize;
        /// <summary>
        /// Year, 2000~2038
        /// 年, 2000~2038
        /// </summary>
        public int nYear;
        /// <summary>
        /// Month, 1~12
        /// 月, 1~12
        /// </summary>
        public int nMonth;
        /// <summary>
        /// The week, 1-The 1st,2-The 2nd,...,-1-The last,0-calculate by date
        /// 第几周, 1-第一周,2-第二周,...,-1-最后一周,0-按日期计算
        /// </summary>
        public int nWeek;
        /// <summary>
        /// Week or date // By week,  0-Sunday, 1-Monday,..., 6-Saturday // By date. It stands for which date.  1~31
        /// 星期几或日期 // 按周计算时, 0-周日, 1-周一,..., 6-周六 // 按日期算时, 表示几号, 1~31
        /// </summary>
        public int nDay;
        /// <summary>
        /// Hour
        /// 小时
        /// </summary>
        public int nHour;
        /// <summary>
        /// Minute
        /// 分钟
        /// </summary>
        public int nMinute;
    }

    /// <summary>
    /// Zone config 
    /// 区域配置
    /// </summary>
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]
    public struct NET_AV_CFG_Locales
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public int nStructSize;
        /// <summary>
        /// Time format
        /// 时间格式
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szTimeFormat;
        /// <summary>
        /// DST enable
        /// 夏令时时能
        /// </summary>
        public bool bDSTEnable;
        /// <summary>
        /// DST start time
        /// 夏令时起始时间
        /// </summary>
        public AV_CFG_DSTTime stuDstStart;
        /// <summary>
        /// DST end time
        /// 夏令时结束时间
        /// </summary>
        public AV_CFG_DSTTime stuDstEnd;
        /// <summary>
        /// Weekly Enables
        /// 星期是否使能
        /// </summary>
        public bool bWeekEnable;
        /// <summary>
        /// Bit 0 means Sunday, Bit 1 means Monday
        /// 按位表示一周的工作日掩码，bit0表示周日，bit1表示周一
        /// </summary>
        public byte ucWorkDay;

    }

    /// <summary>
    /// service
    /// 服务器数组
    /// </summary>
    public struct NET_CFG_SERVER_INFO
    {
        /// <summary>
        /// service port
        /// 服务器端口号
        /// </summary>
        public int nPort;
        /// <summary>
        /// IP address or network name
        /// IP地址或网络名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szAddress;
        /// <summary>
        /// bEnable 是否有效
        /// Is bEnable valid
        /// </summary>
        public bool abEnable;
        /// <summary>
        /// 主动注册使能
        /// Active registration enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 保留字节
        /// Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szReserved;
    }

    /// <summary>
    /// Auto register config
    /// 主动注册配置
    /// </summary>
    public struct NET_CFG_REGISTER_SERVER_INFO
    {
        /// <summary>
        /// initiative register enable
        /// 主动注册使能
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// device ID
        /// 设备ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szDeviceID;
        /// <summary>
        /// server num
        /// 服务器个数
        /// </summary>
        public int nServersNum;
        /// <summary>
        /// servers
        /// 服务器数组
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_SERVER_INFO[] stuServers;

    }

    /// <summary>
    /// Bit stream strategy when bandwitch is insufficient
    /// 带宽不足时码流策略
    /// </summary>
    public enum EM_STREAM_POLICY
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        UNKNOWN = 0,
        /// <summary>
        /// No strategy, diable "None"
        /// 无策略,不开启使能"None"
        /// </summary>
        NONE,
        /// <summary>
        /// Qualiy first "Quality" 
        /// 画质优先"Quality"  
        /// </summary>
        QUALITY,
        /// <summary>
        /// Fliency first"Fluency"
        /// 流畅度优先"Fluency"
        /// </summary>
        FLUENCY,
        /// <summary>
        /// Auto "AutoAdapt"
        /// 自动"AutoAdapt"
        /// </summary>
        AUTODAPT,
    }

    /// <summary>
    /// send policy
    /// 上传策略
    /// </summary>
    public enum EM_CFG_SENDPOLICY
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN = -1,
        /// <summary>
        /// Regular reporting
        /// 定时上报
        /// </summary>
        TIMING,
        /// <summary>
        /// Event triggered report
        /// 事件触发上报
        /// </summary>
        EVENT,
    }

    public struct NET_CFG_REGISTERSERVER_VEHICLE
    {
        /// <summary>
        /// Active registration enabled
        /// 主动注册使能
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// Whether to send the same coordinate data
        /// 是否发送相同坐标数据
        /// </summary>
        public bool bRepeatEnable;
        /// <summary>
        /// Sub-device ID
        /// 子设备ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szDeviceID;
        /// <summary>
        /// Sent interval, uint:s
        /// 发送间隔, 单位：秒
        /// </summary>
        public int nSendInterval;
        /// <summary>
        ///  IP Addredd or network name
        ///  IP地址或网络名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szAddress;
        /// <summary>
        /// Port
        /// 端口
        /// </summary>
        public int nPort;
        /// <summary>
        /// Send Policy
        /// 上传策略
        /// </summary>
        public EM_CFG_SENDPOLICY emSendPolicy;
        /// <summary>
        ///  Test IP Address or network name
        ///  测试IP地址或网络名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szTestAddress;
        /// <summary>
        /// Test port
        /// 测试端口号
        /// </summary>
        public int nTestPort;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// network protocol configuration
    /// 网络协议配置
    /// </summary>
    public struct NET_CFG_DVRIP_INFO
    {
        /// <summary>
        /// TCP server port,1025~65535
        /// TCP服务端口,1025~65535
        /// </summary>
        public int nTcpPort;
        /// <summary>
        /// SSL server port,1025~65535
        /// SSL服务端口,1025~65535
        /// </summary>
        public int nSSLPort;
        /// <summary>
        /// UDP server port,1025~65535
        /// UDP服务端口,1025~65535
        /// </summary>
        public int nUDPPort;
        /// <summary>
        /// max connections
        /// 最大连接数
        /// </summary>
        public int nMaxConnections;
        /// <summary>
        /// multicast enable
        /// 组播使能
        /// </summary>
        public bool bMCASTEnable;
        /// <summary>
        /// multicast port
        /// 组播端口号
        /// </summary>
        public int nMCASTPort;
        /// <summary>
        /// multicast address
        /// 组播地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMCASTAddress;
        /// <summary>
        /// number of initiative register configuration
        /// 主动注册配置个数
        /// </summary>
        public int nRegistersNum;
        /// <summary>
        /// initiative register configuration
        /// 主动注册配置
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_REGISTER_SERVER_INFO[] stuRegister;
        /// <summary>
        ///  Bit stream strategy when bandwitch is insufficient
        /// 带宽不足时码流策略
        /// </summary>
        public EM_STREAM_POLICY emStreamPolicy;
        /// <summary>
        /// Vehicle-specific active registration configuration
        /// 车载专用主动注册配置
        /// </summary>
        public NET_CFG_REGISTERSERVER_VEHICLE stuRegisterServerVehicle;
    }

    // 按键对应的信息配置信息
    public struct NET_CFG_ACCESSCTL_KEYBINDINGINFOCFG_INFO
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szBindingInfo;                            // 按键绑定的信息
        public uint nKey;                                        // 对应的按键号，范围0-9
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] byReserved;                               // 预留字节
    }

    // 不同数字按钮对应的信息配置
    public struct NET_CFG_ACCESSCTL_KEYBINDINGINFOCFG
    {
        public uint dwSize;                                                     // 结构体大小 
        public uint nKeyNum;                                                     // 按键个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_ACCESSCTL_KEYBINDINGINFOCFG_INFO[] stuKeyBindingInfo;  // 按键对应的信息配置信息
    }

    // 接入设备协议类型
    public enum EM_CUSTOM_DEV_PROTOCOL_TYPE
    {
        PRIVATE,                    // Private
        DAHUA2,                     // 
        DAHUA3,                     // 
        GENERAL,                    // 以URL形式添加的设备
        ONVIF,                      // Onvif接入
        ONVIFS,                     // Onvif加密形式接入
        GB28181,                    // 国标28181接入
        EHOME,                      // Ehome协议
        DAHUA_REG,                  // 主动注册
    }

    // 服务类型
    public enum EM_VIDEOINPUTS_SERVICE_TYPE
    {
        AUTO,                       // 自动
        TCP,                        // TCP
        UDP,                        // UDP
        MULTICAST,                  // 组播
    }

    // 视频输入信息
    public struct NET_CUSTOM_DEV_VIDEO_INPUTS
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMainStreamUrl;                // 主码流URL地址（注：接入设备协议类型为General时有效，此时主辅码流URL不能同时为空）
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szExtraStreamUrl;               // 辅码流URL地址（注：接入设备协议类型为General时有效，此时主辅码流URL不能同时为空）
        public EM_VIDEOINPUTS_SERVICE_TYPE emServiceType;          // 服务类型
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] byReserved;                               // 预留字节
    }

    // CLIENT_AsyncAddCustomDevice 接口输入参数
    public struct NET_IN_ASYNC_ADD_CUSTOM_DEVICE
    {
        public uint dwSize;
        public int nPort;                  // 端口号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAddress; // 设备地址或者域名
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserName;// 用户名
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPassword;// 密码
        public EM_CUSTOM_DEV_PROTOCOL_TYPE emProtocolType;         // 接入设备协议类型
        public int nRemoteChannelNum;      // 上述列表实际填写的有效通道数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public int[] nRemoteChannels;      // 远程通道号数组，如果是IPC就数组大小为1
        public bool bSetLogicChannelStart; // 是否设置逻辑起始通道,FALSE代表随机通道作为起始通道
        public int nLogicChannelStart;     // 逻辑通道起始通道,设置bSetLogicChannelStart为TRUE时生效
        public NET_CUSTOM_DEV_VIDEO_INPUTS stuVideoInput;          // 视频输入信息
    }

    // CLIENT_AsyncAddCustomDevice 接口输出参数
    public struct NET_OUT_ASYNC_ADD_CUSTOM_DEVICE
    {
        public uint dwSize;
        public int nLogicChannelNum;       // 分配的逻辑通道个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public int[] nLogicChannels;       // 分配的逻辑通道号列表
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;          // 设备ID
    }

    // CLIENT_RemoveDevice 接口输入参数
    public struct NET_IN_REMOVE_DEVICE
    {
        public uint dwSize;
        public int nCount;              // 设备个数
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024 * 128)]
        public string szDeviceIDs;          // 设备ID
    }

    // CLIENT_RemoveDevice 接口输出参数
    public struct NET_OUT_REMOVE_DEVICE
    {
        public uint dwSize;
    }

    // 事件类型EVENT_IVS_FACERECOGNITION(目标识别)对应的规则配置
    public struct NET_CFG_FACERECOGNITION_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name,different rule mast have different name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset Id 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 相似度，必须大于该相识度才报告(1~100)
        /// Similarity,it will report when over this similarity(1~100)
        /// </summary>
        public byte bySimilarity;
        /// <summary>
        /// 识别精度(取值1~10，随着值增大，检测精度提高，检测速度下降。最小值为1 表示检测速度优先，最大值为10表示检测精度优先)
        /// Accuracy(1~10,the higher value,the higher accuracy,the lower speed. when be valued 1 means speed first, when be valued 10 means accuracy first)
        /// </summary>
        public byte byAccuracy;
        /// <summary>
        /// 对比模式, 0-正常, 1-指定人脸区域组合, 2-智能模式(算法根据人脸各个区域情况自动选取组合)
        /// Mode, 0-normal, 1-area compounding, 2-aptitude mode
        /// </summary>
        public byte byMode;
        /// <summary>
        /// 查询重要等级大于等于此等级的人员(1~10,数值越高越重要)
        /// Important rank(1~10,the higher value the higher important)
        /// </summary>
        public byte byImportantRank;
        /// <summary>
        /// 区域数
        /// Area number
        /// </summary>
        public int nAreaNum;
        /// <summary>
        /// 人脸区域组合, 0-眉毛，1-眼睛，2-鼻子，3-嘴巴，4-脸颊(此参数在对比模式为1时有效)
        /// Area compounding, 0-eyebrow,1-eye,2-nose,3-mouth,4-face(it work when mode = 1)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] byAreas;
        /// <summary>
        /// 报告的最大匹配图片个数
        /// The max pictrue number that fixed
        /// </summary>
        public int nMaxCandidate;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
    }

	/// <summary>
    /// Link group
    /// </summary>
    public struct NET_A_CFG_LINKGROUP_INFO
    {
        /// <summary>
        /// Group enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// Group ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupID;
        /// <summary>
        /// Similarity
        /// </summary>
        public byte bySimilarity;
        /// <summary>
        /// Color name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szColorName;
        /// <summary>
        /// Show title
        /// </summary>
        public bool bShowTitle;
        /// <summary>
        /// Show plate
        /// </summary>
        public bool bShowPlate;
        /// <summary>
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 511)]
        public byte[] bReserved;
        /// <summary>
        /// Alarm event handler
        /// </summary>
        public NET_A_CFG_ALARM_MSG_HANDLE stuEventHandler;
    }
	
    // 事件类型EVENT_IVS_FACEANALYSIS(人脸分析事件) 对应的规则配置
    public struct NET_CFG_FACEANALYSIS_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name,different rule mast have different name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 检测区顶点数
        /// Detect region point number
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset Id 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 灵敏度,范围[1,10],灵敏度越高越容易检测
        /// sensitivity, range [1,10], the higher the sensitivity, the easier to detect
        /// </summary>
        public int nSensitivity;
        /// <summary>
        /// 联动布控个数
        /// the count of link group
        /// </summary>
        public int nLinkGroupNum;
        /// <summary>
        /// 联动的布控组
        /// the list of link group
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_A_CFG_LINKGROUP_INFO[] stuLinkGroup;
        /// <summary>
        /// 陌生人布防模式
        /// Stranger Mode
        /// </summary>
        public NET_CFG_STRANGERMODE_INFO stuStrangerMode;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// whether rule special dimension filter is valid or not
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// rule special dimension filter
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO_EX stuSizeFileter;
        /// <summary>
        /// 是否开启人脸属性识别, IPC增加
        /// whether to open the face feature detection
        /// </summary>
        public bool bFeatureEnable;
        /// <summary>
        /// 需要检测的人脸属性个数
        /// the count of face feature
        /// </summary>
        public int nFaceFeatureNum;
        /// <summary>
        /// 需检测的人脸属性
        /// the list of face feature
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_FACEFEATURE_TYPE[] emFaceFeatureType;
        /// <summary>
        /// 在人脸属性开启前提下，如果人脸图像质量太差，是否不上报属性
        /// true-图像太差不上报属性 false-图像很差也上报属性(可能会非常不准，影响用户体验)
        /// when open the face feature，if the face image's quality is too bad，whether to report
        /// true-not report false-report
        /// </summary>
        public bool bFeatureFilter;
        /// <summary>
        /// 人脸图片质量阈值,和bFeatureFilter一起使用 范围[1,100]
        /// the threshold of face image quality, use with bFeatureFilter range[1,100]
        /// </summary>
        public int nMinQuality;
        /// <summary>
        /// / 人Lian美化
        /// / Face beautification
        /// </summary>
        public NET_CFG_FACE_BEAUTIFICATION stuFaceBeautification;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 联动的布控组
    /// Link group
    /// </summary>
    public struct NET_CFG_LINKGROUP_INFO
    {
        /// <summary>
        /// 布控组是否启用
        /// Group enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 布控组ID
        /// Group ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupID;
        /// <summary>
        /// 相似度阈值
        /// Similarity
        /// </summary>
        public byte bySimilarity;
        /// <summary>
        /// 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved1;
        /// <summary>
        /// 事件触发时绘制人脸框的颜色
        /// Color name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szColorName;
        /// <summary>
        /// 事件触发时规则框上是否显示报警标题
        /// Show title
        /// </summary>
        public bool bShowTitle;
        /// <summary>
        /// 事件触发时是否显示比对面板
        /// Show plate
        /// </summary>
        public bool bShowPlate;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_ALARM_MSG_HANDLE stuEventHandler;
        /// <summary>
        /// / Target extraction optimal solution, 0 unknown, 1 whole body, 2 upper body
        /// </summary>
        public int nCutoutPolicy;
        /// <summary>
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 闪烁灯光类型
    /// Flashing light type
    /// </summary>
    public enum EM_FILCKERLIGHT_TYPE
    {
        /// <summary>
        /// 闪烁白光灯
        /// white light
        /// </summary>
        EM_WHITELIGHT,
        /// <summary>
        /// 红蓝闪烁警示灯
        /// red blue light
        /// </summary>
        EM_REDBLUELIGHT,
    }

    /// <summary>
    /// 灯光联动方式
    /// Lighting linkage mode
    /// </summary>
    public enum EM_LIGHTLINK_TYPE
    {
        /// <summary>
        /// 闪烁； 默认
        /// filcker
        /// </summary>
        EM_FILCKER,
        /// <summary>
        /// 常亮
        /// keep lighting
        /// </summary>
        EM_KEEPLIGHTING,
    }

    /// <summary>
    /// 云台补光灯联动项
    /// PTZ supplementary light linkage item
    /// </summary>
    public struct NET_CFG_LIGHTING_LINK_INFO
    {
        /// <summary>
        /// 使能
        /// Enzble
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 闪烁灯光类型
        /// Flashing light type
        /// </summary>
        public EM_FILCKERLIGHT_TYPE emFilckerLightType;
        /// <summary>
        /// 灯光联动方式
        /// Lighting linkage mode
        /// </summary>
        public EM_LIGHTLINK_TYPE emLightlinkType;
        /// <summary>
        /// 闪烁间隔时间
        /// Filcker inteval time
        /// </summary>
        public float fFilckerIntevalTime;
        /// <summary>
        /// 闪烁可配置的次数
        /// Filcker times
        /// </summary>
        public int nFilckerTimes;
        /// <summary>
        /// 灯光闪烁或常亮持续时间,单位秒
        /// light duration
        /// </summary>
        public uint nLightDuration;
        /// <summary>
        /// 联动灯光的亮度
        /// Brightness of linkage light
        /// </summary>
        public uint nLightBright;
        /// <summary>
        /// 白光灯联动时间段
        /// White light time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 6)]
        public NET_CFG_TIME_SECTION[] stuWhiteLightTimeSection;
    }

    /// <summary>
    /// 报警联动信息
    /// Alarm EventHandle
    /// </summary>
    public struct NET_ALARM_MSG_HANDLE
    {
        /// <summary>
        /// 是否支持通道数量
        /// Whether Support Channel Count
        /// </summary>
        public byte abChannelCount;
        /// <summary>
        /// 是否支持报警输出数量
        /// Whether Support AlarmOut Count
        /// </summary>
        public byte abAlarmOutCount;
        /// <summary>
        /// 是否支持录像通道
        /// Whether Support RecordMask
        /// </summary>
        public byte abRecordMask;
        /// <summary>
        /// 是否支持录像使能
        /// Whether Support RecordEnable
        /// </summary>
        public byte abRecordEnable;
        /// <summary>
        /// 是否支持录像延时
        /// Whether Support RecordLatch
        /// </summary>
        public byte abRecordLatch;
        /// <summary>
        /// 是否支持报警输出通道
        /// Whether Support AlarmOutMask
        /// </summary>
        public byte abAlarmOutMask;
        /// <summary>
        /// 是否支持报警输出使能
        /// Whether Support AlarmOut Enable
        /// </summary>
        public byte abAlarmOutEn;
        /// <summary>
        /// 是否支持报警输出延时
        /// Whether Support AlarmOut Latch
        /// </summary>
        public byte abAlarmOutLatch;
        /// <summary>
        /// 是否支持扩展报警输出通道
        /// Whether Support ExAlarmOut Mask
        /// </summary>
        public byte abExAlarmOutMask;
        /// <summary>
        /// 是否支持扩展报警输出使能
        /// Whether Support ExAlarmOut Enable
        /// </summary>
        public byte abExAlarmOutEn;
        /// <summary>
        /// 是否支持云台联动使能
        /// Whether Support PTZ Link Enable
        /// </summary>
        public byte abPtzLinkEn;
        /// <summary>
        /// 是否支持轮巡掩码
        /// Whether Support Tour Mask
        /// </summary>
        public byte abTourMask;
        /// <summary>
        /// 是否支持轮巡使能
        /// Whether Support Tour Enable
        /// </summary>
        public byte abTourEnable;
        /// <summary>
        /// 是否支持快照
        /// Whether Support Snapshot
        /// </summary>
        public byte abSnapshot;
        /// <summary>
        /// 是否支持快照使能
        /// Whether Support Snapshot Enable
        /// </summary>
        public byte abSnapshotEn;
        /// <summary>
        /// 是否支持帧间隔，每隔多少帧抓一张图片
        /// Whether Support Snapshot Period, Snap a picture every sceond
        /// </summary>
        public byte abSnapshotPeriod;
        /// <summary>
        /// 是否支持连拍次数
        /// Whether Support Snapshot Times
        /// </summary>
        public byte abSnapshotTimes;
        /// <summary>
        /// 是否支持本地消息框提示
        /// Whether Support Local Message Box prompt
        /// </summary>
        public byte abTipEnable;
        /// <summary>
        /// 是否支持发送邮件
        /// Whether Support Send Mail Enable
        /// </summary>
        public byte abMailEnable;
        /// <summary>
        /// 是否支持上传到报警中心服务器
        /// Whether Support Upload to the alarm center server
        /// </summary>
        public byte abMessageEnable;
        /// <summary>
        /// 是否支持蜂鸣
        /// Whether Support Beep Enable
        /// </summary>
        public byte abBeepEnable;
        /// <summary>
        /// 是否支持语音提示
        /// Whether Support Voice Enable
        /// </summary>
        public byte abVoiceEnable;
        /// <summary>
        /// 是否支持联动视频矩阵掩码
        /// Whether Support Matrix Mask
        /// </summary>
        public byte abMatrixMask;
        /// <summary>
        /// 是否支持联动视频矩阵使能
        /// Whether Support Matrix Enable
        /// </summary>
        public byte abMatrixEnable;
        /// <summary>
        /// 是否支持联动开始延时时间
        /// Whether Support Event Latch
        /// </summary>
        public byte abEventLatch;
        /// <summary>
        /// 是否支持日志使能
        /// Whether Support Log Enable
        /// </summary>
        public byte abLogEnable;
        /// <summary>
        /// 是否支持报警延时
        /// Whether Support Delay
        /// </summary>
        public byte abDelay;
        /// <summary>
        /// 是否支持叠加提示字幕到视频
        /// Whether Support Add Message to video
        /// </summary>
        public byte abVideoMessageEn;
        /// <summary>
        /// 是否支持发送短消息
        /// Whether Support Send MMS Enable
        /// </summary>
        public byte abMMSEnable;
        /// <summary>
        /// 是否支持消息上传给网络使能
        /// Whether Support Message to Net Enable
        /// </summary>
        public byte abMessageToNetEn;
        /// <summary>
        /// 是否支持换面分割轮巡
        /// Whether Support TourSplit
        /// </summary>
        public byte abTourSplit;
        /// <summary>
        /// 是否支持叠加图片标题使能
        /// Whether Support Snapshot Title Enable
        /// </summary>
        public byte abSnapshotTitleEn;
        /// <summary>
        /// 是否支持云台联动使能
        /// Whether Support PTZ Link Enable
        /// </summary>
        public byte abPtzLinkEx;
        /// <summary>
        /// 是否支持叠加图片标题
        /// Whether Support Add Snapshot Title
        /// </summary>
        public byte abSnapshotTitle;
        /// <summary>
        /// 是否支持邮件详情
        /// Whether Support Mail Detail
        /// </summary>
        public byte abMailDetail;
        /// <summary>
        /// 是否支持叠加视频标题，主要指主码流
        /// Whether Support Add Video Title Enable, MainStream
        /// </summary>
        public byte abVideoTitleEn;
        /// <summary>
        /// 是否支持视频标题内容
        /// Whether Support Video Title
        /// </summary>
        public byte abVideoTitle;
        /// <summary>
        /// 是否支持轮巡
        /// Whether Support Tour
        /// </summary>
        public byte abTour;
        /// <summary>
        /// 是否支持指定事件详细信息里需要写到数据库的关键字
        /// Whether Support Specifies the KeyWords that need to be Written to the DB in the event details
        /// </summary>
        public byte abDBKeys;
        /// <summary>
        /// 是否支持叠加到JPEG图片的摘要信息
        /// Whether Support Add JPEG Summary
        /// </summary>
        public byte abJpegSummary;
        /// <summary>
        /// 是否支持补光灯使能
        /// Whether Support Flash Enable
        /// </summary>
        public byte abFlashEn;
        /// <summary>
        /// 是否支持补光灯延时
        /// Whether Support Flash Latch
        /// </summary>
        public byte abFlashLatch;
        /// <summary>
        /// 是否支持联动语音文件绝对路径
        /// Whether Support Audio File Name
        /// </summary>
        public byte abAudioFileName;
        /// <summary>
        /// 是否支持警号使能
        /// Whether Support AlarmBell Enable
        /// </summary>
        public byte abAlarmBellEn;
        /// <summary>
        /// 是否支持门禁控制使能
        /// Whether Support Access Control Enable
        /// </summary>
        public byte abAccessControlEn;
        /// <summary>
        /// 是否支持门禁控制
        /// Whether Support Access Control
        /// </summary>
        public byte abAccessControl;
        /// <summary>
        /// 是否支持语音呼叫
        /// Whether Support TalkBack
        /// </summary>
        public byte abTalkBack;
        /// <summary>
        /// 是否支持电话报警中心
        /// Whether Support PSTN Alarm Server
        /// </summary>
        public byte abPSTNAlarmServer;
        /// <summary>
        /// 是否支持警号输出延时
        /// Whether Support AlarmBell Latch
        /// </summary>
        public byte abAlarmBellLatch;
        /// <summary>
        /// 是否支持联动语音播放次数
        /// Whether Support PlayTimes
        /// </summary>
        public byte abPlayTimes;
        /// <summary>
        /// 是否支持重启使能
        /// Whether Support Reboot enable
        /// </summary>
        public byte abReboot;
        /// <summary>
        /// 是否支持蜂鸣时长
        /// Whether Support BeepTime
        /// </summary>
        public byte abBeepTime;
        /// <summary>
        /// 能力保留字段
        /// reserved for ability
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 68)]
        public byte[] byReserved;
        /// <summary>
        /// 事件响应时间表
        /// Alarm Time Section
        /// </summary>
        public NET_CFG_TIME_SCHEDULE stuTimeSection;
        /// <summary>
        /// 设备的视频通道数
        /// The video channel of the device
        /// </summary>
        public int nChannelCount;
        /// <summary>
        /// 设备的报警输出个数
        /// The alarm output amount of the device
        /// </summary>
        public int nAlarmOutCount;
        /// <summary>
        /// 录像通道掩码(按位)
        /// Subnet mask of the recording channel(use the bit to represent)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwRecordMask;
        /// <summary>
        /// 录像使能
        /// Record enable
        /// </summary>
        public bool bRecordEnable;
        /// <summary>
        /// 录像延时时间(秒)
        /// Record delay time(s)
        /// </summary>
        public int nRecordLatch;
        /// <summary>
        /// 报警输出通道掩码
        /// ubnet mask of alarm output channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwAlarmOutMask;
        /// <summary>
        /// 报警输出使能
        /// Alarm output enable
        /// </summary>
        public bool bAlarmOutEn;
        /// <summary>
        /// 报警输出延时时间(秒)
        /// Alarm output delay time (s)
        /// </summary>
        public int nAlarmOutLatch;
        /// <summary>
        /// 扩展报警输出通道掩码
        /// Subnet mask of extension alarm output channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwExAlarmOutMask;
        /// <summary>
        /// 扩展报警输出使能
        /// Extension alarm output enable
        /// </summary>
        public bool bExAlarmOutEn;
        /// <summary>
        /// 云台联动项 这个参数并没有被解析，应该是被扩展替代
        /// PTZ activation item
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_PTZ_LINK[] stuPtzLink;
        /// <summary>
        /// 云台联动使能
        /// PTZ activation enable
        /// </summary>
        public bool bPtzLinkEn;
        /// <summary>
        /// 轮询通道掩码
        /// Subnet mask of tour channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwTourMask;
        /// <summary>
        /// 轮询使能
        /// Tour enable
        /// </summary>
        public bool bTourEnable;
        /// <summary>
        /// 快照通道号掩码
        /// Snapshot channel subnet mask
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwSnapshot;
        /// <summary>
        /// 快照使能
        /// Snapshot enable
        /// </summary>
        public bool bSnapshotEn;
        /// <summary>
        /// 连拍周期(秒)
        /// Snapshot period(s)
        /// </summary>
        public int nSnapshotPeriod;
        /// <summary>
        /// 连拍次数
        /// Snapshot times
        /// </summary>
        public int nSnapshotTimes;
        /// <summary>
        /// 本地消息框提示
        /// Local prompt dialogue box
        /// </summary>
        public bool bTipEnable;
        /// <summary>
        /// 发送邮件，如果有图片，作为附件
        /// Send out emali. The image is sent out as the attachment.
        /// </summary>
        public bool bMailEnable;
        /// <summary>
        /// 上传到报警服务器
        /// Upload to the alarm server
        /// </summary>
        public bool bMessageEnable;
        /// <summary>
        /// 蜂鸣
        /// Buzzer
        /// </summary>
        public bool bBeepEnable;
        /// <summary>
        /// 语音提示
        /// Audio prompt
        /// </summary>
        public bool bVoiceEnable;
        /// <summary>
        /// 联动语音播放次数bVoiceEnable=TRUE时生效
        /// The Linkage Audio play times,bVoiceEnable=TRUE is effective
        /// </summary>
        public int nPlayTimes;
        /// <summary>
        /// 联动视频矩阵通道掩码
        /// Subnet mask of the activated video channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwMatrixMask;
        /// <summary>
        /// 联动视频矩阵
        /// Activate the video matrix
        /// </summary>
        public bool bMatrixEnable;
        /// <summary>
        /// 联动开始延时时间(秒)，0－15
        /// Activation delay time (s),0-15
        /// </summary>
        public int nEventLatch;
        /// <summary>
        /// 是否记录日志
        /// Record log or not
        /// </summary>
        public bool bLogEnable;
        /// <summary>
        /// 设置时先延时再生效，单位为秒
        /// Delay first and then becomes valid when set. Unit is second.
        /// </summary>
        public int nDelay;
        /// <summary>
        /// 叠加提示字幕到视频。叠加的字幕包括事件类型，通道号，秒计时。
        /// Overlay the prompt character to the video. The overlay character includes the event type, channel number. The unit is second.
        /// </summary>
        public bool bVideoMessageEn;
        /// <summary>
        /// 发送彩信使能
        /// Enable MMS
        /// </summary>
        public bool bMMSEnable;
        /// <summary>
        /// 消息上传给网络使能
        /// Send the message to the network enable
        /// </summary>
        public bool bMessageToNetEn;
        /// <summary>
        /// 轮巡时的分割模式 0: 1画面; 1: 8画面
        /// Tour split mod 0: 1tour; 1: 8tour
        /// </summary>
        public int nTourSplit;
        /// <summary>
        /// 是否叠加图片标题
        /// Enble osd
        /// </summary>
        public bool bSnapshotTitleEn;
        /// <summary>
        /// 云台配置数
        /// PTZ link configuration number
        /// </summary>
        public int nPtzLinkExNum;
        /// <summary>
        /// 扩展云台信息
        /// PTZ extend information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_PTZ_LINK_ITEM[] stuPtzLinkEx;
        /// <summary>
        /// 图片标题内容数
        /// Number of picture title
        /// </summary>
        public int nSnapTitleNum;
        /// <summary>
        /// 图片标题内容
        /// Picture title content
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_EVENT_TITLE[] stuSnapshotTitle;
        /// <summary>
        /// 邮件详细内容
        /// Mail detial
        /// </summary>
        public NET_CFG_MAIL_DETAIL stuMailDetail;
        /// <summary>
        /// 是否叠加视频标题，主要指主码流
        /// Whether overlay video title, mainly refers to the main stream
        /// </summary>
        public bool bVideoTitleEn;
        /// <summary>
        /// 视频标题内容数目
        /// Video title num
        /// </summary>
        public int nVideoTitleNum;
        /// <summary>
        /// 视频标题内容
        /// Video title
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_EVENT_TITLE[] stuVideoTitle;
        /// <summary>
        /// 轮询联动数目
        /// Tour num
        /// </summary>
        public int nTourNum;
        /// <summary>
        /// 轮询联动配置
        /// Tour configuration
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_TOURLINK[] stuTour;
        /// <summary>
        /// 指定数据库关键字的有效数
        /// Specify the db keyword on the number of effective
        /// </summary>
        public int nDBKeysNum;
        /// <summary>
        /// 指定事件详细信息里需要写到数据库的关键字
        /// The specify event detail information need write the BD keyword
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64 * 64)]
        public string szDBKeys;
        /// <summary>
        /// 叠加到JPEG图片的摘要信息
        /// The summary information of the jpeg image
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byJpegSummary;
        /// <summary>
        /// 是否使能补光灯
        /// Whether enable flash
        /// </summary>
        public bool bFlashEnable;
        /// <summary>
        /// 补光灯延时时间(秒),延时时间范围：[10,300]
        /// Flash delay time (s),the time range:[10,300]
        /// </summary>
        public int nFlashLatch;
        /// <summary>
        /// 联动语音文件绝对路径
        /// The Absolute Path to the Linkage Audio Files
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szAudioFileName;
        /// <summary>
        /// 警号使能
        /// Warning Signal Enable
        /// </summary>
        public bool bAlarmBellEn;
        /// <summary>
        /// 门禁使能
        /// Entrance Guard Enable
        /// </summary>
        public bool bAccessControlEn;
        /// <summary>
        /// 门禁组数
        /// Class Number of Entrance Guard
        /// </summary>
        public uint dwAccessControl;
        /// <summary>
        /// 门禁联动操作信息
        /// Entrance Guard Linkage Operation Information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public EM_CFG_ACCESSCONTROLTYPE[] emAccessControlType;
        /// <summary>
        /// 语音呼叫联动信息
        /// Voice Call Linkage Information
        /// </summary>
        public NET_CFG_TALKBACK_INFO stuTalkback;
        /// <summary>
        /// 电话报警中心联动信息
        /// Telephone Alarm Center Linkage Information
        /// </summary>
        public NET_CFG_PSTN_ALARM_SERVER stuPSTNAlarmServer;
        /// <summary>
        /// 警号输出延时时间(10-300秒)
        /// Police no. output delay time(10-300 s)
        /// </summary>
        public int nAlarmBellLatch;
        /// <summary>
        /// 重启使能TRUE:使能 FALSE:不使能
        /// Rebot Enable,TRUE:enable FALSE:unenble
        /// </summary>
        public bool bReboot;
        /// <summary>
        /// 蜂鸣时长最大值为3600，0代表持续蜂鸣
        /// The Max Beep Time:3600,0 Stand for persistent buzz
        /// </summary>
        public int nBeepTime;
        /// <summary>
        /// 联动语音时间使能
        /// enable of nAudioLinkTime
        /// </summary>
        public bool abAudioLinkTime;
        /// <summary>
        /// 联动语音播放的时间, 单位：秒
        /// time of linkage voice play, uint:s
        /// </summary>
        public int nAudioLinkTime;
        /// <summary>
        /// 联动语音播放使能
        /// enable of nAudioPlayTimes
        /// </summary>
        public bool abAudioPlayTimes;
        /// <summary>
        /// 联动语音播放次数
        /// times of linkage voice play
        /// </summary>
        public uint nAudioPlayTimes;
        /// <summary>
        /// 云台补光灯联动项使能
        /// PTZ light activation enable
        /// </summary>
        public bool abLightingLink;
        /// <summary>
        /// 云台补光灯联动项
        /// PTZ light activation
        /// </summary>
        public NET_CFG_LIGHTING_LINK_INFO stuLightingLink;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 828)]
        public byte[] byReserve;
    }

    public struct NET_DB_KEY
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDBKey;
    }

    /// <summary>
    /// 陌生人布防模式
    /// Stranger mode
    /// </summary>
    public struct NET_CFG_STRANGERMODE_INFO_NEW
    {
        /// <summary>
        /// 模式是否启用
        /// Mode enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 事件触发时绘制人脸框的颜色
        /// Color HEX
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szColorHex;
        /// <summary>
        /// 事件触发时规则框上是否显示报警标题
        /// Show title
        /// </summary>
        public bool bShowTitle;
        /// <summary>
        /// 事件触发时是否显示比对面板
        /// Show plate
        /// </summary>
        public bool bShowPlate;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_ALARM_MSG_HANDLE stuEventHandler;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] bReserved;
    }

    // 陌生人布防模式->CFG_STRANGERMODE_INFO
    public struct NET_CFG_STRANGERMODE_INFO
    {
        public bool bEnable;                           // 模式是否启用
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szColorHex;                      // 事件触发时绘制人脸框的颜色
        public bool bShowTitle;                            // 事件触发时规则框上是否显示报警标题
        public bool bShowPlate;                            // 事件触发时是否显示比对面板
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] bReserved;                        // 保留字段	
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;                   // 报警联动
    }

    // 事件类型EVENT_IVSS_FACEATTRIBUTE(IVSS目标检测事件) 对应的规则配置
    public struct NET_CFG_FACEATTRIBUTE_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name,different rule mast have different name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 检测区顶点数
        /// Detect region point number
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset Id 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 最短触发时间,单位：秒
        /// Min trigger time unit:second
        /// </summary>
        public int nMinDuration;
        /// <summary>
        /// 触发报警的人脸个数
        /// The people number that trigger alarm
        /// </summary>
        public int nTriggerTargetsNumber;
        /// <summary>
        /// 灵敏度,范围[1,10],灵敏度越高越容易检测(默认值5)
        /// sensitivity, range [1,10], the higher the sensitivity, the easier to detect(default is 5)
        /// </summary>
        public int nSensitivity;
        /// <summary>
        /// 重复报警间隔,单位:秒,[0,600] 等于0表示不重复报警(默认值30)
        /// Repeated alarm report interval unit:second(default is 30)
        /// </summary>
        public int nReportInterval;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// whether rule special dimension filter is valid or not
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// rule special dimension filter
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO_EX stuSizeFileter;
        /// <summary>
        /// 需要检测的人脸属性个数
        /// the count of face feature
        /// </summary>
        public int nFaceFeatureNum;
        /// <summary>
        /// 需检测的人脸属性
        /// the list of face feature
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_FACEFEATURE_TYPE[] emFaceFeatureType;
        /// <summary>
        /// 在人脸属性开启前提下，如果人脸图像质量太差，是否不上报属性
        /// Under the precondition of bFeatureEnable, if image quality is poor, whether or not to report,true:not report, false:report
        /// </summary>
        public bool bFeatureFilter;
        /// <summary>
        /// 人脸图片质量阈值,和bFeatureFilter一起使用 范围[0,100]
        /// Image quality threshold ,use with bFeatureFilter, range[0,100]
        /// </summary>
        public int nMinQuality;
    }

    // 规则相关检测区域信息
    public struct NET_CFG_DETECT_REGIONS_INFO
    {
        /// <summary>
        /// 检测区域使能字段不存在时默认为TRUE
        /// If the detection area enable field does not exist, the default value is TRUE
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 检测区域顶点数
        /// Detect Region Num
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区域
        /// Detect Region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
    }

    // 驾驶辅助场景配置
    public struct NET_CFG_DETAIL_DRIVEASSISTANT_INFO
    {
        public bool bValid;                                 // 是否有效
        public int nVehicleWidth;                          // 车宽 0-5000mm 单位mm
        public int nCamHeight;                             // 相机高度 0-5000mm 单位mm
        public int nCamToCarHead;                          // 车头到相机的距离 0-5000mm 单位mm
        public NET_CFG_POLYGON stuCenterPoint;			   // 车道中心点
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
        public byte[] byReserved;                         // 保留
    }

    /// <summary>
    /// 区域信息
    /// Area Mode Info
    /// </summary>
    public struct NET_A_CFG_AREA_MODE_INFO
    {
        /// <summary>
        /// 区域名称
        /// Area Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
        /// <summary>
        /// 该区域的总车位个数
        /// The total number of parking spaces in the area
        /// </summary>
        public uint nCount;
        /// <summary>
        /// 区域坐标个数
        /// Area Count
        /// </summary>
        public uint nAreaCount;
        /// <summary>
        /// 区域坐标
        /// Area coordinates
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuArea;
        /// <summary>
        /// 车位类型: 0:未知, 1:小车车位, 2:大车车位, 3:危化品车位, 4:货车车位, 5:小客车车位, 6:大客车车位
        /// Type of parking space: 0: Unknown, 1: Car parking space, 2: Car parking space, 3: Hazardous chemical parking space, 4: Truck parking space, 5: Passenger car parking space, 6: Bus parking space
        /// </summary>
        public int nSpaceType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 60)]
        public string szReserved;
    }

    /// <summary>
    /// 车位统计场景配置信息
    /// Parking statistics configuration
    /// </summary>
    public struct NET_A_CFG_PARKING_STATISTICS_INFO
    {
        /// <summary>
        /// 统计模式: "AreaMode" 区域模式, "SpaceMode" 车位模式
        /// Statistics Mode: "AreaMode" , "SpaceMode"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szStatisticsMode;
        /// <summary>
        /// 区域个数
        /// Area Mode Count
        /// </summary>
        public int nAreaModeCount;
        /// <summary>
        /// 区域信息数组, 每个元素表示一个区域; szStatisticsMode为AreaMode时有效
        /// Area information array, each element represents an area; valid when szStatisticsMode is AreaMode
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_A_CFG_AREA_MODE_INFO[] stuAreaMode;
        /// <summary>
        /// 车位个数
        /// Space Mode Count
        /// </summary>
        public int nSpaceModeCount;
        /// <summary>
        /// 车位信息数组, 每个元素表示一个车位; szStatisticsMode为SpaceMode时有效
        /// Array of parking space information, each element represents a parking space; valid when szStatisticsMode is SpaceMode
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_A_CFG_SPACE_MODE_INFO[] stuSpaceMode;
        /// <summary>
        /// 车辆置信度阈值, 范围[0, 100], 低于该阈值的车辆不做统计
        /// Vehicle confidence threshold, range [0, 100], vehicles below this threshold are not counted
        /// </summary>
        public uint nConfidenceFilter;
    }

    // 视频分析全局配置
    public struct NET_CFG_ANALYSEGLOBAL_INFO
    {
        /// <summary>
        /// 应用场景,详见"支持的场景列表"
        /// 交通场景信息
        /// Scene,see "supported scene list"
        /// Traffic scene info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSceneType;
        /// <summary>
        /// 摄像头离地高度 单位：米
        /// Camera height, meter
        /// </summary>
        public double CameraHeight;
        /// <summary>
        /// 摄像头离地面检测区域中心的水平距离 单位：米
        /// Camera distance, meter
        /// </summary>
        public double CameraDistance;
        /// <summary>
        /// 近景检测点
        /// Near Detect Points
        /// </summary>
        public NET_CFG_POLYGON stuNearDetectPoint;
        /// <summary>
        /// 远景检测点
        /// Far Dectect Points
        /// </summary>
        public NET_CFG_POLYGON stuFarDectectPoint;
        /// <summary>
        /// NearDetectPoint,转换到实际场景中时,离摄像头垂直线的水平距离
        /// The distance between NearDetectPoint and camera
        /// </summary>
        public int nNearDistance;
        /// <summary>
        /// FarDectectPoint,转换到实际场景中时,离摄像头垂直线的水平距离
        /// The distance between FarDectectPoint and camera
        /// </summary>
        public int nFarDistance;
        /// <summary>
        /// 交通场景的子类型,"Gate",卡口类型,"Junction" 路口类型,"ParkingSpace" 车位检测类型
        /// Traffic sence's sub type, such as "Gate","Junction"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSubType;
        /// <summary>
        /// 车道数
        /// Road numberC
        /// </summary>
        public int nLaneNum;
        /// <summary>
        /// 车道信息
        /// Road info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CFG_LANE[] stuLanes;
        /// <summary>
        /// 车牌字符暗示个数
        /// Plant hints chars number
        /// </summary>
        public int nPlateHintNum;
        /// <summary>
        /// 车牌字符暗示数组，在拍摄图片质量较差车牌识别不确定时，根据此数组中的字符进行匹配，数组下标越小，匹配优先级越高
        /// Plant hints char info,when the pictrue was bad to recognize the plant,then it will use these hints for the plant,the litter index, the higher priority
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 128)]
        public string szPlateHints;
        /// <summary>
        /// 灯组数
        /// Light group number
        /// </summary>
        public int nLightGroupNum;
        /// <summary>
        /// 灯组配置信息
        /// Light group info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CFG_LIGHTGROUPS[] stLightGroups;
        /// <summary>
        /// 是否识别挂字车牌
        /// whether recognize work plate
        /// </summary>
        public bool bHangingWordPlate;
        /// <summary>
        /// 是否识别非标准警牌
        /// whether recognize non-standard police plate
        /// </summary>
        public bool bNonStdPolicePlate;
        /// <summary>
        /// 是否识别黄牌字母
        /// whether recognize yellow plate letter
        /// </summary>
        public bool bYellowPlateLetter;
        /// <summary>
        /// 上报模式，0：未定义，1：上报所有违章车辆，2：上报车牌识别成功的违章车辆
        /// report mode, 0:undefined, 1:report all violation vehicles, 2: report plate successfully recognized violation vehicle
        /// </summary>
        public int nReportMode;
        /// <summary>
        /// 车牌匹配率，0~100，多次识别车牌使用,表示重复识别车牌和前一次识别车牌的一致性要求
        /// plate matching rate. 0~100, multi-recognition of plate use, means required identification of repeated plate recognition and previous plate recognition
        /// </summary>
        public int nPlateMatch;
        /// <summary>
        /// 违章判定依据，0：未定义，1：按车道，2：按行驶方向，3：按车道和行驶方向
        /// violation judgment basis, 0: undefined, 1: by lane, 2:by driving direction, 3: by lane and driving direction
        /// </summary>
        public int nJudgment;
        /// <summary>
        /// 左转弯分界线点数
        /// left turn boundary point
        /// </summary>
        public int nLeftDivisionPtCount;
        /// <summary>
        /// 左转弯分界线
        /// left turn boundary line
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stLeftDivisionLine;
        /// <summary>
        /// 右转弯分界线点数
        /// right turn boundary point
        /// </summary>
        public int nRightDivisionPtCount;
        /// <summary>
        /// 右转弯分界线
        /// right turn boundary line
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stRightDivisionLine;
        /// <summary>
        /// 交通灯颜色校正配置
        /// traffic light color correction config
        /// </summary>
        public NET_CFG_ADJUST_LIGHT_COLOR stAdjustLightColor;
        /// <summary>
        /// 车位数
        /// parking number
        /// </summary>
        public int nParkingSpaceNum;
        /// <summary>
        /// 车位配置信息,每个元素代表一个车位
        /// 一般场景信息
        /// parking config info, each element represents a parking
        /// norml scene info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_CFG_PARKING_SPACE[] stParkingSpaces;
        /// <summary>
        /// 标尺数
        /// Staff number
        /// </summary>
        public int nStaffNum;
        /// <summary>
        /// 标尺
        /// Staff
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_STAFF[] stuStaffs;
        /// <summary>
        /// 标定区域数
        /// Calibrate Area Number
        /// </summary>
        public uint nCalibrateAreaNum;
        /// <summary>
        /// 标定区域(若该字段不存在，则以整幅场景为标定区域)
        /// The calibrate area(if there is no calibrate area, then the whole sence will be the calibrate area)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEAREA_INFO[] stuCalibrateArea;
        /// <summary>
        /// 目标识别场景是否有效
        /// </summary>
        public bool bFaceRecognition;
        /// <summary>
        /// 目标识别场景
        /// Target recognition info
        /// </summary>
        public NET_CFG_FACERECOGNITION_SCENCE_INFO stuFaceRecognitionScene;
        public byte abJitter;
        public byte abDejitter;
        /// <summary>
        /// 保留字段
        /// Reserved field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// 摄像机抖动率 : 摄像机抖动率，取值0-100，反应静止摄像机抖动程度，抖动越厉害，值越大。
        /// Camera jitter frequency,0-100. It is to reflect camera's jitter level, more jitter, higher value
        /// </summary>
        public int nJitter;
        /// <summary>
        /// 是否开启去抖动模块 目前不实现
        /// Turn on dejitter module or not unrealistic for now
        /// </summary>
        public bool bDejitter;
        public bool abCompatibleMode;
        /// <summary>
        /// 0:"OldTrafficRule" : 交通老规则兼容模式;1:"NewTrafficRule" : 交通新规则兼容模式;-1:字符串错误
        /// 0:"OldTrafficRule" : Previous traffic rule compatible mode;1:"NewTrafficRule" : new traffic rule compatible mode:-1:string error
        /// </summary>
        public int nCompatibleMode;
        /// <summary>
        /// 实际数据长度，不能大于1024
        /// Real data length, less than 1024
        /// </summary>
        public int nCustomDataLen;
        /// <summary>
        /// 第三方自定义配置数据
        /// Config data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byCustomData;
        /// <summary>
        /// 摄像头与垂方向的夹角
        /// Camera angle
        /// </summary>
        public double CameraAngle;
        /// <summary>
        /// 地平线线段起始点(点的坐标坐标归一化到[0,8192)区间。)
        /// Start land line,in [0,8192)
        /// </summary>
        public NET_CFG_POLYGON stuLandLineStart;
        /// <summary>
        /// 地平线线段终止点(点的坐标坐标归一化到[0,8192)区间。)
        /// End land line,in [0,8192)
        /// </summary>
        public NET_CFG_POLYGON stuLandLineEnd;
        /// <summary>
        /// 目标检测场景是否有效
        /// targer detection efficiency or not
        /// </summary>
        public bool bFaceDetection;
        /// <summary>
        /// 目标检测场景
        /// targer detection scene
        /// </summary>
        public NET_CFG_FACEDETECTION_SCENCE_INFO stuFaceDetectionScene;
        /// <summary>
        /// 标定白天的时间段.(8,20),表示从8点到晚上20点为白天
        /// Calibrate Time of Day.(8,20),Indicate from 8am to 8pm is daytime
        /// </summary>
        public NET_CFG_TIME_PERIOD stuDayTimePeriod;
        /// <summary>
        /// 标定黑夜的时间段.(20,7)，表示从晚8点到凌晨7点为黑夜
        /// Calibrate Time of Night.(20,7), Indicate from 8 pm to 7am is night
        /// </summary>
        public NET_CFG_TIME_PERIOD stuNightTimePeriod;
        /// <summary>
        /// 多场景标定白天和黑夜时间段
        /// MultiScenario Calibrate Day and night time
        /// </summary>
        public NET_CFG_TIME_PERIOD_SCENE_INFO stuTimePeriodSceneInfo;
        /// <summary>
        /// 多场景标定区域配置信息
        /// MultiScenario Calibrate Area Configuration
        /// </summary>
        public NET_CFG_CALIBRATEAREA_SCENE_INFO stuCalibrateAreaSceneInfo;
        /// <summary>
        /// 昼夜算法切换模式,详见CFG_TIMEPERIOD_SWITCH_MODE
        /// Day and Night Algorithm Switching Mode,See CFG_TIMEPERIOD_SWITCH_MODE
        /// </summary>
        public EM_CFG_TIMEPERIOD_SWITCH_MODE emSwitchMode;
        /// <summary>
        /// 场景数, >0时表示支持多场景, stuMultiScene有效
        /// Scene Number, When >0 ,indicate that it support Mult-Scene, stuMultiScenario effective
        /// </summary>
        public int nSceneNum;
        /// <summary>
        /// 多场景配置
        /// MultiScenario Configuration
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_CFG_ANALYSEGLOBAL_SCENE[] stuMultiScene;
        /// <summary>
        /// 实际场景个数
        /// the count of scene
        /// </summary>
        public int nSceneCount;
        /// <summary>
        /// 场景列别，同一视频通道下启用多个场景时，表示第2个之后的方案(可选)
        /// the list of scene
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 16)]
        public string szSceneTypeList;
        /// <summary>
        /// 画面景深
        /// the depth of scene
        /// </summary>
        public EM_DEPTH_TYPE emDepthType;
        /// <summary>
        /// 云台预置点编号，0~255
        /// PTZ preset Id 0~255
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 经度 单位百万分之一度
        /// longitude company:one in a million
        /// </summary>
        public uint unLongitude;
        /// <summary>
        /// 纬度 单位百万分之一度
        /// dimension company:one in a million
        /// </summary>
        public uint unLatitude;
        /// <summary>
        /// szSceneTypeListEx 是否有效，当为TRUE时，使用 szSceneTypeListEx；否则使用 szSceneTypeList
        /// whether szSceneTypeListEx is valid: TRUE, use szSceneTypeListEx
        /// </summary>
        public bool bSceneTypeListEx;
        /// <summary>
        /// 实际场景个数扩展，szSceneTypeListEx 的有效个数
        /// the valid num of szSceneTypeListEx
        /// </summary>
        public int nSceneCountEx;
        /// <summary>
        /// 场景列表扩展，szSceneTypeList 扩展字段
        /// extend of szSceneTypeList
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32 * 128)]
        public string szSceneTypeListEx;
        /// <summary>
        /// 人体测温场景配置
        /// The scene of measure body 
        /// </summary>
        public NET_CFG_ANATOMYTEMP_SCENCE_INFO stuAnatomyTempScene;
        /// <summary>
        /// 规则相关检测区域信息
        /// Rule related detection area information
        /// </summary>
        public IntPtr pstuDetectRegionsInfo;
        /// <summary>
        /// 最大规则相关检测区域个数,内存由客户申请
        /// The maximum number of rule related detection areas, and the memory is requested by the customer
        /// </summary>
        public int nMaxDetectRegions;
        /// <summary>
        /// 规则相关检测区域信息个数
        /// Number of rule related detection area information
        /// </summary>
        public int nDetectRegionsNum;
        /// <summary>
        /// 驾驶辅助场景配置
        /// Driver assistance scene configuration
        /// </summary>
        public NET_CFG_DETAIL_DRIVEASSISTANT_INFO stuDriveAssistant;
        /// <summary>
        /// 车位变更使能 FALSE：不使能 TRUE:使能
        /// Parking space change enable false: not enable true: Enable
        /// </summary>
        public bool bParkingSpaceChangeEnable;
        /// <summary>
        /// szSceneType的枚举形式
        /// Enumeration form of szscenetype
        /// </summary>
        public EM_SCENE_TYPE emSceneType;
        /// <summary>
        /// SceneTypeList数量
        /// Number of SceneTypeList
        /// </summary>
        public int nSceneCountEm;
        /// <summary>
        /// szSceneTypeList的枚举形式
        /// Enumeration form of SceneTypeList
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_SCENE_TYPE[] emSceneTypeList;
        /// <summary>
        /// 车位统计场景配置信息, szSubType为ParkingStatistics时有效
        /// Parking statistics configuration
        /// </summary>
        public NET_A_CFG_PARKING_STATISTICS_INFO stuParkingStatistics;
    }

    // 人体测温场景配置
    public struct NET_CFG_ANATOMYTEMP_SCENCE_INFO
    {
        public EM_CFG_EM_FACEDETECT_TYPE emFaceDetectType;                                // 目标检测智能类型
        public NET_CFG_FACEDETECT_VISUAL_INFO stuVisual;                                       // 可见光配置，emFaceDetectType为CFG_EM_FACEDETECT_TYPE_VISUAL或CFG_EM_FACEDETECT_TYPE_TIMESECTION时有效
        public NET_CFG_TIME_SECTION stuTimeSection;                                    // 可见光时间段，emFaceDetectType为CFG_EM_FACEDETECT_TYPE_TIMESECTION时有效
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved; // 预留字段
    }

    // 智能类型
    public enum EM_CFG_EM_FACEDETECT_TYPE
    {
        UNKNOWN = 0,                                     // 未知
        VISUAL,                                          // 可见光
        THERMAL,                                         // 红外
        SWITCHBYTIME,                                    // 按时间段切换
    }

    // 可见光配置
    public struct NET_CFG_FACEDETECT_VISUAL_INFO
    {
        public uint nFaceAngleUp;                               // 需要检测的人脸向上(向下)最大偏角,超过此角度不上报,单位度,0-90。
        public uint nFaceAngleRight;                            // 需要检测的人脸向右(向左)最大偏角,超过此角度不上报,单位度,0-90。
        public uint nFaceRollRight;                             // 需要检测的人脸向右（向左）歪头最大偏角,超过此角度不上报,单位度,0-90。
        public bool bTempOptimization;                          // 是否开启智能优选
        public bool bEyesWidthDetection;                        // 是否开启瞳距检测，通过瞳距可换算出目标距离
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016)]
        public byte[] byReserved; // 预留字段
    }

    // 车道信息
    public struct NET_CFG_LANE
    {
        public int nLaneId;                           // 车道编号
        public int nDirection;                        // 车道方向(车开往的方向),0-北 1-东北 2-东 3-东南 4-南 5-西南 6-西 7-西北
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stuLeftLine;     // 左车道线，车道线的方向表示车道方向，沿车道方向左边的称为左车道线
        public int nLeftLineNum;                      // 左车道线顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stuRightLine;  // 右车道线，车道线的方向表示车道方向，沿车道方向右边的称为右车道线
        public int nRightLineNum;                     // 右车道线顶点数
        public int nLeftLineType;                     // 左车道线属性，1-表示白实线，2- 白虚线，3- 黄线
        public int nRightLineType;                    // 右车道线属性，1-表示白实线，2- 白虚线，3- 黄线
        public bool bDriveDirectionEnable;             // 车道行驶方向使能
        public int nDriveDirectionNum;                     // 车道行驶方向数 
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 128)]
        public string szDriveDirection;                 // 车道行驶方向，"Straight" 直行，"TurnLeft" 左转，"TurnRight" 右转,"U-Turn":掉头
        public int nStopLineNum;                      // 车道对应停止线顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stuStopLine;  // 车道对应停止线
        public int nTrafficLightNumber;               // 车道对应的红绿灯组编号
        public byte abDetectLine;                      // 对应能力集
        public byte abPreLine;
        public byte abPostLine;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
        public byte[] byReserved;
        public int nDetectLine;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stuDetectLine;// 车道对应的检测线
        public int nPreLine;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stuPreLine; // 车道对应的前置线
        public int nPostLine;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stuPostLine;// 车道对应的后置线
        public NET_CFG_TRAFFIC_FLOWSTAT_DIR_INFO stuTrafficFlowDir;      // 车道流量信息
        public EM_LANE_RANK_TYPE emRankType;           // 道路等级，用于车流量统计上报交通状态
        public uint nRoadwayNumber;					   // 用户自定义车道号, 1-16
    }

    //车辆流量统计车道方向信息 
    public struct NET_CFG_TRAFFIC_FLOWSTAT_DIR_INFO
    {
        public NET_CFG_FLOWSTAT_DIRECTION emDrivingDir;   //行驶方向
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szUpGoing;                 //上行地点 
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDownGoing;               //下行地点 
    }

    // 服务类型
    public enum NET_CFG_FLOWSTAT_DIRECTION
    {
        APPROACH,                       //上行，即车辆离设备部署点越来越近
        LEAVE,                          //下行，即车辆离设备部署点越来越远
    }

    // 道路等级
    public enum EM_LANE_RANK_TYPE
    {
        UNKNOWN,           // 未知类型
        RAPID,             // 快速路
        TRUNK,             // 主干路
        SUBTRUNK,          // 次干路
        BRANCH,            // 支路
    }

    // 交通灯组配置信息 
    public struct NET_CFG_LIGHTGROUPS
    {
        public int nLightGroupId;                     // 灯组编号
        public NET_CFG_RECT stuLightLocation;                  // 灯组坐标
        public int nDirection;                        // 灯组的方向,1- 灯组水平向,2- 灯组垂直向
        public bool bExternalDetection;                // 是否为外接红绿灯信号,当外接红绿灯时，以外界信号为判断依据。外界信号每次跳变时通知
        public bool bSwingDetection;                   // 是否支持自适应灯组摇摆检测,在风吹或者容易震动的场景下，位置会进行一定的浮动偏差。如果由算法自行检测，会增加检测时间
        public int nLightNum;                         // 灯组中交通灯的数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CFG_LIGHTATTRIBUTE[] stuLightAtrributes;// 灯组中各交通灯的属性
    }

    // 交通灯属性
    public struct NET_CFG_LIGHTATTRIBUTE
    {
        public bool bEnable;                           // 当前交通灯是否有效，与车辆通行无关的交通需要设置无效
        public int nTypeNum;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 128)]
        public string szLightType;                // 当前交通灯显现内容（包括:红-Red,黄-Yellow,绿-Green,倒计时-Countdown），如某交通灯可以显示红黄绿三种颜色，某交通灯只显示倒计时
        public int nDirectionNum;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 128)]
        public string szDirection; // 交通灯指示的行车方向,"Straight": 直行，"TurnLeft":左转，"TurnRight":右转，"U-Turn": 掉头
        public int nYellowTime;                       // 黄灯亮时间
    }

    // 交通灯颜色校正配置
    public struct NET_CFG_ADJUST_LIGHT_COLOR
    {
        public int nMode;                                  // 红灯颜色校正模式 0:未定义 1:红绿灯才校正 2:一直校正
        public bool bEnable;                                // 是否允许图片红绿灯颜色校正
        public int nLevel;                                 // 校正等级 范围0~100，数值越大矫正越明显
        public bool bVideoEnable;                           // 是否启用视频涂红功能，存在此项时，Level值使用LevelSeparate下的Level值                                
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_ADJUST_LEVEL_SEP[] stLevelSep;// 分立等级，目前为4个
    }

    // 交通灯颜色校正配置，分立项
    public struct NET_ADJUST_LEVEL_SEP
    {
        public int nType;                                  // 0：未定义，1：视频，2：图片
        public int nTime;                                  // 0：未定义，1：白天，2：夜晚
        public int nLevel;                                 // 范围0~100，数值越大矫正越明显
    }

    public struct NET_CFG_PARKING_SPACE
    {
        public int nNumber;                // 车位编号
        public NET_CFG_REGION stArea;                 // 检测区域
        public int nShieldAreaNum;                              // 有效屏蔽区个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_CFG_REGION[] stShieldArea;        // 屏蔽区域
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCustomParkNo; // 自定义车位名称
        /// <summary>
        /// / 关联到的外设唯一标识
        /// / Unique identifier of the associated peripheral device
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 32)]
        public string szAssociateDevice;
        /// <summary>
        /// / 关联到的外设唯一标识个数
        /// / Number of unique identifiers associated with peripherals
        /// </summary>
        public int nAssociateDeviceNum;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    // 区域信息
    public struct NET_CFG_REGION
    {
        public int nPointNum;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuPolygon;
    }

    public struct NET_CFG_STAFF
    {
        public NET_CFG_POLYLINE stuStartLocation;      // 起始坐标点
        public NET_CFG_POLYLINE stuEndLocation;        // 终止坐标点
        public float nLenth;              // 实际长度,单位米
        public EM_STAFF_TYPE emType;                // 标尺类型
    }

    public enum EM_STAFF_TYPE
    {
        ERR,
        HORIZONTAL,     // "Horizontal" 水平线段
        VERTICAL,       // "Vertical" 垂直线段
        ANY,            // "Any" 任意线段
        CROSS,          // "Cross" 垂直面交线段
    }

    // 标定区域,普通场景使用
    public struct NET_CFG_CALIBRATEAREA_INFO
    {
        public int nLinePoint;                     // 水平方向标尺线顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuLine; // 水平方向标尺线
        public float fLenth;                       // 实际长度
        public NET_CFG_REGION stuArea;                         // 区域
        public int nStaffNum;                      // 垂直标尺数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_STAFF[] stuStaffs; // 垂直标尺         
        public EM_CALIBRATEAREA_TYPE emType;                           // 区域类型
        public EM_METHOD_TYPE emMethodType;                    // 标定方式
    }

    public enum EM_CALIBRATEAREA_TYPE
    {
        ERR,
        GROUD,                         // "Groud" : 地面，需要N条竖直线段+M条水平线段（（N=3，M=1）；（N=2，M=2）；今后扩展）。
        HORIZONTAL,                    // "Horizontal"  : 水平面，需要水平面上一点到地面点的投影垂直线段。		
        VERTICAL,                      // "Vertical" : 垂直面，需要垂直面与地面的交线。
        ANY,                           // "Any" 任意平面，N条竖直线段，及每条长度（N=3，及今后扩展）。
    }

    // 标定方式
    public enum EM_METHOD_TYPE
    {
        UNKNOWN,      // 未知方式
        SCENE,        // 景深标定
        LANE,         // 车道标定
        PLATE,        // 车牌标定
        STEREO,       // 双目标定
    }

    // 目标识别场景
    public struct NET_CFG_FACERECOGNITION_SCENCE_INFO
    {
        public double dbCameraHeight;                           // 摄像头离地高度 单位：米
        public double dbCameraDistance;                         // 摄像头离地面检测区域中心的水平距离 单位：米
        public int nMainDirection;                              // 人流主要方向顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuMainDirection;              // 人流主要方向，第一个点是起始点，第二个点是终止点
        public byte byFaceAngleDown;                            // 需要检测的人脸向下最大偏角, 单位度，-45~45，负数表示人脸向画面上边，正数表示人脸向画面下边，0表示人脸垂直方向上正对着摄像头。
        public byte byFaceAngleUp;                              // 需要检测的人脸向上最大偏角,单位度，-45~45，负数表示人脸向画面上边，正数表示人脸向画面下边，0表示人脸垂直方向上正对着摄像头。
        public byte byFaceAngleLeft;                            // 需要检测的人脸向左最大偏角,单位度，-45~45，负数表示人脸向画面左边，正数表示人脸向画面右边，0表示人脸水平方向上正对着摄像头
        public byte byFaceAngleRight;                           // 需要检测的人脸向右最大偏角,单位度，-45~45，负数表示人脸向画面左边，正数表示人脸向画面右边，0表示人脸水平方向上正对着摄像头
        public EM_FACEDETECTION_TYPE emDetectType;              // 目标检测类型
    }

    // 目标检测类型
    public enum EM_FACEDETECTION_TYPE
    {
        ERR,
        SMALLFACE,                        //小脸类型，人脸在视频中的比重大概17%
        LARGEFACE,                        //大脸类型，人脸在视频中的比重大概33%
        BOTH,                             //检测类型
    }


    // 目标检测场景
    public struct NET_CFG_FACEDETECTION_SCENCE_INFO
    {
        public double dbCameraHeight;                          // 摄像头离地高度 单位：米
        public double dbCameraDistance;                        // 摄像头离地面检测区域中心的水平距离 单位：米
        public int nMainDirection;                         // 人流主要方向顶点数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuMainDirection;    // 人流主要方向，第一个点是起始点，第二个点是终止点
        public byte byFaceAngleDown;                        // 需要检测的人脸向下最大偏角, 单位度，-45~45，负数表示人脸向画面上边，正数表示人脸向画面下边，0表示人脸垂直方向上正对着摄像头。
        public byte byFaceAngleUp;                          // 需要检测的人脸向上最大偏角,单位度，-45~45，负数表示人脸向画面上边，正数表示人脸向画面下边，0表示人脸垂直方向上正对着摄像头。
        public byte byFaceAngleLeft;                        // 需要检测的人脸向左最大偏角,单位度，-45~45，负数表示人脸向画面左边，正数表示人脸向画面右边，0表示人脸水平方向上正对着摄像头
        public byte byFaceAngleRight;                       // 需要检测的人脸向右最大偏角,单位度，-45~45，负数表示人脸向画面左边，正数表示人脸向画面右边，0表示人脸水平方向上正对着摄像头
        public EM_FACEDETECTION_TYPE emDetectType;                     // 目标检测类型
    }

    public struct NET_CFG_TIME_PERIOD
    {
        public NET_CFG_TIME stuStartTime;
        public NET_CFG_TIME stuEndTime;
    }

    public struct NET_CFG_TIME
    {
        public uint dwHour;               // 时
        public uint dwMinute;             // 分
        public uint dwSecond;             // 秒
    }

    // 多场景标定白天和黑夜配置基本单元
    public struct NET_CFG_TIME_PERIOD_SCENE_UNIT
    {
        public NET_CFG_TIME_PERIOD stuDayTimePeriod;                                   // 标定白天的时间段.(8,20),表示从8点到晚上20点为白天
        public NET_CFG_TIME_PERIOD stuNightTimePeriod;                                 // 标定黑夜的时间段.(20,7)，表示从晚8点到凌晨7点为黑夜
        public EM_CFG_TIMEPERIOD_SWITCH_MODE emSwitchMode;                                    // 昼夜算法切换模式，详见EM_CFG_TIMEPERIOD_SWITCH_MODE
        public uint unLongitude;                                       // 经度 单位百万分之一度
        public uint unLatitude;                                            // 纬度 单位百万分之一度
    }

    // 多场景标定白天和黑夜配置
    public struct NET_CFG_TIME_PERIOD_SCENE_INFO
    {
        public uint dwMaxTimePeriodSceneNum;                    // 多场景标定白天和黑夜配置最大个数(需要申请此大小内存)
        public uint dwRetTimePeriodSceneNum;                    // 实际包含多场景标定白天和黑夜配置个数
        public IntPtr pstuTimePeriodScene;                       // 多场景标白天和黑夜配置域单元,由用户申请内存，大小为sizeof(CFG_TIME_PERIOD_SCENE_UNIT)*dwMaxTimePeriodSceneNum
    }

    // 昼夜算法切换模式
    public enum EM_CFG_TIMEPERIOD_SWITCH_MODE
    {
        UNKNOWN,                                     // 未知
        BYCOLOR,                                     // 通过色彩切换                     
        BYBRIGHTNESS,                                // 通过亮度切换
        BYPOS,                                       // 通过经纬度计算日出日落时间切换
    }

    // 多场景标定区域配置基本单元
    public struct NET_CFG_CALIBRATEAREA_SCENE_UNIT
    {
        public uint nCalibrateAreaNum;                                // 此场景内标定区域数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEAREA_INFO[] stuCalibrateArea;   // 标定区域(若该字段不存在，则以整幅场景为标定区域)
    }

    // 多场景标定区域配置
    public struct NET_CFG_CALIBRATEAREA_SCENE_INFO
    {
        public uint dwMaxSceneCalibrateAreaNum;                 // 多场景标定区域最大个数(需要申请此大小内存)
        public uint dwRetSceneCalibrateAreaNum;                 // 实际包含多场景标定区域个数
        public IntPtr pstuCalibrateArea;                         // 多场景标定区域单元
    }

    // 视频分析全局配置场景
    public struct NET_CFG_ANALYSEGLOBAL_SCENE
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSceneType; // 应用场景,详见"支持的场景列表"

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 176861)]
        public byte[] szScene; // 应用场景,详见"支持的场景列表"

        //   // 以下为场景具体信息, 根据szSceneType决定哪个场景有效
        //   union
        //   {
        //       CFG_FACEDETECTION_SCENCE_INFO stuFaceDetectionScene;  // 目标检测场景/目标识别检查
        //       CFG_TRAFFIC_SCENE_INFO stuTrafficScene;         // 交通场景
        //       CFG_NORMAL_SCENE_INFO stuNormalScene;           // 普通场景/远景场景/中景场景/近景场景/室内场景/人数统计场景
        //       CFG_TRAFFIC_TOUR_SCENE_INFO stuTrafficTourScene;// 交通巡视场景
        //       CFG_CROWD_SCENE_INFO stuCrowdScene;             // 人群态势和人群密度场景
        //   };

        public EM_DEPTH_TYPE emDepthType;                    // 画面景深
        public int nPtzPresetId;                             // 云台预置点编号，0~255
                                                             // 以下是有多个大类业务的情况
        public int nSceneListCount;                          // 实际场景个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public SCENE_TYPE_LIST_ARRAY[] sceneTypeList;                       // 场景列别，同一视频通道下启用多个场景时，表示第2个之后的方案
                                                                            // 多个大类业务时有效
        public NET_CFG_INTELLI_UNIFORM_SCENE stuUniformScene;               // 统一场景配置

        public bool bSceneTypeListEx;                        // szSceneTypeListEx 是否有效，当为TRUE时，使用szSceneTypeListEx
        public int nSceneListCountEx;						 // 实际场景个数扩展，szSceneTypeListEx 的有效个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public SCENE_TYPE_LIST_EX_ARRAY[] szSceneTypeListEx;  // 场景列表扩展，szSceneTypeList 的扩展字段

        public IntPtr pstuDetectRegionsInfo;                 // 规则相关检测区域信息，结构体NET_CFG_DETECT_REGIONS_INFO
        public int nMaxDetectRegions;                      // 最大规则相关检测区域个数,内存由客户申请
        public int nDetectRegionsNum;						// 规则相关检测区域信息个数
    }

    public struct SCENE_TYPE_LIST_ARRAY
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string sceneTypeList;
    }

    public struct SCENE_TYPE_LIST_EX_ARRAY
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string sceneTypeListEx;				// 场景列表扩展，szSceneTypeList 的扩展字段
    }

    // 画面景深类型
    public enum EM_DEPTH_TYPE
    {
        UNKNOWN,       //unknown
        NORMAL,        // "Normal" 未知
        FAR,           // "Far" 远景
        MIDDLE,        // "Middle" 中景
        NEAR            // "Near" 近景
    }


    // 统一场景配置,TypeList存在时配置此场景
    public struct NET_CFG_INTELLI_UNIFORM_SCENE
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSubType;// 交通场景的子类型,"Gate" 卡口类型,"Junction" 路口类型 
                                // "Tunnel"隧道类型 , "ParkingSpace"车位检测类型
                                // "Bridge"桥梁类型
                                // "Freeway"高速公路类型                 
        public int nPlateHintNum;                          // 车牌字符暗示个数
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 128)]
        public string szPlateHints;// 车牌字符暗示数组，在拍摄图片质量较差车牌识别不确定时，根据此数组中的字符进行匹配，数组下标越小，匹配优先级越高
        public int nLaneNum;                               // 车道数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CFG_LANE[] stuLanes;// 车道信息
    }

    // 交通车辆部分信息
    public struct NET_EVENT_TRAFFIC_CAR_PART_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szMachineName;                            // 本地或远程设备名称    来源于普通配置General.MachineName    
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRoadwayNo;                              // 道路编号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateNumber;                            // 车牌号码
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCategory;                               // 车辆子类型
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 288)]
        public byte[] bReserved;                                // 保留字节
    }

    //事件类型 EVENT_IVS_TRAFFIC_THROW(交通抛洒物品事件)对应数据块描述信息
    public struct NET_DEV_EVENT_TRAFFIC_THROW_INFO
    {
        public int nChannelID;                                 // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;// 事件名称
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] bReserved1;  // 字节对齐
        public uint PTS;                                        // 时间戳(单位是毫秒)
        public NET_TIME_EX UTC;                                        // 事件发生的时间
        public int nEventID;                                   // 事件ID
        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
        public uint dwSnapFlagMask;                             // 抓图标志(按位),0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout" 
        public byte bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved2;
        public byte byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        public int nLane;                                      // 对应车道号
        public NET_MSG_OBJECT stuObject;                                  // 检测到的物体
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;                 // 智能事件公共信息
        public NET_EVENT_TRAFFIC_CAR_PART_INFO stuTrafficCarPartInfo;            // 交通车辆部分信息
        public NET_GPS_INFO stuGPSInfo;                                 // GPS信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 340)]
        public byte[] bReserved;                     // 保留字节
        public NET_EVENT_COMM_INFO stCommInfo;                                 // 公共信息

    }

    // 智能交通灯光配置
    public struct NET_CFG_CONSTANT_LAMP_INFO
    {
        public uint nTrafficLampNum;    // 智能交通灯光配置个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_TRAFFIC_CONSTATE_LAMP_CONFIG[] stuTrafficLamp;  // 灯光的配置数组
    }

    // 交通灯光配置
    public struct NET_TRAFFIC_CONSTATE_LAMP_CONFIG
    {
        public uint nLightMask;                 // 灯控掩码,某些灯上有6个灯泡,可设置部分灯亮，按位表示。1表示亮，0表示灭
        public uint nBrightness;                // 常亮灯亮度[0,100]
        public uint nPreValue;                  // 亮度预设值, 环境亮度低于此值，常亮灯开始工作
        public EM_LAMP_WORK_MODE emLampMode;                   // 灯光工作模式
        public EM_LAMP_AUTO_TYPE emAutoMode;                 // 自动模式下的工作类型
        public NET_CFG_TIME_SCHEDULE stuTimeSchedule;			// 时间段配置
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;// 保留字节
    }

    // 灯光工作模式
    public enum EM_LAMP_WORK_MODE
    {
        UNKNOWN = -1,       // 未知
        NO_FLASH,           // 静止闪光
        ALWAYS_FLASH,       // 始终闪光
        AUTO_FLASH,         // 自动闪光
    }

    // 灯光自动模式
    public enum EM_LAMP_AUTO_TYPE
    {
        UNKNOWN,            // 未知
        TIMEING,            // 按时间控制开关
        ALWAYS_BRIGHTNESS,  // 按亮度
        SPACE_STATE,        // 车辆刚驶入时设备亮灯，一定时间后关闭。时间值由程序调试取最优值，暂不开放。
        ICRCUT,             // 亮灯绑定在ICR切换上，根据ICR状态开关
    }

    /// <summary>
    /// 设置云台方向 DH_EXTPTZ_BASE_MOVE_ABSOLUTELY
    /// Move absolulety, Corresponding to DH_EXTPTZ_BASE_MOVE_ABSOLUTELY
    /// </summary>
    public struct NET_IN_PTZBASE_MOVEABSOLUTELY_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 1表示显示倍率; 2保留，内部用; 3表示映射倍率值；如为0则默认映射倍率值
        /// 1 according to ratio, 2 Reserved, 3 Mapping radio; 0 default Mapping radio
        /// </summary>
        public int nZoomFlag;
        /// <summary>
        /// 云台绝对移动位置云台绝对定位参数,扩大10倍,云台水平坐标(0~3600),云台垂直坐标(-1800~1800)
        /// 倍率值，范围：nZoomFlag为1时(0~最大显示倍率*10)，nZoomFlag为3时(0~16384)
        /// Ptz absolutely position，Horizontal angle(0~3600)，Vertical angle(-1800~1800)
        /// Multiplier value, range: nZoomFlag at 1 o'clock (0 to maximum display magnity x 10), nZoomFlag at 3 o'clock (0 to 16384)
        /// </summary>
        public NET_PTZSPACE_UNNORMALIZED stuPosition;
        /// <summary>
        /// 若无speed则表示默认速度运动 P，T，以0.01度/秒为单位，扩大100倍显示，范围与PtzSpeedLevel中的范围保持一致[0，100000]，
        /// 水平和垂直分别最大不会超过PtzSpeedLevel中最大档位水平和垂直的最大值，zoom变倍速度为0~100
        /// If there is no speed, it means the default speed movement P, T, with 0.01 degree/second as the unit,
        /// enlarged by 100 times, the range is consistent with the range in PtzSpeedLevel [0, 100000],
        /// the maximum horizontal and vertical respectively will not exceed the maximum in PtzSpeedLevel
        /// The maximum value of the horizontal and vertical gears, the zoom speed is 0~100.
        /// </summary>
        public NET_PTZSPACE_UNNORMALIZED stuSpeed;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 448)]
        public byte[] byReserved;
    }

    // 云台连续运动参数 对应 DH_EXTPTZ_BASE_MOVE_CONTINUOUSLY 枚举
    public struct NET_IN_PTZBASE_MOVECONTINUOUSLY_INFO
    {
        public uint dwSize;			// 结构体大小
        public int nSpeedX;			// 水平移动速度,(nSpeedX*0.01)度/秒, 取值[-10000, 10000],左为负,右为正
        public int nSpeedY;         // 垂直移动速度,(nSpeedY*0.01)度/秒, 范围[-10000, 10000],下为负,上为正
        public int nZoom;               // 倍率,范围 [-100, 100],负数表示缩小
        public int nMoveTime;			// 运动时间,单位秒
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;	    // 预留字段
    }

    // 支持的云台精确定位方式类型
    public struct NET_CFG_PTZ_ACTION_CAPS
    // 支持的云台动作类型
    {
        public bool bSupportPan;                   // 是否支持水平移动
        public bool bSupportTile;                  // 是否支持垂直移动
        public bool bSupportZoom;                  // 是否支持变倍
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 116)]
        public byte[] byReserved;               // 预留
    }

    // 连续移动方式类型
    public struct NET_CFG_PTZ_CONTINUOUSLY_TYPE
    {
        public bool bSupportNormal;            // 是否支持归一化值定位
        public bool bSupportExtra;         // 是否支持非归一化值定位
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 120)]
        public byte[] byReserved;       // 预留
    }

    // 云台连续运动能力
    public struct NET_CFG_PTZ_MOVE_CONTINUOUSLY_CAPS
    {
        public NET_CFG_PTZ_ACTION_CAPS stuPTZ;                 // 支持的PTZ动作
        public NET_CFG_PTZ_CONTINUOUSLY_TYPE stuType;              // 连续移动方式类型
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;      // 预留
    }

    // 云台不支持的转动方向
    public enum EM_PTZ_UNSUPPORT_DIRECTION
    {
        UNKNOWN,         // 未知
        UP,              // 上
        DOWN,            // 下
        LEFT,            // 左
        RIGHT,           // 右
        LEFTUP,          // 左上
        RIGHTUP,         // 右上
        LEFTDOWN,        // 左下
        RIGHTDOWN,       // 右下
    }

    /// <summary>
    /// 风扇能力
    /// Fan capability
    /// </summary>
    public struct NET_CFG_PTZ_FAN_CAPS
    {
        /// <summary>
        /// / 是否支持风扇控制
        /// / Does it support fan control
        /// </summary>
        public bool bSupport;
        /// <summary>
        /// / 是否支持除雾
        /// / Does it support defogging
        /// </summary>
        public bool bClearFogSupport;
        /// <summary>
        /// / 是否支持风扇电源管理
        /// / Does it support fan power management
        /// </summary>
        public bool bFanPowerSupport;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 视窗加热器能力
    /// Fan capability
    /// </summary>
    public struct NET_CFG_WINDOW_HEATER_CAPS
    {
        /// <summary>
        /// / 是否支持视窗加热
        /// / Does it support window heating
        /// </summary>
        public bool bSupport;
        /// <summary>
        /// / 手动开启时间范围，[最小时间，最大时间]，单位分钟
        /// / Manually open time range, [minimum time, maximum time], in minutes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] nManualControlPeriod;
        /// <summary>
        /// / 手动默认开启时间，不同的设备默认值不同，需要同热设计确认，单位分钟
        /// / Manual default activation time, different devices have different default values, which need to be confirmed by the same thermal design, in minutes
        /// </summary>
        public int nManualDefaultPeriod;
        /// <summary>
        /// / 是否与补光灯功能互斥
        /// / Is it mutually exclusive with the fill light function
        /// </summary>
        public bool bIsOpposeLight;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }


	/// <summary>
    /// PtzHeater capability
    /// </summary>
    public struct NET_A_CFG_PTZ_HEATER
    {
        /// <summary>
        /// / Does it support heater control
        /// </summary>
        public bool bSupport;
        /// <summary>
        /// / Does it support automatic shutdown control
        /// </summary>
        public bool bSupportAutoClose;
        /// <summary>
        /// / Number of supported heater types
        /// </summary>
        public int nSupportTypesNum;
        /// <summary>
        /// / Supported heater types: "Total": whole machine heating, "Thermal": thermal imaging lens heater, "Visual": visible light lens heater, "Demisting": defogging and deicing heater, "Ptz": pan tilt heater, "Shield": shield heater
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 32)]
        public string szSupportTypes;
        /// <summary>
        /// / Number of heater modes
        /// </summary>
        public int nModeNum;
        /// <summary>
        /// / Heater mode: "Close": off, "Auto": automatic, "Manual": manual, "Time": "timed"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 32)]
        public string szMode;
        /// <summary>
        /// / Does it support manual control
        /// </summary>
        public bool bSupportManualControl;
        /// <summary>
        /// / Manual control of operating time range [minimum time, maximum time] unit/minute
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] nManualControlPeriod;
        /// <summary>
        /// / Open the heater temperature range [minimum temperature, maximum temperature], unit: 0.1 degrees Celsius
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] nHeaterTempLowRange;
        /// <summary>
        /// / Turn off the temperature range of the heater [minimum temperature, maximum temperature], unit: 0.1 degrees Celsius
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] nHeaterTempHighRange;
        /// <summary>
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    // 获取云台能力集信息
    public struct NET_CFG_PTZ_PROTOCOL_CAPS_INFO
    {
        public int nStructSize;
        public bool bPan;                       // 是否支持云台水平摆动
        public bool bTile;                      // 是否支持云台垂直摆动
        public bool bZoom;                      // 是否支持云台变倍
        public bool bIris;                      // 是否支持云台光圈调节
        public bool bPreset;                    // 是否支持预置点
        public bool bRemovePreset;              // 是否支持清除预置点
        public bool bTour;                      // 是否支持自动巡航线路
        public bool bRemoveTour;                // 是否支持清除巡航
        public bool bPattern;                   // 是否支持轨迹线路
        public bool bAutoPan;                   // 是否支持自动水平摆动
        public bool bAutoScan;                  // 是否支持自动扫描
        public bool bAux;                       // 是否支持辅助功能
        public bool bAlarm;                     // 是否支持报警功能
        public bool bLight;                     // 是否支持灯光, 内容见下面"stuPtzLightingControl"，该字段已废除使用
        public bool bWiper;                     // 是否支持雨刷
        public bool bFlip;                      // 是否支持镜头翻转
        public bool bMenu;                      // 是否支持云台内置菜单
        public bool bMoveRelatively;            // 是否支持云台按相对坐标定位
        public bool bMoveAbsolutely;            // 是否支持云台按绝对坐标定位
        public bool bMoveDirectly;              // 是否支持云台按三维坐标定位
        public bool bReset;                     // 是否支持云台复位
        public bool bGetStatus;                 // 是否支持获取云台运动状态及方位坐标
        public bool bSupportLimit;              // 是否支持限位
        public bool bPtzDevice;                 // 是否支持云台设备
        public bool bIsSupportViewRange;        // 是否支持云台可视域

        public ushort wCamAddrMin;              // 通道地址的最小值
        public ushort wCamAddrMax;              // 通道地址的最大值
        public ushort wMonAddrMin;              // 预览地址的最小值
        public ushort wMonAddrMax;              // 预览地址的最大值
        public ushort wPresetMin;                   // 预置点的最小值
        public ushort wPresetMax;                   // 预置点的最大值
        public ushort wTourMin;                 // 自动巡航线路的最小值
        public ushort wTourMax;                 // 自动巡航线路的最大值
        public ushort wPatternMin;              // 轨迹线路的最小值
        public ushort wPatternMax;              // 轨迹线路的最大值
        public ushort wTileSpeedMin;                // 垂直速度的最小值
        public ushort wTileSpeedMax;                // 垂直速度的最大值
        public ushort wPanSpeedMin;             // 水平速度的最小值
        public ushort wPanSpeedMax;             // 水平速度的最大值
        public ushort wAutoScanMin;             // 自动扫描的最小值
        public ushort wAutoScanMax;             // 自动扫描的最大值
        public ushort wAuxMin;                  // 辅助功能的最小值
        public ushort wAuxMax;                  // 辅助功能的最大值

        public uint dwInterval;                 // 发送命令的时间间隔
        public uint dwType;                     // 协议的类型，0-本地云台，1-远程云台
        public uint dwAlarmLen;                 // 协议的报警长度
        public uint dwNearLightNumber;          // 近光灯组数量,0~4,为0时表示不支持
        public uint dwFarLightNumber;           // 远光灯组数量,0~4,为0时表示不支持

        public uint dwSupportViewRangeType;     // 支持的可视域数据获取方式掩码,从低位到高位依次数,目前支持
                                                // 第1位:为1表示支持"ElectronicCompass" 电子罗盘方式
        public uint dwSupportFocusMode;         // 支持的支持的焦距模式掩码,从低位到高位依次数,见#EM_SUPPORT_FOCUS_MODE

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = SDK_CONST_NUM.MAX_PROTOCOL_NAME_LEN)]
        public string szName;                    // 操作的协议名

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = SDK_CONST_NUM.NET_CFG_COMMON_STRING_32)]
        public PTZ_PROTOCOL_CAPS_AUX[] szAuxs;                      // 云台辅助功能名称列表

        public NET_CFG_PTZ_MOTION_RANGE stuPtzMotionRange;                // 云台转动角度范围，单位：度
        public NET_CFG_PTZ_LIGHTING_CONTROL stuPtzLightingControl;        // 灯光控制内容，该字段已废除使用
        public bool bSupportPresetTimeSection;	                // 是否支持预置点时间段配置的功能
        public bool bFocus;                                     // 是否支持云台变焦
        public NET_CFG_PTZ_AREA_SCAN stuPtzAreaScan;                // 区域扫描能力集
        public NET_CFG_PTZ_PRIVACY_MASKING stuPtzPrivacyMasking;        // 隐私遮挡能力集
        public NET_CFG_PTZ_MEASURE_DISTANCE stuPtzMeasureDistance;	    // 图像测距能力集
        public bool bSupportPtzPatternOSD;		// 是否支持云台巡迹OSD叠加
        public bool bSupportPtzRS485DetectOSD;	// 是否支持云台RS485检测OSD叠加
        public bool bSupportPTZCoordinates;		// 是否支持云台坐标叠加
        public bool bSupportPTZZoom;			// 是否支持云台变倍叠加
        public bool bDirectionDisplay;			// 是否支持云台方向状态显示
        public uint dwZoomMax;					// 变倍最大值
        public uint dwZoomMin;                  // 变倍最小值
        public NET_CFG_PTZ_MOVE_ABSOLUTELY_CAP stuMoveAbsolutely;      // 绝对控制云台能力，bMoveAbsolutely==TRUE 时有效

        public bool bMoveContinuously;     // stuMoveContinuously 字段是否有效
        public NET_CFG_PTZ_MOVE_CONTINUOUSLY_CAPS stuMoveContinuously; // 云台连续运动能力
        public int nUnSupportDirections;       // 云台不支持的转动方向个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public EM_PTZ_UNSUPPORT_DIRECTION[] emUnSupportDirections;	// 云台不支持的转动方向
        /// <summary>
        /// 是否支持电子云台联动
        /// Whether to support electronic PTZ linkage
        /// </summary>
        public bool bSupportEptzLink;
        /// <summary>
        /// / 风扇能力
        /// / Fan capability
        /// </summary>
        public NET_CFG_PTZ_FAN_CAPS stuPtzFan;
        /// <summary>
        /// / 视窗加热器能力
        /// / Window heater capability
        /// </summary>
        public NET_CFG_WINDOW_HEATER_CAPS stuWindowHeater;
		/// <summary>
        /// / PtzHeater capability
        /// </summary>
        public NET_A_CFG_PTZ_HEATER stuPtzHeater;
    }

    // 云台辅助功能名称
    public struct PTZ_PROTOCOL_CAPS_AUX
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = SDK_CONST_NUM.NET_CFG_COMMON_STRING_32)]
        public string szAux;
    }

    // 云台转动角度范围，单位：度
    public struct NET_CFG_PTZ_MOTION_RANGE
    {
        public int nHorizontalAngleMin;        // 水平角度范围最小值,单位:度
        public int nHorizontalAngleMax;        // 水平角度范围最大值,单位:度
        public int nVerticalAngleMin;          // 垂直角度范围最小值,单位:度
        public int nVerticalAngleMax;          // 垂直角度范围最大值,单位:度
    }

    // 云台转动角度范围，单位：度
    public struct NET_CFG_PTZ_LIGHTING_CONTROL
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = SDK_CONST_NUM.NET_CFG_COMMON_STRING_32)]
        public string szMode;  // 手动灯光控制模式
                               // on-off"：直接开关模式,
                               // "adjustLight"：手动调节亮度模式

        public uint dwNearLightNumber;             // 近光灯组数量
        public uint dwFarLightNumber;              // 远光灯组数量
    }

    // 云台-区域扫描能力集
    public struct NET_CFG_PTZ_AREA_SCAN
    {
        public bool bIsSupportAutoAreaScan;     // 是否支持区域扫描	
        public ushort wScanNum;		    		  // 区域扫描的个数
    }

    // 隐私遮挡能力集
    public struct NET_CFG_PTZ_PRIVACY_MASKING
    {
        public bool bPrivacyMasking;                    // 是否支持隐私遮挡设置
        public bool bSetColorSupport;                   // 是否支持遮挡块颜色设置

        public bool abMaskType;                         // emMaskType是否有效
        public int nMaskTypeCount;						// 实际支持的遮挡块形状个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = SDK_CONST_NUM.MAX_MASKTYPE_COUNT)]
        public NET_EM_MASK_TYPE[] emMaskTypes;                  // 支持的遮挡块形状，没有该项配置时默认支持矩形

        public bool bSetMosaicSupport;                  // 是否支持马赛克遮挡块设置
        public bool bSetColorIndependent;               // 是否支持遮挡块颜色相互独立(bSetColorSupport为true时该能力有效)

        public bool abMosaicType;                       // emMosaicType是否有效
        public int nMosaicTypeCount;					// 实际支持的马赛克类型个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = SDK_CONST_NUM.MAX_MOSAICTYPE_COUNT)]
        public NET_EM_MOSAIC_TYPE[] emMosaicType;	// 支持的马赛克类型(SetMosaicSupport为true时该能力有效，没有该项配置时默认支持24x24大小马赛克)
    }

    // 遮挡块形状类型
    public enum NET_EM_MASK_TYPE
    {
        NET_EM_MASK_UNKNOWN,            // 未知
        NET_EM_MASK_RECT,               // 矩形
        NET_EM_MASK_POLYGON,			// 多边形
    }

    // 马赛克类型
    public enum NET_EM_MOSAIC_TYPE
    {
        NET_EM_MOSAIC_UNKNOWN = 0,              // 未知
        NET_EM_MOSAIC_8 = 8,                // [8x8大小] 马赛克
        NET_EM_MOSAIC_16 = 16,              // [16x16大小] 马赛克
        NET_EM_MOSAIC_24 = 24,              // [24x24大小] 马赛克
        NET_EM_MOSAIC_32 = 32,				// [32x32大小] 马赛克
    }

    // 图像测距能力
    public struct NET_CFG_PTZ_MEASURE_DISTANCE
    {
        public bool bSupport;							// 是否支持图像测距
        public bool bOsdEnable;                         // 是否将图像测距结果数据叠加至码流
        public int nDisplayMin;                     // 图像测距信息的最小显示时长, 单位秒
        public int nDisplayMax;						// 图像测距信息的最大显示时长, 单位秒
    }

    // 绝对控制云台能力
    public struct NET_CFG_PTZ_MOVE_ABSOLUTELY_CAP
    {
        public NET_CFG_PTZ_ACTION_CAPS stuPTZ;			    // 支持的云台动作类型
        public NET_CFG_PTZ_ABSOLUTELY_CAPS stuType;				// 支持的云台精确定位方式类型
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 768)]
        public byte[] byReserved;		                         // 预留
    }

    // 支持的云台精确定位方式类型
    public struct NET_CFG_PTZ_ABSOLUTELY_CAPS
    {
        public bool bSupportNormal;                 // 是否支持归一化定位
        public bool bSupportReal;					// 是否支持实际参数值定位
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 120)]
        public byte[] byReserved;				        // 预留
    }

    // 设置水平旋转边界值 输入参数
    public struct NET_IN_PAN_GROUP_LIMIT_INFO
    {
        public uint dwSize;									                        // 结构体大小
        public int nChannelID;								                        // 正确通道号，范围 0~设备通道数
        public uint nIndex;                                                         // 旋转组内序号从1开始
        public NET_EM_PAN_GROUP_LIMIT_MODE emPanGroupLimitMode;					// 水平旋转组限界类型							 		 							 
    }

    // 水平旋转组边界模式
    public enum NET_EM_PAN_GROUP_LIMIT_MODE
    {
        NET_EM_PAN_GROUP_LIMIT_MODE_LEFT = 1,               // 左边界
        NET_EM_PAN_GROUP_LIMIT_MODE_RIGHT,                  // 右边界
        NET_EM_PAN_GROUP_LIMIT_MODE_UP,                     // 上边界
        NET_EM_PAN_GROUP_LIMIT_MODE_DOWN,					// 下边界
    }

    // 设置水平旋转边界值 输出参数
    public struct NET_OUT_PAN_GROUP_LIMIT_INFO
    {
        public uint dwSize;
    }

    // 云台水平旋转组扫描配置 NET_EM_CFG_PTZ_HORIZONTAL_ROTATION_SCAN
    public struct NET_CFG_HORIZONTAL_ROTATION_GROUP_SCAN_INFO
    {
        public uint dwSize;                                                                     // 结构体大小								
        public NET_CFG_HORIZONTAL_ROTATION_LIMIT_INFO stuHorizontalRotationInfo;				// 云台水平旋转组限制信息
    }

    // 云台水平旋转组限制信息
    public struct NET_CFG_HORIZONTAL_ROTATION_LIMIT_INFO
    {
        public bool bLimitEnable;                           // 限制使能
        public int nLimitMode;						        // 限制模式 0:左右 1：上下
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;				                // 保留字节
    }

    // CLIENT_PTZSetPanGroup入参数结构体
    public struct NET_IN_SET_PAN_GROUP_PARAM
    {
        public uint dwSize;									// 结构体大小
        public int nChannel;								// 通道号
        public uint nIndex;									// 旋转组内元素序号从1开始
        public NET_PAN_GROUP_INFO stuPanGroupInfo;			// 水平旋转组信息
    }

    // 云台水平旋转组信息
    public struct NET_PAN_GROUP_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;                       // 水平旋转组名称
        public uint nSpeed;                     // 水平旋转速度0~7
        public bool bEnable;                    // 使能
        public uint nInterval;                  // 停留时间,单位:秒
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] byReserved;					// 保留字节
    }

    // CLIENT_PTZSetPanGroup出参数结构体
    public struct NET_OUT_SET_PAN_GROUP_PARAM
    {
        public uint dwSize;									// 结构体大小
    }

    // CLIENT_PTZGetPanGroup入参结构体
    public struct NET_IN_GET_PAN_GROUP_PARAM
    {
        public uint dwSize;									// 结构体大小
        public int nChannel;								// 通道号
    }

    // CLIENT_PTZGetPanGroup出参结构体
    public struct NET_OUT_GET_PAN_GROUP_PARAM
    {
        public uint dwSize;                                 // 结构体大小
        public int nRetNum;								// 实际返回个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_PAN_GROUP_INFO[] stuPanGroupInfo;						// 水平旋转组信息
    }

    /////////////////////// 人脸开门信息下发 ///////////////////////
    //////////////////////////////////////////////////////////////

    /// <summary>
    /// 人脸开门输入参数
    /// </summary>
    public struct NET_IN_FACE_OPEN_DOOR
    {
        /// <summary>
        /// 结构体大小 必填
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 门通道号
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// 比对结果
        /// </summary>
        public EM_COMPARE_RESULT emCompareResult;
        /// <summary>
        /// 匹配信息
        /// </summary>
        public NET_OPENDOOR_MATCHINFO stuMatchInfo;
        /// <summary>
        /// 图片信息
        /// </summary>
        public NET_OPENDOOR_IMAGEINFO stuImageInfo;
    }

    /// <summary>
    /// 比对结果 枚举
    /// </summary>
    public enum EM_COMPARE_RESULT
    {
        /// <summary>
        /// 未知
        /// </summary>
        EM_COMPARE_RESULT_UNKNOWN = -1,
        /// <summary>
        /// 成功
        /// </summary>
	    EM_COMPARE_RESULT_SUCCESS,
        /// <summary>
        /// 其他错误
        /// </summary>
	    EM_COMPARE_RESULT_OTHERERROR,
        /// <summary>
        /// 不在人脸库中
        /// </summary>
	    EM_COMPARE_RESULT_NOTINDATABASE,
        /// <summary>
        /// 超过单日进门次数限制
        /// </summary>
	    EM_COMPARE_RESULT_EXCEED_SINGLE_DAY_ENTER_TIMES,
        /// <summary>
        /// 无进门记录，离开失败
        /// </summary>
	    EM_COMPARE_RESULT_NO_ENTER_RECORD_LEAVE_FAIL,
        /// <summary>
        /// 区域人员已满
        /// </summary>
	    EM_COMPARE_RESULT_AREA_FULL,
        /// <summary>
        /// 防反潜验证失败(没有正常出门记录再次进门)
        /// </summary>
	    EM_COMPARE_RESULT_REPEATENTER_CHECK_FAIL
    }

    /// <summary>
    /// 酒精状态
    /// alcohol state
    /// </summary>
    public enum EM_ALCOHOL_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ALCOHOL_STATE_UNKNOWN,
        /// <summary>
        /// 正常
        /// normal
        /// </summary>
        EM_ALCOHOL_STATE_NORMAL,
        /// <summary>
        /// 饮酒
        /// drink
        /// </summary>
        EM_ALCOHOL_STATE_DRINK,
    }

    /// <summary>
    /// 车修理状态
    /// bus repair state
    /// </summary>
    public enum EM_BUS_REPAIR_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_BUS_REPAIR_STATE_UNKNOWN,
        /// <summary>
        /// 未修理
        /// not repair
        /// </summary>
        EM_BUS_REPAIR_STATE_NOT_REPAIR,
        /// <summary>
        /// 修理中
        /// repairing
        /// </summary>
        EM_BUS_REPAIR_STATE_REPAIRING,
    }

    /// <summary>
    /// 车加油状态
    /// bus oil state
    /// </summary>
    public enum EM_BUS_OIL_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_BUS_OIL_STATE_UNKNOWN,
        /// <summary>
        /// 已加油
        /// refueled
        /// </summary>
        EM_BUS_OIL_STATE_REFUELED,
        /// <summary>
        /// 未加油
        /// not refuel
        /// </summary>
        EM_BUS_OIL_STATE_NOT_REFUEL,
    }

    /// <summary>
    /// 洗车状态
    /// bus wash state
    /// </summary>
    public enum EM_BUS_WASH_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_BUS_WASH_STATE_UNKNOWN,
        /// <summary>
        /// 已洗车
        /// washed
        /// </summary>
        EM_BUS_WASH_STATE_WASHED,
        /// <summary>
        /// 未洗车
        /// not wash
        /// </summary>
        EM_BUS_WASH_STATE_NOT_WASH,
    }

    /// <summary>
    /// 收银状态
    /// bus cash state
    /// </summary>
    public enum EM_BUS_CASH_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_BUS_CASH_STATE_UNKNOWN,
        /// <summary>
        /// 已收银
        /// cash collected
        /// </summary>
        EM_BUS_CASH_STATE_COLLECTED,
        /// <summary>
        /// 未收银
        /// cash not collect
        /// </summary>
        EM_BUS_CASH_STATE_UNCOLLECT,
    }

    /// <summary>
    /// 排班状态
    /// schedule state
    /// </summary>
    public enum EM_SCHEDULE_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_SCHEDULE_STATE_UNKNOWN,
        /// <summary>
        /// 已排班
        /// schedule
        /// </summary>
        EM_SCHEDULE_STATE_SCHEDULED,
        /// <summary>
        /// 未排班
        /// not schedule
        /// </summary>
        EM_SCHEDULE_STATE_NOT_SCHEDULE,
    }


    /// <summary>
    /// 公交站信息
    /// bus station info
    /// </summary>
    public struct NET_BUS_STATION_INFO
    {
        /// <summary>
        /// 车号
        /// bus no
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szBusNo;
        /// <summary>
        /// 泊位
        /// park position
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szParkPosition;
        /// <summary>
        /// 酒精状态
        /// alcohol state
        /// </summary>
        public EM_ALCOHOL_STATE emAlcoholState;
        /// <summary>
        /// 修理状态
        /// repair state
        /// </summary>
        public EM_BUS_REPAIR_STATE emRepairState;
        /// <summary>
        /// 加油状态
        /// oil state
        /// </summary>
        public EM_BUS_OIL_STATE emOilState;
        /// <summary>
        /// 洗车状态
        /// wash state
        /// </summary>
        public EM_BUS_WASH_STATE emWashState;
        /// <summary>
        /// 收银状态
        /// cash state
        /// </summary>
        public EM_BUS_CASH_STATE emCashState;
        /// <summary>
        /// 排班状态
        /// schedule state
        /// </summary>
        public EM_SCHEDULE_STATE emScheduleState;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 工人信息
    /// Work Information
    /// </summary>
    public struct NET_CUSTOM_WORKER_INFO
    {
        /// <summary>
        /// 性别
        /// Sex
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szSex;
        /// <summary>
        /// 角色
        /// Role
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRole;
        /// <summary>
        /// 项目ID
        /// Project ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szProjNo;
        /// <summary>
        /// 项目名称
        /// Project Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProjName;
        /// <summary>
        /// 施工单位全称
        /// Builder Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szBuilderName;
        /// <summary>
        /// 施工单位ID
        /// Builder ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szBuilderID;
        /// <summary>
        /// 施工单位类型
        /// Builder Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szBuilderType;
        /// <summary>
        /// 施工单位类别ID
        /// Builder Type ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szBuliderTypeID;
        /// <summary>
        /// 人员照片ID
        /// Worker Picture ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPictureID;
        /// <summary>
        /// 原合同系统合同编号
        /// Contract ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szContractID;
        /// <summary>
        /// 工种ID
        /// Worker Type ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szWorkerTypeID;
        /// <summary>
        /// 工种名称
        /// Worker Type Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szWorkerTypeName;
        /// <summary>
        /// 人员状态
        /// Person Status
        /// </summary>
        public bool bPersonStatus;
        /// <summary>
        /// szProjNameEx 是否有效，为TRUE时，szProjNameEx 有效
        /// Is szProjNameEx valid When it is TRUE, szProjNameEx is valid
        /// </summary>
        public bool bProjNameEx;
        /// <summary>
        /// 项目名称扩展字段
        /// Project name extension field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szProjNameEx;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1388)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 语音类型
    /// Voice type
    /// </summary>
    public enum EM_CUSTOM_MEDICAL_VOICE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_CUSTOM_MEDICAL_VOICE_TYPE_UNKNOWN,
        /// <summary>
        /// 门已打开，可以进入
        /// The door is open for entry
        /// </summary>
        EM_CUSTOM_MEDICAL_VOICE_TYPE_1,
        /// <summary>
        /// 不是本科室，不能进入
        /// It's not an undergraduate room. You can't enter it
        /// </summary>
        EM_CUSTOM_MEDICAL_VOICE_TYPE_2,
        /// <summary>
        /// 已出院，不能进入
        /// Discharged, unable to enter
        /// </summary>
        EM_CUSTOM_MEDICAL_VOICE_TYPE_3,
        /// <summary>
        /// 核酸检测超期，不能进入
        /// Nucleic acid detection is overdue and cannot be entered
        /// </summary>
        EM_CUSTOM_MEDICAL_VOICE_TYPE_4,
        /// <summary>
        /// 体温不正常，不能进入
        /// Body  is abnormal and you can't enter
        /// </summary>
        EM_CUSTOM_MEDICAL_VOICE_TYPE_5,
        /// <summary>
        /// 证信息缺失，不能进入
        /// card information is missing, unable to enter
        /// </summary>
        EM_CUSTOM_MEDICAL_VOICE_TYPE_6,
        /// <summary>
        /// 其他问题，不能进入
        /// Other problems, no access
        /// </summary>
        EM_CUSTOM_MEDICAL_VOICE_TYPE_7,
    }

    /// <summary>
    /// 匹配信息扩展字段
    /// Match information extension
    /// </summary>
    public struct NET_OPENDOOR_MATCHINFO_EX
    {
        /// <summary>
        /// 扩展用户名
        /// Name extension
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserNameEx;
        /// <summary>
        /// 语音类型 
        /// Voice type 
        /// </summary>
        public EM_CUSTOM_MEDICAL_VOICE_TYPE emVoiceType;
        /// <summary>
        /// 抗原检测信息
        /// Antigen Test Information
        /// </summary>
        public NET_ANTIGEN_INFO stuAntigenInfo;
        /// <summary>
        /// tts语音输出
        /// tts voice output
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szVoiceTTSMessage;
        /// <summary>
        /// 鉴权方式，1:设备端鉴权, 在emCompareResult为0后端鉴权成功的情况下,设备还需要二次验证, 2:后端鉴权,根据emCompareResult进行开门与否的判定条件, 255:默认鉴权,兼容历史设备
        /// Authentication method, 1: device-side authentication, in the case that emCompareResult is 0 back-end authentication is successful, the device also needs secondary verification, 2: back-end authentication, according to emCompareResult to determine whether to open the door or not, 255: Default authentication, compatible with historical devices
        /// </summary>
        public uint nCheckLocal;
        /// <summary>
        /// 设备开门信息透传唯一标识
        /// Transmission Uuid Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szTransmissionUuid;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1552)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 访客信息
    /// Visitor information
    /// </summary>
    public struct NET_CUSTOM_VISITOR_INFO
    {
        /// <summary>
        /// 访客姓名
        /// Visitor Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szVisitorName;
        /// <summary>
        /// 访客电话
        /// Visitor telephone
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVisitorTel;
        /// <summary>
        /// 访问开始时间
        /// Access start time
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVisitorStartTime;
        /// <summary>
        /// 访问结束时间
        /// Access end time
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVisitorEndTime;
        /// <summary>
        /// 访客事由
        /// Visitor reason
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szVisitorAccessFor;
        /// <summary>
        /// 访客证号
        /// ID number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVisitorCitizenID;
        /// <summary>
        /// 被访者姓名
        /// Name of interviewee
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRespondentName;
        /// <summary>
        /// 被访者电话
        /// Telephone number of respondents
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRespondentTel;
        /// <summary>
        /// 被访者单位
        /// Respondent unit
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRespondentCompany;
        /// <summary>
        /// 被访者部门
        /// Respondent Department
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRespondentSection;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 匹配信息
    /// Match info
    /// </summary>
    public struct NET_OPENDOOR_MATCHINFO
    {
        /// <summary>
        /// 远程用户ID
        /// remote user ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// 用户名
        /// user name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserName;
        /// <summary>
        /// 用户类型
        /// user type
        /// </summary>
        public EM_USER_TYPE emUserType;
        /// <summary>
        /// 门禁名称
        /// entrance guard name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 匹配度，范围为0-100
        /// match rate,range is 0-100
        /// </summary>
        public uint nMatchRate;
        /// <summary>
        /// 开门方式
        /// open door type
        /// </summary>
        public EM_FACE_OPEN_DOOR_TYPE emOpenDoorType;
        /// <summary>
        /// (卡、头像)生效日期
        /// (card|image)activation time
        /// </summary>
        public NET_TIME stuActivationTime;
        /// <summary>
        /// (卡、头像)截止日期
        /// (card|image)expiry time
        /// </summary>
        public NET_TIME stuExpiryTime;
        /// <summary>
        /// 信用积分
        /// credit score
        /// </summary>
        public int nScore;
        /// <summary>
        /// 单位名称
        /// company name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
        public string szCompanyName;
        /// <summary>
        /// 陪同人员姓名
        /// companion name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 120)]
        public string szCompanionName;
        /// <summary>
        /// 陪同人员单位名称
        /// company name of companion person
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
        public string szCompanionCompany;
        /// <summary>
        /// 准许通行区域
        /// permissible area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPermissibleArea;
        /// <summary>
        /// 部门名称
        /// Section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
        public string szSection;
        /// <summary>
        /// 教育信息 < NET_CUSTOM_EDUCATION_INFO >
        /// education info < NET_CUSTOM_EDUCATION_INFO >
        /// </summary>
        public IntPtr pstuCustomEducationInfo;
        /// <summary>
        /// 健康码信息 < NET_HEALTH_CODE_INFO >
        /// health code info < NET_HEALTH_CODE_INFO >
        /// </summary>
        public IntPtr pstuHealthCodeInfo;
        /// <summary>
        /// 房间号
        /// room num
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRoomNo;
        /// <summary>
        /// 证信息 < NET_IDCARD_INFO >
        /// info < NET_IDCARD_INFO >
        /// </summary>
        public IntPtr pstuIDCardInfo;
        /// <summary>
        /// 公交站信息< NET_BUS_STATION_INFO >
        /// Bus station info < NET_BUS_STATION_INFO >
        /// </summary>
        public IntPtr pstuBusStationInfo;
        /// <summary>
        /// 工地工人信息< NET_CUSTOM_WORKER_INFO >
        /// worker information < NET_CUSTOM_WORKER_INFO >
        /// </summary>
        public IntPtr pstuCustomWorkerInfo;
        /// <summary>
        /// 是否使用匹配信息扩展字段
        /// Whether to use the match information extension filed
        /// </summary>
        public bool bUseMatchInfoEx;
        /// <summary>
        /// 匹配信息扩展字段 < NET_OPENDOOR_MATCHINFO_EX >
        /// Match information extension < NET_OPENDOOR_MATCHINFO_EX >
        /// </summary>
        public IntPtr pstuMatchInfoEx;
        /// <summary>
        /// 核酸检测信息 < NET_HSJC_INFO >
        /// Nucleic acid detection information < NET_HSJC_INFO >
        /// </summary>
        public IntPtr pstuHSJCInfo;
        /// <summary>
        /// 新冠疫苗接种信息 < NET_VACCINE_INFO >
        /// Vaccine information < NET_VACCINE_INFO >
        /// </summary>
        public IntPtr pstuVaccineInfo;
        /// <summary>
        /// 行程码信息 < NET_TRAVEL_INFO >
        /// Travel information < NET_TRAVEL_INFO >
        /// </summary>
        public IntPtr pstuTravelInfo;
        /// <summary>
        /// 访客信息< NET_CUSTOM_VISITOR_INFO >
        /// Visitor information < NET_CUSTOM_VISITOR_INFO >
        /// </summary>
        public IntPtr pstuCustomVisitorInfo;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 开门方式
    /// </summary>
    public enum EM_FACE_OPEN_DOOR_TYPE
    {
        /// <summary>
        /// 未知
        /// </summary>
	    EM_FACE_OPEN_DOOR_TYPE_UNKNOWN = 0,
        /// <summary>
        /// 远程人脸
        /// </summary>
	    EM_FACE_OPEN_DOOR_TYPE_REMOTEFACE,
        /// <summary>
        /// 远程二维码
        /// </summary>
	    EM_FACE_OPEN_DOOR_TYPE_REMOTEQRCODE
    }

    /// <summary>
    /// 语音类型
    /// Voice type
    /// </summary>
    public enum EM_CUSTOM_EDUCATION_VOICE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_UNKNOWN,
        /// <summary>
        /// 超时出校
        /// leave school timeout
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_LEAVE_SCHOOL_TIMEOUT,
        /// <summary>
        /// 超时进校
        /// enter school timeout
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_ENTER_SCHOOL_TIMEOUT,
        /// <summary>
        /// 出校
        /// leave school
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_LEAVE_SCHOOL,
        /// <summary>
        /// 此卡未绑定
        /// card not bind
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_CARD_NOT_BIND,
        /// <summary>
        /// 寄宿生
        /// boarder
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_BOARDER,
        /// <summary>
        /// 家长卡已挂失
        /// parent card has been report lost
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_PARENT_CARD_REPORT_LOST,
        /// <summary>
        /// 进校已过期
        /// enter school overdue
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_ENTER_SCHOOL_OVERDUE,
        /// <summary>
        /// 您有包裹待领取
        /// has package to pickup
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_PACKAGE_TO_PICKUP,
        /// <summary>
        /// 请假
        /// ask for leave
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_ASKFORLEAVE,
        /// <summary>
        /// 请假返校超时
        /// return school timeout when ask for leave
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_RETURN_SCHOOL_TIMEOUT_WHEN_ASKFORLEAVE,
        /// <summary>
        /// 请假进出校时间未到
        /// in and out school is not up when ask for leave
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_INANDOUT_SCHOOL_TIMENOTUP_WHEN_ASKFORLEAVE,
        /// <summary>
        /// 请假拒绝出校
        /// refuse to leave school when ask for leave
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_REFUSE_LEAVE_SCHOOL_WHEN_ASKFORLEAVE,
        /// <summary>
        /// 请假拒绝进校
        /// refuse to enter school when ask for leave
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_REFUSE_ENTER_SCHOOL_WHEN_ASKFORLEAVE,
        /// <summary>
        /// 请假审核中
        /// ask for leave is in review
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_ASKFORLEAVE_IN_REVIEW,
        /// <summary>
        /// 请假已过期
        /// ask for leave is expired
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_ASKFORLEAVE_EXPIRED,
        /// <summary>
        /// 请假已批准
        /// ask for leave is approved
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_ASKFORLEAVE_APPROVED,
        /// <summary>
        /// 请假已失效禁止重复出校
        /// forbid to leave school for leave invalid
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_FORBID_LEAVE_SCHOOL_WITH_LEAVE_INVALID,
        /// <summary>
        /// 时间未到
        /// time is not up
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_TIME_ISNOT_UP,
        /// <summary>
        /// 未预约
        /// not appoint
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_NOT_APPOINT,
        /// <summary>
        /// 未在允许时段内禁止通行
        /// no passage in not permit time section
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_NO_PASSAGE_IN_NONPERMIT_TIMESECTION,
        /// <summary>
        /// 无效卡
        /// invalid card
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_INVALID_CARD,
        /// <summary>
        /// 已预约
        /// already appointed
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_ALREADY_APPOINTED,
        /// <summary>
        /// 允许返校
        /// allow to back school
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_ALLOW_BACK_SCHOOL,
        /// <summary>
        /// 再见
        /// good bye
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_GOODBYE,
        /// <summary>
        /// 正常进校
        /// enter school normally
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_ENTER_SCHOOL_NORMALLY,
        /// <summary>
        /// 重复出校
        /// repeat leave school
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_REPEAT_LEAVE_SCHOOLL,
        /// <summary>
        /// 重复进校
        /// repeat enter school
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_REPEAT_ENTER_SCHOOLL,
        /// <summary>
        /// 走读生
        /// day student
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_DAY_STUDENT,
        /// <summary>
        /// 欢迎光临
        /// welcome
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_WELCOME,
        /// <summary>
        /// 教职工
        /// Faculty
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_FACULTY,
        /// <summary>
        /// 老师
        /// teacher
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_TEACHER,
        /// <summary>
        /// 老师好
        /// Hello teacher
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_HELLO_TEACHER,
        /// <summary>
        /// 允许访问
        /// allow access
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_ALLOW_ACCESS = 33,
        /// <summary>
        /// tts文字语音输出
        /// tts text voice output
        /// </summary>
        EM_CUSTOM_EDUCATION_VOICE_TYPE_TTS_TEXT_VOICE_OUTPUT = 50,
    }

    /// <summary>
    /// 教育信息 < NET_OPENDOOR_MATCHINFO.pstuCustomEducationInfo >
    /// </summary>
    public struct NET_CUSTOM_EDUCATION_INFO
    {
        /// <summary>
        /// 教育信息类型
        /// </summary>
        public EM_EDUCATION_INFO_TYPE emInfoType;
        /// <summary>
        /// 座位号,最小值为1
        /// </summary>
        public int nStudentSeatNumber;
        /// <summary>
        /// 消息内容
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szInfoContent;
        public EM_CUSTOM_EDUCATION_VOICE_TYPE emVoiceType; // 语音类型
    }

    /// <summary>
    /// 信息类型
    /// info type
    /// </summary>
    public enum EM_EDUCATION_INFO_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_EDUCATION_INFO_TYPE_UNKNOWN,
        /// <summary>
        /// 签到
        /// check in
        /// </summary>
        EM_EDUCATION_INFO_TYPE_CHECK_IN,
        /// <summary>
        /// 签退
        /// sign back
        /// </summary>
        EM_EDUCATION_INFO_TYPE_SIGN_BACK,
        /// <summary>
        /// 点名
        /// roll call
        /// </summary>
        EM_EDUCATION_INFO_TYPE_ROLL_CALL,
        /// <summary>
        /// 学习异常
        /// learning abnormal
        /// </summary>
        EM_EDUCATION_INFO_TYPE_LEARNING_ABNORMAL,
        /// <summary>
        /// 考试
        /// examination
        /// </summary>
        EM_EDUCATION_INFO_TYPE_EXAMINATION,
        /// <summary>
        /// 结束学习
        /// end of study
        /// </summary>
        EM_EDUCATION_INFO_TYPE_END_OF_STUDY,
        /// <summary>
        /// 体验学习
        /// experience learning
        /// </summary>
        EM_EDUCATION_INFO_TYPE_EXPERIENCE_LEARNING,
        /// <summary>
        /// 未学习
        /// not learning
        /// </summary>
        EM_EDUCATION_INFO_TYPE_NOT_LEARNING,
        /// <summary>
        /// 中途进入
        /// midway in
        /// </summary>
        EM_EDUCATION_INFO_TYPE_MIDWAY_IN,
        /// <summary>
        /// 中途离开
        /// midway leave
        /// </summary>
        EM_EDUCATION_INFO_TYPE_MIDWAY_LEAVE,
        /// <summary>
        /// 校园提示信息
        /// campus tips
        /// </summary>
        EM_EDUCATION_INFO_TYPE_CAMPUS_TIPS,
        /// <summary>
        /// 照片重复，请重新采集
        /// repeat photo,Please collect again
        /// </summary>
        EM_EDUCATION_INFO_TYPE_PHOTO_REPEAT,
        /// <summary>
        /// 人脸质量低，请重新采集
        /// low face quality,Please collect again
        /// </summary>
        EM_EDUCATION_INFO_TYPE_LOW_FACE_QUALITY,
        /// <summary>
        /// 人脸亮度过低，请重新采集
        /// face brightness too low,Please collect again
        /// </summary>
        EM_EDUCATION_INFO_TYPE_FACE_BRIGHTNESS_TOO_LOW,
        /// <summary>
        /// 人脸亮度过高：请重新采集
        /// face brightness too high,Please collect again
        /// </summary>
        EM_EDUCATION_INFO_TYPE_FACE_BRIGHTNESS_TOO_HIGH,
        /// <summary>
        /// 人脸亮度不均匀，请重新采集
        /// face brightness uneven,Please collect again
        /// </summary>
        EM_EDUCATION_INFO_TYPE_FACE_BRIGHTNESS_UNEVEN,
        /// <summary>
        /// 请提供正脸照片
        /// please provide front face photo
        /// </summary>
        EM_EDUCATION_INFO_TYPE_PROVIDE_FRONT_FACE_PHOTO,
        /// <summary>
        /// 人脸不清晰，请重新采集
        /// face is not clear,Please collect again
        /// </summary>
        EM_EDUCATION_INFO_TYPE_UNCLEAR_FACE,
        /// <summary>
        /// 眼部有遮挡，请重新采集
        /// eye has been coverd,Please collect again
        /// </summary>
        EM_EDUCATION_INFO_TYPE_EYE_BEEN_COVERED,
        /// <summary>
        /// 人脸过小，请重新采集
        /// face too small,Please collect again
        /// </summary>
        EM_EDUCATION_INFO_TYPE_FACE_TOO_SMALL,
        /// <summary>
        /// 请提供彩色照片
        /// please provide color photo
        /// </summary>
        EM_EDUCATION_INFO_TYPE_PROVIDE_COLOR_PHOTO,
        /// <summary>
        /// 脸部缺失，请重新采集
        /// absence of face,Please collect again
        /// </summary>
        EM_EDUCATION_INFO_TYPE_ABSENCE_OF_FACE,
        /// <summary>
        /// 禁止戴口罩，请重新采集
        /// not wear mask,Please collect again
        /// </summary>
        EM_EDUCATION_INFO_TYPE_NOT_WEAR_MASK,
        /// <summary>
        /// 上传照片过大，请重新采集
        /// photo too big,Please collect again
        /// </summary>
        EM_EDUCATION_INFO_TYPE_PHOTO_TOO_BIG,
        /// <summary>
        /// 上传照片过小，请重新采集
        /// photo too small,Please collect again
        /// </summary>
        EM_EDUCATION_INFO_TYPE_PHOTO_TOO_SAMLL,
    }

    /// <summary>
    /// 健康码信息 < NET_OPENDOOR_MATCHINFO.pstuHealthCodeInfo >
    /// </summary>
    public struct NET_HEALTH_CODE_INFO
    {
        /// <summary>
        /// 证号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCitizenID;
        /// <summary>
        /// 证姓名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCitizenName;
        /// <summary>
        /// 常驻地
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPermanentAddr;
        /// <summary>
        /// 当前地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCurrentAddr;
        /// <summary>
        /// 健康码状态
        /// </summary>
	    public EM_HEALTH_CODE_STATUS emHealthCodeStatus;
        /// <summary>
        /// 手机号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPhoneNumber;
        /// <summary>
        /// 异常原因
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szAbnormalCodeReason;
        /// <summary>
        /// 查询时间戳
        /// </summary>
        public NET_TIME stuQueryTime;
        /// <summary>
        /// stuEpidemicAreaExperience 个数
        /// </summary>
        public int nEpidemicAreaExperience;
        /// <summary>
        /// 疫区经历
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_EPIDEMIC_AREA_EXPERIENCE[] stuEpidemicAreaExperience;
        /// <summary>
        /// 预留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 健康码状态
    /// health code status
    /// </summary>
    public enum EM_HEALTH_CODE_STATUS
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_HEALTH_CODE_STATUS_UNKNOWN = 0,
        /// <summary>
        /// 红码
        /// red
        /// </summary>
        EM_HEALTH_CODE_STATUS_RED,
        /// <summary>
        /// 绿码
        /// green
        /// </summary>
        EM_HEALTH_CODE_STATUS_GREEN,
        /// <summary>
        /// 黄码
        /// yellow
        /// </summary>
        EM_HEALTH_CODE_STATUS_YELLOW,
        /// <summary>
        /// 无效
        /// invalid
        /// </summary>
        EM_HEALTH_CODE_STATUS_INVALID,
        /// <summary>
        /// 灰码
        /// grey
        /// </summary>
        EM_HEALTH_CODE_STATUS_GREY,
    }

    /// <summary>
    /// 疫区经历信息
    /// </summary>
    public struct NET_EPIDEMIC_AREA_EXPERIENCE
    {
        /// <summary>
        /// 疫区地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAddress;
        /// <summary>
        /// 在疫区时间
        /// </summary>
	    public NET_TIME stuTime;
        /// <summary>
        /// 预留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 证信息 < NET_OPENDOOR_MATCHINFO.pstuIDCardInfo >
    /// </summary>
    public struct NET_IDCARD_INFO
    {
        /// <summary>
        /// 证消息类型
        /// EM_IDCARD_MSG_TYP_QUERY：除 nEventGroupID 和 szRoomNo （在上一层）字段不用填，其余必填
        /// EM_IDCARD_MSG_TYPE_ISSUE_PERMISSION：nEventGroupID 、szRoomNo（在上一层）及 szCitizenName 字段必填，其余可为空
        /// </summary>
	    public EM_IDCARD_MSG_TYPE emIDCardMsgType;
        /// <summary>
        /// 姓名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCitizenName;
        /// <summary>
        /// 性别
        /// </summary>
	    public EM_CITIZENIDCARD_SEX_TYPE emSexType;
        /// <summary>
        /// 0 无效数据
		/// 1 汉族
		/// 2 蒙古族
		/// 3 回族
		/// 4 藏族
		/// 5 维吾尔族
		/// 6 苗族
		/// 7 彝族
        /// 8 壮族
        /// 9 布依族
        /// 10 朝鲜族
        /// 11 满族
        /// 12 侗族
        /// 13 瑶族
        /// 14 白族
        /// 15 土家族
        /// 16 哈尼族
        /// 17 哈萨克族
        /// 18 傣族
        /// 19 黎族
        /// 20 傈僳族
        /// 21 佤族
        /// 22 畲族
        /// 23 高山族
        /// 24 拉祜族
        /// 25 水族
        /// 26 东乡族
        /// 27 纳西族
        /// 28 景颇族
        /// 29 柯尔克孜族
        /// 30 土族
        /// 31 达斡尔族
        /// 32 仫佬族
        /// 33 羌族
        /// 34 布朗族
        /// 35 撒拉族
        /// 36 毛南族
        /// 37 仡佬族
        /// 38 锡伯族
        /// 39 阿昌族
        /// 40 普米族
        /// 41 塔吉克族
        /// 42 怒族
        /// 43 乌孜别克族
        /// 44 俄罗斯族
        /// 45 鄂温克族
        /// 46 德昂族
        /// 47 保安族
        /// 48 裕固族
        /// 49 京族
        /// 50 塔塔尔族
        /// 51 独龙族
        /// 52 鄂伦春族
        /// 53 赫哲族
        /// 54 门巴族
        /// 55 珞巴族
        /// 56 基诺族
        /// </summary>
	    public int nMZ;
        /// <summary>
        /// 生日（年月日有效）
        /// </summary>
        public NET_TIME stuBirthday;
        /// <summary>
        /// 住址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAddress;
        /// <summary>
        /// 证号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCitizenID;
        /// <summary>
        /// 签发机关
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szAuthority;
        /// <summary>
        /// 有效期限起始日期（年月日有效）
        /// </summary>
	    public NET_TIME stuBeginValidTime;
        /// <summary>
        /// 有效期限截止日期（年月日有效）
        /// </summary>
	    public NET_TIME stuEndValidTime;
        /// <summary>
        /// 事件组ID	,用于标示不同事件的对同一动作的关联
        /// </summary>
	    public int nEventGroupID;
        /// <summary>
        /// 预留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 证消息类型
    /// </summary>
    public enum EM_IDCARD_MSG_TYPE
    {
        /// <summary>
        /// 未知
        /// </summary>
	    EM_IDCARD_MSG_TYP_UNKNOWN = 0,
        /// <summary>
        /// 证查询信息
        /// </summary>
	    EM_IDCARD_MSG_TYP_QUERY,
        /// <summary>
        /// 证权限下发
        /// </summary>
	    EM_IDCARD_MSG_TYPE_ISSUE_PERMISSION
    }

    /// <summary>
    /// 图片信息
    /// </summary>
    public struct NET_OPENDOOR_IMAGEINFO
    {
        /// <summary>
        /// 人脸库照片长度，限制为150k
        /// </summary>
	    public int nLibImageLen;
        /// <summary>
        /// 抓拍照片长度，限制为150k
        /// </summary>
        public int nSnapImageLen;
        /// <summary>
        /// 人脸库照片，内存由用户申请
        /// </summary>
	    public IntPtr pLibImage;
        /// <summary>
        /// 抓拍照片，内存由用户申请
        /// </summary>
	    public IntPtr pSnapImage;
        /// <summary>
        /// 预留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 人脸开门输出参数
    /// </summary>
    public struct NET_OUT_FACE_OPEN_DOOR
    {
        /// <summary>
        /// 结构体大小 必填
        /// </summary>
        public uint dwSize;
    }

    // 云台预置点列表
    public struct NET_PTZ_PRESET_LIST
    {
        public uint dwSize;
        public uint dwMaxPresetNum;                 // 预置点最大个数
        public uint dwRetPresetNum;                 // 返回预置点个数
        public IntPtr pstuPtzPorsetList;             // 预置点列表(入参需要根据最大个数申请内存),内存大小为sizeof(NET_PTZ_PRESET)*dwMaxPresetNum
    }

    /// <summary>
    /// 云台预置点
    /// PTZ preset
    /// </summary>
    public struct NET_PTZ_PRESET
    {
        /// <summary>
        /// 编号
        /// no.
        /// </summary>
        public int nIndex;
        /// <summary>
        /// 名称
        /// name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 预置点的坐标和放大倍数
        /// 第一个参数是水平坐标,范围[0,3599]，表示0度到359.9度,度数扩大10倍表示
        /// 第二个参数是垂直坐标,范围[-1800,1800],表示-180.0度到+180.0度,度数扩大10倍表示
        /// 第三个参数是放大参数,范围[0,128],表示最小倍到最大倍的变倍位置
        /// Coordinates and magnification of preset points
        /// The first parameter is the horizontal coordinate, with a range of [03599], which means 0 degrees to 359.9 degrees, and the degree is expanded by 10 times
        /// The second parameter is the vertical coordinate, with a range of [- 18001800], which means - 180.0 degrees to + 180.0 degrees, and the degree is expanded by 10 times
        /// The third parameter is the amplification parameter, the range [0128], which represents the zoom position from the minimum to the maximum
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public int[] nPosition;
        /// <summary>
        /// 设置预置点名称时需置TRUE
        /// Set TRUE while set name using szNameEx
        /// </summary>
        public bool bSetNameEx;
        /// <summary>
        /// 名称，支持256字节长度
        /// name support 255 bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szNameEx;
        /// <summary>
        /// 预留字节
        /// reserve bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 52)]
        public string szReserve;
    }

    public struct NET_A_CFG_AUTO_REMOTE_CHECK_INFO_EX
    {
        /// <summary>
        /// 远程验证假日计划, 需要远程验证的假日计划, 值为AccessHolidaySchedule索引
        /// Remote verification of holiday plans requires remote verification of holiday plans, with the value of AccessHolidaySchedule index
        /// </summary>
        public uint nHolidayScheduleID;
        /// <summary>
        /// 保留字节
        /// Reserved Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 60)]
        public string szResvered;
    }

    /// <summary>
    /// 首卡开门信息（拓展）与 CFG_ACCESS_FIRSTENTER_INFO 配合使用，是其拓展
    /// first card opening information (expansion) Used with CFG_ACCESS_FIRSTENTER_INFO, is its expansion
    /// </summary>
    public struct NET_A_CFG_ACCESS_FIRSTENTER_INFO_EX
    {
        /// <summary>
        /// 验证假日计划,需要首卡验证的假日计划
        /// Verify holiday plans that require first card verification
        /// </summary>
        public uint nHolidayScheduleID;
        /// <summary>
        /// 预留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 124)]
        public string szReserved;
    }

    // 门禁事件配置
    public struct NET_CFG_ACCESS_EVENT_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szChannelName;	                        // Access Channel Name
        public EM_CFG_ACCESS_STATE emState;						// Access Status
        public EM_CFG_ACCESS_MODE emMode;							// Access Mode
        public int nEnableMode;					// Enable access level value, 0: active low (powered down start); 1: active high (power-up);
        public bool bSnapshotEnable;				// Event linkage screenshots can make

        // Ability
        public byte abDoorOpenMethod;
        public byte abUnlockHoldInterval;
        public byte abCloseTimeout;
        public byte abOpenAlwaysTimeIndex;
        public byte abCloseAlwaysTimeIndex;
        public byte abHolidayTimeIndex;
        public byte abBreakInAlarmEnable;
        public byte abRepeatEnterAlarmEnable;
        public byte abDoorNotClosedAlarmEnable;
        public byte abDuressAlarmEnable;
        public byte abDoorTimeSection;
        public byte abSensorEnable;
        public byte abFirstEnterEnable;
        public byte abRemoteCheck;
        public byte abRemoteDetail;
        public byte abHandicapTimeOut;
        public byte abCheckCloseSensor;
        public byte abAutoRemoteCheck;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] reverse;

        public EM_CFG_DOOR_OPEN_METHOD emDoorOpenMethod;			// Open the door way 
        public int nUnlockHoldInterval;			// Lock hold time (automatic closing time), in milliseconds, [250, 20000]
        public int nCloseTimeout;					// Closed timeout, more than threshold value are not closed will trigger the alarm, unit of seconds, [0999]; 0 means no detection timeout 
        public int nOpenAlwaysTimeIndex;			// always open time period, subscript of CFG_ACCESS_TIME_SCHEDULEINFO array
        public int nCloseAlwaysTimeIndex;          // always close time period, subscript of CFG_ACCESS_TIME_SCHEDULEINFO array
        public int nHolidayTimeRecoNo;				// Within the holiday period, value of holiday record set record number, corresponding NET_RECORDSET_HOLIDAY nRecNo 
        public bool bBreakInAlarmEnable;			// Intrusion alarm enable
        public bool bRepeatEnterAlarm;				// Antisubmarine alarm enable
        public bool bDoorNotClosedAlarmEnable;		// The door is not closed alarm enable
        public bool bDuressAlarmEnable;				// Duress alarm enable
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 28)]
        public NET_CFG_DOOROPEN_TIMESECTION_INFO[] stuDoorTimeSection;// The information period of time to open the door, the array size in C++ is 7*4(WEEK_DAY_NUM*MAX_DOOR_TIME_SECTION);
        public bool bSensorEnable;					//Magnetic enable
        public NET_CFG_ACCESS_FIRSTENTER_INFO stuFirstEnterInfo;		// First card unlock m_AccessInfo 
        public bool bRemoteCheck;                   // Need platform verification, TRUE means when right verification is passed, you must pass platform verification before you can unlock, FALSE means when right verification is passed, you can unlock
        public NET_CFG_REMOTE_DETAIL_INFO stuRemoteDetail;            // work with "bRemoteCheck", door will open or close after over time if remove check on platform side is not responsed
        public NET_CFG_HANDICAP_TIMEOUT_INFO stuHandicapTimeOut;     // time out m_AccessInfo for handicap
        public bool bCloseCheckSensor;              // check the lock sensor or not before close
        public NET_CFG_AUTO_REMOTE_CHECK_INFO stuAutoRemoteCheck;     // remote check to open door, if enabled, controller will send "DH_ALARM_OPENDOORGROUP" event to notify platform whether to open door
        public bool bLocalControlEnable;            // Enable local control, TRUE: enable, FALSE: unable
        public bool bRemoteControlEnable;           // Enable remote control, TRUE: enable, FALSE: unable
        public int nSensorDelay;                   // Sensor output delay, unit: sec, 0~10
        public int nHumanStatusSensitivity;        // Detect sensitivity of human status, unit: sec, 0~300
        public int nDetectSensitivity;             // Detect sensitivity of sensor itself, unit: %, 0~100   
        public bool bLockTongueEnable;				// latch enable  
        public int nABLockRoute;                   // AB互锁路线与AB互锁的index对应；-1代表无效
        public int nDoorNotClosedReaderAlarmTime;  // 门未关超时读卡器报警, 单位：秒
        public bool bEnable;						// 使能项,此通道配置是否启用,TRUE为使能,FALSE为关闭
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;         // 无线设备序列号,只获取，不能设置
        public int nCloseDuration;                  // 门闭合时间,单位：秒
        public int nUnlockReloadInterval;           // 开锁命令响应间隔时间,单位:毫秒
        public EM_CFG_ACCESS_PROTOCOL emAccessProtocol;         // 门禁协议
        public EM_CFG_SERIAL_PROTOCOL_TYPE emProtocolType;          // 串口协议下的具体协议功能,当emAccessProtocol为CFG_EM_ACCESS_PROTOCOL_SERIAL时有效
        public NET_CFG_ACCESS_CONTROL_UDP_INFO stuAccessControlUdpInfo;  // 门禁udp开锁信息,当emAccessProtocol为CFG_EM_ACCESS_PROTOCOL_REMOTE时有效
        public uint nEntranceLockChannel;       // 门禁控制器下的子通道,当emAccessProtocol为CFG_EM_ACCESS_PROTOCOL_REMOTE时有效
        public bool bSnapshotUpload;            // 使能项,抓图是否上传,TRUE为抓图上传,FALSE为抓图不上传
        public uint nSnapUploadPos;         // 抓图上传地址,对应的是NAS配置项的下标，NAS配置为CFG_CMD_NASEX

        public bool bCustomPasswordEnable;              // 是否启用个性化密码
        public int nRepeatEnterTime;                   // 重复进入时间,0~180秒，0表示不启用
        public int nCardNoConvert;                     // 卡号转换，0:不需要转换,1:字节取反,2:按HIDpro转换
        public bool bUnAuthorizedMaliciousSwipEnable;   // 未授权恶意刷卡事件使能
        public bool bFakeLockedAlarmEnable;             // 假锁报警使能
        public EM_CFG_CARD_STATE emReadCardState;                  // 当前门采集状态
        public bool bHelmetEnable;  // 是否检测安全帽
        /// <summary>
        /// 门禁假日常开时间段,值为SpecialDaysSchedule索引
        /// access control holiday normally open time period, with the value of specialdayschedule index
        /// </summary>
        public uint nSpecialDaysOpenAlwaysTime;
        /// <summary>
        /// 门禁假日常闭时间段,值为SpecialDaysSchedule索引
        /// access control holiday normally open time period, with the value of specialdayschedule index
        /// </summary>
        public uint nSpecialDaysCloseAlwaysTime;
        /// <summary>
        /// 门磁类型, 0: 未知, 1: 常开型门磁, 2: 常闭型门磁
        /// Gate magnet type, 0: unknown, 1: normally open gate magnet, 2: normally closed gate magnet
        /// </summary>
        public uint nSensorType;
        /// <summary>
        /// 自动远程开门扩展信息
        /// remote check to open door extend
        /// </summary>
        public NET_A_CFG_AUTO_REMOTE_CHECK_INFO_EX stuAutoRemoteCheckEx;
        /// <summary>
        /// 门禁假日正常鉴权时间段是否有效
        /// Access Control holiday Whether the normal authentication period is valid
        /// </summary>
        public bool bIsSpecialDaysAuthenticationTimeValid;
        /// <summary>
        /// 门禁假日正常鉴权时间段,值为SpecialDaysSchedule索引.假日常开大于假日常闭大于假日鉴权大于普通常开大于普通常闭
        /// Access Control holiday Normal authentication period. The value is the SpecialDaysSchedule index. The false daily open is greater than the false daily close is greater than the holiday authentication is greater than the normal open is greater than the normal close
        /// </summary>
        public uint nSpecialDaysAuthenticationTime;
        /// <summary>
        /// 多人组合验证超时时间是否有效
        /// Multiple group verifies whether the timeout period is valid
        /// </summary>
        public bool bIsOpenDoorGroupTimeOutValid;
        /// <summary>
        /// 多人组合验证超时时间，配套多人组合开门使用，单位：秒[10-60]，默认20
        /// Multi-person combination verification timeout time, matching multi-person combination door opening, unit: seconds [10-60], default 20
        /// </summary>
        public uint nOpenDoorGroupTimeOut;
        /// <summary>
        /// 首卡开门信息(拓展)，与stuFirstEnterInfo搭配使用
        /// First card opening information (expanded), used with stuFirstEnterInfo
        /// </summary>
        public NET_A_CFG_ACCESS_FIRSTENTER_INFO_EX stuFirstEnterInfoEx;
        /// <summary>
        /// 门未关超时报警联动读卡器蜂鸣类型是否有效
        /// Door open timeout alarm linkage card reader buzzer type is valid
        /// </summary>
        public bool bIsDoorNotClosedReaderAlarmTypeValid;
        /// <summary>
        /// 门未关超时报警联动读卡器蜂鸣类型 ,0 : 报警后读卡器按照设定时长蜂鸣，时间到停止蜂鸣,1 : 报警后读卡器一直蜂鸣，直到门关上为止
        /// The door is not closed timeout alarm linkage card reader buzzer type,0: after the alarm, the card reader buzzer according to the set time, the time to stop buzzer,1: after the alarm, the card reader buzzer until the door is closed
        /// </summary>
        public uint nDoorNotClosedReaderAlarmType;
        /// <summary>
        /// 保留字节
        /// Reserve bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 872)]
        public string szResvered;
    }

    // Access status
    public enum EM_CFG_ACCESS_STATE
    {
        NORMAL,                                        // General
        CLOSEALWAYS,                                   // Normally Off, open door is invalid 
        OPENALWAYS,                                    // Normally On, open door is invalid
        NOPERSONNC,                                    // Normally Off if in NO PERSON state
        NOPERSONNO                                     // Normally On if in NO PERSON state
    }

    // Access mode
    public enum EM_CFG_ACCESS_MODE
    {
        HANDPROTECTED,                                  // Fangga mode
        SAFEROOM,                                       // Protective room mode    
        OTHER,                                          // others
    }

    // Customize to open the door
    public enum EM_CFG_DOOR_OPEN_METHOD
    {
        UNKNOWN = 0,
        PWD_ONLY = 1,                                               // 只允许密码开锁
        CARD = 2,                                                   // 只允许刷卡开锁
        PWD_OR_CARD = 3,                                            // 密码或刷卡开锁
        CARD_FIRST = 4,                                             // 先刷卡后密码开锁
        PWD_FIRST = 5,                                              // 先密码后刷卡开锁
        SECTION = 6,                                                // 分时段开门
        FINGERPRINTONLY = 7,                                        // 仅开锁
        PWD_OR_CARD_OR_FINGERPRINT = 8,                             // 密码或刷卡或开锁
        PWD_AND_CARD_AND_FINGERPINT = 9,                            // 密码+刷卡+组合开锁
        PWD_AND_FINGERPRINT = 10,                                   // 密码+组合开锁
        CARD_AND_FINGERPRINT = 11,                                  // 刷卡+开锁
        MULTI_PERSON = 12,                                          // 多人开锁
        FACEIDCARD = 13,                                            // 人证对比
        FACEIDCARD_AND_IDCARD = 14,                                 // 证+ 人证比对
        FACEIDCARD_OR_CARD_OR_FINGER = 15,                          // 人证比对或刷卡或
        FACEIPCARDANDIDCARD_OR_CARD_OR_FINGER = 16,                 // (证+人证比对)或刷卡或
        USERID_AND_PWD = 17,                                        // UserID+密码
        FACE_ONLY = 18,                                             // 只允许人脸开锁
        FACE_AND_PWD = 19,                                          // 人脸+密码开锁
        FINGERPRINT_AND_PWD = 20,                                   // +密码开锁
        FINGERPRINT_AND_FACE = 21,                                  // +人脸开锁
        CARD_AND_FACE = 22,                                         // 刷卡+人脸开锁
        FACE_OR_PWD = 23,                                           // 人脸或密码开锁
        FINGERPRINT_OR_PWD = 24,                                    // 或密码开锁
        FINGERPRINT_OR_FACE = 25,                                   // 或人脸开锁
        CARD_OR_FACE = 26,                                          // 刷卡或人脸开锁
        CARD_OR_FINGERPRINT = 27,                                   // 刷卡或开锁
        FINGERPRINT_AND_FACE_AND_PWD = 28,                          // +人脸+密码开锁
        CARD_AND_FACE_AND_PWD = 29,                                 // 刷卡+人脸+密码开锁
        CARD_AND_FINGERPRINT_AND_PWD = 30,                          // 刷卡++密码开锁
        CARD_AND_PWD_AND_FACE = 31,                                 // 卡++人脸组合开锁
        FINGERPRINT_OR_FACE_OR_PWD = 32,                            // 或人脸或密码
        CARD_OR_FACE_OR_PWD = 33,                                   // 卡或人脸或密码开锁
        CARD_OR_FINGERPRINT_OR_FACE = 34,                           // 卡或或人脸开锁
        CARD_AND_FINGERPRINT_AND_FACE_AND_PWD = 35,                 // 卡++人脸+密码组合开锁 
        CARD_OR_FINGERPRINT_OR_FACE_OR_PWD = 36,                    // 卡或或人脸或密码开锁
        FACEIPCARDANDIDCARD_OR_CARD_OR_FACE = 37,                   // (证+人证比对)或 刷卡 或 人脸
        FACEIDCARD_OR_CARD_OR_FACE = 38,                            // 人证比对 或 刷卡(二维码) 或 人脸
        CARDANDPWD_OR_FINGERPRINTANDPWD = 39,                       // (卡+密码）或（+密码）默认为2
        PHOTO_OR_FACE = 40,                                         // 人证(照片)或人脸
        FINGERPRINT = 41,                                           // 人证()
        PHOTO_AND_FINGERPRINT = 42,                                 // 人证(照片+)
        FACEIDCARD_OR_CARD_OR_FINGERPRINT_OR_FACE_OR_PASSWORD = 43, // 人证或刷卡或或人脸或密码
        MULTI_USER_TYPE = 44,                                       // 多用户类型
        FACEIDCARD_OR_HEALTHCODE = 45,	                            // 人证或健康码
        /// <summary>
        /// 只允许眼睛开锁
        /// Only allow eyes to unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_IRIS_ONLY = 46,
        /// <summary>
        /// 眼睛+密码组合开锁
        /// eyes + password combination to unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_IRIS_AND_PWD = 47,
        /// <summary>
        /// 目标+眼睛组合开锁
        /// Target + eyes combination unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACE_AND_IRIS = 48,
        /// <summary>
        /// 卡+眼睛组合开锁
        /// Card + eyes combination unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_AND_IRIS = 49,
        /// <summary>
        /// 眼睛或密码开锁
        /// eyes or password unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_IRIS_OR_PWD = 50,
        /// <summary>
        /// 目标或眼睛开锁
        /// Target or eyes unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACE_OR_IRIS = 51,
        /// <summary>
        /// 卡或眼睛开锁
        /// Card or eyes unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_IRIS = 52,
        /// <summary>
        /// 目标+眼睛+密码组合开锁
        /// Target + eyes + password combination to unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACE_AND_IRIS_AND_PWD = 53,
        /// <summary>
        /// 卡+目标+眼睛组合开锁
        /// Card + target + eyes combination unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_AND_FACE_AND_IRIS = 54,
        /// <summary>
        /// 卡+眼睛+密码组合开锁
        /// Card + eyes + password combination to unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_AND_IRIS_AND_PWD = 55,
        /// <summary>
        /// 目标或眼睛或密码开锁
        /// Target or eyes or password unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACE_OR_IRIS_PWD = 56,
        /// <summary>
        /// 卡或目标或眼睛开锁
        /// Card or target or eyes unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_FACE_IRIS = 57,
        /// <summary>
        /// 卡或眼睛或密码开锁
        /// Card or eyes or password unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_IRIS_PWD = 58,
        /// <summary>
        /// 卡+目标+眼睛+密码组合开锁
        /// Card + target + eyes + password combination to unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_AND_FACE_IRIS_PWD = 59,
        /// <summary>
        /// 卡或目标或眼睛或密码开锁
        /// Card or target or eyes or password unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_FACE_OR_IRIS_PWD = 60,
        /// <summary>
        /// 人证或刷卡
        /// Target card id or card
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_CARD = 61,
        /// <summary>
        /// 人证或密码
        /// Target card id or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_OWD = 62,
        /// <summary>
        /// 人证或信息
        /// Target card id or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_FINGERPRINT = 63,
        /// <summary>
        /// 人证或刷卡或密码
        /// Target card id or card or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_CARD_OR_PWD = 64,
        /// <summary>
        /// 人证或信息或密码
        /// Target card id or fingerpront or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_FINGERPRINT_OR_PWD = 65,
        /// <summary>
        /// 人证或信息或目标
        /// Target card id or fingerpront or face
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_FINGERPRINT_OR_FACE = 66,
        /// <summary>
        /// 人证或刷卡或信息或密码
        /// Target card id or card or fingerpront or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_CARD_OR_FINGERPRINT_OR_PWD = 67,
        /// <summary>
        /// 人证或刷卡或信息或目标
        /// Target card id or card or fingerpront or face
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_CARD_OR_FINGERPRINT_OR_FACE = 68,
        /// <summary>
        /// 人证或密码或信息或目标
        /// Target card id or password or fingerpront or face
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_PWD_OR_FINGERPRINT_OR_FACE = 69,
        /// <summary>
        /// (证件+人证比对)或刷卡
        /// (ID card + Target card id) or card
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_AND_FACEIDCARD_OR_CARD = 70,
        /// <summary>
        /// (证件+人证比对)或密码
        /// (ID card + Target card id) or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_AND_FACEIDCARD_OR_PWD = 71,
        /// <summary>
        /// (证件+人证比对)或信息
        /// (ID card + Target card id) or fingerpront
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_AND_FACEIDCARD_OR_FINGERPRINT = 72,
        /// <summary>
        /// (证件+人证比对)或目标
        /// (ID card + Target card id) or face
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_AND_FACEIDCARD_OR_FACE = 73,
        /// <summary>
        /// (证件+人证比对)或刷卡或密码
        /// (ID card + Target card id) or card or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_AND_FACEIDCARD_OR_CARD_OR_PWD = 74,
        /// <summary>
        /// (证件+人证比对)或信息或密码
        /// (ID card + Target card id) or fingerpront or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_AND_FACEIDCARD_OR_FINGERPRINT_OR_PWD = 75,
        /// <summary>
        /// (证件+人证比对)或信息或目标
        /// (ID card + Target card id) or fingerpront or face
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_AND_FACEIDCARD_OR_FINGERPRINT_OR_FACE = 76,
        /// <summary>
        /// (证件+人证比对)或信息或目标或密码
        /// (ID card + Target card id) or fingerpront or face or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_AND_FACEIDCARD_OR_CARD_OR_FINGERPRINT_OR_PWD = 77,
        /// <summary>
        /// (证件+人证比对)或刷卡或信息或目标
        /// (ID card + Target card id) or card or fingerpront or face
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_AND_FACEIDCARD_OR_CARD_OR_FINGERPRINT_OR_FACE = 78,
        /// <summary>
        /// (证件+人证比对)或密码或信息或目标
        /// (ID card + Target card id) or passwordor fingerpront or face
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_AND_FACEIDCARD_OR_PWD_OR_FINGERPRINT_OR_FACE = 79,
        /// <summary>
        /// (证件+人证比对)或信息或目标
        /// (ID card + Target card id) or fingerpront or face
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_AND_FACEIDCARD_OR_PWD_OR_FINGERPRINT_OR_CARD_OR_FACE = 80,
        /// <summary>
        /// 人证或密码或刷卡或目标
        /// Target card id or password or card or face
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_PWD_OR_CARD_OR_FACE = 81,
        /// <summary>
        /// (证件+人证)或密码、刷卡、目标
        /// (ID card + Target card id) or (password + + card + face)
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_AND_FACEIDCARD_OR_PWD_AND_CARD_AND_FACE = 82,
        /// <summary>
        /// 人证或密码或目标
        /// Target card id or passwordor face
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_PWD_OR_FACE = 83,
        /// <summary>
        /// (证件+人证比对)或目标
        /// (ID card + Target card id)or face
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_AND_FACEIDCARD_OR_PWD_OR_FACE = 84,
        /// <summary>
        /// 多组合开门
        /// Multi-combination door opening
        /// </summary>
        CFG_DOOR_OPEN_METHOD_MULTI_COMBINATIONS = 85,
        /// <summary>
        /// 蓝牙卡开门
        /// Bluetooth card
        /// </summary>
        CFG_DOOR_OPEN_METHOD_BLUETOOTHCARD = 86,
        /// <summary>
        /// 卡或蓝牙卡开门
        /// Card or bluetooth card
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_BLUETOOTHCARD = 87,
        /// <summary>
        /// 信息或蓝牙卡开门
        /// Fingerpront or bluetooth card
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FINGERPRINT_OR_BLUETOOTHCARD = 88,
        /// <summary>
        /// 密码或蓝牙卡开门
        /// Password or bluetooth card
        /// </summary>
        CFG_DOOR_OPEN_METHOD_PWD_OR_BLUETOOTHCARD = 89,
        /// <summary>
        /// 卡或信息或蓝牙卡开门
        /// Card or fingerpront or bluetooth card
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_FINGERPRINT_OR_BLUETOOTHCARD = 90,
        /// <summary>
        /// 卡或密码或蓝牙卡开门
        /// Card or password or bluetooth card
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_PWD_OR_BLUETOOTHCARD = 91,
        /// <summary>
        /// 信息或密码或蓝牙卡开门
        /// Fingerpront or password or bluetooth card
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FINGERPRINT_OR_PWD_OR_BLUETOOTHCARD = 92,
        /// <summary>
        /// 卡或信息或密码或蓝牙卡开门
        /// Card or fingerpront or password or bluetooth card
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_FINGERPRINT_OR_PWD_OR_BLUETOOTHCARD = 93,
        /// <summary>
        /// 只允许掌纹开锁
        /// Only Palm Print Unlock allowed
        /// </summary>
        CFG_DOOR_OPEN_METHOD_PALMPRINT_ONLY = 94,
        /// <summary>
        /// 掌纹+密码组合开锁
        /// Palm Print + Password Combination Unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_PALMPRINT_AND_PWD = 95,
        /// <summary>
        /// 人脸+掌纹组合开锁
        /// Target + Palm Print Unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACE_AND_PALMPRINT = 96,
        /// <summary>
        /// 卡+掌纹组合开锁
        /// Card + Palm Print Combo Unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_AND_PALMPRINT = 97,
        /// <summary>
        /// 掌纹或密码开锁
        /// Palm Print or Password Unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_PALMPRINT_OR_PWD = 98,
        /// <summary>
        /// 人脸或掌纹开锁
        /// Target or Palm Print Unlock.
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACE_OR_PALMPRINT = 99,
        /// <summary>
        /// 卡或掌纹开锁
        /// card or Palm Print Unlock.
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_PALMPRINT = 100,
        /// <summary>
        /// 人脸+掌纹+密码组合开锁
        /// Target + Palm Print + Password Combination Unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACE_AND_PALMPRINT_AND_PWD = 101,
        /// <summary>
        /// 卡+人脸+掌纹组合开锁
        /// Card + Target + Palm Print Combination Unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_AND_FACE_AND_PALMPRINT = 102,
        /// <summary>
        /// 卡+掌纹+密码组合开锁
        /// Card + Palm Print + Password Combination Unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_AND_PALMPRINT_AND_PWD = 103,
        /// <summary>
        /// 人脸或掌纹或密码开锁
        /// Target or Palm Print or Password Unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACE_OR_PALMPRINT_OR_PWD = 104,
        /// <summary>
        /// 卡或人脸或掌纹开锁
        /// Card or Target or Palm Print Unlock.
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_FACE_OR_PALMPRINT = 105,
        /// <summary>
        /// 卡或掌纹或密码开锁
        /// Card or Palm Print or Password Unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_PALMPRINT_OR_PWD = 106,
        /// <summary>
        /// 卡+人脸+掌纹+密码组合开锁
        /// Card + Target + Palm Print + Password Combination Unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_AND_FACE_AND_PALMPRINT_AND_PWD = 107,
        /// <summary>
        /// 卡或人脸或掌纹或密码开锁
        /// Card or Target or Palm Print or Password Unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_FACE_OR_PALMPRINT_OR_PWD = 108,
        /// <summary>
        /// 证件开锁
        /// ID card Unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD = 109,
        /// <summary>
        /// 证件或卡或人脸或指纹或密码开锁
        /// ID card or Card or Target or Palm Print or Password Unlock
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE_OR_PALMPRINT_OR_PWD = 110,
        /// <summary>
        /// 指纹+虹膜
        /// fingerprint + iris
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FINGERPRINT_AND_IRIS = 111,
        /// <summary>
        /// 指纹或虹膜
        /// fingerprint or iris
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FINGERPRINT_OR_IRIS = 112,
        /// <summary>
        /// 卡+指纹+虹膜
        /// card + fingerprint + iris
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_AND_FINGERPRINT_AND_IRIS = 113,
        /// <summary>
        /// 指纹+人脸+虹膜
        /// fingerprint + face + iris
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FINGERPRINT_AND_FACE_AND_IRIS = 114,
        /// <summary>
        /// 指纹+虹膜+密码
        /// Fingerprint + Iris + Password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FINGERPRINT_AND_IRIS_AND_PWD = 115,
        /// <summary>
        /// 卡或指纹或虹膜
        /// card or fingerprint or iris
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_FINGERPRINT_OR_IRIS = 116,
        /// <summary>
        /// 指纹或人脸或虹膜
        /// fingerprint or face or iris
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FINGERPRINT_OR_FACE_OR_IRIS = 117,
        /// <summary>
        /// 指纹或虹膜或密码
        /// fingerprint or iris or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FINGERPRINT_OR_IRIS_OR_PWD = 118,
        /// <summary>
        /// 卡+指纹+虹膜+密码
        /// card + fingerprint + iris + password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_AND_FINGERPRINT_AND_IRIS_AND_PWD = 119,
        /// <summary>
        /// 卡+指纹+人脸+虹膜
        /// card + fingerprint + face + iris
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_AND_FINGERPRINT_AND_FACE_AND_IRIS = 120,
        /// <summary>
        /// 指纹+人脸+虹膜+密码
        /// Fingerprint + Face + Iris + Password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FINGERPRINT_AND_FACE_AND_IRIS_AND_PWD = 121,
        /// <summary>
        /// 卡或指纹或虹膜或密码
        /// card or fingerprint or iris or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_FINGERPRINT_OR_IRIS_OR_PWD = 122,
        /// <summary>
        /// 卡或指纹或人脸或虹膜
        /// card or fingerprint or face or iris
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_IRIS = 123,
        /// <summary>
        /// 指纹或人脸或虹膜或密码
        /// fingerprint or face or iris or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FINGERPRINT_OR_FACE_OR_IRIS_OR_PWD = 124,
        /// <summary>
        /// 卡或指纹或人脸或虹膜或密码
        /// card or fingerprint or face or iris or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_IRIS_OR_PWD = 125,
        /// <summary>
        /// 人证或卡或指纹或人脸或虹膜或密码
        /// ID card or card or fingerprint or face or iris or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_CARD_OR_FINGERPRINT_OR_FACE_OR_IRIS_OR_PWD = 126,
        /// <summary>
        /// (身份证+人证比对)或卡或指纹或人脸或虹膜或密码
        /// (ID card + ID card comparison) or card or fingerprint or face or iris or password
        /// </summary>
        CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FINGERPRINT_OR_FACE_OR_IRIS_OR_PWD = 127,
    }

    /// <summary>
    /// 分时段开门
    /// Period of time to open the door
    /// </summary>
    public struct NET_CFG_DOOROPEN_TIMESECTION_INFO
    {
        /// <summary>
        /// 时间段
        /// Period of time
        /// </summary>
        public NET_CFG_TIME_PERIOD stuTime;
        /// <summary>
        /// 开门模式
        /// Open Mode
        /// </summary>
        public EM_CFG_DOOR_OPEN_METHOD emDoorOpenMethod;
        /// <summary>
        /// 是否支持使能出门开门方式
        /// Does it support enabling the door opening method when leaving the house
        /// </summary>
        public bool abOutDoorMethodEnable;
        /// <summary>
        /// 是否使能出门开门方式（若使能，出门和进门模式可以分别配置）
        /// Is it possible to enable the door opening method for going out? (If it is possible to configure the going out and entering modes separately)
        /// </summary>
        public bool bOutDoorMethodEnable;
        /// <summary>
        /// 时间段内出门开门方式(bOutDoorMethodEnable为TRUE时有效)
        /// Exit door opening method during the time period (valid when bOutDoorMethodEnable is true)
        /// </summary>
        public uint nOutDoorMethod;
        /// <summary>
        /// 保留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string szReserved;
    }

    // First card unlock m_AccessInfo 
    public struct NET_CFG_ACCESS_FIRSTENTER_INFO
    {
        public bool bEnable;	// Within certain period, only when user with first card right passes verification, other users can swipe card (fingerprint and so on) to enter, TRUE enable FALSE off
        public EM_CFG_ACCESS_FIRSTENTER_STATUS emStatus;	// First card right verification passed accesscontrol status
        public int nTimeIndex;	// Need first card verification period, value as channel no.
    }

    // First card right verification passed access control status
    public enum EM_CFG_ACCESS_FIRSTENTER_STATUS
    {
        UNKNOWN,	// Unknown status
        KEEPOPEN,	// KeepOpen-first card right verification passed, door remains NO
        NORMAL		// Normal-first card right verification passed, other user can swipe card (fingerprint and so on) to pass verification
    }

    // Remote check detail
    public struct NET_CFG_REMOTE_DETAIL_INFO
    {
        public int nTimeOut;                       // over time, 0:unlimited wait, unit: sec
        public bool bTimeOutDoorStatus;             // door status after over time, TRUE:open, FALSE:close
    }

    // time out m_AccessInfo for handicap
    public struct NET_CFG_HANDICAP_TIMEOUT_INFO
    {
        public int nUnlockHoldInterval;            // Unlock hold time(max time to close door automatically),unit: ms, [250, 60000]  
        public int nCloseTimeout;                  // max time to close door, there will be alarm if door still open after max time; unit: s,[0,9999];0 means do not check the time out
    }

    // remote check to open door
    public struct NET_CFG_AUTO_REMOTE_CHECK_INFO
    {
        public bool bEnable;                        // enable auto remote check to open door, TRUE: ENABLE, FALSE: unable
        public int nTimeSechdule;                  // corresponding to index of config "CFG_CMD_ACCESSTIMESCHEDULE"
    }

    public enum EM_CFG_ACCESS_PROTOCOL
    {
        UNKNOWN,                        // 未知
        LOCAL,                      // 本机开关量控制
        SERIAL,                     // 串口协议
        REMOTE,						// 门禁udp开锁
    }

    // 串口协议下的具体协议功能
    public enum EM_CFG_SERIAL_PROTOCOL_TYPE
    {
        UNKNOWN = -1,                   // 未知
        UNUSED,                         // 未使用
        DAHUA_ACCESS_485,               // 门禁485
        LADDER_CONTROL,                 // 梯控
        REMOTE_READ_HEAD,				// 远距离读头
    }


    // 私有门禁udp开锁信息
    public struct NET_CFG_ACCESS_CONTROL_UDP_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szAddress;            // 地址
        public int nPort;													// 端口
    }

    // 当前门采集状态
    public enum EM_CFG_CARD_STATE
    {
        UNKNOWN = -1,             // 未知
        SWIPE,                    // 门禁刷卡
        COLLECTION,               // 门禁采集卡
    }

    // 云台巡航路径配置
    public struct NET_CFG_PTZTOUR_INFO
    {
        public int nCount;                                     // 巡航路径数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_CFG_PTZTOUR_SINGLE[] stTours;               // 巡航路径, 每个通道包含多条巡航路径
    }

    // 巡航路径
    public struct NET_CFG_PTZTOUR_SINGLE
    {
        /// <summary>
        /// 使能
        /// enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 名称
        /// name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 预置点数量
        /// preset quantity
        /// </summary>
        public int nPresetsNum;
        /// <summary>
        /// 该路径包含的预置点参数
        /// this path included preset parameter
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_CFG_PTZTOUR_PRESET[] stPresets;
    }

    // 巡航路径中的预置点
    public struct NET_CFG_PTZTOUR_PRESET
    {
        /// <summary>
        /// 预置点编号
        /// preset no.
        /// </summary>
        public int nPresetID;
        /// <summary>
        /// 在改预置点的停留时间, 单位秒
        /// change preset duration time, unit s
        /// </summary>
        public int nDuration;
        /// <summary>
        /// 到达该预置点的转动速度, 1~10
        /// rotation speed reaching this preset, 1~10
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// 预置点聚焦使能，0为不使能，1为使能
        /// Preset point focus enable, 0 is not enable, 1 is enable
        /// </summary>
        public bool bEnable;
    }

    /// <summary>
    /// get log item(QueryDevLogCount input parameter)
    /// 获取日志条数(QueryDevLogCount 接口输入参数)
    /// </summary>
    public struct NET_IN_GETCOUNT_LOG_PARAM
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// search record filter.
        /// 查询记录数条件
        /// </summary>
        public NET_QUERY_DEVICE_LOG_PARAM stuQueryCondition;
    }

    /// <summary>
    /// get log item(QueryDevLogCount output parameter)
    /// 获取日志条数(QueryDevLogCount 接口输出参数)
    /// </summary>
    public struct NET_OUT_GETCOUNT_LOG_PARAM
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// log quantity(device return)
        /// 日志数（设备返回）
        /// </summary>
        public int nLogCount;
    }

    /// <summary>
    /// Start query log(support BSC only)(StartQueryLog input parameter)
    /// 开始查询日志(StartQueryLog 接口输入参数)
    /// </summary>
    public struct NET_IN_START_QUERYLOG
    {
        public uint dwSize;
        /// <summary>
        /// 查询日志类型
        /// Log type
        /// </summary>
        public EM_LOG_QUERY_TYPE emLogType;
        /// <summary>
        /// 查询日志的开始时间
        /// Start time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 查询日志的结束时间
        /// End time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 对emLogType进行扩展分类查询方式;TRUE 表明使用szLogTypeEx参数,FALSE使用emLogType
        /// Extend the classification query method for emlogtype; True indicates that the szlogtypeex parameter is used
        /// </summary>
        public bool bLogTypeExFlag;
        /// <summary>
        /// szLogTypeEx数组真实长度，最大64个
        /// szLogTypeEx array real length, maximum 64
        /// </summary>
        public int nLogTypeExNum;
        /// <summary>
        /// 报警主机日志类型扩展透传数组,如果需要查询的类型超过64个,则分组多次查询
        /// The alarm host log type extends the transparent array. If there are more than 64 types to be queried, it will be queried multiple times in groups
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64 * 128)]
        public string szLogTypeEx;
        /// <summary>
        /// 查询结果排序方式
        /// Sorting method of query results
        /// </summary>
        public EM_RESULT_ORDER_TYPE emResultOrder;
        /// <summary>
        /// 是否使用UTC时间
        /// Is send UTC time
        /// </summary>
        public bool bSendByUTCTime;
        /// <summary>
        /// UTC查询开始时间
        /// UTC Queries the start time
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC查询结束时间
        /// UTC Queries the end time
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
    }

    /// <summary>
    /// Start query log(support BSC only)(StartQueryLog output parameter)
    /// 开始查询日志(StartQueryLog 接口输出参数)
    /// </summary>
    public struct NET_OUT_START_QUERYLOG
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// Query next log(support BSC only)(QueryNextLog input parameter)
    /// 获取日志(目前只支持门禁BSC系列)(QueryNextLog 接口输入参数)
    /// </summary>
    public struct NET_IN_QUERYNEXTLOG
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// count of log item try to query
        /// 需要查询的日志条数
        /// </summary>
        public int nGetCount;
    }

    /// <summary>
    /// Query next log(support BSC only)(QueryNextLog output parameter)
    /// 获取日志(目前只支持门禁BSC系列)(QueryNextLog 接口输出参数)
    /// </summary>
    public struct NET_OUT_QUERYNEXTLOG
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// count of log item malloced by user, should be NET_IN_GETNEXTLOG*nGetCount
        /// 用户指定分配结构体个数,需大于等于NET_IN_GETNEXTLOG的nGetCount
        /// </summary>
        public int nMaxCount;
        /// <summary>
        /// buffer for log item malloced by user, should be nMaxCount*sizeof(NET_LOG_INFO)
        /// 返回日志信息,缓存大小由用户指定,大小为nMaxCount*sizeof(NET_LOG_INFO)
        /// </summary>
        public IntPtr pstuLogInfo;
        /// <summary>
        /// return count of log item
        /// 实际返回日志条数
        /// </summary>
        public int nRetCount;
    }

    /// <summary>
    /// info of log
    /// </summary>
    public struct NET_LOG_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// time
        /// 时间
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// operator
        /// 操作者
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserName;
        /// <summary>
        /// type
        /// 类型
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szLogType;
        /// <summary>
        /// detailed info
        /// 日志信息
        /// </summary>
        public NET_LOG_MESSAGE stuLogMsg;
        /// <summary>
        /// 记录UTC时间
        /// Record the UTC time
        /// </summary>
        public NET_TIME stuTimeRealUTC;
		/// <summary>
        /// / time
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szTime;
    }

    /// <summary>
    /// detail info of log
    /// 日志详细信息
    /// </summary>
    public struct NET_LOG_MESSAGE
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// detailed info
        /// 日志内容
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szLogMessage;
    }

    // 升级类型
    public enum EM_UPGRADE_TYPE
    {
        BIOS_TYPE = 1,           // BIOS升级
        WEB_TYPE,                // WEB升级
        BOOT_YPE,                // BOOT升级
        CHARACTER_TYPE,          // 汉字库
        LOGO_TYPE,               // LOGO
        EXE_TYPE,                // EXE,例如播放器等
        DEVCONSTINFO_TYPE,       // 设备固有信息设置(如：硬件ID,MAC,序列号)
        PERIPHERAL_TYPE,         // 外设接入从片(如车载287芯片)
        GEOINFO_TYPE,            // 地理信息定位芯片
        MENU,                    // 菜单（设备操作界面的图片）
        ROUTE,                   // 线路文件（如公交线路）
        ROUTE_STATE_AUTO,        // 报站音频（与线路配套的报站音频）
        SCREEN,                  // 调度屏（如公交操作屏）
    }


    // 恢复出长设置入参
    public struct NET_IN_RESET_SYSTEM
    {
        public uint dwSize;
    }

    // 恢复出长设置出参
    public struct NET_OUT_RESET_SYSTEM
    {
        public uint dwSize;
    }

    // CLIENT_StartFindUserInfo 输入参数
    public struct NET_IN_USERINFO_START_FIND
    {
        public uint dwSize;                                     // 结构体大小
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;            // 用户ID
		/// <summary>
        /// / Card+password: The password used to open the door. UserID+Password: Password for opening the door. Valid when bQueryPWDNotEmpty is set to False
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassword;
        /// <summary>
        /// / Query password is not empty
        /// </summary>
        public bool bQueryPWDNotEmpty;
    }

    // CLIENT_StartFindUserInfo 输出参数
    public struct NET_OUT_USERINFO_START_FIND
    {
        public uint dwSize;                                     // 结构体大小
        public int nTotalCount;                                // 符合查询条件的总数
        public int nCapNum;                                    // doFind一次查询的最大数量
    }

    // CLIENT_DoFindUserInfo 输入参数
    public struct NET_IN_USERINFO_DO_FIND
    {
        public uint dwSize;                                     // 结构体大小
        public int nStartNo;                                   // 起始序号
        public int nCount;                                     // 本次查询的条数
    }

    // CLIENT_DoFindUserInfo 输出参数
    public struct NET_OUT_USERINFO_DO_FIND
    {
        public uint dwSize;                                    // 结构体大小
        public int nRetNum;                                    // 本次查询到的个数
        public IntPtr pstuInfo;                                // 查询结果, 用户分配释放内存,大小为sizeof(NET_ACCESS_USER_INFO)*nMaxNum
        public int nMaxNum;                                    // 用户分配内存的个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
    }


    // CLIENT_StartFindCardInfo 输入参数
    public struct NET_IN_CARDINFO_START_FIND
    {
        public uint dwSize;                                     // 结构体大小
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;            // 用户ID
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;            // 卡号 
        EM_A_NET_ACCESSCTLCARD_TYPE emType;                                     // 卡类型,只支持一般卡、胁迫卡和母卡
        /// <summary>
        /// / szUserIDEx 是否有效，为TRUE时，使用szUserIDEx字段
        /// Whether szUserIDEx is valid. If true, use the szUserIDEx field
        /// </summary>
        public bool bUserIDEx;
        /// <summary>
        /// / 字节对齐
        /// Align Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 7)]
        public string szAlign;
        /// <summary>
        /// / 用户ID扩展，当前只支持32位有效值下发
        /// User ID extension, currently only 32-bit valid values are supported
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]
        public string szUserIDEx;
    }

    // CLIENT_StartFindCardInfo 输出参数
    public struct NET_OUT_CARDINFO_START_FIND
    {
        public uint dwSize;                                     // 结构体大小
        public int nTotalCount;                                // 符合查询条件的总数
        public int nCapNum;                                    // CLIENT_DoFindCardInfo接口一次查询的最大数量
    }

    // CLIENT_DoFindCardInfo 输入参数
    public struct NET_IN_CARDINFO_DO_FIND
    {
        public uint dwSize;                                     // 结构体大小
        public int nStartNo;                                   // 起始序号
        public int nCount;                                     // 本次查询的条数
    }

    // CLIENT_DoFindCardInfo 输出参数
    public struct NET_OUT_CARDINFO_DO_FIND
    {
        public uint dwSize;                                     // 结构体大小
        public int nRetNum;                                    // 本次查询到的个数
        public IntPtr pstuInfo;                                   // 查询结果, 用户分配释放内存,大小为sizeof(NET_FACEINFO)*nMaxNum
        public int nMaxNum;                                    // 用户分配内存的个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;// 保留字节
    }

    /// <summary>
    /// 卡类型
    /// Card Type
    /// </summary>
    public enum EM_A_NET_ACCESSCTLCARD_TYPE
    {
        NET_ACCESSCTLCARD_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 一般卡
        /// General Card
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_GENERAL,
        /// <summary>
        /// 
        /// 
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_VIP,
        /// <summary>
        /// 来宾卡
        /// Guest Card
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_GUEST,
        /// <summary>
        /// 巡逻卡
        /// Patrol Card
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_PATROL,
        /// <summary>
        /// 禁止名单卡
        /// prohibit Card
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_BLACKLIST,
        /// <summary>
        /// 胁迫卡
        /// Corce Card
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_CORCE,
        /// <summary>
        /// 巡检卡
        /// Polling Card
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_POLLING,
        /// <summary>
        /// 国标自定义1卡
        /// Custom card 1
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_GB_CUSTOM1,
        /// <summary>
        /// 国标自定义2卡,
        /// Custom card 2
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_GB_CUSTOM2,
        /// <summary>
        /// 
        /// 
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_TEMPORARY_PERSON = 9,
        /// <summary>
        /// 
        /// 
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_INVENTORY_PERSON,
        /// <summary>
        /// 清分主管，
        /// inventory director, 
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_INVENTORY_DIRECTOR,
        /// <summary>
        /// 保卫人员
        /// security guard, 
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_SECURITY_GUARD,
        /// <summary>
        /// 保卫主管
        /// security guard director, 
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_SECURITYGUARD_DIRECTOR,
        /// <summary>
        /// 库管员，
        /// store keeper, 
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_STORE_KEEPER,
        /// <summary>
        /// 库主管，
        /// store director, 
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_STORE_DIRECTOR,
        /// <summary>
        /// 押运人员，
        /// escort person, 
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_ESCORT_PERSON,
        /// <summary>
        /// 维修人员，
        /// repair person, 
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_REPAIR_PERSON,
        /// <summary>
        /// 检查人员，
        /// inspector, 
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_INSPECTOR = 18,
        /// <summary>
        /// 深圳通，
        /// ShenzhenTong, 
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_SHENZHENLINK = 19,
        /// <summary>
        /// 母卡
        /// Mother Card
        /// </summary>
        NET_ACCESSCTLCARD_TYPE_MOTHERCARD = 255,
    }

    // 人脸信息操作类型
    public enum EM_NET_ACCESS_CTL_FACE_SERVICE
    {
        INSERT = 0,                      // 添加, pInbuf = NET_IN_ACCESS_FACE_SERVICE_INSERT , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_INSERT
        GET,                             // 获取, pInbuf = NET_IN_ACCESS_FACE_SERVICE_GET , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_GET
        UPDATE,                          // 更新, pInbuf = NET_IN_ACCESS_FACE_SERVICE_UPDATE , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_UPDATE
        REMOVE,                          // 删除, pInbuf = NET_IN_ACCESS_FACE_SERVICE_REMOVE , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_REMOVE
        CLEAR,                           // 清空, pInbuf = NET_IN_ACCESS_FACE_SERVICE_CLEAR , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_CLEAR
    }

    // 门禁未关事件详细信息
    public struct NET_ALARM_ACCESS_CTL_NOT_CLOSE_INFO
    {
        public uint dwSize;
        public int nDoor;                                  // 门通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDoorName;        // 门禁名称
        public NET_TIME stuTime;                                // 报警事件发生的时间
        public int nAction;                                // 0:开始 1:停止    
        public uint nEventID;                              //事件ID
        public bool bRealUTC;                              // RealUTC 是否有效，bRealUTC 为 TRUE 时，用 RealUTC，否则用 stuTime 字段
        public NET_TIME_EX RealUTC;								// 事件发生的时间（标准UTC）
    }

    // 闯入事件详细信息
    public struct NET_ALARM_ACCESS_CTL_BREAK_IN_INFO
    {
        public uint dwSize;
        public int nDoor;                                  // 门通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDoorName;                           // 门禁名称
        public NET_TIME stuTime;                                // 报警事件发生的时间    
        public uint nEventID;                              // 事件ID
        public EM_BREAK_IN_METHOD emMethod;                                // 闯入方式                               // 事件发生的时间（标准UTC）
        public bool bRealUTC;                              // RealUTC 是否有效，bRealUTC 为 TRUE 时，用 RealUTC，否则用 stuTime 字段
        public NET_TIME_EX RealUTC;								// 事件发生的时间（标准UTC）
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] reserved;                             // 字节对齐
    }

    // 闯入方式
    public enum EM_BREAK_IN_METHOD
    {
        UNKNOWN,                             // 未知
        ILLEGAL,                             // 非法闯入:未授权的时候闯入
        REVERSE,                             // 反向闯入:授权门开后,对面有人进入
    }

    // 反复进入事件详细信息
    public struct NET_ALARM_ACCESS_CTL_REPEAT_ENTER_INFO
    {
        public uint dwSize;
        public int nDoor;                                  // 门通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDoorName;                           // 门禁名称
        public NET_TIME stuTime;                                // 报警事件发生的时间
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;            // 卡号 
        public uint nEventID;                              //事件ID
        /// <summary>
        /// / 用户ID，唯一标识一用户
        /// / User ID, uniquely identifying a user
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUserID;
        /// <summary>
        /// / 门读卡器ID,10进制
        /// / Door card reader ID, base 10
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szReaderID;
    }

    // 胁迫卡刷卡事件详细信息
    public struct NET_ALARM_ACCESS_CTL_DURESS_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 门通道号
        /// Door Channel Number
        /// </summary>
        public int nDoor;
        /// <summary>
        /// 门禁名称
        /// Entrance Guard Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDoorName;
        /// <summary>
        /// 胁迫卡号
        /// Forced Card Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCardNo;
        /// <summary>
        /// 报警事件发生的时间
        /// Alarm Event Triggered Time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 事件ID
        /// event id
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 无线设备序列号
        /// wireless device serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 用户ID
        /// user id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]
        public string szUserID;
        /// <summary>
        /// RealUTC 是否有效，bRealUTC 为 TRUE 时，用 RealUTC，否则用 stuTime 字段
        /// whether RealUTC is valid. when bRealUTC is TRUE, use RealUTC, otherwise use stuTime
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// 事件发生的时间（标准UTC）
        /// event occur time
        /// </summary>
        public NET_TIME_EX RealUTC;
        /// <summary>
        /// 用户ID扩展
        /// user id extension
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUserIDEx;
    }

    /// <summary>
    /// 设备类型
    /// Equipment type
    /// </summary>
    public enum EM_ALARM_CHASSISINTRUDED_DEV_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ALARM_CHASSISINTRUDED_DEV_UNKNOWN,
        /// <summary>
        /// 控制器（如：报警主机）
        /// controller (eg: control panel)
        /// </summary>
        EM_ALARM_CHASSISINTRUDED_DEV_CONTROLLER,
        /// <summary>
        /// RS485扩展报警输入/输出模块
        /// RS485 extended alarm input/output module
        /// </summary>
        EM_ALARM_CHASSISINTRUDED_DEV_RS485EXPANSIONMODULE,
        /// <summary>
        /// MBUS扩展报警输入/输出模块
        /// MBUS extended alarm input/output module
        /// </summary>
        EM_ALARM_CHASSISINTRUDED_DEV_MBUSEXPANSIONMODULE,
        /// <summary>
        /// 键盘
        /// keyboard
        /// </summary>
        EM_ALARM_CHASSISINTRUDED_DEV_KEYBOARD,
        /// <summary>
        /// 警号
        /// siren
        /// </summary>
        EM_ALARM_CHASSISINTRUDED_DEV_SIREN,
    }

    /// <summary>
    /// 防拆报警事件
    /// Tamper Alarm Event
    /// </summary>
    public struct NET_ALARM_CHASSISINTRUDED_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 0:开始 1:停止
        /// 0=Start 1=Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 报警事件发生的时间
        /// Alarm Event Begin Time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 读卡器ID
        /// Reader ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReaderID;
        /// <summary>
        /// 事件ID
        /// event id
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 无线设备序列号
        /// wireless device serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// RealUTC 是否有效，bRealUTC 为 TRUE 时，用 RealUTC，否则用 stuTime 字段
        /// whether RealUTC is valid. when bRealUTC is TRUE, use RealUTC, otherwise use stuTime
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// 事件发生的时间（标准UTC）
        /// Event occur time
        /// </summary>
        public NET_TIME_EX RealUTC;
        /// <summary>
        /// 设备类型
        /// Equipment type
        /// </summary>
        public EM_ALARM_CHASSISINTRUDED_DEV_TYPE emDevType;
    }

    // 事件类型 EVENT_IVS_QSYTRAFFICCARWEIGHT (交通卡口称重事件)对应的数据块描述信息
    public struct NET_DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO
    {
        public NET_CAR_WEIGHT_INFO stCarWeightInfo;            // 称重系统车辆信息
        public NET_DEV_EVENT_TRAFFICJUNCTION_INFO stJunctionInfo;             // 交通卡口信息
    }

    /// <summary>
    /// 称重系统车辆信息
    /// Car weight information
    /// </summary>
    public struct NET_CAR_WEIGHT_INFO
    {
        /// <summary>
        /// / 车轴数
        /// Axle number
        /// </summary>
        public uint nAxleNum;
        /// <summary>
        /// / 最大轴距, 单位是毫米
        /// Max Distance of axle, unit(mm).
        /// </summary>
        public uint nMaxAxleDistance;
        /// <summary>
        /// / 每根车轴的重量, 单位Kg, 第一个元素表示第一个车轴重, 依次类推
        /// Weight of each axle,unit(Kg)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public uint[] nAxleWeightInfo;
        /// <summary>
        /// / 轴与轴的间隔, 单位毫米, 第一个元素表示一二轴间距, 第二个元素表示二三轴间距, 依次类推
        /// The Distance between the alxe, unit(mm)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]
        public uint[] nAxleDistanceInfo;
        /// <summary>
        /// / 超重信息, 单位千克
        /// Over weight info, unit(kg).
        /// </summary>
        public uint nOverWeight;
        /// <summary>
        /// / 总重信息, 单位千克
        /// Total weight info, unit(kg).
        /// </summary>
        public uint nTotalWeight;
        /// <summary>
        /// / 平板称重器提供的轴型信息
        /// Axis type information provided by plate weighing apparatus
        /// </summary>
        public uint nAxisType;
        /// <summary>
        /// / 称重卡口测量上报的速度, 单位km/h
        /// The speed reported by the weighing bayonet, in km/h
        /// </summary>
        public uint nSpeed;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 500)]
        public byte[] byReserved;
    }

    // DH_FILE_QUERY_FACE_DETECTION 对应的目标识别服务查询参数
    public struct NET_MEDIAFILE_FACE_DETECTION_PARAM
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// channel no.
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 起始时间
        /// start time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 结束时间
        /// end time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 图片类型,详见 EM_FACEPIC_TYPE
        /// picture type, see EM_FACEPIC_TYPE
        /// </summary>
        public EM_FACEPIC_TYPE emPicType;
        /// <summary>
        /// 是否有详细信息
        /// if has detailed info
        /// </summary>
        public bool bDetailEnable;
        /// <summary>
        /// 参数详细信息
        /// parameter detailed info
        /// </summary>
        public NET_MEDIAFILE_FACE_DETECTION_DETAIL_PARAM stuDetail;
        /// <summary>
        /// 性别类型
        /// sex
        /// </summary>
        public EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex;
        /// <summary>
        /// 是否指定年龄段
        /// age range is enabled
        /// </summary>
        public bool bAgeEnable;
        /// <summary>
        /// 年龄范围
        /// age range
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] nAgeRange;
        /// <summary>
        /// 目标特征数组有效个数,与 emFeature 结合使用, 如果为0则表示查询所有表情
        /// invalid number in array emEmotion, 0 means all emotion
        /// </summary>
        public int nEmotionValidNum;
        /// <summary>
        /// 目标特征数组,与 byFeatureValidNum 结合使用
        /// human emotion
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE[] emEmotion;
        /// <summary>
        /// 是否戴眼镜
        /// wear glasses info
        /// </summary>
        public EM_FACEDETECT_GLASSES_TYPE emGlasses;
        /// <summary>
        /// 是否带口罩
        /// wear mask info
        /// </summary>
        public EM_MASK_STATE_TYPE emMask;
        /// <summary>
        /// 是否有胡子
        /// beard info
        /// </summary>
        public EM_BEARD_STATE_TYPE emBeard;
        /// <summary>
        /// 0-都查询；1-仅查未开启陌生人模式；2-仅查开启陌生人模式
        /// 0-all;1-Stranger mode unable only;2-Stranger mode enable only
        /// </summary>
        public int nIsStranger;
        /// <summary>
        /// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
        /// TRUE means only deliver stuStartTimeRealUTC and stuEndTimeRealUTC (do not deliver stuStartTime, stuEndTime), FALSE means deliver only stuStartTime, stuEndTime (do not deliver stuStartTimeRealUTC and stuEndTimeRealUTC)
        /// </summary>
        public bool bOnlySupportRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用，与(stuStartTime, stuEndTime)互斥
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC, mutually exclusive with (stuStartTime, stuEndTime)
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用，与(stuStartTime, stuEndTime)互斥
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC, mutually exclusive with (stuStartTime, stuEndTime)
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
        /// <summary>
        /// 通道号数组
        /// list of ChannelID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nChannelIDs;
        /// <summary>
        /// 通道号数组数量
        /// Number of ChannelID
        /// </summary>
        public int nChannelNum;
        /// <summary>
        /// / 是否不下发Glasses字段
        /// UnEnable Support Glasses
        /// </summary>
        public bool bUnEnableSupportGlasses;
    }

    public struct NET_MEDIAFILE_FACE_DETECTION_DETAIL_PARAM
    {
        public uint dwSize;
        public uint dwObjectId;                     // 物体ID
        public uint dwFrameSequence;                // 帧序号
        public NET_TIME_EX stTime;                  // 发生时间
    }

    public enum EM_FACEPIC_TYPE
    {
        UNKOWN,            // 未知类型
        GLOBAL_SENCE,      // 人脸全景大图
        SMALL,             // 人脸小图
    }

    // DH_FILE_QUERY_FACE_DETECTION对应的目标识别服务FINDNEXT查询返回参数
    public struct NET_MEDIAFILE_FACE_DETECTION_INFO
    {
        public uint dwSize;                                     // 结构体大小

        public uint ch;                                         // 通道号
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFilePath;                            // 文件路径
        public uint size;                                       // 文件长度,该字段废弃，请使用sizeEx
        public NET_TIME starttime;                                  // 开始时间
        public NET_TIME endtime;                                    // 结束时间
        public uint nWorkDirSN;                                 // 工作目录编号                                    
        public byte nFileType;                                  // 文件类型  1：jpg图片
        public byte bHint;                                      // 文件定位索引
        public byte bDriveNo;                                   // 磁盘号
        public byte byPictureType;                              // 图片类型, 0-普通, 1-合成, 2-抠图
        public uint nCluster;                                   // 簇号

        public EM_FACEPIC_TYPE emPicType;                                  // 图片类型,详见 EM_FACEPIC_TYPE
        public uint dwObjectId;                                 // 物体ID
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public uint[] dwFrameSequence; // 帧序号,数组有2个元素时,第一个表示小图,第二个表示大图
        public int nFrameSequenceNum;                          // 帧序号个数 
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_TIME_EX[] stTimes;             // 发生时间,数组有2个元素时,第一个表示小图,第二个表示大图
        public int nTimeStampNum;
        public int nPicIndex;                                  // 表示在簇中的图片序号
                                                               // 对于同一个簇中打包多张图片,提供索引方式定位图片
        public EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex;                         // 性别类型
        public int nAge;                                       // 年龄
        public EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion;              // 人脸表情
        public EM_FACEDETECT_GLASSES_TYPE emGlasses;                          // 否戴眼镜
        public Int64 sizeEx;                                     // 文件长度扩展，支持文件长度大于4G，单位字节
        public EM_MASK_STATE_TYPE emMask;                             // 是否带口罩
        public EM_BEARD_STATE_TYPE emBeard;                            // 是否有胡子
        /// <summary>
        /// Reserved
        /// 保留字节,留待扩展.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        public EM_EYE_STATE_TYPE emEye;                              // 眼睛状态
        public EM_MOUTH_STATE_TYPE emMouth;                            // 嘴巴状态
        public int nAttractive;                        // 魅力值
        public int nIsStranger;                        // 0-未知；1-未开启陌生人模式；2-开启了陌生人模式
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFaceObjectUrl;               // 当 emPicType 为 NET_FACEPIC_TYPE_GLOBAL_SENCE 时, 代表人脸小图路径
        public NET_EULER_ANGLE stuFaceCaptureAngle;                // 人脸在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角
                                                                   // 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效
        public uint nFaceQuality;                       // 人脸抓拍质量分数
        public NET_FACEDETECT_IMAGE_INFO stuSceneImage;                      // 大图信息
        public NET_POINT stuFaceCenter;                      // 人脸型心(不是包围盒中心), 0-8191相对坐标, 相对于小图
        /// <summary>
        /// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
        /// TRUE means only deliver stuStartTimeRealUTC and stuEndTimeRealUTC (do not deliver stuStartTime, stuEndTime), FALSE means deliver only stuStartTime, stuEndTime (do not deliver stuStartTimeRealUTC and stuEndTimeRealUTC)
        /// </summary>
        public bool bOnlySupportRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用，与(stuStartTime, stuEndTime)互斥
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC, mutually exclusive with (stuStartTime, stuEndTime)
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用，与(stuStartTime, stuEndTime)互斥
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC, mutually exclusive with (stuStartTime, stuEndTime)
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
        /// <summary>
		/// 离线补传字段，唯一标识一个事件
        /// EventUUID String
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szEventUUIDStr;
    }

    // 目标检测记录大图信息
    public struct NET_FACEDETECT_IMAGE_INFO
    {
        public uint nLength;                // 文件大小
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;        // 文件路径
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;        // 保留字段
    }

    /// <summary>
    /// 继电器状态 
    /// </summary>
    public enum EM_RELAY_STATE_TYPE
    {
        /// <summary>
        /// 未知
        /// </summary>
	    EM_RELAY_STATE_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 关
        /// </summary>
	    EM_RELAY_STATE_TYPE_CLOSE,
        /// <summary>
        /// 开
        /// </summary>
	    EM_RELAY_STATE_TYPE_OPEN
    }

    //////////////////////// 水位报警 /////////////////////////

    /// <summary>
    /// 事件类型 ALARM_WATER_LEVEL_DETECTION (水位检测事件)
    /// </summary>
    public struct ALARM_WATER_LEVEL_DETECTION_INFO
    {
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// </summary>
	    public int nAction;
        /// <summary>
        /// 预留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] reserved1;
        /// <summary>
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// </summary>
	    public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// </summary>
	    public NET_TIME_EX UTC;
        /// <summary>
        /// 通道号
        /// </summary>
	    public int nChannel;
        /// <summary>
        /// 事件ID
        /// </summary>
	    public int nEventID;
        /// <summary>
        /// 预置点ID
        /// </summary>
	    public int nPresetID;
        /// <summary>
        /// 预置点名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 智能物体全局唯一物体标识
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szObjectUUID;
        /// <summary>
        /// 事件数据类型
        /// </summary>
	    public NET_EM_EVENT_DATA_TYPE emEventType;
        /// <summary>
        /// 水位状态
        /// </summary>
	    public NET_EM_WATER_LEVEL_STATUS emStatus;
        /// <summary>
        /// 水位尺
        /// </summary>
	    public NET_WATER_RULER stuWaterRuler;
        /// <summary>
        /// 预留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件数据类型
    /// </summary>
    public enum NET_EM_EVENT_DATA_TYPE
    {
        /// <summary>
        /// 未知
        /// </summary>
	    NET_EN_EVENT_DATA_TYPE_UNKNOWN,
        /// <summary>
        /// 实时数据
        /// </summary>
	    NET_EN_EVENT_DATA_TYPE_REAL,
        /// <summary>
        /// 报警数据
        /// </summary>
	    NET_EN_EVENT_DATA_TYPE_ALARM
    }

    /// <summary>
    /// 水位状态
    /// </summary>
    public enum NET_EM_WATER_LEVEL_STATUS
    {
        /// <summary>
        /// 未知
        /// </summary>
	    NET_EM_WATER_LEVEL_STATUS_UNKNOWN,
        /// <summary>
        /// 水位正常
        /// </summary>
	    NET_EM_WATER_LEVEL_STATUS_NORMAL,
        /// <summary>
        /// 水位高于上限阈值
        /// </summary>
	    NET_EM_WATER_LEVEL_STATUS_HIGH,
        /// <summary>
        /// 水位低于上限阈值
        /// </summary>
	    NET_EM_WATER_LEVEL_STATUS_LOW
    }

    /// <summary>
    /// 水位尺
    /// </summary>
    public struct NET_WATER_RULER
    {
        /// <summary>
        /// 水位尺颜色
        /// </summary>
	    public NET_EM_WATER_RULER_COLOR emRulerColor;
        /// <summary>
        /// 水位尺编号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRulerNum;
        /// <summary>
        /// 水位值（对于有拼接的情况，该值为标定的基准值加上当前刻度值，单位：米）
        /// </summary>
	    public float fWaterLevel;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 水位尺颜色
    /// </summary>
    public enum NET_EM_WATER_RULER_COLOR
    {
        /// <summary>
        /// 无法识别
        /// </summary>
	    NET_EM_WATER_RULER_COLOR_UNKNOW,
        /// <summary>
        /// 蓝色
        /// </summary>
	    NET_EM_WATER_RULER_COLOR_BLUE,
        /// <summary>
        /// 红色
        /// </summary>
	    NET_EM_WATER_RULER_COLOR_RED
    }

    // 批量获取多用户多个人脸输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_GET)
    public struct NET_IN_ACCESS_FACE_SERVICE_GET
    {
        public uint dwSize;                                             // 结构体大小
        public int nUserNum;                                           // 用户ID数量,最大100
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_IN_ACCESS_FACE_SERVICE_UserID[] szUserID;      // 用户ID
        /// <summary>
        /// 用户ID扩展，当前只支持32位有效值下发
        /// User ID extension, currently only 32-bit valid values are supported
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100 * 128)]
        public string szUserIDEx;
        /// <summary>
        /// szUserIDEx 是否有效，为TRUE时，使用szUserIDEx字段
        /// Whether szUserIDEx is valid. If true, use the szUserIDEx field
        /// </summary>
        public bool bUserIDEx;
    }

    // NET_EM_ACCESS_CTL_FACE_SERVICE_GET结构体中szUserID的扩展
    public struct NET_IN_ACCESS_FACE_SERVICE_UserID
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string userID;      // 用户ID
    }

    // 批量获取多用户多个人脸输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_GET)
    public struct NET_OUT_ACCESS_FACE_SERVICE_GET
    {
        public uint dwSize;                                             // 结构体大小
        public int nMaxRetNum;                                          // 最大返回数量,不小于 NET_IN_ACCESS_FACE_SERVICE_GET 中的 nUserNum
        public IntPtr pFaceInfo;                                        // 人脸数据,用户分配内存,返回个数同NET_IN_ACCESS_FACE_SERVICE_GET中的nUserNum,只返回人脸模版数据
        public IntPtr pFailCode;                                        // 用户分配内存,获取失败时,对应获取的每一项的结果,返回个数同NET_IN_ACCESS_FACE_SERVICE_GET中的nUserNum
    }

    /// <summary>
    /// 目标信息
    /// info
    /// </summary>
    public struct NET_ACCESS_FACE_INFO
    {
        /// <summary>
        /// 用户ID
        /// user ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// 模板数据个数,最大20
        /// count of data,the max number is 20
        /// </summary>
        public int nFaceData;
        /// <summary>
        /// 模板数据
        /// data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20 * 2048)]
        public byte[] szFaceData;
        /// <summary>
        /// 模版数据大小
        /// data length
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public int[] nFaceDataLen;
        /// <summary>
        /// 照片个数,不超过5个
        /// count of photo,max size: 5
        /// </summary>
        public int nFacePhoto;
        /// <summary>
        /// 用户申请的每张图片的大小
        /// the size of each photo used by the user
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public int[] nInFacePhotoLen;
        /// <summary>
        /// 每张图片实际的大小
        /// the actual size of each photo
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public int[] nOutFacePhotoLen;
        /// <summary>
        /// 照片数据,大小不超过200K
        /// photo data,max size: 120K
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public IntPtr[] pFacePhoto;
        /// <summary>
        /// 是否使用扩展模板数据
        /// Whether to use extended template data
        /// </summary>
        public bool bFaceDataExEnable;
        /// <summary>
        /// 用户申请的扩展模板数据大小
        /// Data size of the extended template requested by the user
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public int[] nMaxFaceDataLen;
        /// <summary>
        /// 实际模板数据大小
        /// Actual template data size
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public int[] nRetFaceDataLen;
        /// <summary>
        /// 模板数据扩展字段 当bFaceDataExEnable有效时，建议使用扩展字段pFaceDataEx
        /// template data extension field,When bFaceDataExEnable is valid, it is recommended to use the extension field pFaceDataEx
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public IntPtr[] pFaceDataEx;
        /// <summary>
        /// 信息更新时间,UTC时间
        /// Info UpdateTime,UTC time
        /// </summary>
        public NET_TIME stuUpdateTime;
        /// <summary>
        /// 用户ID扩展，当前只支持32位有效值下发
        /// User ID extension, currently only 32-bit valid values are supported
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserIDEx;
        /// <summary>
        /// szUserIDEx 是否有效，为TRUE时，使用szUserIDEx字段
        /// Whether szUserIDEx is valid. If true, use the szUserIDEx field
        /// </summary>
        public bool bUserIDEx;
        /// <summary>
        /// 特征值个数
        /// The number of Eigen Data
        /// </summary>
        public int nEigenData;
        /// <summary>
        /// 用户申请的每个目标特征值大小
        /// The size of each Eigen Data applied by the user
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public int[] nInEigenDataLen;
        /// <summary>
        /// 每个特征值实际的大小
        /// The actual size of each Eigen Data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public int[] nOutEigenDataLen;
        /// <summary>
        /// 特征值, 大小不超过2048
        /// Facial Eigen Data, the size does not exceed 2048
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public IntPtr[] pEigenData;
        /// <summary>
        /// 保留字节
        /// reserve
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1600 - 8 * 5)]
        public byte[] byReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1600 - 4 * 5)]
        public byte[] byReserved;
#endif
    }

    // 添加人脸记录信息输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_INSERT)
    public struct NET_IN_ACCESS_FACE_SERVICE_INSERT
    {
        public uint dwSize;                                            // 结构体大小
        public int nFaceInfoNum;                                       // 人脸信息数量
        public IntPtr pFaceInfo;                                       // 人脸数据,用户自行分配数据
    }

    /// <summary>
    /// 添加记录信息输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_INSERT)
    /// the output param of adding data(NET_EM_ACCESS_CTL_FACE_SERVICE_INSERT)
    /// </summary>
    public struct NET_OUT_ACCESS_FACE_SERVICE_INSERT
    {
        /// <summary>
        /// / 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 最大返回数量,不小于 NET_IN_ACCESS_FACE_SERVICE_INSERT 中的nFaceInfoNum
        /// the max return number,not less than nInfoNum in NET_IN_ACCESS_FACE_SERVICE_INSERT
        /// </summary>
        public int nMaxRetNum;
        /// <summary>
        /// / 用户分配内存,添加失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_FACE_SERVICE_INSERT中的nFaceInfoNum
        /// user allocates memory.when insert failed,the result of each item inserted,count is nFaceInfoNum in NET_IN_ACCESS_FACE_SERVICE_INSERT
        /// </summary>
        public IntPtr pFailCode;
        /// <summary>
        /// / 错误详情
        /// Error details
        /// </summary>
        public NET_ERROR_DETAIL stuDetail;
    }

    // 更新多用户多个人脸记录信息输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_UPDATE)
    public struct NET_IN_ACCESS_FACE_SERVICE_UPDATE
    {
        public uint dwSize;                                             // 结构体大小
        public int nFaceInfoNum;                                       // 人脸信息数量
        public IntPtr pFaceInfo;                                            // 人脸数据,用户分配内存
    }

    /// <summary>
    /// 更新多用户多个记录信息输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_UPDATE)
    /// the output param to update data(NET_EM_ACCESS_CTL_FACE_SERVICE_UPDATE)
    /// </summary>
    public struct NET_OUT_ACCESS_FACE_SERVICE_UPDATE
    {
        /// <summary>
        /// / 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 最大返回数量,不小于 NET_IN_ACCESS_FACE_SERVICE_UPDATE中的nFaceInfoNum
        /// the max return number,not less than nFaceInfoNum in NET_IN_ACCESS_FACE_SERVICE_UPDATE
        /// </summary>
        public int nMaxRetNum;
        /// <summary>
        /// / 用户分配内存.更新失败时,对应更新的每一项的结果,返回个数同NET_IN_ACCESS_FACE_SERVICE_UPDATE中的nFaceInfoNum
        /// user allocates memory.when update failed,the result of each item updated,count is nFaceInfoNum in NET_IN_ACCESS_FACE_SERVICE_UPDATE
        /// </summary>
        public IntPtr pFailCode;
        /// <summary>
        /// / 错误详情
        /// Error details
        /// </summary>
        public NET_ERROR_DETAIL stuDetail;
    }

    // 删除多用户的多个人脸信息输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_REMOVE)
    public struct NET_IN_ACCESS_FACE_SERVICE_REMOVE
    {
        public uint dwSize;                                             // 结构体大小
        public int nUserNum;                                           // 用户ID数量,最大100
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_IN_ACCESS_FACE_SERVICE_UserID[] szUserID;      // 用户ID
        /// <summary>
        /// 用户ID扩展，当前只支持32位有效值下发
        /// User ID extension, currently only 32-bit valid values are supported
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100 * 128)]
        public string szUserIDEx;
        /// <summary>
        /// szUserIDEx 是否有效，为TRUE时，使用szUserIDEx字段
        /// Whether szUserIDEx is valid. If true, use the szUserIDEx field
        /// </summary>
        public bool bUserIDEx;
    }

    // 删除多用户的多个人脸信息输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_REMOVE)
    public struct NET_OUT_ACCESS_FACE_SERVICE_REMOVE
    {
        public uint dwSize;                                             // 结构体大小
        public int nMaxRetNum;                                         // 最大返回数量,不小于 NET_IN_ACCESS_FACE_SERVICE_REMOVE中的nUserNum
        public IntPtr pFailCode;                                          // 用户分配内存.删除失败时,对应删除的每一项的结果,返回个数同NET_IN_ACCESS_FACE_SERVICE_REMOVE中的nUserNum
    }

    // 清空所有人脸记录信息输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_CLEAR)
    public struct NET_IN_ACCESS_FACE_SERVICE_CLEAR
    {
        public uint dwSize;                                             // 结构体大小
    }

    // 清空所有人脸记录信息输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_CLEAR)
    public struct NET_OUT_ACCESS_FACE_SERVICE_CLEAR
    {
        public uint dwSize;                                             // 结构体大小
    }

    //门禁报警记录集,查询条件结构体
    public struct NET_FIND_NET_RECORD_ACCESS_ALARMRECORD_INFO_CONDITION
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// user ID
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserID;
        /// <summary>
        /// Start time 
        /// 起始时间
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// End time 
        /// 结束时间
        /// </summary>
        public NET_TIME stEndTime;
        /// <summary>
        /// 事件发生的时间范围，真实UTC时间戳，与stStartTime，stEndTime这两个字段的查询时间段互斥
        /// The time range of the event (real UTC time) is mutually exclusive with the query time range of stStartTime and stEndTime
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public uint[] nCreateTimeRealUTC;
        /// <summary>
        /// 是否使用nCreateTimeRealUTC时间，设置为TRUE则stStartTime，stEndTime无效
        /// Is using stuCreateTimeRealUTC
        /// </summary>
        public bool bIsUsingCreateTimeRealUTC;
        /// <summary>
        /// 字节对齐
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 44)]
        public string szReserved;
    }

    // 门禁记录集开门方式
    public enum EM_RECORD_ACCESS_ALARM_OPEN_METHOD
    {
        UNKNOWN,                         // 未知
        PWD,                             // 密码方式
        FINGERPRINT,                     // 方式
        CARD,                            // 卡方式
    }

    // 门禁报警记录集信息
    public struct NET_RECORD_ACCESS_ALARMRECORD_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Record Number,Read-Only
        /// 记录集编号,只读
        /// </summary>
        public int nRecNo;
        /// <summary>
        /// user ID
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserID;
        /// <summary>
        /// alarm type
        /// 报警类型
        /// </summary>
        public EM_RECORD_ACCESS_ALARM_TYPE emAlarmType;
        /// <summary>
        /// 分控器ID,0 表示集中控制器或者直连设备本身 大于0 表示分控制器
        /// </summary>
        public int nDevAddress;
        /// <summary>
        /// 通道号
        /// </summary>
        public int nChannel;
        public EM_RECORD_ACCESS_ALARM_OPEN_METHOD emAlarmOpenMethod;				 // 开门方式,当EventCode为 MaliciousAccessControl恶意开门事件时有效.
        /// <summary>
        /// 事件发生的时间
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 门读卡器ID
        /// ReaderID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReaderID;
        /// <summary>
        /// 事件发生的时间，真实UTC时间
        /// Time when the event occurred, the real UTC time
        /// </summary>
        public NET_TIME_EX stuCreateTimeRealUTC;
    }

    // 报警类型
    public enum EM_RECORD_ACCESS_ALARM_TYPE
    {
        UNKNOWN,                                // 未知
        DOOR_NOTCLOSE,                          // 门未关
        BREAK_IN,                               // 闯入
        REPEAT_ENTER,                           // 反潜
        DURESS,                                 // 胁迫
        ALARMLOCAL,                             // 本地
        CHASSIS_INTRUDED,                       // 防拆
        MALICIOUS,                              // 恶意开门
        BLACKLIST,                              // 禁止名单
    }

    // 门禁刷卡时间段，对此配置，通道号实际表示配置索引
    public struct NET_CFG_ACCESS_TIMESCHEDULE_INFO
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 28)]
        public NET_CFG_TIME_SECTION[] stuTime;  // 刷卡时间段
        public bool bEnable;                    // 时间段使能开关
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName; // 自定义名称
        /// <summary>
        /// 每个时间段可消费的次数
        /// 第一维：前7个元素代表每周7天，第8个元素对应节假日
        /// 7个元素中第一个是星期日，第二个是星期一，以此类推
        /// 第二维：每天最多6个时间段
        /// （设备只支持7*4，数组大小和stuTime保持一致）
        /// The number of times that can be consumed in each time period
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 4)]
        public int[] nTimeScheduleConsumptionTimes;
        /// <summary>
        /// 消费策略的个数
        /// the number of consumption strategies
        /// </summary>
        public int nConsumptionStrategyNums;
        /// <summary>
        /// 消费策略,每天最多6个时间段，每6个元素对应一天, 一共7天。
        /// 每个时段格式为"星期 时:分:秒-时:分:秒 消费类型 可消费次数 可消费金额"
        /// 星期从0开始，表示周日，前6个时段前面都是0，表示周日的6个时段，剩下依次周一，周二... 一共42个时段。
        /// 消费类型包括：0为定额消费，1为非定额消费；可消费次数最大上限200次；可消费金额最高999900，也就是9999元
        /// Consumption strategy, up to 6 time periods per day, each 6 elements correspond to one day, a total of 7 days.
        /// The format of each time period is "week hour: minute: second-hour: minute: second consumption type, number of times that can be consumed, amount of consumption"
        /// The week starts from 0, which means Sunday. The first 6 time periods are all with 0, which means the 6 time periods of Sunday, and the rest are Monday, Tuesday... a total of 42 time periods.
        /// Consumption types include: 0 is fixed consumption, 1 is non-fixed consumption; the maximum number of consumptions can be up to 200 times; the maximum consumption amount is 99,900, which is 9,999 yuan
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 42 * 34)]
        public string szConsumptionStrategy;
        /// <summary>
        /// 是否使用stuTimeEx,为TRUE时stuTime字段无效,仅下发时使用,获取时stuTime与stuTimeEx均有效
        /// Whether to use stuTimeEx. If TRUE, the stuTime field is invalid. It is used only when delivering
        /// </summary>
        public bool bIsTimeExValid;
        /// <summary>
        /// 刷卡时间段（拓展）
        /// Credit card period (expansion)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 6)]
        public NET_CFG_TIME_SECTION[] stuTimeEx;
        /// <summary>
        /// 预留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }


    // 门禁假日计划配置
    public struct NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO
    {
        public uint dwSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSchduleName;// 假日计划名称
        public bool bSchdule;                           // 假日计划使能
        public int nGroupNo;                           // NET_EM_CFG_ACCESSCTL_SPECIALDAY_GROUP 配置的下标
        public int nTimeSection;                       // 一天的时间段个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_TSECT[] stuTimeSection;   // 时间段
        public int nDoorNum;                           // 有效的门数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public int[] nDoors;   // 生效的门通道号 
    }

    // Multi-people group unlock method
    public enum EM_CFG_OPEN_DOOR_GROUP_METHOD
    {
        UNKNOWN = 0,
        CARD,                         // Swipe card 刷卡
        PWD,                          // Password 密码
        FINGERPRINT,                  // 
        ANY,                          // Any method（Not support） 任意组合方式开门
        FACE,                         // face 人脸
    }

    // Multi-group unlock detail info 
    public struct NET_CFG_OPEN_DOOR_GROUP_DETAIL
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;  // UserID
        public EM_CFG_OPEN_DOOR_GROUP_METHOD emMethod;                       // Unlock method
        public int nMethodExNum;                        // 开门方式扩展个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public EM_CFG_OPEN_DOOR_GROUP_METHOD[] emMethodEx;    // 开门方式扩展
        /// <summary>
        /// / 多人开门支持任意组合开门方式
        /// / Multi person door opening supports any combination of door opening methods
        /// </summary>
        public EM_CFG_DOOR_OPEN_METHOD emCombineMethod;
        /// <summary>
        /// / 预留字段
        /// / Reserved fields
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    // Multi-people group unlock group info 
    public struct NET_CFG_OPEN_DOOR_GROUP
    {
        /// <summary>
        /// 用户数目，表示需要组合才能开门的人数
        /// User quantity,means people needed to unlock
        /// </summary>
        public int nUserCount;
        /// <summary>
        /// 有效组数目
        /// Valid group number
        /// </summary>
        public int nGroupNum;
        /// <summary>
        /// 多人组合开门组的详细信息
        /// Multi-people group unlock group detail info 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_CFG_OPEN_DOOR_GROUP_DETAIL[] stuGroupDetail;
        /// <summary>
        /// 
        /// </summary>
        public bool bGroupDetailEx;                     // TRUE: stuGroupDetail 字段无效、pstuGroupDetailEx字段有效, FALSE: stuGroupDetail 字段有效、pstuGroupDetailEx字段无效
        public int nMaxGroupDetailNum;                  // 多人组合开门组的详细信息最大个数
        public IntPtr pstuGroupDetailEx;              /* 多人组合开门组的详细信息扩展, 由用户申请内存, 大小为sizeof(CFG_OPEN_DOOR_GROUP_DETAIL)*nMaxUserCount, 
                                                                    当多人组合开门组的详细信息个数大于 CFG_MAX_OPEN_DOOR_GROUP_DETAIL_NUM 时使用此字段 */
    }

    /// <summary>
    /// 多人多开门方式组合(对应 CFG_CMD_OPEN_DOOR_GROUP 命令),表示每个通道的组合信息，
    /// 第一个通道的组合的开门优先级最高，后面依次递减
    /// Multi-people unlock method group(corresponding to CFG_CMD_OPEN_DOOR_GROUP command), means each channel group info ,
    /// Each channel group unlock priority is the highest, decending one by one
    /// </summary>
    public struct NET_CFG_OPEN_DOOR_GROUP_INFO
    {
        /// <summary>
        /// 有效组合数
        /// Valid group number
        /// </summary>
        public int nGroup;
        /// <summary>
        /// 多人开门组合信息
        /// Multi-people unlock group info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_CFG_OPEN_DOOR_GROUP[] stuGroupInfo;
        /// <summary>
        /// 组合总数，指明pGroupInfoEx实际内存空间大小，获取和下发均需要用户赋值,非0时nGroup、stuGroupInfo字段不生效
        /// The total number of combinations, indicating the actual memory space size of pGroupInfoEx. User assignments are required for both retrieval and issuance, and the nGroup and stuGroupInfo fields are not effective when they are not 0
        /// </summary>
        public int nGroupMaxNum;
        /// <summary>
        /// 实际有效的组合数，获取时由动态库赋值，下发时由用户赋值
        /// The actual effective number of combinations is assigned by the dynamic library when obtained, and by the user when issued
        /// </summary>
        public int nGroupRetNum;
        /// <summary>
        /// 多人开门组合信息扩展，内存有用户申请
        /// Multi person door opening combination information expansion, with user requests in memory
        /// </summary>
        public IntPtr pGroupInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2048)]
        public string szReserved;
    }

    /// <summary>
    /// 门磁类型
    /// Sensor Type
    /// </summary>
    public enum EM_ACCESS_SENSOR_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_ACCESS_SENSOR_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 常开
        /// Normally open door sensor
        /// </summary>
        EM_ACCESS_SENSOR_TYPE_NO,
        /// <summary>
        /// 常闭
        /// Normally closed door sensor
        /// </summary>
        EM_ACCESS_SENSOR_TYPE_NC,
    }

    /// <summary>
    /// 门禁的AB互锁的组
    /// Extended information of AB interlock for access control
    /// </summary>
    public struct NET_CFG_ABLOCK_DOOR_INFO_EX
    {
        /// <summary>
        /// / 有效互锁门的个数
        /// / The number of effective interlocking doors
        /// </summary>
        public int nDoorCount;
        /// <summary>
        /// / 互锁的门的通道号
        /// / The channel number of the interlocked door
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public uint[] nDoor;
        /// <summary>
        /// / 预留字节
        /// / Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 68)]
        public string szReserved;
    }

    /// <summary>
    /// 门禁的AB互锁功能, 多个门通道，只有其他B通道都关闭，唯一的A通道才打开
    /// Extension information of AB interlock function for access control
    /// </summary>
    public struct NET_CFG_ABLOCK_INFO_EX
    {
        /// <summary>
        /// / 使能
        /// / enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 有效互锁组数
        /// / Number of effective interlocking groups
        /// </summary>
        public int nDoorsCount;
        /// <summary>
        /// / 互锁组信息
        /// / Interlock group information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CFG_ABLOCK_DOOR_INFO_EX[] stuDoors;
        /// <summary>
        /// / 预留字节
        /// / Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szReserved;
    }

    // 门禁基本配置
    public struct NET_CFG_ACCESS_GENERAL_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szOpenDoorAudioPath;   // 开门音频文件路径
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szCloseDoorAudioPath;  // 关门音频文件路径
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szInUsedAuidoPath;     // 有人音频文件路径
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPauseUsedAudioPath;  // 暂停使用音频文件路径 
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szNotClosedAudioPath;  // 门未关音频文件路径
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szWaitingAudioPath;    // 等待提示音频文件路径

        public int nUnlockReloadTime;                      // 开锁命令响应间隔时间,单位秒，取值10、15(默认值)、20
        public int nUnlockHoldTime;                        // 开锁输出保持时间,单位秒，取值1、2(默认)、3、4、5、6、9、15。 

        // 能力
        public byte abProjectPassword;
        public byte abAccessProperty;
        public byte abABLockInfo;
        public byte byReserved;

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProjectPassword;   // 工程密码

        public EM_CFG_ACCESS_PROPERTY_TYPE emAccessProperty;                  // 门禁通道单双向配置
        public NET_CFG_ABLOCK_INFO stuABLockInfo;                          // AB互锁信息
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDuressPassword;        // 胁迫密码
        public bool bDuressEnable;                         // 胁迫使能
        public bool bCustomPasswordEnable;                // 是否启用个性化密码
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCommonPassword; // 公共密码
        public uint nPeakTimeSection;                   // 梯控高峰时间段, 值为CFG_ACCESS_TIMESCHEDULE_INFO配置的数组下标
        public bool bPeakState;                         // 是否为梯控高峰期, TRUE:高峰期, FALSE:平峰期
        public uint nRemoteAuthTimeOut;                 // 远程校验超时时间,单位:秒, 默认值:5秒，范围[1-15]
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] arrFloorPermission;                // 楼层权限信息，每一个bit对应一个楼层，bit值1表示公共层，0表示权限楼层	
        public int nFloorPermission;                   // arrFloorPermission 数组个数
        public NET_CFG_ACCESS_CONTROL_ASG stuAccessControlASG;             // 门通道控制闸机参数
        public NET_CFG_ACCESS_VOICE stuAccessVoice;                        // 门禁开门提示音
        /// <summary>
        /// 门磁类型
        /// SensorType
        /// </summary>
        public EM_ACCESS_SENSOR_TYPE emSensorType;
        /// <summary>
        /// 负楼层偏移：0~15
        /// Negative floor offset: 0~15
        /// </summary>
        public uint nFloorOffset;
        /// <summary>
        /// 开门按钮使能
        /// Button exit enable
        /// </summary>
        public bool bButtonExitEnable;
        /// <summary>
        /// 是否启用个性化开门方式
        /// Enable personalized door opening method
        /// </summary>
        public bool bCustomMethodEnable;
        /// <summary>
        /// -1:未知
        /// 0: 只允许密码开锁
        /// 1: 只允许刷卡开锁
        /// 2: 密码或刷卡开锁
        /// 3: 先刷卡后密码开锁
        /// 4: 先密码后刷卡开锁。
        /// 5: 只允许信息开锁
        /// 6: 密码或刷卡或信息开锁
        /// 7: 密码+刷卡+信息组合开锁
        /// 8: 密码+信息组合开锁
        /// 9: 刷卡+信息组合开锁
        /// -1: Unknown
        /// 0: Only password unlock allowed
        /// 1: Only allow card swiping to unlock
        /// 2: Password or swipe card to unlock
        /// 3: Swipe card first, then unlock with password
        /// 4: Password first, then swipe card to unlock.
        /// 5: Only fgerprint unlocking allowed
        /// 6: Password or swipe card or fgerprint to unlock
        /// 7: Password+swipe card+fgerprint combination unlock
        /// 8: Password+fgerprint combination unlocking
        /// 9: Card swiping+fgerprint combination unlocking
        /// </summary>
        public int nMethod;
        /// <summary>
        /// 闭锁前是否检测门磁信号
        /// Is the door magnetic signal detected before locking
        /// </summary>
        public bool bCheckSensorBeforeLock;
        /// <summary>
        /// 开锁记录是否上传
        /// Is the unlocking record uploaded
        /// </summary>
        public bool bUnlockRecordUpload;
        /// <summary>
        /// 门磁检测时间
        /// Door magnetic detection time
        /// </summary>
        public uint nCheckSensorTime;
        /// <summary>
        /// 发卡密码
        /// Send card password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSendCardPassword;
        /// <summary>
        /// 录像使能
        /// Record enable
        /// </summary>
        public bool bRecordEnable;
        /// <summary>
        /// 呼梯使能
        /// CallLiftEnable
        /// </summary>
        public bool bCallLiftEnable;
        /// <summary>
        /// 呼梯的协议类型
        /// CallLiftType
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCallLiftType;
        /// <summary>
        /// 抓图上传使能
        /// Snap upload enable
        /// </summary>
        public bool bSnapshotUpload;
        /// <summary>
        /// 呼叫自动抓拍使能
        /// Call automatic capture enable
        /// </summary>
        public bool bAutoSnapshot;
        /// <summary>
        /// Dtmf 开门命令
        /// Dtmf OpenDoor command
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szOpenDoorCommand;
        /// <summary>
        /// Dtmf 第二个开门命令
        /// Dtmf opendoor second command
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szOpenDoorSecondCommand;
        /// <summary>
        /// 门禁协议 0:未知 1 :本机开关量控制 2:门禁协议(串口协议) 3:门禁udp开锁 4:私有串口
        /// Access control protocol 0: Unknown 1: Local switch control 2: Access control protocol (serial port protocol) 3: Access control udp unlocking 4: Private serial port
        /// </summary>
        public int nAccessProtocol;
        /// <summary>
        /// 0:未知 1 :开本地锁 2:485外接的锁
        /// 0: Unknown 1: Unlock local lock 2:485 lock
        /// </summary>
        public int nAccessProtocolSecond;
        /// <summary>
        /// 门禁控制器下的子通道nAccessProtocol为2有效
        /// The sub channel nAccessProtocol under the access control controller is valid for 2
        /// </summary>
        public uint nEntranceLockChannel;
        /// <summary>
        /// 开锁方式数量
        /// Number of Unlock record type
        /// </summary>
        public int nUnlockRecordTypeNum;
        /// <summary>
        /// 开锁方式 0：未知 1:Password 2:Button 3:FgerPrint 4:QRCode 5:Card 6:Remote 7:BlueTooth 8:Fce 9:DTMF 10:QRCodeEx 11:CustomPassword
        /// Unlock record type 0:unknow 1:Password 2:Button 3:FgerPrint 4:QRCode 5:Card 6:Remote 7:BlueTooth 8:Fce 9:DTMF 10:QRCodeEx 11:CustomPassword
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nUnlockRecordType;
        /// <summary>
        /// 密钥数组
        /// keys
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2 * 32)]
        public string szICKeyValue;
        /// <summary>
        /// 密钥数量
        /// Number of keys
        /// </summary>
        public int nICKeyValueNum;
        /// <summary>
        /// 检验IC卡密码功能使能
        /// Verify that the IC card password function is enabled
        /// </summary>
        public bool bICKeyEnable;
        /// <summary>
        /// / 控制是否使用AB互锁信息扩展
        /// / Control whether to use AB interlock information extension
        /// </summary>
        public bool bABLockInfo;
        /// <summary>
        /// / AB互锁信息扩展,由用户申请内存,大小为sizeof(CFG_ABLOCK_INFO_EX)
        /// / AB interlock information extension，User requested memory, with a size of (CFG-ABLOCK-INFO-EX)
        /// </summary>
        public IntPtr pstuABLockInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 696 - 8)]
        public sbyte[] szReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 696 - 4)]
        public sbyte[] szReserved;
#endif
    }

    // 门禁单双向配置类型
    public enum EM_CFG_ACCESS_PROPERTY_TYPE
    {
        UNKNOWN = 0,
        BIDIRECT,       // 双向门禁
        UNIDIRECT,      // 单向门禁
    }

    // 门禁的AB互锁功能, 多个门通道，只有其他B通道都关闭，唯一的A通道才打开
    public struct NET_CFG_ABLOCK_INFO
    {
        public bool bEnable;                                // 使能
        public int nDoors;                                 // 有效互锁组数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CFG_ABLOCK_DOOR_INFO[] stuDoors;    // 互锁组信息
    }

    // 门禁的AB互锁的组
    public struct NET_CFG_ABLOCK_DOOR_INFO
    {
        public int nDoor;                                  // 有效互锁门的个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public int[] anDoor;       // 互锁的门的通道号
    }

    // 门通道控制闸机参数
    public struct NET_CFG_ACCESS_CONTROL_ASG
    {
        public EM_PASS_MODE emPassMode;                              // 通行模式
        public uint nOpenDoorSpeed;                          // 开门速度档位, 范围:0-7, 对应1-8档
        public uint nPassTimeOut;                            // 通行超时时间, 范围:2-60, 单位：秒
        public uint nCloseDelayTime;                         // 延时关门时间, 范围:0-60, 单位：秒
        public uint nSecurityLevel;                          // 闸机安全等级, 范围:0-4, 对应1-5级
        public bool bSecondOpenEnable;                       // 二次开启功能开关;False：关闭, True：开启
        public bool bMemoryModeEnable;                       // 记忆功能开关;False：关闭, True：开启
        public EM_COLLISION_MODE emCollisionMode;                         // 闸机防冲撞模式
        public uint nVolumeLevel;                            // 设备音量等级共8档, 范围:0-7, 0级表示静音
        public EM_DIRECTION_AFTER_POWER_OFF emDirectionAfterPowerOff;                // 闸机断电以后门摆动放向
        public EM_ASG_WORK_MODE emWorkMode;                              // 工作模式
        public EM_STARTUP_MODE emStartUpMode;                           // 启动模式
        public int nMasterWingAngleAdjust;                  // 主机侧门翼零位微调角度，进门方向右手边为主机侧门翼
        public int nSlaveWingAngleAdjust;                   // 从机侧门翼零位微调角度，进门方向左手边为从机侧门翼
        public EM_GATE_TYPE emGateType;                              // 闸机类型   
        public EM_CHANNEL_WIDTH emChannelWidth;                          // 通道宽度
        /// <summary>
        /// bSecondOpenEnable作用时间段，AccessTimeSchedule 配置索引
        /// bSecondOpenEnable work time, AccessTimeSchedule config's index
        /// </summary>
        public uint nSecondOpenTimeSection;
        /// <summary>
        /// bMemoryModeEnable作用时间段，AccessTimeSchedule 配置索引
        /// bMemoryModeEnable work time, AccessTimeSchedule config's index
        /// </summary>
        public uint nMemoryModeTimeSection;
        /// <summary>
        /// emWorkMode作用时间段，AccessTimeSchedule 配置索引
        /// emWorkMode work time,AccessTimeSchedule config's index
        /// </summary>
        public uint nWorkModeTimeSection;
        /// <summary>
        /// 是否清理通行人数
        /// Whether clean pass by num
        /// </summary>NET_A_CFG_ACCESS_VOICE
        public bool bClearPassNum;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 112)]
        public byte[] byReserved;
    }

    // 通行模式
    public enum EM_PASS_MODE
    {
        UNKNOWN = -1,                                   // 未知
        IN_AUTHORIZATION_OUT_AUTHORIZATION,             // 进授权出授权 
        IN_AUTHORIZATION_OUT_FREE,                      // 进授权出自由 
        IN_AUTHORIZATION_OUT_FORBID,                    // 进授权出禁止 
        IN_FREE_OUT_AUTHORIZATION,                      // 进自由出授权
        IN_FREE_OUT_FREE,                               // 进自由出自由 
        IN_FREE_OUT_FORBID,                             // 进自由出禁止
        IN_FORBID_OUT_AUTHORIZATION,                    // 进禁止出授权
        IN_FORBID_OUT_FREE,                             // 进禁止出自由
        IN_FORBID_OUT_FORBID,                           // 进禁止出禁止
    }

    // 闸机防冲撞模式
    public enum EM_COLLISION_MODE
    {
        UNKNOWN = -1,
        MODE_2S,                                       // 2s松开离合                            
        MODE_5S,                                       // 5s松开离合
        LEAVING,                                  // 人员离开松开离合
    }

    // 闸机断电以后门摆动放向
    public enum EM_DIRECTION_AFTER_POWER_OFF
    {
        UNKNOWN = -1,                  // 未知         
        IN,                            // 进门方向                                
        OUT,                           // 出门方向    
    }

    // 工作模式
    public enum EM_ASG_WORK_MODE
    {
        UNKNOWN = -1,                             // 未知
        CLOSE,                                     // 常闭模式
        OPEN,                                      // 常开模式        
    }

    // 启动模式
    public enum EM_STARTUP_MODE
    {
        UNKNOWN = -1,                              // 未知
        NORMAL,                                     // 正常启动模式
        ZERO_SETTING,                               // 零位设置启动模式
        AGING_TEST,                                 // 老化测试启动模式   
    }

    // 闸机类型    
    public enum EM_GATE_TYPE
    {
        UNKNOWN = -1,                              // 未知
        SWING,                                    // 摆闸
        WING                                      // 翼闸
    }

    // 通道宽度
    public enum EM_CHANNEL_WIDTH
    {
        WIDTH_UNKNOWN = -1,                              // 未知
        WIDTH_600,                                       // 600mm
        WIDTH_700,                                       // 700mm
        WIDTH_800,                                       // 800mm
        WIDTH_900,                                       // 900mm
        WIDTH_1000,                                      // 1000mm
        WIDTH_1100,                                      // 1100mm
        WIDTH_1200,                                      // 1200mm
    }

    /// <summary>
    /// 闸机进出语音方向
    /// ASG Voice Direction
    /// </summary>
    public enum EM_A_CFG_EM_ASG_VOICE_DIRECTION
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        CFG_EM_ASG_VOICE_DIRECTION_UNKNOWN,
        /// <summary>
        /// 进入
        /// enter
        /// </summary>
        CFG_EM_ASG_VOICE_DIRECTION_ENTER,
        /// <summary>
        /// 离开
        /// leave
        /// </summary>
        CFG_EM_ASG_VOICE_DIRECTION_LEAVE,
    }

    // 门禁开门语音信息
    public struct NET_CFG_ACCESS_VOICE_INFO
    {
        public EM_CFG_EM_VOICE_ID emVoiceID;                  // 语音ID
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szVoiceContent;       // 语音内容
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFileName;           // 语音文件路径及名称
        /// <summary>
        /// 闸机进出语音方向
        /// Asg voice direction
        /// </summary>
        public EM_A_CFG_EM_ASG_VOICE_DIRECTION emAsgVoiceDirection;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    // 门禁开门提示音
    public struct NET_CFG_ACCESS_VOICE
    {
        public EM_CFG_EM_VOICE_ID emCurrentVoiceID;           // 当前播放语音ID
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_CFG_ACCESS_VOICE_INFO[] arrayVoiceInfo;           // 语音列表	
        public uint nVoiceCount;               // arrayVoiceInfo 个数 
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;          // 预留字段
    }

    // 语音ID
    public enum EM_CFG_EM_VOICE_ID
    {
        UNKNOWN = -1,                       // 未知
        VERIFY_SUCCESS,                     // 验证成功(默认)
        OPENDOOR_SUCCESS,                   // 开门成功
        UNLOCK_SUCCESS,                     // 开锁成功
        SWIPECARD_SUCCESS,                  // 刷卡成功
        WELCOME,                            // 欢迎光临
        WELCOME_BACK,                       // 欢迎再次光临
        THANKS,                             // 谢谢
        CUSTOMIZED_VOICE,                   // 自定义
        NO_VOICE,                           // 无声音
        WELCOME_HOME,                       // 欢迎回家
        GOOD_JOURNEY,                       // 一路顺风
        WELCOME_BACK_NEXT,                  // 欢迎下次光临
        THANKS_FOR_PATRONAGE,               // 谢谢惠顾
    }

    // Unlock path each node info 
    public struct NET_CFG_DOOR_ROUTE_NODE_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReaderID;// card reader ID,  as access control connected card reader ID
    }

    // Foor group set info , by group subscript ascending, means unlock route
    public struct NET_CFG_DOOR_ROUTE_INFO
    {
        public int nDoors;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CFG_DOOR_ROUTE_NODE_INFO[] stuDoors;
        public uint nResetTime;                         // 反潜重置时间，单位：分钟，0表示不重置 
    }

    public struct NET_CFG_OPEN_DOOR_ROUTE_INFO
    {
        public int nDoorList;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_CFG_DOOR_ROUTE_INFO[] stuDoorList;
        public int nTimeSection;                       // 反潜路径对应时间段, 即CFG_ACCESS_TIMESCHEDULE_INFO的数组下标   
        public uint nResetTime;                         // 反潜重置时间，单位：分钟，0表示不重置。无效字段，废除
        public uint nHolidayScheduleID;                 // 假日计划, 需要反潜的假日计划
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    // 下发搜索类型
    public enum EM_SEND_SEARCH_TYPE
    {
        MULTICAST_AND_BROADCAST,        // 组播和广播搜索
        MULTICAST,                      // 组播搜索
        BROADCAST,                      // 广播搜索
    }

    /// <summary>
    /// 异步搜索设备入参
    /// input of CLIENT_StartSearchDevicesEx
    /// </summary>
    public struct NET_IN_STARTSERACH_DEVICE
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 发起搜索的本地IP
        /// local IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szLocalIp;
        /// <summary>
        /// / 设备信息回调函数
        /// search device call back
        /// </summary>
        public fSearchDevicesCBEx cbSearchDevices;
        /// <summary>
        /// / 用户自定义数据
        /// user data
        /// </summary>
        public IntPtr pUserData;
        /// <summary>
        /// / 下发搜索类型
        /// send search type
        /// </summary>
        public EM_SEND_SEARCH_TYPE emSendType;
        /// <summary>
        /// / TTLV设备信息回调函数
        /// TTLV search device call back
        /// </summary>
        public fSearchDevicesCBTTLV cbSearchDevicesTTLV;
    }

    // 异步搜索设备出参
    public struct NET_OUT_STARTSERACH_DEVICE
    {
        public uint dwSize;                           // 结构体大小
    }


    /// <summary>
    /// Network card internal network card information
    /// </summary>
    public struct NET_BRIDGE_NET_CARDS_MAC_LIST
    {
        /// <summary>
        /// / Network card name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szNetCardName;
        /// <summary>
        /// / Network card for Mac
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]
        public string szNetCardMac;
        /// <summary>
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]
        public string szReserved;
    }

    // Corresponding to CLIENT_StartSearchDevicesEx
    public struct NET_DEVICE_NET_INFO_EX2
    {
        public DEVICE_NET_INFO_EX stuDevInfo;                           // device net info	
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szLocalIp;                                        // local ip
		/// <summary>
		/// 设备子类型
        /// / Device subtype
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDeviceSubClass;
        /// <summary>
		/// SID信息
        /// / SID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSID;
        /// <summary>
		///	传输产品中设备的主从角色
        /// / Main-Sub roles of devices in transmission products
        /// </summary>
        public byte byRole;
        /// <summary>
		/// 字节对齐
        /// / byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
        public string szReserved;
        /// <summary>
		/// 网卡内部网卡信息个数
        /// / Number of internal network card information in the network card
        /// </summary>
        public int nBridgeNetCardsMacListNum;
        /// <summary>
		/// 网卡内部网卡信息
        /// / Network card internal network card information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_BRIDGE_NET_CARDS_MAC_LIST[] stuBridgeNetCardsMacList;
        /// <summary>
		/// 表示传输产品中，管理该从设备的管理设备标识
        /// / In the transmission product, manage the management device identifier of the sub device
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]
        public string szLeader;
        /// <summary>
		/// 扩展字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1974)]
        public string cReserved;                                        // reserved
    }

    /// <summary>
    /// Holiday Record Iinformation
    /// 假日记录集信息
    /// </summary>
    public struct NET_RECORDSET_HOLIDAY
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Record Number,Read-Only
        /// 记录集编号,只读
        /// </summary>
        public int nRecNo;
        /// <summary>
        /// Valid Door Number
        /// 有效的的门数目
        /// </summary>
        public int nDoorNum;
        /// <summary>
        /// Privileged Door Number,That is CFG_CMD_ACCESS_EVENT Configure Array Subscript
        /// 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置CFG_ACCESS_EVENT_INFO的数组下标
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] sznDoors;
        /// <summary>
        /// Start Time
        /// 开始时间
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// End Time
        /// 结束时间
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// Holiday Enable
        /// 假期使能
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// Holiday No
        /// 假期编号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szHolidayNo;
        /// <summary>
        /// Holiday Name
        /// 假期名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szHolidayName;
    }

    // input of Get Acceecontrol server caps
    public struct NET_IN_AC_CAPS
    {
        public uint dwSize;
    }


    /// <summary>
    /// lris操作能力集
    /// lris caps
    /// </summary>
    public struct NET_ACCESS_IRIS_CAPS
    {
        /// <summary>
        /// 每次最大插入量
        /// Maximum insertion amount per time
        /// </summary>
        public uint nMaxInsertRate;
        /// <summary>
        /// 图片最小尺寸,单位KB
        /// Minimum size of picture ,unit KB
        /// </summary>
        public uint nMinIrisPhotoSize;
        /// <summary>
        /// 图片最大尺寸，单位KB
        /// Maximum size of picture ,unit KB
        /// </summary>
        public uint nMaxIrisPhotoSize;
        /// <summary>
        /// 每个用户最多支持多少组
        /// Maximum number of groups supported per user
        /// </summary>
        public uint nMaxIrisGroup;
        /// <summary>
        /// HMSB算法提供标识，0未知，1@hua
        /// recognition algorithm provides identification, 0 unknown, 1 
        /// </summary>
        public uint nRecognitionAlgorithmVender;
        /// <summary>
        /// 算法(模型)版本号,如果版本号有多位，按Major/Minor从高到低每8bit表示一个版本 如1.5.2表示成0x00010502
        /// algorithm (model) version number. If there are multiple versions, each 8bit of major/minor from high to low represents a version. For example, 1.5.2 represents 0x00010502
        /// </summary>
        public uint nRecognitionVersion;
        /// <summary>
        /// 存储上限
        /// storage upper limit
        /// </summary>
        public uint nMaxIrisesCount;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 500)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 反潜回能力集
    /// anti-dive ability set
    /// </summary>
    public struct NET_ANTI_SUBMARINE_CAPS
    {
        /// <summary>
        /// 支持反潜回能力掩码，支持位或 bit0-本地反潜;bit1-网络反潜主控;bit2-网络反潜分控
        /// Support anti-dive capability mask, support bit or bit0- local anti-submarine; bit1- Network anti-submarine master; bit2- Network anti-submarine sub-control
        /// </summary>
        public uint nTypes;
        /// <summary>
        /// 最大反潜规则组（路线）数量, nTypes bit1=1时有效
        /// Maximum number of antisubmarine rule groups (routes), valid when nTypes bit1=1
        /// </summary>
        public uint nMaxRouteRule;
        /// <summary>
        /// 每个反潜路线最大多少个节点, nTypes bit1=1时有效
        /// What is the maximum number of nodes per anti-submarine route? Valid when nTypes bit1=1
        /// </summary>
        public uint nOneRouteMaxNode;
        /// <summary>
        /// 每个节点最多包含的读头数量, nTypes bit1=1时有效
        /// Maximum number of read heads per node, valid when nTypes bit1=1
        /// </summary>
        public uint nOneNodeMaxReaderID;
        /// <summary>
        /// 保留字节
        /// Save bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 门禁互锁相关能力
    /// access control interlock related capabilities
    /// </summary>
    public struct NET_INTER_LOCK_CAPS
    {
        /// <summary>
        /// 支持互锁回能力掩码，支持位或 bit0-本地反潜;bit1-网络反潜主控;bit2-网络反潜分控
        /// Support interlock back capability mask, support bit or BIT0-local anti-submarine; bit1- Network anti-submarine master; bit2- Network anti-submarine sub-control
        /// </summary>
        public uint nTypes;
        /// <summary>
        /// 最大规则组数量, nTypes bit1=1时有效
        /// Maximum number of rule groups, valid when nTypes bit1=1
        /// </summary>
        public uint nMaxRule;
        /// <summary>
        /// 组内每个组最大支持多少个门, nTypes bit1=1时有效
        /// Maximum number of doors supported for each group, valid when nTypes bit1=1
        /// </summary>
        public uint nWithinMaxDoors;
        /// <summary>
        /// 组间每个组最大支持多少个门, nTypes bit1=1时有效
        /// Maximum number of doors supported by each group, valid when nTypes bit1=1
        /// </summary>
        public uint nBetweenMaxDoors;
        /// <summary>
        /// 保留字节
        /// Save bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 设备中可用于提取信息的可用读头能力信息
    /// Available reader capabilities in the device for extracting information
    /// </summary>
    public struct NET_DEV_COLLECT_ATTRIBUTE
    {
        /// <summary>
        /// / 最大规则组数量, nTypes bit1=1时有效
        /// / Maximum number of rule groups, valid when bit1=nTypes is 1
        /// </summary>
        public int nDoorIndex;
        /// <summary>
        /// / 通道编号数量
        /// / Number of channel numbers
        /// </summary>
        public int nReaderInfoNum;
        /// <summary>
        /// / 所挂门通道编号下面，可用于读取信息的读头编号,从1开始
        /// / Reader numbers under the door channel numbers that can be used to read information, starting from 1
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] nReaderInfo;
        /// <summary>
        /// / 保留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// ACCaps能力集扩展
    /// ACCaps extended capabilities
    /// </summary>
    public struct NET_AC_CAPS_EXTERN
    {
        /// <summary>
        /// / 支持互锁回能力掩码，支持位或 bit0-本地反潜;bit1-网络反潜主控;bit2-网络反潜分控
        /// / Interlock return capability support bitmask, support bitwise OR bit0-local anti-passback; bit1-network anti-passback main control; bit2-network anti-passback sub-control
        /// </summary>
        public bool bSupportCollectUserByDev;
        /// <summary>
        /// / 设备中可用于提取信息的可用读头能力信息数量
        /// / Number of available reader capabilities for extracting information in the device
        /// </summary>
        public int nDevCollectAttributeNum;
        /// <summary>
        /// / 设备中可用于提取信息的可用读头能力信息
        /// / Available reader capabilities for extracting information in the device
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_DEV_COLLECT_ATTRIBUTE[] stuDevCollectAttribute;
        /// <summary>
        /// / 门禁用户是否支持仅考勤模式功能
        /// / Does the access control user support the attendance only mode function
        /// </summary>
        public bool bSupportAttendanceOnly;
        /// <summary>
        /// / 保留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// AccessHandPrint能力集
    /// AccessHandPrint Capability
    /// </summary>
    public struct NET_ACCESS_HAND_PRINT_CAPS
    {
        /// <summary>
        /// / 每次最大插入量
        /// / Maximum insertion amount each time
        /// </summary>
        public uint nMaxInsertRate;
        /// <summary>
        /// / 掌纹（静脉）图片最小尺寸,单位KB
        /// / Palm Print (Vein) Image Minimum Dimension in KB
        /// </summary>
        public uint nMinHandPrintPhotoSize;
        /// <summary>
        /// / 掌纹（静脉）图片最大尺寸，单位KB
        /// / Palm Print (Vein) Image Maximum Dimension in KB
        /// </summary>
        public uint nMaxHandPrintPhotoSize;
        /// <summary>
        /// / 每个用户最多支持多少组掌纹（静脉）
        /// / What is the maximum set of Palm Print (Veins) per User?
        /// </summary>
        public uint nMaxHandPrintGroup;
        /// <summary>
        /// / 目标识别算法提供标识，0未知，1私有
        /// / Identity provided by target Recognition Algorithm, 0 unknown, 1 private
        /// </summary>
        public uint nRecognitionAlgorithmVender;
        /// <summary>
        /// / 算法(模型)版本号
        /// / Algo rithm (model) version number
        /// </summary>
        public uint nRecognitionVersion;
        /// <summary>
        /// / 掌纹（静脉）存储上限
        /// / Palm Print (Vein) Storage Cap
        /// </summary>
        public uint nMaxHandPrintCount;
        /// <summary>
        /// / 保留字节
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 124)]
        public string szReserved;
    }

    /// <summary>
    /// 时间计划相关能力
    /// Time planning ability
    /// </summary>
    public struct NET_ACCESS_TIME_SCHEDULE_CAPS
    {
        /// <summary>
        /// / 每次插入时间计划最大数目
        /// / Maximum number of time plans inserted per time
        /// </summary>
        public int nMaxInsertRate;
        /// <summary>
        /// / 设备支持最大时间计划数量
        /// / The maximum number of time plans supported by the device
        /// </summary>
        public int nMaxTimeScheduleCounts;
        /// <summary>
        /// / 保留字节
        /// / Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

	/// <summary>
    /// Bluetooth related capabilities
    /// </summary>
    public struct NET_ACCESS_BT_CARD_CAPS
    {
        /// <summary>
        /// / Maximum insertion amount per time
        /// </summary>
        public uint nMaxInsertRate;
        /// <summary>
        /// / Maximum number of storage cards
        /// </summary>
        public uint nMaxCards;
        /// <summary>
        /// / Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 门禁AC服务协议与设备能力获取出参
    /// output of Get acs caps
    /// </summary>
    public struct NET_OUT_AC_CAPS
    {
        /// <summary>
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// ACCaps能力集
        /// ACCaps
        /// </summary>
        public NET_AC_CAPS stuACCaps;
        /// <summary>
        /// user操作能力集
        /// user caps
        /// </summary>
        public NET_ACCESS_USER_CAPS stuUserCaps;
        /// <summary>
        /// card操作能力集
        /// card caps
        /// </summary>
        public NET_ACCESS_CARD_CAPS stuCardCaps;
        /// <summary>
        /// 操作能力集
        /// caps
        /// </summary>
        public NET_ACCESS_FINGERPRINT_CAPS stuFingerprintCaps;
        /// <summary>
        /// 人脸操作能力集
        /// face caps
        /// </summary>
        public NET_ACCESS_FACE_CAPS stuFaceCaps;
        /// <summary>
        /// 相关能力集
        /// caps
        /// </summary>
        public NET_ACCESS_IRIS_CAPS stuIrisCaps;
        /// <summary>
        /// 反潜回能力集
        /// Counter-dive ability set
        /// </summary>
        public NET_ANTI_SUBMARINE_CAPS stuAntisubmarineCaps;
        /// <summary>
        /// 门禁互锁相关能力
        /// Access interlock related capabilities
        /// </summary>
        public NET_INTER_LOCK_CAPS stuInterLockCaps;
        /// <summary>
        /// / ACCaps能力集扩展
        /// / ACCaps extern
        /// </summary>
        public NET_AC_CAPS_EXTERN stuACCapsEx;
        /// <summary>
        /// / AccessHandPrint能力集
        /// / Access Hand Print Capability
        /// </summary>
        public NET_ACCESS_HAND_PRINT_CAPS stuAccessHandPrint;
        /// <summary>
        /// / 时间计划能力
        /// / Time planning ability
        /// </summary>
        public NET_ACCESS_TIME_SCHEDULE_CAPS stuAccessTimeScheduleCaps;
		/// <summary>
        /// / Bluetooth related capabilities
        /// </summary>
        public NET_ACCESS_BT_CARD_CAPS stuAccessBTCard;
    }

    // special day caps
    public struct NET_SPECIAL_DAYS_SCHEDULE_CAPS
    {
        /// <summary>
        /// 是否支持假日计划
        /// enable to support
        /// </summary>
        public bool bSupport;
        /// <summary>
        /// 设备支持的最大计划数量
        /// max special days
        /// </summary>
        public int nMaxSpecialDaysSchedules;
        /// <summary>
        /// 每天最多的时间段
        /// max periods perday
        /// </summary>
        public int nMaxTimePeriodsPerDay;
        /// <summary>
        /// 设备支持的最大假日组数
        /// max specialday groups
        /// </summary>
        public int nMaxSpecialDayGroups;
        /// <summary>
        /// 每个假日组里最大的假日数
        /// max days inspecialday group
        /// </summary>
        public int nMaxDaysInSpecialDayGroup;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;
    }

    // Customize to open the door
    public enum EM_AC_UNLOCK_MODE
    {
        UNKNOWN = 0,                                // Unknown
        PWD_ONLY = 1,                               // Allowing only password lock
        CARD = 2,                                   // Only allow swipe to unlock
        PWD_OR_CARD = 3,                            // Password or swipe to unlock 
        CARD_FIRST = 4,                             // Firstly swipe then password to unlock
        PWD_FIRST = 5,                              // Firstly passwords,then swipe to unlock
        SECTION = 6,                                // Period of time to open the door 
        FINGERPRINTONLY = 7,                        // Only allow finger print to unlock
        PWD_OR_CARD_OR_FINGERPRINT = 8,             // Allow passwords or card or finger print to unlock
        PWD_AND_CARD_AND_FINGERPINT = 9,            // Password and swip and finger print combined to unlock
        PWD_AND_FINGERPRINT = 10,                   // Password and finger print combined to unlock
        CARD_AND_FINGERPRINT = 11,                  // Allow card and finger print to unlock
        MULTI_PERSON = 12,                          // Only allow multi persons together to unlock
        FACEIDCARD = 13,                            // comparsion of face and ID card
        FACEIDCARD_AND_IDCARD = 14,                 // ID card  and compasion of face and ID card
        FACEIDCARD_OR_CARD_OR_FINGER = 15,          // comparsion of face and ID card or card or finger print
        FACEIPCARDANDIDCARD_OR_CARD_OR_FINGER = 16, // ID card  and compasion of face and ID card or card or finger print
        USERID_AND_PWD = 17,                        // UserID and password
        FACE_ONLY = 18,                             // Allowing only face lock
        FACE_AND_PWD = 19,                          // Face and password
        FINGERPRINT_AND_PWD = 20,                   // Fingerprint and password
        FINGERPRINT_AND_FACE = 21,                  // FingerPrint and face
        CARD_AND_FACE = 22,                         // Card and face
        FACE_OR_PWD = 23,                           // Face and password
        FINGERPRINT_OR_PWD = 24,                    // Fingerprint or password
        FINGERPRINT_OR_FACE = 25,                   // Fingerprint or face
        CARD_OR_FACE = 26,                          // Card or face
        CARD_OR_FINGERPRINT = 27,                   // Card or fingerprint
        FINGERPRINT_AND_FACE_AND_PWD = 28,          // Fingerprint and face and password
        CARD_AND_FACE_AND_PWD = 29,                 // Card and face and password
        CARD_AND_FINGERPRINT_AND_PWD = 30,          // Card and fingerprint and password
        CARD_AND_FINGERPRINT_AND_FACE = 31,         // Card and fingerprint and face
        FINGERPRINT_OR_FACE_OR_PWD = 32,            // Fingerprint or face or password
        CARD_OR_FACE_OR_PWD = 33,                   // Card or face or password
        CARD_OR_FINGERPRINT_OR_FACE = 34,           // Card or fingerprint or face
        CARD_AND_FINGERPRINT_AND_FACE_AND_PWD = 35, // Card and fingerprint and face and password
        CARD_OR_FINGERPRINT_OR_FACE_OR_PWD = 36,    // Card or fingerprint or face or password
        FACEIPCARDANDIDCARD_OR_CARD_OR_FACE = 37,   // ID card  and compasion of face and ID card or card or face
        FACEIDCARD_OR_CARD_OR_FACE = 38,            // ID card  and compasion of face or card or face
        CARDANDPWD_OR_FINGERPRINTANDPWD = 39,       // Card and password or fingerprint and password
        PHOTO_OR_FACE = 40,                         // FaceID card(photo or face)
        FINGERPRINT = 41,                           // FaceID card(fingerprint)
        PHOTO_AND_FINGERPRINT = 42,                 // FaceID card(photo + fingerprint)
        FACEIDCARD_OR_CARD_OR_FINGERPRINT_OR_FACE_OR_PASSWORD = 43,   // face card id or card or fingerprint or face or password
        MULTI_USER_TYPE = 44,                       // multi user type
        FACEIDCARD_OR_HEALTHCODE = 45,              // card id and face or healthcode
    }

    // ACS Caps
    public struct NET_AC_CAPS
    {
        public int nChannels;                                   // max channel number
        public bool bSupAccessControlAlarmRecord;               // support alarm record in accesscontrolrec
        public int nCustomPasswordEncryption;                   // password encryption mode of AccessControlCustomPassword,0:Plaintext, 1:MD5
        public int nSupportFingerPrint;                         // Whether to support fingerprint,0:unknown,1:unsupport, 2:support
        public bool bHasCardAuth;                               // Whether to support card auth
        public bool bHasFaceAuth;                               // Whether o support face auth
        public bool bOnlySingleDoorAuth;                        // Only Single Door authorize
        public bool bAsynAuth;                                  // asynchronous return of authorize  
        public bool bUserlsoLate;                               // is support to user isolate
        public int nMaxInsertRate;                              // max insert rate
        public NET_SPECIAL_DAYS_SCHEDULE_CAPS stuSpecialDaysSchedule;              // specail day caps 
        public int nUnlockModes;                                // unlock mode number
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public EM_AC_UNLOCK_MODE[] emUnlockModes;               // unlock modes
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;                               // reserved
    }

    // user caps
    public struct NET_ACCESS_USER_CAPS
    {
        public int nMaxInsertRate;                             // max insert rate
        public int nMaxUsers;                                  // max users
        public int nMaxFingerPrintsPerUser;                    // max fingerprint per user
        public int nMaxCardsPerUser;                           // max card per user
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;                              // reserved
    }

    // card caps
    public struct NET_ACCESS_CARD_CAPS
    {
        public int nMaxInsertRate;                             // max insert rate
        public int nMaxCards;                                  // max cards
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;                              // reserved
    }

    // fingerprint caps
    public struct NET_ACCESS_FINGERPRINT_CAPS
    {
        public int nMaxInsertRate;                             // max insert rate
        public int nMaxFingerprintSize;                        // max fingerprint size 
        public int nMaxFingerprint;                            // max fingerprints
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;                              // reserved
    }

    // face caps
    public struct NET_ACCESS_FACE_CAPS
    {
        public int nMaxInsertRate;                             // max insert rate
        public int nMaxFace;                                   // max faces
        public int nRecognitionType;                           // RecognitionType 0:white light 1:infrared
        public int nRecognitionAlgorithm;                      // RecognitionAlgorithm，0:unknonw,1:@hua,2:shangtang,3:yitu,4:hanwang,5:fireeye
        public uint dwRecognitionVersion;                       // RecognitionVersion，0x00010502 means 1.5.2
        public int nMinPhotoSize;                              // MinPhotoSize ,unit KB
        public int nMaxPhotoSize;                              // MaxPhotoSize ,unit KB
        public int nMaxGetPhotoNumber;                         // max number of get photo in batches
        public bool bIsSupportGetPhoto;                         // is support get photo, TRUE:yes, FAlSE:no
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 504)]
        public byte[] byReserved;                               // reserved
    }

    public struct NET_RESTORE_TEMPSTRUCT
    {
        public NET_RESTORE value;
    }

    // 控制方式
    public enum NET_ACCESS_METHOD
    {
        UNKNOWN,                                          // 未知
        CARD,                                             // 卡
        PASSWORD,                                         // 密码
        FINGERPRINT,                                      //  
    }

    //恶意开门事件， 对应 DH_ALARM_ACCESS_CTL_MALICIOUS
    public struct NET_ALARM_ACCESS_CTL_MALICIOUS
    {
        public int nAction;                                 // 事件动作,0表示脉冲事件,1表示报警开始,2表示报警结束;   
        public NET_TIME_EX stuTime;                         // 事件发生的时间
        public NET_ACCESS_METHOD emMethod;                  // 开门方式
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSerialNum;                          // 无线配件序列号
        public int nChannel;                                // 门通道号
        public bool bRealUTC;                              // RealUTC 是否有效，bRealUTC 为 TRUE 时，用 RealUTC，否则用 stuTime 字段
        public NET_TIME_EX RealUTC;                             // 事件发生的时间（标准UTC）
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 970)]
        public byte[] byReserved;                           // 保留字节 
    }

    /// <summary>
    /// 从加油机获取的信息
    /// Information obtained from the Fuel Dispenser
    /// </summary>
    public struct NET_FUEL_DISPENSER_INFO
    {
        /// <summary>
        /// 开始加油时间，带时区偏差的UTC时间，单位秒
        /// fueling start time, UTC time with time zone offset, in seconds
        /// </summary>
        public uint nFuelingStartTime;
        /// <summary>
        /// 结束加油时间，带时区偏差的UTC时间，单位秒
        /// fueling end time, UTC time with time zone offset, in seconds
        /// </summary>
        public uint nFuelingEndTime;
        /// <summary>
        /// 加油金额，单位分
        /// fueling amount, unit fen
        /// </summary>
        public uint nMoney;
        /// <summary>
        /// 加油升数，单位0.01升
        /// fueling liters, the unit is 0.01 liters
        /// </summary>
        public uint nLitre;
        /// <summary>
        /// 加油类型，加油油号
        /// Oil type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szOilType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_GASSTATION_VEHICLE_DETECT(加油站车辆检测事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_GASSTATION_VEHICLE_DETECT_INFO
    {
        /// <summary>
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 智能事件所属大类
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 检测到的车辆信息
        /// </summary>
        public NET_DETECT_VEHICLE_INFO stuDetectVehicleInfo;
        /// <summary>
        /// 检测到的车牌信息
        /// </summary>
        public NET_DETECT_PLATE_INFO stuDetectPlateInfo;
        /// <summary>
        /// 是否有场景图
        /// </summary>
        public bool bIsGlobalScene;
        /// <summary>
        /// 场景图信息, bIsGlobalScene 为 TRUE 时有效
        /// </summary>
        public NET_EVENT_PIC_INFO stuSceneImage;
        /// <summary>
        /// 候选车辆数量
        /// </summary>
        public int nCarCandidateNum;
        /// <summary>
        /// 候选车辆数据
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_CAR_CANDIDATE_INFO[] stuCarCandidate;
        /// <summary>
        /// 
        /// 
        /// </summary>
        public NET_FUEL_DISPENSER_INFO stuFuelDispenser;
        /// <summary>
        /// 交通车辆信息
        /// Traffic vehicle information
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 872)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 检测到的车辆信息
    /// </summary>
    public struct NET_DETECT_VEHICLE_INFO
    {
        /// <summary>
        /// 检测车辆动作
        /// </summary>
        public EM_VEHICLE_ACTION emAction;
        /// <summary>
        /// 物体ID
        /// </summary>
        public uint nObjectID;
        /// <summary>
        /// 车辆抓图信息
        /// </summary>
        public NET_EVENT_PIC_INFO stuVehicleImage;
        /// <summary>
        /// 车身主要颜色
        /// </summary>
        public NET_COLOR_RGBA stuColor;
        /// <summary>
        /// 车辆类型
        /// </summary>
        public EM_CATEGORY_TYPE emCategoryType;
        /// <summary>
        /// 帧序号
        /// </summary>
        public uint nFrameSequence;
        /// <summary>
        /// 车辆车标
        /// </summary>
        public uint nCarLogoIndex;
        /// <summary>
        /// 车辆子品牌
        /// </summary>
        public uint nSubBrand;
        /// <summary>
        /// 车辆品牌年款
        /// </summary>
        public uint nBrandYear;
        /// <summary>
        /// 置信度,值越大表示置信度越高, 范围 0~255
        /// </summary>
        public uint nConfidence;
        /// <summary>
        /// 包围盒, 0-8191相对坐标
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 车标
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szText;
        /// <summary>
        /// 车速,单位为km/h
        /// </summary>
        public uint nSpeed;
        /// <summary>
        /// 车辆行驶方向, 0:未知, 1:上行方向, 2:下行方向
        /// </summary>
        public uint nDirection;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 车辆动作
    /// </summary>
    public enum EM_VEHICLE_ACTION
    {
        /// <summary>
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// 进入检测区域内
        /// </summary>
        APPEAR,
        /// <summary>
        /// 离开检测区域
        /// </summary>
        DISAPPEAR,
        /// <summary>
        /// 停留在检测区域内
        /// </summary>
        STAY
    }

    /// <summary>
    /// 检测的车牌信息
    /// </summary>
    public struct NET_DETECT_PLATE_INFO
    {
        /// <summary>
        /// 车牌ID
        /// </summary>
        public uint nObjectID;
        /// <summary>
        /// 关联的车辆ID
        /// </summary>
        public uint nRelativeID;
        /// <summary>
        /// 车牌图片信息
        /// </summary>
        public NET_EVENT_PIC_INFO stuPlateImage;
        /// <summary>
        /// 车牌类型
        /// </summary>
        public EM_NET_PLATE_TYPE emPlateType;
        /// <summary>
        /// 车牌颜色
        /// </summary>
        public EM_NET_PLATE_COLOR_TYPE emPlateColor;
        /// <summary>
        /// 置信度,值越大表示置信度越高, 范围 0~255
        /// </summary>
        public uint nConfidence;
        /// <summary>
        /// 车牌国家
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
        public string szCountry;
        /// <summary>
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
        public byte[] bReserved1;
        /// <summary>
        /// 车牌号码
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPlateNumber;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] bReserved;
    }

    /// <summary>
    /// scada device id info
    /// 监测设备信息
    /// </summary>
    public struct NET_SCADA_DEVICE_ID_INFO
    {
        /// <summary>
        /// device id
        /// 设备id
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
        /// <summary>
        /// device name, the same as "szDevName" in CFG_SCADA_DEV_INFO
        /// 设备名称, 和CFG_SCADA_DEV_INFO配置中的szDevName一致
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDevName;
        /// <summary>
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] reserve;
    }

    /// <summary>
    /// query scada device IDs(corresponding to DH_DEVSTATE_SCADA_DEVICE_LIST)
    /// 获取当前主机所接入的外部设备ID
    /// </summary>
    public struct NET_SCADA_DEVICE_LIST
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// count of NET_SCADA_DEVICE_ID_INFO in pstuDeviceIDInfo
        /// 用户分配的结构体个数
        /// <summary>
        public int nMax;
        /// <summary>
        /// returned count of NET_SCADA_DEVICE_ID_INFO from device, may be larger than nMax
        /// 设备实际返回的有效结构体个数
        /// <summary>
        public int nRet;
        /// <summary>
        /// scada device id info, user allocates the memory,apply to sizeof(NET_SCADA_DEVICE_ID_INFO)*nMax
        /// 监测设备信息,用户分配内存,大小为sizeof(NET_SCADA_DEVICE_ID_INFO)*nMax
        /// <summary>
        public IntPtr pstuDeviceIDInfo;
    }

    /// <summary>
    /// SCADA monitor spot search criteria 
    /// SCADA监测点位查询条件
    /// </summary>
    public struct NET_IN_SCADA_INFO
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// spot type to search
        /// 待查询的点位类型
        /// <summary>
        public EM_NET_SCADA_POINT_TYPE emPointType;
    }

    /// <summary>
    /// Spot chart info 
    /// 点表信息
    /// </summary>
    public struct NET_SCADA_POINT_INFO
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// device name
        /// 设备名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDevName;
        /// <summary>
        /// valid count of YX type spot in anYX
        /// 有效遥信个数
        /// <summary>
        public int nYX;
        /// <summary>
        /// value of YX type spots
        /// 遥信信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public uint[] anYX;
        /// <summary>
        /// valid count of YC type spot in afYC
        /// 有效遥测个数
        /// <summary>
        public int nYC;
        /// <summary>
        /// value of YC type spots
        /// 遥测信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public float[] afYC;
    }

    /// <summary>
    /// SCADA monitor spot search result 
    /// SCADA监测点位查询结果
    /// </summary>
    public struct NET_OUT_SCADA_INFO
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// valid spot chart number
        /// 有效点表个数
        /// <summary>
        public int nPointInfoNum;
        /// <summary>
        /// spot chart info
        /// 点表信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_SCADA_POINT_INFO[] stuPointInfo;
    }

    /// <summary>
    /// Monitor control and data collection device spot chart path monitor spot info (corresponding to SCADA_INFO command )
    /// 监测控制和数据采集设备的监测点位信息(对应 SCADA_INFO 命令)
    /// </summary>
    public struct NET_SCADA_INFO
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// search criteria
        /// 查询条件
        /// <summary>
        public NET_IN_SCADA_INFO stuIn;
        /// <summary>
        /// search result
        /// 查询结果
        /// <summary>
        public NET_OUT_SCADA_INFO stuOut;
    }

    // 获取条件
    public struct NET_GET_CONDITION_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDeviceID;           // 设备ID
        public bool bIsSendID;              // 是否发生ID,TRUE:发送 FALSE:不发送（如无此节点则返回该DeviceId下所有ID）
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256 * 256)]
        public string szID;                 // 相应的监控点ID号
        public int nIDNum;                  // 下发个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;           // 保留字节
    }

    // 获取设备点位信息 入参 
    public struct NET_IN_SCADA_GET_ATTRIBUTE_INFO
    {
        public uint dwSize;                             // 结构体大小
        public NET_GET_CONDITION_INFO stuCondition;     // 获取条件
    }

    // 信号点数据状态
    public enum EM_ATTRIBUTE_STATUS
    {
        UNKNOWN = -1,               // 未知
        NORMAL,                     // 正常
        LEVEL_1_ALARM,              // 1级告警
        LEVEL_2_ALARM,              // 2级告警
        LEVEL_3_ALARM,              // 3级告警
        LEVEL_4_ALARM,              // 4级告警
        OPERATION_EVENT,            // 操作事件
        INVALID_DATA,               // 无效数据
    }

    // 数据显示选项
    public struct NET_DISPLAY_OPTIONS_INFO
    {
        public bool bIsSwitchDisplayed;             // 是否显示开关		TRUE：是 FALSE:否
        public bool bIsScrollDisplaySwitch;         // 是否显示滚动开关	TRUE：是 FALSE:否
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 120)]
        public byte[] byReserved;                   // 保留字节
    }

    // 设备点位信息
    public struct NET_ATTRIBUTE_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSignalName;                     // 点位名称
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szUnit;                           // 单位
        public EM_NET_SCADA_POINT_TYPE emPointType;     // 待查询的点位类型
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szID;                             // 信号点ID
        public uint nStartDelay;                        // 告警开始延时,单位:秒
        public uint nStopDelay;                         // 告警结束延时,单位:秒
        public uint nPeriod;                            // 存储、上报周期,单位:秒
        public float fThreshold;                        // 告警门限
        public float fAlarmWaveVal;                     // 告警回差(当告警恢复时需超过回差范围，告警才恢复，与告警延时不同时起效)
        public float fAbsoluteVal;                      // 绝对阈值(针对连续数据点（AI、AO）存储、上报)
        public float fRelativeVal;                      // 百分比阈值(针对连续数据点（AI、AO）存储、上报，当绝对阈值不启用或者为"0"时使用)
        public EM_ATTRIBUTE_STATUS emStatus;            // 信号点数据状态
        public NET_DISPLAY_OPTIONS_INFO stuDisplayOptions;     // 数据显示选项
        public bool bIsValid;                           // 是否有效信号点 TRUE:有效 FALSE:无效
        public uint nDelay;                             // 告警延时，告警触发时，延迟多久响应，如上报、联动，单位秒
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 120)]
        public string szDescribe;                       // 点位信息描述
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 136)]
        public byte[] byReserved;                       // 保留字节
    }

    // 获取设备点位信息 出参
    public struct NET_OUT_SCADA_GET_ATTRIBUTE_INFO
    {
        public uint dwSize;                     // 结构体大小
        public uint nMaxAttributeInfoNum;       // 用户最大申请缓存个数
        public IntPtr pstuAttributeInfo;        // 设备点位信息(内存由用户申请)
        public uint nRetAttributeInfoNum;       // 返回点位信息个数			
    }

    /// <summary>
    /// 屏幕文本类型
    /// </summary>
    public enum EM_SCREEN_TEXT_TYPE
    {
        /// <summary>
        /// 未知
        /// </summary>
	    UNKNOWN = -1,
        /// <summary>
        /// 普通
        /// </summary>
	    ORDINARY,
        /// <summary>
        /// 本地时间
        /// </summary>
	    LOCAL_TIME,
        /// <summary>
        /// 二维码
        /// </summary>
	    QR_CODE,
        /// <summary>
        /// resource file
        /// 资源文件
        /// </summary>
        RESOURCE
    }

    /// <summary>
    /// 屏幕文本颜色
    /// </summary>
    public enum EM_SCREEN_TEXT_COLOR
    {
        /// <summary>
        /// 未知
        /// </summary>
	    UNKNOWN = -1,
        /// <summary>
        /// 绿色
        /// </summary>
	    GREEN,
        /// <summary>
        /// 红色
        /// </summary>
	    RED,
        /// <summary>
        /// 黄色
        /// </summary>
	    YELLOW,
        /// <summary>
        /// 白色
        /// </summary>
	    WHITE
    }

    /// <summary>
    /// 屏幕文本滚动模式
    /// </summary>
    public enum EM_SCREEN_TEXT_ROLL_MODE
    {
        /// <summary>
        /// 未知
        /// </summary>
	    UNKNOWN = -1,
        /// <summary>
        /// 不滚动
        /// </summary>
	    NO,
        /// <summary>
        /// 左右滚动
        /// </summary>
	    LEFT_RIGHT,
        /// <summary>
        /// 上下翻页滚动
        /// </summary>
	    UP_DOWN
    }

    /// <summary>
    /// 播报文本类型
    /// </summary>
    public enum EM_BROADCAST_TEXT_TYPE
    {
        /// <summary>
        /// 未知
        /// </summary>
	    UNKNOWN = -1,
        /// <summary>
        /// 普通
        /// </summary>
	    ORDINARY,
        /// <summary>
        /// 车牌号
        /// </summary>
	    PLATE_NUMBER,
        /// <summary>
        /// 时间
        /// </summary>
	    TIME,
        /// <summary>
        /// 数字字符串
        /// </summary>
	    NUMBER_STRING
    }

    // 屏幕信息
    public struct NET_SCREEN_SHOW_INFO
    {
        /// <summary>
        /// 屏幕编号
        /// </summary>
        public uint nScreenNo;
        /// <summary>
        /// 显示文本(文本类型为EM_SCREEN_TEXT_TYPE_LOCAL_TIME时的时间格式,
		/// %Y 年
		/// %M 月
		/// %D 日
		/// %H 时(24小时机制)
		/// %h 时(12小时)
		/// %m 分
		/// %S 秒
		/// %W 星期
		/// %T 显示上午或下午
		/// %X 表示显示普通文本内容
        /// </summary>
	    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szText;
        /// <summary>
        /// 文本类型
        /// </summary>
        public EM_SCREEN_TEXT_TYPE emTextType;
        /// <summary>
        /// 文本颜色
        /// </summary>
        public EM_SCREEN_TEXT_COLOR emTextColor;
        /// <summary>
        /// 文本滚动模式
        /// </summary>
        public EM_SCREEN_TEXT_ROLL_MODE emTextRollMode;
        /// <summary>
        /// 文本滚动速度由慢到快分为1~5
        /// </summary>
        public uint nRollSpeed;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 播报信息
    /// </summary>
    public struct NET_BROADCAST_INFO
    {
        /// <summary>
        /// 语音文本
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szText;
        /// <summary>
        /// 文本类型
        /// </summary>
        public EM_BROADCAST_TEXT_TYPE emTextType;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 设置停车控制信息(点阵屏和语音播报的控制) CLIENT_ControlDeviceEx入参(对应 DH_CTRL_SET_PARK_CONTROL_INFO )
    /// </summary>
    public struct NET_IN_SET_PARK_CONTROL_INFO
    {
        /// <summary>
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 屏幕信息个数
        /// </summary>
        public int nScreenShowInfoNum;
        /// <summary>
        /// 屏幕信息
        /// </summary>
	    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_SCREEN_SHOW_INFO[] stuScreenShowInfo;
        /// <summary>
        /// 字节补齐
        /// </summary>
	    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// 播报信息个数
        /// </summary>
        public int nBroadcastInfoNum;
        /// <summary>
        /// 播报信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_BROADCAST_INFO[] stuBroadcastInfo;
        /// <summary>
        /// / 通道号,从0开始
        /// Channel ID,start from 0
        /// </summary>
        public uint nChannel;
    }

    /// <summary>
    /// 设置停车控制信息(点阵屏和语音播报的控制) CLIENT_ControlDeviceEx出参(对应 DH_CTRL_SET_PARK_CONTROL_INFO)
    /// </summary>
    public struct NET_OUT_SET_PARK_CONTROL_INFO
    {
        public uint dwSize;					// 结构体大小
    }

    // 雨刷来回刷一次,雨刷模式配置为手动模式时有效
    public struct NET_CTRL_RAINBRUSH_MOVEONCE
    {
        public uint dwSize;
        public int nChannel;       // 表示雨刷的索引
    }

    // 雨刷来回循环刷,雨刷模式配置为手动模式时有效
    public struct NET_CTRL_RAINBRUSH_MOVECONTINUOUSLY
    {
        public uint dwSize;
        public int nChannel;       // 表示雨刷的索引
        public uint nInterval;      // 雨刷间隔
    }

    // 雨刷停止刷,雨刷模式配置为手动模式时有效
    public struct NET_CTRL_RAINBRUSH_STOPMOVE
    {
        public uint dwSize;
        public int nChannel;       // 表示雨刷的索引
    }

    // <summary>
    /// 外部报警配置
    /// External alarm setup
    /// </summary>
    public struct NET_CFG_ALARMIN_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Alarm channel number (Begins with 0)
        /// 报警通道号(0开始)
        /// </summary>
	    public int nChannelID;
        /// <summary>
        /// Enable
        /// 使能开关
        /// </summary>
	    public bool bEnable;
        /// <summary>
        /// Alarm channel name
        /// 报警通道名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szChnName;
        /// <summary>
        /// Alarm device type,0:NO,1:NC
        /// 报警器类型，0：常闭，1：常开
        /// </summary>
	    public int nAlarmType;
        /// <summary>
        /// Alarm activation
        /// 报警联动
        /// </summary>
	    public NET_ALARM_MSG_HANDLE stuEventHandler;
        /// <summary>
        /// Event responding period,if you want set and get time, take this as the standard;ignore the "stuTimeSection" filed in stuEventHandler
        /// 事件响应时间段，时间段获取和设置以此成员为准，忽略 stuEventHandler 中的 stuTimeSection
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 6)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// Device ID enable
        /// </summary>
        public bool abDevID;
        /// <summary>
        /// Device ID 
        /// 设备ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDevID;
        /// <summary>
        /// Sensor trigger mode, 0:high effective,1low effective;
        /// Sensor grounding or supply,with nAlarmType 
        /// 传感器触发模式, 0:高有效，1低有效；
        /// 具体表现为传感器接地or电源，与nAlarmType组合使用
        /// </summary>
        public int nPole;
        /// <summary>
        /// Inductive sensor 
        /// 传感器感应方式
        /// </summary>
        public EM_SENSE_METHOD emSense;
        /// <summary>
        /// Alarm control
        /// 报警使能控制方式
        /// </summary>
        public EM_CTRL_ENABLE emCtrl;
        /// <summary>
        /// Delay time machine, unit(s),0~300,
        /// emCtrl value is EM_CTRL_NORMAL or EM_CTRL_ALWAYS_EN  valid
        /// 延时撤防时间,防区类型为"Delay"(延时防区)时才有效, 单位: 秒, 最大时间通过查询能力获得
        /// emCtrl值为EM_CTRL_NORMAL或EM_CTRL_ALWAYS_EN 时有效。
        /// </summary>
        public int nDisDelay;

        /// <summary>
        /// DefenceArea Type , Specific Types Supported by Querying the Ability to Obtain
        /// 防区类型, 具体支持的类型通过查询能力获得
        /// </summary>
        public EM_CFG_DEFENCEAREATYPE emDefenceAreaType;
        /// <summary>
        /// Delay Protection Time, DefenceArea Type is"Delay"(Delay DefenceArea)is Effective, Unit: Second,  Maximum Time by Querying the Ability to Obtain
        /// 延时布防时间, 防区类型为"Delay"(延时防区)时才有效, 单位: 秒, 最大时间通过查询能力获得    
        /// </summary>
        public int nEnableDelay;
        /// <summary>
        /// Root address, -1 means invalid, 0 means local channel, 1 means connect to 1st serial extention channel, 2,3...and so on
        /// 根地址, -1表示无效, 0表示本地通道, 1表示连接在第一个串口上的扩展通道, 2、3...以此类推
        /// </summary>
        public int nSlot;
        /// <summary>
        /// 1st level cascading address, means connection to no.nSlot serial no.nLevel 1 detector or meter, -1 means invalid, from 0
        /// 第一级级联地址, 表示连接在第nSlot串口上的第nLevel1个探测器或仪表, -1表示无效, 从0开始
        /// </summary>
        public int nLevel1;
        /// <summary>
        /// Means if nLevel2 text exists
        /// 表示nLevel2字段是否存在
        /// </summary>
        public byte abLevel2;
        /// <summary>
        /// 2rd level cascading address, means connected to no. nLevel1 meter's detector no., -1 means invalid, from 0
        /// 第二级级联地址, 表示连接在第nLevel1个的仪表上的探测器序号, -1表示无效, 从0开始
        /// </summary>
        public int nLevel2;
        /// <summary>
        /// The timeout of un-close the door,unit second,range is 15s-300s
        /// 门未关超时时间,单位为s,范围 15s-300s
        /// </summary>
        public int nDoorNotClosedTimeout;
    }

    /// <summary>
    /// 二维码上报事件信息( ALARM_QR_CODE_CHECK )
    /// QR code check info( ALARM_QR_CODE_CHECK )
    /// </summary>
    public struct NET_ALARM_QR_CODE_CHECK_INFO
    {
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件发生的时间
        /// Event occurrence time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Time stamp (Unit:ms)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 二维码字符串
        /// QR code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szQRCode;
        /// <summary>
        /// 本地报警输入通道号
        /// Local alarm input channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    // CLIENT_ResetSystemEx 输入参数
    public struct NET_IN_RESET_SYSTEM_EX
    {
        public uint dwSize;                                         // 结构体大小
        public uint nType;                                          // 0: 硬恢复; 1:软恢复
    }

    // CLIENT_ResetSystemEx 输出参数
    public struct NET_OUT_RESET_SYSTEM_EX
    {
        public uint dwSize;                                       // 结构体大小
    }

    /// <summary>
    /// 存储组通道相关配置
    /// Storage group channel corresponding config
    /// </summary>
    public struct NET_A_AV_CFG_StorageGroupChannel
    {
        public int nStructSize;
        /// <summary>
        /// 每个通道文件夹图片存储上限, 超过就覆盖
        /// Picture storage threshold of each channel folder. System overwrites once it reaches the threshold.
        /// </summary>
        public int nMaxPictures;
        /// <summary>
        /// 通道在命名规则里的字符串表示, %c对应的内容
        /// The string of the channel in the Name Rule. The corresponding contents of %c.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPath;
    }

    /// <summary>
    /// 存储组配置
    /// Storage group config
    /// </summary>
    public struct NET_A_AV_CFG_StorageGroup
    {
        public int nStructSize;
        /// <summary>
        /// 分组名称
        /// Group name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 分组说明
        /// Group note
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szMemo;
        /// <summary>
        /// 文件保留时间
        /// File save time
        /// </summary>
        public int nFileHoldTime;
        /// <summary>
        /// 存储空间满是否覆盖
        /// Overwrite or not when the storage space is full.
        /// </summary>
        public bool bOverWrite;
        /// <summary>
        /// 录像文件路径命名规则
        /// Record file path name rule
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szRecordPathRule;
        /// <summary>
        /// 图片文件路径命名规则
        /// %y年, %M月, %d日, %h时, %m分, %s秒, %c通道路径
        /// 如果年月日时分秒出现两次, 第一次表示开始时间, 第二次表示结束时间
        /// Picture file path name rule
        /// %y=Y, %M=M, %d=D, %h=H, %m=M, %s=S, %c=Channel path
        /// If the Y-M-D-M-S appears twice, the first one stands for the start time and the second one stands for the end time.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szPicturePathRule;
        /// <summary>
        /// 通道相关配置
        /// Channel corresponding config
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_A_AV_CFG_StorageGroupChannel[] stuChannels;
        /// <summary>
        /// 通道配置数
        /// Channel config amount
        /// </summary>
        public int nChannelCount;
        /// <summary>
        /// 自定义名称，若为空使用szName
        /// custom name，if it is null use szName
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCustomName;
        /// <summary>
        /// 子设备列表
        /// sub device list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 64)]
        public string szSubDevices;
        /// <summary>
        /// 子设备数量
        /// sub device amount
        /// </summary>
        public int nSubDevices;
    }

    //订阅雷达的报警点信息入参(对应接口 CLIENT_AttachRadarAlarmPointInfo)
    public struct NET_IN_RADAR_ALARMPOINTINFO
    {
        public uint dwSize;                  // 结构体大小
        public fRadarAlarmPointInfoCallBack cbAlarmPointInfo;    // 雷达报警点信息回调
        public IntPtr dwUser;                  // 用户数据
        public int nChannel;                // 通道号
    }

    //订阅雷达的报警点信息出参(对应接口 CLIENT_AttachRadarAlarmPointInfo)
    public struct NET_OUT_RADAR_ALARMPOINTINFO
    {
        public uint dwSize;                  // 结构体大小
    }

    //点类型的掩码
    public enum EM_RADAR_POINTTYPE
    {
        UNKNOWN,                          // 未知
        ALARMPOINT,                       // 当前点是报警区的报警点
        LINKMONITORPOINT,                 // 当前点是正在被联动监控的点
        DISAPPEARTRACKPOINT,              // 当前点是消失的轨迹点
    }

    /// <summary>
    /// 点所指对象的类型的掩码
    /// radar object type
    /// </summary>
    public enum EM_RADAR_OBJECTTYPE
    {
        /// <summary>
        /// 未识别目标
        /// unknown
        /// </summary>
        EM_RADAR_OBJECTTYPE_UNKNOWN,
        /// <summary>
        /// 目标为人
        /// person
        /// </summary>
        EM_RADAR_OBJECTTYPE_PERSON,
        /// <summary>
        /// 目标为交通工具
        /// vehicle
        /// </summary>
        EM_RADAR_OBJECTTYPE_VEHICLE,
        /// <summary>
        /// 目标为树
        /// tree
        /// </summary>
        EM_RADAR_OBJECTTYPE_TREE,
        /// <summary>
        /// 目标为建筑物
        /// building
        /// </summary>
        EM_RADAR_OBJECTTYPE_BUILIDING,
        /// <summary>
        /// 目标为屏幕
        /// screen
        /// </summary>
        EM_RADAR_OBJECTTYPE_SCREEN,
        /// <summary>
        /// 目标为动物
        /// animal
        /// </summary>
        EM_RADAR_OBJECTTYPE_ANIMAL,
        /// <summary>
        /// 目标为大船
        /// big ship
        /// </summary>
        EM_RADAR_OBJECTTYPE_BIG_SHIP,
        /// <summary>
        /// 目标为中船
        /// middle ship
        /// </summary>
        EM_RADAR_OBJECTTYPE_MID_SHIP,
        /// <summary>
        /// 目标为小船
        /// small ship
        /// </summary>
        EM_RADAR_OBJECTTYPE_SMALL_SHIP,
        /// <summary>
        /// 目标为静止目标类型
        /// stationary target type
        /// </summary>
        EM_RADAR_OBJECTTYPE_STATIONARY_TARGET_TYPE,
    }

    /// <summary>
    /// 单个雷达报警点信息
    /// single radar alarm point info
    /// </summary>
    public struct NET_RADAR_ALARMPOINT_INFO
    {
        /// <summary>
        /// 点类型的掩码,该字段废弃,请不要使用,请使用nPointType
        /// point type,the field is abandoned.please do not use, use nPointType
        /// </summary>
        public EM_RADAR_POINTTYPE emPointType;
        /// <summary>
        /// 点类型的掩码
        /// bit0：无效
        /// bit1：当前点是消失的轨迹点
        /// bit2：当前点是正在被联动监控的点
        /// bit3：当前点是报警区的报警点
        /// 备注：点的状态可能有多个，例如值为0xC时，表示当前的点既是正在被联动监控的点，又是报警区的报警点
        /// point type
        /// bit0:invalid
        /// bit1:disappear track point
        /// bit2:points being monitored by linkage
        /// bit3:alarm point of alarm area
        /// </summary>
        public int nPointType;
        /// <summary>
        /// 当前点所属的防区编号,范围[0,10]([1,10]为防区编号,0表示当前点不属于任何一个防区)
        /// region number, range[0,10]([1,10] is defense area number,0 indicates that it does not belong to any defense area)
        /// </summary>
        public int nRegionNumber;
        /// <summary>
        /// 点所指对象的类型的掩码
        /// radar object type
        /// </summary>
        public EM_RADAR_OBJECTTYPE emObjectType;
        /// <summary>
        /// 点所属的轨迹号,范围[0,63]
        /// track ID, range[0,63]
        /// </summary>
        public int nTrackID;
        /// <summary>
        /// 当前点像素极坐标值-距离，实际长度扩大100倍的结果,单位米
        /// distance, the result of expand 100 times, unit:m
        /// </summary>
        public int nDistance;
        /// <summary>
        /// 当前点像素极坐标值-角度，实际角度扩大100倍的结果，单位度
        /// angle, the result of expand 100 times, unit:degree
        /// </summary>
        public int nAngle;
        /// <summary>
        /// 当前点速度，扩大100倍的结果，单位米/秒
        /// point speed, the result of expand 100 times, unit:s
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// 经度, 用整型传输, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254
        /// Longitude, transmitted by integer, magnified by 1000000 times, 6 digits after the decimal point are valid, and less than 6 digits are filled with 0, for example, 120125400 represents 120.1254
        /// </summary>
        public int nLongitude;
        /// <summary>
        /// 纬度, 用整型传输, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254
        /// Latitude, transmitted by integer, magnified by 1000000 times, 6 digits after the decimal point are valid, if less than 6 digits are filled with 0, for example, 120125400 represents 120.1254
        /// </summary>
        public int nLatitude;
        /// <summary>
        /// 正在跟踪目标的球机的IP地址
        /// The dome camera is tracking the target, 0 is an invalid value
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szTrackerIP;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 488)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 雷达规则信息
    /// Radar rule information
    /// </summary>
    public struct NET_RADAR_RULE_INFO
    {
        /// <summary>
        /// 规则编号
        /// Rule ID
        /// </summary>
        public int nRuleID;
        /// <summary>
        /// 规则内轨迹数量
        /// Number of tracks in the rule
        /// </summary>
        public int nPointNumber;
        /// <summary>
        /// 正在跟踪目标的球机, 0 为无效值
        /// The dome camera is tracking the target, 0 is an invalid value
        /// </summary>
        public uint nTrackerIP;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 60)]
        public string byReserved;
    }

    /// <summary>
    /// 上报的雷达报警点信息
    /// notify radar alarm point info
    /// </summary>
    public struct NET_RADAR_NOTIFY_ALARMPOINTINFO
    {
        /// <summary>
        /// 雷达报警点的数量
        /// radar alarm point number
        /// </summary>
        public int nNumAlarmPoint;
        /// <summary>
        /// 雷达报警点信息
        /// radar alarm point info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_RADAR_ALARMPOINT_INFO[] stuAlarmPoint;
        /// <summary>
        /// 通道号
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 规则数量
        /// rule number
        /// </summary>
        public uint nRuleNum;
        /// <summary>
        /// 雷达规则信息
        /// radar regulation information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_RADAR_RULE_INFO[] stuRuleInfo;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 296)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 雷达区域检测事件的RFID卡片信息
    /// RFID card information
    /// </summary>
    public struct NET_RADAR_REGIONDETECTION_RFIDCARD_INFO
    {
        /// <summary>
        /// 卡片ID
        /// Card ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
        public string szCardID;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string byReserved;
    }

    /// <summary>
    /// 雷达区域检测事件(对应 ALARM_RADAR_REGIONDETECTION)
    /// radar region detection event(corresponding to ALARM_RADAR_REGIONDETECTION)
    /// </summary>
    public struct NET_ALARM_RADAR_REGIONDETECTION_INFO
    {
        /// <summary>
        /// 事件动作1:Start 2:Stop
        /// event action 1:Start 2:Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件发生的时间
        /// event occur time
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// 通道号
        /// Channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 检测到的对象个数
        /// Number of detected objects
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// 雷达检测对象列表
        /// List of radar detection objects
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_RADAR_DETECT_OBJECT[] stuObjects;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 事件触发的预置点号
        /// Preset point number triggered by the event
        /// </summary>
        public int nPresetID;
        /// <summary>
        /// 检测区域顶点数
        /// The number of vertices in the detection area
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 检测区域,[0,8191]
        /// Detection area,[0,8191]
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 报警类型
        /// alarm type
        /// </summary>
        public EM_RADAR_ALARM_TYPE emAlarmType;
        /// <summary>
        /// 经度，扩大1000000倍，小数点后6位有效，不足6位用0补齐，例如120125400代表120.1254
        /// Longitude, expanded by 1000000 times, 6 digits after the decimal point are valid, if less than 6 digits are filled with 0, for example, 120125400 represents 120.1254
        /// </summary>
        public int nLongitude;
        /// <summary>
        /// 纬度，扩大1000000倍，小数点后6位有效，不足6位用0补齐，例如120125400代表120.1254
        /// Latitude, expanded by 1000000 times, 6 digits after the decimal point are valid, if less than 6 digits are less than 6 digits, use 0 to fill in, for example, 120125400 represents 120.1254
        /// </summary>
        public int nLatitude;
        /// <summary>
        /// 智能事件规则编号，用于表示哪个规则触发的事件。
        /// Smart event rule number, used to indicate which rule triggered the event.
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// RFID卡片数量
        /// RFID card number
        /// </summary>
        public int nCardNum;
        /// <summary>
        /// RFID卡片信息
        /// RFID card information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_RADAR_REGIONDETECTION_RFIDCARD_INFO[] stuCardInfo;
        /// <summary>
        /// 报警等级，0 表示未知， 1表示预警警告，2表示报警
        /// alarm level, 0 means unknown, 1 means warning, 2 means alarm The 2nd bit indicates whether the line is prohibited, and the 3rd bit indicates whether it is retrograde
        /// </summary>
        public uint nAlarmLevel;
        /// <summary>
        /// 报警标志位，bit0表示是否超速，bit1表示是否AIS匹配 第2bit位表示是否禁行 第3bit位表示是否逆行
        /// Alarm flag bit, bit0 indicates whether overspeed, Bit1 indicates whether AIS matches
        /// </summary>
        public int nAlarmFlag;
        /// <summary>
        /// 报警输入通道号
        /// Alarm input channel number
        /// </summary>
        public int nAlarmChannel;
        /// <summary>
        /// 事件编号，用来唯一标志一个事件
        /// Event number, used to uniquely mark an event
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 触发事件目标的速度，用整型传输，扩大100倍 单位m/s
        /// The speed of the trigger event target, transmitted by integer, expanded by 100 times, unit m/s
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// 触发事件目标的id,范围[0,63]
        /// id of trigger event target, range [0,63]
        /// </summary>
        public int nTrackID;
        /// <summary>
        /// 触发事件目标的类型的掩码: 0x00未识别目标 0x01目标为人 0x02目标为交通工具 0x03目标为树 0x04目标为建筑物 0x05目标为屏幕 0x06目标为动物 0x07目标为大船 0x08目标为中船 0x09目标为小船
        /// Mask of the type of trigger event target: 0x00 unidentified target, 0x01 target is human, 0x02 target is vehicle, 0x03 target is tree, 0x04 target is building, 0x05 target is screen, 0x06 target is animal, 0x07 targets large ships, 0x08 targets medium ships, and 0x09 targets small ships
        /// </summary>
        public int nObjectType;
        /// <summary>
        /// 车道/航道方向 -1:未知 0:无效 1:上行 2:下行
        /// Lane / channel direction - 1: unknown 0: invalid 1: up 2: down
        /// </summary>
        public int nUpDownGoing;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 预留字节
        /// reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1000)]
        public string byReserved;
    }

    ///////////////////////// 人群密度智能事件 //////////////////////////

    /// <summary>
    /// 事件类型EVENT_IVS_DENSITYDETECTION(人员密度检测)对应数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_DENSITYDETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体个数
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// 检测到的物体列表
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_MSG_OBJECT[] stuObjectIDs;
        /// <summary>
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 规则检测区域顶点数
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 抓图标志(按位),具体见 NET_RESERVED_COMMON  
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件源设备上的index,-1表示数据无效
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// 事件触发累计次数
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 智能事件公共信息
        /// </summary>
	    public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 密度检测数值单位(0-Level,1-Percent)
        /// </summary>
        public int nUnit;
        /// <summary>
        /// 密度值，单位为Level时，取值0~3，分别表示(很稀疏，稀疏，密集，很密集)单位为Percent时，取值0~100
        /// </summary>
	    public int nValue;
        /// <summary>
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 612)]
        public byte[] bReserved;
    }

    // 雷达操作类型
    public enum EM_RADAR_OPERATE_TYPE
    {
        STARTUPGRADE = 0,              // 雷达开始升级通知,入参:NET_IN_RADAR_STARTUPGRADE,出参:NET_OUT_RADAR_STARTUPGRADE
        GETCAPS = 1,                   // 获取雷达能力,入参:NET_IN_RADAR_GETCAPS,出参:NET_OUT_RADAR_GETCAPS
        GETSTATUS = 2,                 // 获取雷达状态,入参:NET_IN_RADAR_GETSTATUS,出参:NET_OUT_RADAR_GETSTATUS
        CALCULATEREALSIZE = 3,         // 计算图片对应的地图实际长度,入参:NET_IN_RADAR_CALCULATEREALSIZE,出参:NET_OUT_RADAR_CALCULATEREALSIZE
        SETCALIBRATION = 4,            // 雷球校准配置下发,入参:NET_IN_RADAR_SETCALIBRATION,出参:NET_OUT_RADAR_SETCALIBRATION
    }

    //获取雷达能力入参(对应 EM_RADAR_OPERATE_TYPE_GETCAPS)
    public struct NET_IN_RADAR_GETCAPS
    {
        /// <summary>
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// <summary>
        public int nChannel;
        /// <summary>
        /// 雷达ip
        /// radar ip
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRadarIP;
    }

    // 雷达功率配置能力
    public struct NET_RADAR_CAPACITY_CAP
    {
        /// <summary>
        /// 是否支持该能力
        /// <summary>
        public bool bSupport;
        /// <summary>
        /// 探测距离列表的有效数据个数
        /// <summary>
        public int nListNum;
        /// <summary>
        /// 配置时可选的探测距离列表
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public int[] nDistanceList;
        /// <summary>
        /// 预留
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 224)]
        public byte[] byReserved;
    }

    // 雷达场景配置能力
    public struct NET_RADAR_SCENE_CAP
    {
        /// <summary>
        /// 是否支持该能力
        /// <summary>
        public bool bSupport;
        /// <summary>
        /// 预留
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;
    }

    // 雷达信道配置能力
    public struct NET_RADAR_CHANNEL_CAP
    {
        /// <summary>
        /// 是否支持该能力
        /// <summary>
        public bool bSupport;
        /// <summary>
        /// 信道号列表的有效数据个数
        /// <summary>
        public int nListNum;
        /// <summary>
        /// 配置时可选的信道号列表
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public int[] nChannelList;
        /// <summary>
        /// 预留
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 224)]
        public byte[] byReserved;
    }

    // 雷达场景变更能力
    public struct NET_RADAR_MOVEDDETECT_CAP
    {
        /// <summary>
        /// 是否支持该能力
        /// <summary>
        public bool bSupport;
        /// <summary>
        /// 预留
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 雷达控制盒支持的协议能力信息
    /// Protocol capability information supported by radar control box
    /// </summary>
    public struct NET_RADAR_PROTOCAL_CAP
    {
        /// <summary>
        /// 是否支持切换协议能力
        /// Whether to support the ability to switch protocols
        /// </summary>
        public bool bSupport;
        /// <summary>
        /// 支持的协议类型个数, 即szPtotoList 数组的有效元素个数
        /// The number of supported protocol types, that is, the number of valid elements in the szPtotoList array
        /// </summary>
        public uint nProtocalNum;
        /// <summary>
        /// 雷达控制盒支持的协议列表
        /// List of protocols supported by the radar control box
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10 * 32)]
        public string szPtotoList;
        /// <summary>
        /// 经度，用整型传输，放大1000000倍，小数点后6位有效，不足6位用0补齐，例如120125400代表120.1254
        /// Longitude, transmitted by integer, magnified by 1000000 times, 6 digits after the decimal point are valid, if less than 6 digits are filled with 0, for example, 120125400 represents 120.1254
        /// </summary>
        public int nLongitude;
        /// <summary>
        /// 纬度，用整型传输，放大1000000倍，小数点后6位有效，不足6位用0补齐，例如120125400代表120.1254
        /// Latitude, transmitted by integer, magnified by 1000000 times, 6 digits after the decimal point are valid, if less than 6 digits are filled with 0, for example, 120125400 represents 120.1254
        /// </summary>
        public int nLatitude;
        /// <summary>
        /// 雷达地图朝向角，放大100倍，例如112897，实际是128.97度
        /// Radar map heading angle, magnified 100 times, for example, 112897, which is actually 128.97 degrees
        /// </summary>
        public int nAngle;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 设备程序所在的雷达区域
    /// The radar area where the device program is located
    /// </summary>
    public enum EM_RADAR_GETCAPS_AREASUB_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_RADAR_GETCAPS_AREASUB_TYPE_UNKNOWN,
        /// <summary>
        /// 扇形
        /// sector
        /// </summary>
        EM_RADAR_GETCAPS_AREASUB_TYPE_SECTOR,
        /// <summary>
        /// 椭圆
        /// ellipse
        /// </summary>
        EM_RADAR_GETCAPS_AREASUB_TYPE_ELLIPSE,
    }

    /// <summary>
    /// 雷达类型
    /// Radar type
    /// </summary>
    public enum EM_RADAR_GETCAPS_RADAR_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_RADAR_GETCAPS_RADAR_TYPE_UNKNOWN,
        /// <summary>
        /// 单IP雷达
        /// Single IP radar
        /// </summary>
        EM_RADAR_GETCAPS_RADAR_TYPE1,
        /// <summary>
        /// 雷达控制盒
        /// Radar control box
        /// </summary>
        EM_RADAR_GETCAPS_RADAR_TYPE2,
        /// <summary>
        /// 端站一体机
        /// Terminal station integrated machine
        /// </summary>
        EM_RADAR_GETCAPS_RADAR_TYPE3,
        /// <summary>
        /// 室内雷达
        /// Indoor radar
        /// </summary>
        EM_RADAR_GETCAPS_RADAR_TYPE4,
        /// <summary>
        /// 体征雷达
        /// Sign radar
        /// </summary>
        EM_RADAR_GETCAPS_RADAR_TYPE5,
    }

    //获取雷达能力出参(对应 EM_RADAR_OPERATE_TYPE_GETCAPS)
    public struct NET_OUT_RADAR_GETCAPS
    {
        /// <summary>
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// 雷达探测距离，实际距离扩大100倍,单位米
        /// <summary>
        public int nDetectionRange;
        /// <summary>
        /// 雷达探测角度，实际角度扩大100倍,单位度
        /// <summary>
        public int nDetectionAngle;
        /// <summary>
        /// 雷达人探测距离，实际距离扩大100倍,单位米
        /// <summary>
        public int nDetectionHuman;
        /// <summary>
        /// 下列扩展能力是否有效(老设备不支持获取下列能力，从而无法用于判断是否支持下列能力)
        /// <summary>
        public bool bExValid;
        /// <summary>
        /// 雷达功率配置能力
        /// <summary>
        public NET_RADAR_CAPACITY_CAP stuCapacityCap;
        /// <summary>
        /// 雷达场景配置能力
        /// <summary>
        public NET_RADAR_SCENE_CAP stuSceneCap;
        /// <summary>
        /// 雷达信道配置能力
        /// <summary>
        public NET_RADAR_CHANNEL_CAP stuChannelCap;
        /// <summary>
        /// 雷达场景变更能力
        /// <summary>
        public NET_RADAR_MOVEDDETECT_CAP stuMovedDetectCap;
        /// <summary>
        /// 雷达控制盒支持的协议能力
        /// Protocol capabilities supported by the radar control box
        /// </summary>
        public NET_RADAR_PROTOCAL_CAP stuProtocalCap;
        /// <summary>
        /// 雷达探测范围形状
        /// Radar detection range shape
        /// </summary>
        public EM_RADAR_GETCAPS_AREASUB_TYPE emAreaSubType;
        /// <summary>
        /// 雷达类型
        /// Radar type
        /// </summary>
        public EM_RADAR_GETCAPS_RADAR_TYPE emRadarType;
    }

    //获取雷达状态入参(对应 EM_RADAR_OPERATE_TYPE_GETSTATUS)
    public struct NET_IN_RADAR_GETSTATUS
    {
        /// <summary>
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// <summary>
        public int nChannel;
    }

    //雷达状态
    public enum EM_RADAR_STATUS
    {
        /// <summary>
        /// 未知
        /// <summary>
        UNKNOWN,
        /// <summary>
        /// 正常
        /// <summary>
        NORMAL,
        /// <summary>
        /// 异常
        /// <summary>
        ABNORMAL,
    }

    //获取雷达状态出参(对应 EM_RADAR_OPERATE_TYPE_GETSTATUS)
    public struct NET_OUT_RADAR_GETSTATUS
    {
        /// <summary>
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// 雷达状态
        /// <summary>
        public EM_RADAR_STATUS emRadarStatus;
    }

    // 事件级别
    public enum EM_EVENT_LEVEL
    {
        /// <summary>
        /// 提示
        /// <summary>
        HINT = 0,
        /// <summary>
        /// 普通
        /// <summary>
        GENERAL,
    }

    /// <summary>
    /// 事件类型EVENT_IVS_SHOPPRESENCE(商铺占道经营事件)对应的数据块描述信息
    /// the describe of EVENT_IVS_SHOPPRESENCE's data
    /// </summary>
    public struct NET_DEV_EVENT_SHOPPRESENCE_INFO
    {
        /// <summary>
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体，推荐使用字段stuObjects获取物体信息
        /// <summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 规则检测区域顶点数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// <summary>
        public byte bEventAction;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// <summary>
        public byte byImageIndex;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件源设备上的index,-1表示数据无效
        /// <summary>
        public int nSourceIndex;
        /// <summary>
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// 事件触发累计次数
        /// <summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 智能事件公共信息
        /// <summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 事件触发的预置点名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 事件级别，GB30147需求
        /// <summary>
        public EM_EVENT_LEVEL emEventLevel;
        /// <summary>
        /// 商铺地址
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szShopAddress;
        /// <summary>
        /// 违法持续时长，单位：秒，缺省值0表示无意义
        /// <summary>
        public uint nViolationDuration;
        /// <summary>
        /// 检测到的物体个数
        /// <summary>
        public int nObjectNum;
        /// <summary>
        /// 检测到的物体
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;
        /// <summary>
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2048)]
        public byte[] byReserved2;
    }

    /// <summary>
    /// Corresponding to data block description of event type EVENT_IVS_FLOWBUSINESS (FlowBusiness)
    /// 事件类型 EVENT_IVS_FLOWBUSINESS (流动摊贩事件) 对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_FLOWBUSINESS_INFO
    {
        /// <summary>
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 检测区域顶点数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 检测区域
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 事件触发的预置名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 智能事件公共信息
        /// <summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 违法持续时长，单位：秒 缺省值0表示无意义
        /// <summary>
        public uint nViolationDuration;
        /// <summary>
        /// 检测到的物体个数
        /// <summary>
        public int nObjectNum;
        /// <summary>
        /// 检测到的物体
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2044)]
        public byte[] byReserved;
    }

    // 归一化的云台控制坐标单元
    public struct NET_PTZ_NORMALIZED_POSITION_UNIT
    {
        /// <summary>
        /// 云台水平方向角度,范围[-1, 1]
        /// <summary>
        public double dbPositionX;
        /// <summary>
        /// 云台垂直方向角度,范围[-1, 1]
        /// <summary>
        public double dbPositionY;
        /// <summary>
        /// 云台光圈放大倍率,范围[0, 1]
        /// <summary>
        public double dbZoom;
        /// <summary>
        /// 预留
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReserved;
    }


    // 车辆状态
    public enum EM_CITYMOTOR_STATUS
    {
        /// <summary>
        /// 未知
        /// <summary>
        UNKNOWN,
        /// <summary>
        /// 驶入
        /// <summary>
        DRIVE_IN,
        /// <summary>
        /// 驶离
        /// <summary>
        DRIVE_OUT
    }

    // 是否为违规预警图片
    public enum EM_PREALARM
    {
        /// <summary>
        /// 未知
        /// <summary>
        UNKNOWN = -1,
        /// <summary>
        /// 机动车违章事件
        /// <summary>
        VIOLATION_EVENT,
        /// <summary>
        /// 机动车违章预警事件
        /// <summary>
        VIOLATION_WARNING_EVENT
    }

    // 事件类型 EVENT_IVS_CITY_MOTORPARKING (城市机动车违停事件) 对应的数据块描述信息
    public struct NET_DEV_EVENT_CITY_MOTORPARKING_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// Event corresponding to file information
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 检测到的物体个数
        /// Have been detected object number
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// 检测到的物体
        /// Have been detected object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 检测区域顶点数
        /// Detect Region point number
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 检测区域
        /// Detect Region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 事件触发的预置名称
        /// Preset name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 智能事件公共信息
        /// Intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 违停持续时长，单位：秒 缺省值0表示无意义
        /// Duration of violation of parking,unit:second,default value 0 is meaningless
        /// </summary>
        public uint nParkingDuration;
        /// <summary>
        /// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
        /// Correlate event ID, events arising from same object or picture could have same correlate event ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// stuPtzPosition 是否有效
        /// whether stuPtzPosition is valid
        /// </summary>
        public bool bPtzPosition;
        /// <summary>
        /// 云台信息
        /// Ptz position info
        /// </summary>
        public NET_PTZ_NORMALIZED_POSITION_UNIT stuPtzPosition;
        /// <summary>
        /// 车辆状态
        /// Vehicle status
        /// </summary>
        public EM_CITYMOTOR_STATUS emMotorStatus;
        /// <summary>
        /// 全景广角图信息
        /// Global scene iamge
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 是否为违规预警图片(预警触发后一定时间，违规物体还没有离开，才判定为违规)
        /// Whether it is a violation warning picture (it is judged as violation only when the violation object has not left for a certain time after the warning is triggered)
        /// </summary>
        public EM_PREALARM emPreAlarm;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 车头朝向 0-未知,1-正面,2-侧面,3-背面
        /// Vehicle Head Direction. 0-unknown,1-front,2-side,3-behind
        /// </summary>
        public byte byVehicleHeadDirection;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1011)]
        public string byReserved;
    }

    // 事件类型 EVENT_IVS_CITY_NONMOTORPARKING (城市非机动车违停事件) 对应的数据块描述信息
    public struct NET_DEV_EVENT_CITY_NONMOTORPARKING_INFO
    {
        /// <summary>
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 检测区域顶点数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 检测区域
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 报警阈值
        /// <summary>
        public int nAlarmNum;
        /// <summary>
        /// 非机动车的个数
        /// <summary>
        public int nNoMotorNum;
        /// <summary>
        /// 事件触发的预置名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 智能事件公共信息
        /// <summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 违法持续时长，单位：秒 缺省值0表示无意义
        /// <summary>
        public uint nViolationDuration;
        /// <summary>
        /// 检测到的物体个数
        /// <summary>
        public int nObjectNum;
        /// <summary>
        /// 检测到的物体
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 全景广角图
        /// Panoramic wide-angle map
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 892)]
        public byte[] byReserved;
    }

    // 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR_HOLDUMBRELLA (非机动车装载伞具事件) 对应的数据块描述信息
    public struct NET_DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO
    {
        /// <summary>
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 智能事件公共信息
        /// <summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 对应图片的分辨率
        /// <summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// 检测到的物体
        /// <summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 非机动车信息
        /// <summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// 车道号
        /// <summary>
        public int nLane;
        /// <summary>
        /// 抓拍序号，如3-2-1/0，1表示抓拍正常结束，0表示抓拍异常结束
        /// <summary>
        public int nSequence;
        /// <summary>
        /// 公共信息
        /// <summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4096)]
        public byte[] byReserved;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    // 事件类型 EVENT_IVS_GARBAGE_EXPOSURE (垃圾暴露检测事件) 对应的数据块描述信息
    public struct NET_DEV_EVENT_GARBAGE_EXPOSURE_INFO
    {
        /// <summary>
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// <summary>
        public uint nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 规则检测区域
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 规则检测区域顶点数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 检测到的物体
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 检测到的物体个数
        /// <summary>
        public int nObjectNum;
        /// <summary>
        /// 智能事件公共信息
        /// <summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 事件触发的预置名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 违法持续时长，单位：秒 缺省值0表示无意义
        /// <summary>
        public uint nViolationDuration;
        /// <summary>
        /// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3016)]
        public byte[] bReserved;
    }

    // 事件类型 EVENT_IVS_DUSTBIN_OVER_FLOW (垃圾桶满溢检测事件) 对应的数据块描述信息
    public struct NET_DEV_EVENT_DUSTBIN_OVER_FLOW_INFO
    {
        /// <summary>
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// <summary>
        public uint nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 规则检测区域
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 规则检测区域顶点数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 检测到的物体
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 检测到的物体个数
        /// <summary>
        public int nObjectNum;
        /// <summary>
        /// 智能事件公共信息
        /// <summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 事件触发的预置名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 违法持续时长，单位：秒 缺省值0表示无意义
        /// <summary>
        public uint nViolationDuration;
        /// <summary>
        /// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 规则编号
        /// Rule ID
        /// </summary>
        public uint nRuleId;
        /// <summary>
        /// 规则名称
        /// Rule name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// Panoramic image information, captured 2-5s before the event
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// MosaicImage
        /// </summary>
        public IntPtr pstuMosaicImage;
        /// <summary>
        /// MosaicImageNum
        /// </summary>
        public int nMosaicImageNum;
        /// <summary>
        /// AdvanceImage
        /// </summary>
        public IntPtr pstuAdvanceImage;
        /// <summary>
        /// AdvanceImageNum
        /// </summary>
        public int nAdvanceImageNum;
        /// <summary>
        /// / Secondary assessment status, 0: unknown, 1: awaiting assessment, 2: positive, 3: suspected false, 4: missed
        /// </summary>
        public int nSecondEvaluation;
        /// <summary>
        /// / Longitude (see note), format: degrees, minutes, seconds (seconds are floating-point numbers)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public double[] dbLongitude;
        /// <summary>
        /// / Latitude (see note), format: degrees, minutes, seconds (seconds are floating-point numbers)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public double[] dbLatitude;
        /// <summary>
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2036 - 8*2)]
        public byte[] bReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2036 - 4*2)]
        public byte[] bReserved;
#endif
    }

    // 事件类型 EVENT_IVS_DOOR_FRONT_DIRTY (门前脏乱检测事件) 对应的数据块描述信息
    public struct NET_DEV_EVENT_DOOR_FRONT_DIRTY_INFO
    {
        /// <summary>
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// <summary>
        public uint nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 规则检测区域
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 规则检测区域顶点数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 检测到的物体
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 检测到的物体个数
        /// <summary>
        public int nObjectNum;
        /// <summary>
        /// 智能事件公共信息
        /// <summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 事件触发的预置名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 商铺地址名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szShopAddress;
        /// <summary>
        /// 违法持续时长，单位：秒，缺省值0表示无意义
        /// <summary>
        public uint nViolationDuration;
        /// <summary>
        /// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 保留字节,留待扩展.
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4092)]
        public byte[] bReserved;
    }

    // 比对操作类型
    public enum EM_COMPARE_OPERATOR_TYPE
    {
        /// <summary>
        /// 未知
        /// <summary>
        UNKNOWN,
        /// <summary>
        /// 相等
        /// <summary>
        EQUAL,
        /// <summary>
        /// 或
        /// <summary>
        OR,
    }

    // 智慧城管查询事件过滤条件
    public struct NET_INTELLIGENT_CITY_MANAGER_EVENT_FILTER
    {
        /// <summary>
        /// 事件操作类型
        /// <summary>
        public EM_COMPARE_OPERATOR_TYPE emOperatorType;
        /// <summary>
        /// 事件类型列表,参见智能分析事件类型:EVENT_IVS_ALL、EVENT_IVS_CITY_MOTORPARKING、EVENT_IVS_SHOPPRESENCE、
        /// EVENT_IVS_CITY_NONMOTORPARKING、EVENT_IVS_FLOWBUSINESS、EVENT_IVS_TRAFFIC_NONMOTOR_HOLDUMBRELLA
        /// EVENT_IVS_GARBAGE_EXPOSURE、EVENT_IVS_DUSTBIN_OVER_FLOW、EVENT_IVS_DOOR_FRONT_DIRTY
        /// EVENT_IVS_SHOP_SIGN_ABNORMAL、EVENT_IVS_SHOP_WINDOW_POST
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public int[] nEventList;
        /// <summary>
        /// 事件数
        /// <summary>
        public int nEventCount;
        /// <summary>
        /// 预留字段
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }


    public struct NET_STRING_32_PLATE_NO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateNo;
    }

    // 智慧城管查询车牌号过滤条件
    public struct NET_INTELLIGENT_CITY_MANAGER_PLATENO_FILTER
    {
        /// <summary>
        /// 车牌操作类型
        /// <summary>
        public EM_COMPARE_OPERATOR_TYPE emOperatorType;
        /// <summary>
        /// 车牌信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_STRING_32_PLATE_NO[] szPlateNo;
        /// <summary>
        /// 车牌数
        /// <summary>
        public int nPlateCount;
        /// <summary>
        /// 预留字段
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    // 智慧城管查询过滤条件
    public struct NET_INTELLIGENT_CITY_MANAGER_FILTER
    {
        /// <summary>
        /// 事件过滤条件
        /// <summary>
        public NET_INTELLIGENT_CITY_MANAGER_EVENT_FILTER stuEventFilter;
        /// <summary>
        /// 车牌号过滤条件
        /// <summary>
        public NET_INTELLIGENT_CITY_MANAGER_PLATENO_FILTER stuPlateNoFilter;
        /// <summary>
        /// 预留字段
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2048)]
        public byte[] byReserved;
    }

    // 智慧城管查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_INTELLIGENT_CITY_MANAGER )
    public struct NET_MEDIAFILE_INTELLIGENT_CITY_MANAGER_PARAM
    {
        /// <summary>
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav
        /// <summary>
        public int nFileType;
        /// <summary>
        /// 通道号从0开始,-1表示查询所有通道
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// 开始时间
        /// <summary>
        public NET_TIME stuBeginTime;
        /// <summary>
        /// 结束时间
        /// <summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 过滤规则
        /// <summary>
        public NET_INTELLIGENT_CITY_MANAGER_FILTER stuFilter;
        /// <summary>
        /// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
        /// TRUE means only stuStartTimeRealUTC and stuEndTimeRealUTC are delivered (not stuBeginTime, stuEndTime), FALSE means only stuBeginTime, stuEndTime (stuStartTimeRealUTC and stuEndTimeRealUTC are not delivered)
        /// </summary>
        public bool bOnlySupportRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用，与(stuStartTime, stuEndTime)互斥
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC, mutually exclusive with (stuStartTime, stuEndTime)
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用，与(stuStartTime, stuEndTime)互斥
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC, mutually exclusive with (stuStartTime, stuEndTime)
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
    }

    // 合成图信息
    public struct NET_MEDIAFILE_COMPOSITE_PICTURE_INFO
    {
        /// <summary>
        /// 合成图图片路径
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szPicturePath;
        /// <summary>
        /// 合成图图片长度
        /// <summary>
        public uint nPictureLength;
        /// <summary>
        /// 事件组ID，同一物体抓拍过程内GroupID相同
        /// <summary>
        public uint nGroupID;
        /// <summary>
        /// 一个事件组内的抓拍张数
        /// <summary>
        public uint nCountInGroup;
        /// <summary>
        /// 一个事件组内的抓拍序号，从1开始
        /// <summary>
        public uint nIndexInGroup;
        /// <summary>
        /// 防伪码
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDefendCode;
        /// <summary>
        /// 预留字段
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    // 原始图信息
    public struct NET_MEDIAFILE_ORIGINAL_PICTURE_INFO
    {
        /// <summary>
        /// 原始图片路径
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szPicturePath;
        /// <summary>
        /// 原始图图片长度
        /// <summary>
        public uint nPictureLength;
        /// <summary>
        /// 事件组ID，同一物体抓拍过程内GroupID相同
        /// <summary>
        public uint nGroupID;
        /// <summary>
        /// 一个事件组内的抓拍张数
        /// <summary>
        public uint nCountInGroup;
        /// <summary>
        /// 一个事件组内的抓拍序号，从1开始
        /// <summary>
        public uint nIndexInGroup;
        /// <summary>
        /// 防伪码
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDefendCode;
        /// <summary>
        /// 预留字段
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    // 机动车信息
    public struct NET_INTELLIGENT_CITY_TRAFFIC_CAR_INFO
    {
        /// <summary>
        /// 车牌颜色
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateColor;
        /// <summary>
        /// 车牌号
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPlateNo;
        /// <summary>
        /// 车身颜色
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVehicleColor;
        /// <summary>
        /// 车标
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVehicleLogo;
        /// <summary>
        /// 车系
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVehicleSeries;
        /// <summary>
        /// 车型
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVehicleType;
        /// <summary>
        /// 违停持续时间，单位：秒
        /// <summary>
        public uint nParkingDuration;
        /// <summary>
        /// 预留字段
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    // 智慧城管查询结果 ( CLIENT_FindFileEx + DH_FILE_QUERY_INTELLIGENT_CITY_MANAGER )
    public struct NET_MEDIAFILE_INTELLIGENT_CITY_MANAGER_INFO
    {
        /// <summary>
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// 开始时间
        /// <summary>
        public NET_TIME stuBeginTime;
        /// <summary>
        /// 结束时间
        /// <summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 事件类型，EVENT_IVS_CITY_MOTORPARKING、EVENT_IVS_SHOPPRESENCE、
        /// EVENT_IVS_CITY_NONMOTORPARKING、EVENT_IVS_FLOWBUSINESS、EVENT_IVS_TRAFFIC_NONMOTOR_HOLDUMBRELLA
        /// EVENT_IVS_GARBAGE_EXPOSURE、EVENT_IVS_DUSTBIN_OVER_FLOW、EVENT_IVS_DOOR_FRONT_DIRTY
        /// EVENT_IVS_SHOP_SIGN_ABNORMAL、EVENT_IVS_SHOP_WINDOW_POST
        /// <summary>
        public int nEvent;
        /// <summary>
        /// 文件类型，1:jpg, 2:dav，默认:jpg
        /// <summary>
        public int nFileType;
        /// <summary>
        /// 违章时间
        /// <summary>
        public NET_TIME stuEventTime;
        /// <summary>
        /// 违章码
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szEventCode;
        /// <summary>
        /// 违章地点
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szEventAddress;
        /// <summary>
        /// 事件关联ID：应用场景是同一个物体或者同一张图片做不同分析，产生的多个事件的SourceID相同。
        /// 如 022019030714003000001，格式：类型+时间+序列号，其中类型2位，时间14位，序列号5位。
        /// 类型：02-图像
        /// 时间：YYYYMMDDhhmmss
        /// 序列号：00001
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;
        /// <summary>
        /// 组合图信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_MEDIAFILE_COMPOSITE_PICTURE_INFO[] stuCompositePicInfo;
        /// <summary>
        /// stuCompositePicInfo 数量
        /// <summary>
        public uint nCompositePicCount;
        /// <summary>
        /// 原始图信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_MEDIAFILE_ORIGINAL_PICTURE_INFO[] stuOriginPicInfo;
        /// <summary>
        /// stuOriginPicInfo 数量
        /// <summary>
        public uint nOriginPicCount;
        /// <summary>
        /// 机动车信息
        /// <summary>
        public NET_INTELLIGENT_CITY_TRAFFIC_CAR_INFO stuTrafficCar;
        /// <summary>
        /// stuTrafficCar是否有效
        /// <summary>
        public bool bTrafficCar;
        /// <summary>
        /// 事件触发的预置点号，从1开始
        /// <summary>
        public uint nPresetID;
        /// <summary>
        /// 商铺地址
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szShopAddress;
        /// <summary>
        /// 预置点名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPresetName;
        /// <summary>
        /// 违法持续时间，单位：秒
        /// <summary>
        public uint nViolationDuration;
        /// <summary>
        /// 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuBeginTime和stuEndTime有效(仅使用stuBeginTime和stuEndTime)
        /// TRUE means only stuStartTimeRealUTC and stuEndTimeRealUTC are valid (only stuStartTimeRealUTC and stuEndTimeRealUTC are used), FALSE means only stuBeginTime and stuEndTime are valid (only stuBeginTime and stuEndTime are used)
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
    }

    // 事件类型 EVENT_IVS_HOLD_UMBRELLA (违规撑伞检测事件) 对应的数据块描述信息
    public struct NET_DEV_EVENT_HOLD_UMBRELLA_INFO
    {
        /// <summary>
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// <summary>
        public uint nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 规则检测区域
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 规则检测区域顶点数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 检测到的物体
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 检测到的物体个数
        /// <summary>
        public int nObjectNum;
        /// <summary>
        /// 智能事件公共信息
        /// <summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 事件触发的预置名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 违法持续时长，单位：秒 缺省值0表示无意义
        /// <summary>
        public uint nViolationDuration;
        /// <summary>
        /// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 保留字节,留待扩展.
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4092)]
        public byte[] bReserved;
    }

    // CLIENT_QueryDevInfo NET_QUERY_TRAFFIC_RADAR_GET_OBJECT 类型接口输入参数
    public struct NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO
    {
        public uint dwSize;                     // 结构体大小
        public uint nChannel;                   // 通道号				
    }

    // 目标雷达信息
    public struct NET_OBJECT_RADAR_INFO
    {
        public uint nID;                                    // 物体ID
        public uint nVerticalPos;                           // 物体在道路方向上的坐标，雷达为坐标原点 单位：cm
        public uint nHorizontalPos;                         // 物体在垂直道路方向上的坐标，雷达为坐标原点 单位：cm
        public uint nObjectLen;                             // 物体长度 单位：cm
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;                           // 保留字节
    }

    // CLIENT_QueryDevInfo NET_QUERY_TRAFFIC_RADAR_GET_OBJECT 类型接口输出参数
    public struct NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO
    {
        public uint dwSize;                         // 结构体大小
        public uint nMaxObjectNum;                  // 用户申请目标最大个数
        public IntPtr pObjectInfo;                  // 目标信息内存由用户申请,NET_OBJECT_RADAR_INFO类型指针
        public uint nObjectNum;                     // 获取到目标的个数
    }

    /// <summary>
    /// COM basic property
    /// 串口基本属性
    /// </summary>
    public struct NET_COMM_PROP
    {
        /// <summary>
        /// Data bit;0:5,1:6,2:7,3:8
        /// 数据位；0：5,1：6,2：7,3：8
        /// <summary>
        public byte byDataBit;
        /// <summary>
        /// Stop bit;0:1 bit,1:1.5 bit,2:2 bits
        /// 停止位；0：1位,1：1.5位,2：2位
        /// <summary>
        public byte byStopBit;
        /// <summary>
        /// Parity;0: None,1: Odd;2: even;3:sign;4:empty
        /// 校验位；0：无校验,1：奇校验；2：偶校验; 3:标志校验; 4:空校验
        /// <summary>
        public byte byParity;
        /// <summary>
        /// Baud rate;0:300,1:600,2:1200,3:2400,4:4800,
        /// 5:9600,6:19200,7:38400,8:57600,9:115200
        /// 波特率；0：300,1：600,2：1200,3：2400,4：4800,
        /// 5：9600,6：19200,7：38400,8：57600,9：115200
        /// <summary>
        public byte byBaudRate;
    }

    /// <summary>
    /// radar configuration - car speed
    /// 雷达配置——车速
    /// </summary>
    public struct NET_RADAR_CARSPEED_INFO
    {
        /// <summary>
        /// lowerbound of trigger value range 1~255km/h
        /// 触发值下限 范围 1~255km/h
        /// <summary>
        public int nTriggerLower;
        /// <summary>
        /// upperbound of trigger value range 1~255km/h
        /// 触发值上限 范围 1~255km/h
        /// <summary>
        public int nTriggerUpper;
        /// <summary>
        /// lowerbound of limit value range 5~255km/h
        /// 限速值下限 范围 5~255km/h
        /// <summary>
        public int nLimitLower;
        /// <summary>
        /// upperbound of limit value range 5~255km/h
        /// 限速值上限 范围 5~255km/h
        /// <summary>
        public int nLimitUpper;
    }

    /// <summary>
    /// @hua radar configuration
    /// 私有雷达配置 
    /// </summary>
    public struct NET_DEV_DAHUA_RADAR_CONFIG
    {
        /// <summary>
        /// Angle, useful when correcting speed error from radar sensor installation angle. Unit: degree, range: 0~45
        /// 角度，用于修正雷达探头安装的角度造成的速度误差 单位度，范围0~45
        /// <summary>
        public int nAngle;
        /// <summary>
        /// whether or not enable lowerbounds. if TRUE, the lowerbounds in NET_RADAR_CARSPEED_INFO are valid
        /// 是否启用低限速，为 TRUE NET_RADAR_CARSPEED_INFO 结构中各下限值有效
        /// <summary>
        public bool bLowSpeed;
        /// <summary>
        /// whether or not discriminate different car size, if FALSE, only small car speed config (stuSmallCarSpeed) is valid
        /// 是否启用大小车限速，为 FALSE 时仅小车速度配置（stuSmallCarSpeed）有效
        /// <summary>
        public bool bSpeedForSize;
        /// <summary>
        /// small car speed, if bSpeedForSize is TRUE, nTriggerLower member is ALSO lowerbounds for medium car and large car
        /// 小车速度配置，bSpeedForSize 为 TRUE 时 nTriggerLower 成员同时也代表中车和大车的触发值下限
        /// <summary>
        public NET_RADAR_CARSPEED_INFO stuSmallCarSpeed;
        /// <summary>
        /// medium car speed, valid only if bSpeedForSize is TRUE, but nTriggerLower member is ALWAYS invalid.
        /// 中车速度配置，bSpeedForSize 为 TRUE 时有效，但 nTriggerLower 成员始终无效
        /// <summary>
        public NET_RADAR_CARSPEED_INFO stuMediumCarSpeed;
        /// <summary>
        /// large car speed, valid only if bSpeedForSize is TRUE, but nTriggerLower member is ALWAYS invalid.
        /// 大车速度配置，bSpeedForSize 为 TRUE 时有效，但 nTriggerLower 成员始终无效
        /// <summary>
        public NET_RADAR_CARSPEED_INFO stuBigCarSpeed;
        /// <summary>
        /// device installation address
        /// 设备安装地址
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szName;
        /// <summary>
        /// Sensitivity, range: 0~5, 0 is most sensitive
        /// 灵敏度 范围0~5，0最高
        /// <summary>
        public int nSensitivity;
        /// <summary>
        /// Detect Mode, values: -1 nonsense, 0 approaching in front, 1 leaving in front, 2 approaching behind, 3 leaving behind, 4 in front (approaching or leaving), 5 behind (approaching or leaving)
        /// 检测模式，取值：-1 无意义 0 前向来车 1 前向去车 2 后向来车 3 后向去车 4 前向双向 5 后向双向
        /// <summary>
        public int nDetectMode;
        /// <summary>
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// STJ77D5 Radar Config
    /// 森思泰克77Ghz网络雷达配置
    /// </summary>
    public struct NET_STJ77D5_RADAR_CONFIG
    {
        /// <summary>
        /// Lane Number, range:1~4
        /// 车道个数, 范围1~4
        /// <summary>
        public uint nLaneNumber;
        /// <summary>
        /// Road direction, value: 17 direction, 18 direction, 19 two-way
        /// 道路方向, 取值:17 来向, 18 去向, 19 双向
        /// <summary>
        public uint nDetectMode;
        /// <summary>
        /// Radar installation height ,0.01m/bit; range:0~25
        /// 雷达安装高度 ,0.01m/bit; 范围0~25
        /// <summary>
        public double dbHeight;
        /// <summary>
        /// Horizon Shift, 0.2m/bit; range:-25~25
        /// 水平偏移, 0.2m/bit; 范围-25~25
        /// <summary>
        public double dbHorizonShift;
        /// <summary>
        /// Lane Count
        /// 车道个数
        /// <summary>
        public int nLaneCount;
        /// <summary>
        /// Lane 1-4 width, 0.01m/bit; range:2~5, The first element is the width of lane 1, and so on
        /// 车道1-4宽度, 0.01m/bit; 范围2~5。第一个元素是车道1宽度, 以此类推
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public double[] dbLaneWidth;
        /// <summary>
        /// Stop line distance, 0.1m/bit; range:20~60
        /// 停止线距离, 0.1m/bit; 范围20~60
        /// <summary>
        public double dbStopLine;
        /// <summary>
        /// Radar working scene mode, 1:Main road mode, 2:Intersection mode
        /// 雷达工作场景模式, 0:未知, 1:主路模式, 2:路口模式
        /// <summary>
        public uint nSceneMode;
        /// <summary>
        /// Shift Angle ,0.1/bit; range:-12~12
        /// 角度修正 ,0.1/bit; 范围-12~12
        /// <summary>
        public double dbShiftAngle;
        /// <summary>
        /// Lengthway Shift Distance, 0.2m/bit; range:-25~25
        /// 纵向距离修正, 0.2m/bit; 范围-25~25
        /// <summary>
        public double dbLengthwayShiftDistance;
        /// <summary>
        /// Sensitive, 0.1/bit; range:0~3
        /// 灵敏度设置, 0.1/bit; 范围0~3
        /// <summary>
        public double dbSensitive;
        /// <summary>
        /// ID set; range:0~4
        /// ID设置; 范围0~4
        /// <summary>
        public uint nIDset;
        /// <summary>
        /// Radar Work Mode, 0:Debug mode 1:Work mode
        /// 雷达工作模式, 0:调试模式 1:工作模式
        /// <summary>
        public uint nWorkMode;
        /// <summary>
        /// Radar Flow Time, unit:s
        /// 雷达流量统计时间间隔, 单位:s
        /// <summary>
        public uint nRadarFlowTime;
        /// <summary>
        /// Radar Flow Switch, 0:unknown, 1:open, 2:close
        /// 雷达流量输出开关, 0:未知, 1:开启, 2:关闭
        /// <summary>
        public uint nRadarFlowSwitch;
        /// <summary>
        /// Non-motorized vehicle/pedestrian recognition control switch, 0:unknown, 1:open, 2:close
        /// 非机动车/行人识别控制开关, 0:未知, 1:开启, 2:关闭
        /// <summary>
        public uint nNonMotorDiscern;
        /// <summary>
        /// Vehicle Distinguish; range:-10~10, Negative value: lower the threshold of the large vehicle, positive value: increase the threshold of the large vehicle
        /// 车型分别能力;范围-10~10, 负值:大车门限降低, 正值:大车门限升高
        /// <summary>
        public uint nVehicleDistinguish;
        /// <summary>
        /// Stop target disappearing time, 1s / bit, 0: off, non-zero: stop target disappearing time
        /// 停止目标消失时间,1s/bit, 0:关闭, 非0时:停止目标消失的时间
        /// <summary>
        public uint nStopTargetDisappearTime;
        /// <summary>
        /// Radar Start Lane, range:: 0~7
        /// 雷达的起始车道号, 取值范围: 0~7
        /// <summary>
        public uint nStartLane;
        /// <summary>
        /// Radar Lan Number, range::1~8
        /// 雷达支持的车道数目, 取值范围:1~8
        /// <summary>
        public uint nRadarLanNumber;
        /// <summary>
        /// Virtual Coil Count
        /// 虚拟线圈个数
        /// <summary>
        public uint nVirtualCoilTriggerCount;
        /// <summary>
        /// Virtual Coil Trigger: 1: head coil, 2: tail coil, 3: head and tail coil, 90: coil, no statistics
        /// 虚拟线圈触发方式: 1:头线圈, 2:尾线圈, 3:头尾线圈, 90:线圈,不统计
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public uint[] nVirtualCoilTrigger;
        /// <summary>
        /// Virtual Coil Count
        /// 虚拟线圈个数
        /// <summary>
        public uint nVirtualCoilDistanceCount;
        /// <summary>
        /// Start position of virtual coil (lower edge, y-direction distance from radar), unit: m
        /// 虚拟线圈起始位置(下边沿,y向距离雷达距离), 单位:m
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public double[] dbVirtualCoilDistance;
        /// <summary>
        /// Virtual Coil Count
        /// 虚拟线圈个数
        /// <summary>
        public uint nVirtualCoilLengthCount;
        /// <summary>
        /// Virtual Coil Length, unit:m
        /// 虚拟线圈长度, 单位:m
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public double[] dbVirtualCoilLength;
        /// <summary>
        /// Lane Direction
        /// 车道方向,
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public uint[] nLaneDirection;
        /// <summary>
        /// Camera To Road End Distance, unit:m, 0.1m/bit(Accurate to one decimal place, step length 0.1m)
        /// 相机到车道监控面路口距离, 单位:m, 0.1m/bit(精确到小数点后一位,步长0.1m)
        /// <summary>
        public double dbCameraToRoadEndDistance;
        /// <summary>
        /// Camera To Stop Lane, unit:m, 0.1m/bit(Accurate to one decimal place, step length 0.1m)
        /// 相机到停止线距离, 单位:m, 0.1m/bit(精确到小数点后一位,步长0.1m)
        /// <summary>
        public double dbCameraToStopLane;
        /// <summary>
        /// Lane Count
        /// 车道个数
        /// <summary>
        public uint nLaneDirectionCount;
        /// <summary>
        /// Reserved byte
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] bReserved;
    }
	
	/// <summary>
	/// 川速雷达配置 
    /// Trans Radar Config
    /// </summary>
    public struct NET_TRANS_RADAR_CONFIG
    {
        /// <summary>
		/// 雷达覆盖起始车道号,1-8,0表示无此字段
        /// / Start lane ID for radar coverage: 1-8,0 = not set
        /// </summary>
        public uint nStartLane;
        /// <summary>
		/// 雷达覆盖车道数,范围1-8
        /// / Lane number,1-8
        /// </summary>
        public uint nLaneNumber;
        /// <summary>
		/// 工作模式,-1:未知,0:持续发送模式,1:触发发送模式,2:车尾触发送数模式,3:应答模式,4:计量院送数模式
        /// / Work Mode,-1=Unknown, 0=Continuous, 1=Triggered, 2=Rear-Triggered, 3=Response, 4=Metrology
        /// </summary>
        public int nWorkMode;
        /// <summary>
		/// 触发速度,单位km/h,范围1-240 
        /// / Trigger Speed,in km/h,1-240
        /// </summary>
        public uint nTriggerSpeed;
        /// <summary>
		/// 修正角度,单位度,范围0-45
        /// / Correction angle,in degrees,0-45
        /// </summary>
        public uint nAdjustAngle;
        /// <summary>
		/// 灵敏度,范围11-200
        /// / Sensitivity,11-200
        /// </summary>
        public uint nSensitivity;
        /// <summary>
		/// 过滤方向,-1:未知,0:不过滤方向,1:只输出来向,2:只输出去向
        /// / Filter Direction,-1:Unknown, 0:NoFilter, 1:Inbound, 2:Outbound
        /// </summary>
        public int nFilterDirection;
        /// <summary>
		/// 车速数据格式,-1:未知,0:单字节,1:双字节,2:ASCII格式
        /// / Speed Data Format: -1=Unknown, 0:Single-byte, 1:Double-byte, 2:ASCII format
        /// </summary>
        public int nSpeedDataFormat;
        /// <summary>
		/// 低速下限调整,1-20,单位为km/h
        /// / Adjust Speed,1-20,in km/h
        /// </summary>
        public uint nAdjustSpeed;
        /// <summary>
		/// 超速报警阈值,单位为km/h
        /// / Over Speed,in km/h
        /// </summary>
        public uint nOverSpeed;
        /// <summary>
		/// 判断大车小车的系数,范围1-240
        /// / Car Size Adapt,1-240
        /// </summary>
        public uint nCarSizeAdapt;
        /// <summary>
		/// 统计周期,单位s,范围0-240
        /// / Period,in second,0-240
        /// </summary>
        public uint nPeriod;
        /// <summary>
		/// 保留字节
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
	/// 纳雷雷达配置 
    /// Nalei Radar Config
    /// </summary>
    public struct NET_NALEI_RADAR_CONFIG
    {
        /// <summary>
		/// 道路模式,0:未知,1:路段模式,2:路口模式,3:全息路口模式,4:隧道模式,5:地下车库模式,6:园区测速模式
        /// / Scene Mode: 0=Unknown, 1=Segment, 2=Intersection, 3=Holo-Intersection, 4=Tunnel, 5=Garage, 6=Campus
        /// </summary>
        public uint nSceneMode;
        /// <summary>
		/// 道路方向,0:未知,1:来向,2:去向,3:双向
        /// / Detect Mode: 0:Unknown, 1:Inbound, 2:Outbound, 3:Bidirectional
        /// </summary>
        public uint nDetectMode;
        /// <summary>
		/// 工作模式,0:未知,1:调试模式,2:正常工作模式
        /// / Work Mode:0=Unknown, 1=Debug, 2=Normal
        /// </summary>
        public uint nWorkMode;
        /// <summary>
		/// 道路总数,1-8
        /// / Road Sum,1-8
        /// </summary>
        public uint nRoadSum;
        /// <summary>
		/// ID设置,0-4
        /// / ID set,0-4
        /// </summary>
        public uint nIDset;
        /// <summary>
		/// 停止目标消失时间,0:关闭,非0时:停止目标消失的时间
        /// / Stop Target Disappear Time,0: Disabled, Non-zero: Target lost timeout
        /// </summary>
        public uint nStopTargetDisappearTime;
        /// <summary>
		/// 渠化道路开关,0:未知,1:关闭,2:开启
        /// / Canalize Switch,0:unkown,1:off,2:on
        /// </summary>
        public uint nCanalizeSwitch;
        /// <summary>
		/// 渠化道路个数,1-8
        /// / Canalize Lane Number,1-8
        /// </summary>
        public uint nCanalizeLaneNumber;
        /// <summary>
		/// 正常道路/渠化道路隔离带位置,0-8(0表示没有隔离带,1表示隔离带在1车道的右侧)
        /// / Median strip position on normal road/channelized road: 0-8 (0=no median, 1=median on right side of lane 1)
        /// </summary>
        public uint nDivideIslandLocation;
        /// <summary>
		/// 有效辐射功率,0:默认,1:欧盟CE认证中无线电设备指令(RED)-2014/53/EU对EIRP的规定
        /// / Effective Radiated Power (ERP):0: Default,1: Compliant with EU Radio Equipment Directive (RED) 2014/53/EU EIRP requirements
        /// </summary>
        public uint nEIRP;
        /// <summary>
		/// 8个车道的宽度,单位m
        /// / 8 Lanes Width,in metres
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public float[] fLaneWidth;
        /// <summary>
		/// 车道的宽度数量
        /// / Lane Width Num
        /// </summary>
        public int nLaneWidthNum;
        /// <summary>
		/// 水平偏移,单位m
        /// / Horizon Offset,in m
        /// </summary>
        public float fHorizonOffset;
        /// <summary>
		/// 角度修正,单位度
        /// / Angle Modify,in degrees
        /// </summary>
        public float fAngleModify;
        /// <summary>
		/// 架设高度,0-25,单位m
        /// / Height,0-25,in m
        /// </summary>
        public float fHeight;
        /// <summary>
		/// 停止线距离,20-60
        /// / Stop Line,20-60
        /// </summary>
        public double dbStopLine;
        /// <summary>
		/// 灵敏度设置,0-3
        /// / Sensitive,0-3
        /// </summary>
        public double dbSensitive;
        /// <summary>
		/// 渠化道路宽度,单位米(m),0.0-20.0
        /// / Canalize Lane Width,in m,0.0-20.0
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public double[] dbCanalizeLaneWidth;
        /// <summary>
		/// 渠化道路水平偏移,单位米(m),渠化道路相对正常道路偏移距离,左负右正
        /// / Canalize Horizontal Offset,in m
        /// </summary>
        public double dbCanalizeHorizontalOffset;
        /// <summary>
		/// 渠化上边界,单位米(m)
        /// / Canalize Upper Boundary,in m
        /// </summary>
        public double dbCanalizeUpperBoundary;
        /// <summary>
		/// 渠化下边界,单位米(m)
        /// / Canalize Lower Boundary,in m
        /// </summary>
        public double dbCanalizeLowerBoundary;
        /// <summary>
		/// 渠化隔离带宽度
        /// / Canalize Divide Island Width
        /// </summary>
        public double dbCanalizeDivideIslandWidth;
        /// <summary>
		/// 正常道路隔离带宽度
        /// / Divide Island Width
        /// </summary>
        public double dbDivideIslandWidth;
        /// <summary>
		/// 渠化道路宽度数量
        /// / Canalize Lane Width Num
        /// </summary>
        public int nCanalizeLaneWidthNum;
        /// <summary>
		/// 保留字节
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

	/// <summary>
    /// Speed correction information
    /// </summary>
    public struct NET_SPEED_MODIFY_INFO
    {
        /// <summary>
        /// / Speed correction starting value, km/h
        /// </summary>
        public uint nRangeBegin;
        /// <summary>
        /// / The end value of speed correction needs to be greater than the starting value of speed correction for the same group, km/h
        /// </summary>
        public uint nRangeEnd;
        /// <summary>
        /// / Speed correction value, km/h, The range is [-10,10]
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 68)]
        public string szReserved;
    }
	
	/// <summary>
    /// Speed Correction
    /// </summary>
    public struct NET_RADAR_SPEED_MODIFY
    {
        /// <summary>
        /// / Speed correction enable item
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / Number of corrected information
        /// </summary>
        public int nModifyInfoNum;
        /// <summary>
        /// / Correction information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public NET_SPEED_MODIFY_INFO[] stuModifyInfo;
        /// <summary>
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }
	
	/// <summary>
    /// Radar speed correction configuration
    /// </summary>
    public struct NET_RADAR_SPEED_CORRECTION
    {
        /// <summary>
        /// / Starting value of speed range (including), unit: km/h
        /// </summary>
        public int nBegin;
        /// <summary>
        /// / End value of speed range (excluding), unit: km/h
        /// </summary>
        public int nEnd;
        /// <summary>
        /// / The speed correction value for this interval is in km/h and can be positive or negative
        /// </summary>
        public int nValue;
        /// <summary>
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 68)]
        public string szReserved;
    }

    /// <summary>
    /// single radar configuration 
    /// 雷达配置
    /// </summary>
    public struct NET_DEV_RADAR_CONFIG
    {
        public uint dwSize;
        /// <summary>
        /// whether to enable function
        /// 是否开启功能
        /// <summary>
        public bool bEnable;
        /// <summary>
        /// serial port number
        /// 串口端口号
        /// <summary>
        public int nPort;
        /// <summary>
        /// serial port attribute
        /// 串口属性
        /// <summary>
        public NET_COMM_PROP stuCommAttr;
        /// <summary>
        /// device's address;if multiple devices are hung on the serial port,they are distinguished by addresses.
        /// 设备地址，如果串口上挂了多个串口设备，通过地址区分
        /// <summary>
        public int nAddress;
        /// <summary>
        /// waiting time in the case of speed first
        /// 速度先来情况下等待时间，速度来时尚未抓拍 范围 (1 -- 5000ms)
        /// <summary>
        public int nPreSpeedWait;
        /// <summary>
        /// waiting time in the case of speed later, range (1 -- 5000ms)
        /// 速度后来情况下等待时间，抓拍时还没有来速度 范围 (1 -- 5000ms)
        /// <summary>
        public int nDelaySpeedWait;
        /// <summary>
        /// if enable @hua radar configuration, range (1 -- 5000ms)
        /// 私有雷达配置是否可用
        /// <summary>
        public bool bDahuaRadarEnable;
        /// <summary>
        /// @hua radar parameter configuration
        /// 私有雷达参数配置
        /// <summary>
        public NET_DEV_DAHUA_RADAR_CONFIG stuDhRadarConfig;
        /// <summary>
        /// STJ77D5 Radar Config Enable
        /// 森思泰克77Ghz网络雷达配置是否可用
        /// <summary>
        public bool bSTJ77D5RadarEnable;
        /// <summary>
        /// STJ77D5 Radar Config
        /// 森思泰克77Ghz网络雷达配置
        /// <summary>
        public NET_STJ77D5_RADAR_CONFIG stuSTJ77D5RadarConfig;
        /// <summary>
        /// / 雷达ID从0开始
        /// / Radar ID starting from 0
        /// </summary>
        public int nRadarID;
        /// <summary>
        /// / SDK内部兼容性字段，用户不做配置
        /// / Compatibility field within the SDK, no configuration required by the user
        /// </summary>
        public bool bHasRadarType;
		/// <summary>
		/// 川速雷达配置
        /// / Trans Radar Config
        /// </summary>
        public NET_TRANS_RADAR_CONFIG stuTransRadarConfig;
        /// <summary>
		/// 纳雷雷达配置
        /// / Nalei Radar Config
        /// </summary>
        public NET_NALEI_RADAR_CONFIG stuNaleiRadarConfig;
        /// <summary>
		/// 纳雷雷达配置是否可用
        /// / Nalei Radar Enable
        /// </summary>
        public bool bNaleiRadarEnable;
        /// <summary>
		/// 川速雷达配置是否可用
        /// / Trans Radar Enable
        /// </summary>
        public bool bTransRadarEnable;
		/// <summary>
        /// / Can the all-in-one machine screen display radar information
        /// </summary>
        public bool bScreenDisplayEnable;
        /// <summary>
        /// / Speed Correction
        /// </summary>
        public NET_RADAR_SPEED_MODIFY stuSpeedModify;
        /// <summary>
        /// / Number of radar speed correction configurations
        /// </summary>
        public int nSpeedCorrectionNum;
        /// <summary>
        /// / Radar speed correction configuration
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_RADAR_SPEED_CORRECTION[] stuSpeedCorrection;
        /// <summary>
        /// / Speed threshold for alarm, in km/h
        /// </summary>
        public uint nAlarmSpeedValue;
    }

    /// <summary>
    /// the pixel coordinate of line in the picture
    /// 图片中线段的像素坐标
    /// </summary>
    public struct NET_RADAR_PIXELLINE
    {
        /// <summary>
        /// X coordinate of left vertex
        /// 左顶点的X坐标
        /// <summary>
        public int nLeftX;
        /// <summary>
        /// Y coordinate of left vertex
        /// 左顶点的Y坐标
        /// <summary>
        public int nLeftY;
        /// <summary>
        /// X coordinate of right vertex
        /// 右顶点的X坐标
        /// <summary>
        public int nRightX;
        /// <summary>
        /// Y coordinate of right vertex
        /// 右顶点的Y坐标
        /// <summary>
        public int nRightY;
        /// <summary>
        /// reserved byte
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] byReserved;
    }

    /// <summary>
    /// calibration pixel point in the map
    /// 图片中校准点的像素坐标
    /// </summary>
    public struct NET_RADAR_PIXELPOINT
    {
        /// <summary>
        /// X pixel point(0~8191)
        /// X像素坐标(0~8191)
        /// <summary>
        public int nPixelPointX;
        /// <summary>
        /// Y pixel point(0~8191)
        /// Y像素坐标(0~8191)
        /// <summary>
        public int nPixelPointY;
    }

    /// <summary>
    /// 雷达在地图上的位置信息
    /// Radar position information on the map
    /// </summary>
    public struct NET_RADAR_PLACE_INFO
    {
        /// <summary>
        /// 雷达在地图上的像素坐标
        /// The pixel coordinates of the radar on the map
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] nRadarPixel;
        /// <summary>
        /// 雷达朝向配置,单位度
        /// Radar heading configuration, unit degree
        /// </summary>
        public double dbRadarAngle;
        /// <summary>
        /// 预留字节
        /// reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string byReserved;
    }

    /// <summary>
    /// radar map param configuration(corresponding to NET_EM_CFG_RADAR_MAPPARA)
    /// 雷达地图尺寸配置(对应 NET_EM_CFG_RADAR_MAPPARA)
    /// </summary>
    public struct NET_CFG_RADAR_MAPPARA_INFO
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// reserved byte
        /// 字节对齐
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// the pixel coordinates of line in the map
        /// 图片中线段的像素坐标
        /// <summary>
        public NET_RADAR_PIXELLINE stuPixelLine;
        /// <summary>
        /// the real length of line express in the map,unit:m
        /// 图片中线段代表的实际长度,单位米
        /// <summary>
        public double dDistance;
        /// <summary>
        /// the pixel coordinates of radar in the map
        /// 雷达在地图上的像素坐标
        /// <summary>
        public NET_RADAR_PIXELPOINT stuPixelPoint;
        /// <summary>
        /// radar direction angle,unit:degree
        /// 雷达朝向配置,单位度
        /// <summary>
        public double dRadarDirectionAngle;
        /// <summary>
        /// 经度个数
        /// Number of longitudes
        /// </summary>
        public uint nLongitudeNum;
        /// <summary>
        /// 经度, 最多4组, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254
        /// Longitude, up to 4 groups, magnification 1000000 times, 6 digits after the decimal point are valid, if less than 6 digits are filled with 0, for example, 120125400 represents 120.1254
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public int[] nLongitude;
        /// <summary>
        /// 纬度个数
        /// Number of latitudes
        /// </summary>
        public uint nLatitudeNum;
        /// <summary>
        /// 纬度, 最多4组, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254
        /// Latitude, transmitted by integer, magnified by 1000000 times, 6 digits after the decimal point are valid, if less than 6 digits are filled with 0, for example, 120125400 represents 120.1254
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public int[] nLatitude;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string byReserved1;
        /// <summary>
        /// 雷达在地图上的位置个数
        /// The number of radar positions on the map
        /// </summary>
        public uint nRadarPlaceNum;
        /// <summary>
        /// 雷达在地图上的位置参数
        /// The position parameter of the radar on the map
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_RADAR_PLACE_INFO[] stuRadarPlaceInfo;
    }

    /// <summary>
    /// calculate the real size  of the map corresponding to the picture input param(corresponding to EM_RADAR_OPERATE_TYPE_CALCULATEREALSIZE)
    /// 计算图片对应的地图实际长度入参(对应 EM_RADAR_OPERATE_TYPE_CALCULATEREALSIZE)
    /// </summary>
    public struct NET_IN_RADAR_CALCULATEREALSIZE
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// channel
        /// 通道号
        /// <summary>
        public int nChannel;
        /// <summary>
        /// the pixel coordinate of line in the picture
        /// 图片中线段的像素坐标
        /// <summary>
        public NET_RADAR_PIXELLINE stuPixelLine;
        /// <summary>
        /// the real length of line express in the picture, unit:m
        /// 图片中线段代表的实际长度，单位米
        /// <summary>
        public double dDistance;
    }

    /// <summary>
    /// calculate the real size  of the map corresponding to the picture output param(corresponding to EM_RADAR_OPERATE_TYPE_CALCULATEREALSIZE)
    /// 计算图片对应的地图实际长度出参(对应 EM_RADAR_OPERATE_TYPE_CALCULATEREALSIZE)
    /// </summary>
    public struct NET_OUT_RADAR_CALCULATEREALSIZE
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// real map height, unit:m(the result of expand 100 times)
        /// 实际地图的高度，单位米（实际长度扩大100倍表示）
        /// <summary>
        public int nRealMapLength;
        /// <summary>
        /// real map width, unit:m(the result of expand 100 times)
        /// 实际地图的宽度，单位米（实际宽度扩大100倍表示）
        /// <summary>
        public int nRealMapWidth;
    }

    /// <summary>
    /// Calibration position information
    /// 校准点
    /// </summary>
    public struct NET_RADAR_CALIBRATIONPOS
    {
        /// <summary>
        /// pixel point
        /// 校准点的像素坐标
        /// <summary>
        public NET_RADAR_PIXELPOINT stuPixelPoint;
        /// <summary>
        /// horizontal, normalized to -1~1
        /// 水平角度,归一化到-1~1
        /// <summary>
        public double dPositionX;
        /// <summary>
        /// vertical, normalized to -1~1
        /// 垂直角度,归一化到-1~1
        /// <summary>
        public double dPositionY;
        /// <summary>
        /// aperture magnification, normalized to 0~1
        /// 放大倍数,归一化到 0~1
        /// <summary>
        public double dZoom;
        /// <summary>
        /// reserved
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    /// <summary>
    /// calibration parameters
    /// 校准参数
    /// </summary>
    public struct NET_RADAR_CALIBRATION_PARAS
    {
        /// <summary>
        /// The number of calibration position
        /// 校准点个数
        /// <summary>
        public int nCalibrationPosNum;
        /// <summary>
        /// Byte alignment
        /// 字节对齐
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;
        /// <summary>
        /// The array of calibration position
        /// 校准点数组
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_RADAR_CALIBRATIONPOS[] stuCalibrationPos;
        /// <summary>
        /// The ip of device which was controlled
        /// 被控制的设备ip
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSDLinkIP;
        /// <summary>
        /// Link SD install height, unit:m
        /// 联动的球机安装高度，单位米
        /// <summary>
        public double dLinkSDHeight;
        /// <summary>
        /// Link SD slope compensation angle
        /// 联动球机垂直补偿角
        /// <summary>
        public double dTiltRecoupAngle;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// radar calibration configuration(corresponding to RADAR_CALIBRATION)
    /// 雷球校准配置(对应 RADAR_CALIBRATION)
    /// </summary>
    public struct NET_CFG_RADAR_CALIBRATION_INFO
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// The array of calibration parameters
        /// 校准参数组数
        /// <summary>
        public int nCalibrationParasNum;
        /// <summary>
        /// calibration parameters
        /// 校准参数
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public NET_RADAR_CALIBRATION_PARAS[] stuCalibrationParas;
        /// <summary>
        /// Radar install height, unit:m
        /// 安装高度，单位米
        /// <summary>
        public double dInstallHeight;
        /// <summary>
        /// Radar Slope compensation angle
        /// 斜坡补偿角度
        /// <summary>
        public double dSlopeAngle;
    }

    /// <summary>
    /// The information of link-device
    /// 待添加的远程联动设备连接信息
    /// </summary>
    public struct NET_RADARLINKDEVICE_ADD_INFO
    {
        /// <summary>
        /// Link device ip
        /// 被控制的设备ip
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSDLinkIP;
        /// <summary>
        /// Username
        /// 用户名
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserName;
        /// <summary>
        /// Password
        /// 密码
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPassword;
        /// <summary>
        /// Port
        /// 服务端口
        /// <summary>
        public int nPort;
        /// <summary>
        /// Reserved
        /// 保留
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 316)]
        public byte[] byReserved;
    }

    /// <summary>
    /// AddRadarLinkSD接口入参
    /// Input param of AddRadarLinkSD
    /// </summary>
    public struct NET_IN_RADAR_ADD_RADARLINKSD
    {
        /// <summary>
        /// Structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// Channel ID
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// Link device list
        /// 联动球机数组
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public NET_RADARLINKDEVICE_ADD_INFO[] stuDevices;
        /// <summary>
        /// The number of devices wait to add
        /// 有效数据个数
        /// <summary>
        public int nDevicesNum;
    }

    /// <summary>
    /// Error code
    /// 错误码
    /// </summary>
    public enum NET_EM_RADARLINKDEVICE_ADD_ERRORCODE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// <summary>
        UNKNOWN = -1,
        /// <summary>
        /// Success
        /// 正常
        /// <summary>
        SUCCESS = 0,
        /// <summary>
        /// Timeout
        /// 超时
        /// <summary>
        TIMEOUT,
        /// <summary>
        /// Account error
        /// 用户名或者密码错误
        /// <summary>
        ACCOUNTERROR,
        /// <summary>
        /// Device not support
        /// 设备不支持联动
        /// <summary>
        NOTSUPPORT,
    }

    /// <summary>
    /// Add result
    /// 添加联动球机接口返回的结果
    /// </summary>
    public struct NET_RADARLINKDEVICE_ADD_RESULT
    {
        /// <summary>
        /// Error code
        /// 错误码
        /// <summary>
        public NET_EM_RADARLINKDEVICE_ADD_ERRORCODE emErrorCode;
        /// <summary>
        /// Reserved
        /// 保留
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Output param of AddRadarLinkSD
    /// AddRadarLinkSD接口出参
    /// </summary>
    public struct NET_OUT_RADAR_ADD_RADARLINKSD
    {
        /// <summary>
        /// Structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// The number of result
        /// 有效数据个数
        /// <summary>
        public int nRetResultNum;
        /// <summary>
        /// The result of add
        /// 添加结果，下标对应入参中的设备信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public NET_RADARLINKDEVICE_ADD_RESULT[] stuAddResult;
    }

    /// <summary>
    /// The information of link-device
    /// 待删除的远程联动设备信息
    /// </summary>
    public struct NET_RADARLINKDEVICE_DEL_INFO
    {
        /// <summary>
        /// Link device ip
        /// 被控制的设备ip
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSDLinkIP;
        /// <summary>
        /// Reserved
        /// 保留
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 224)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Input param of DelRadarLinkSD
    /// DelRadarLinkSD接口入参
    /// </summary>
    public struct NET_IN_RADAR_DEL_RADARLINKSD
    {
        /// <summary>
        /// Structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// Channel id
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// Link device list
        /// 联动球机数组
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public NET_RADARLINKDEVICE_DEL_INFO[] stuDevices;
        /// <summary>
        /// The number of devices wait to delete.0 means delete all
        /// 有效数据个数,为0表示删除所有联动设备
        /// <summary>
        public int nDevicesNum;
    }

    /// <summary>
    /// Output param of DelRadarLinkSD
    /// DelRadarLinkSD接口出参
    /// </summary>
    public struct NET_OUT_RADAR_DEL_RADARLINKSD
    {
        /// <summary>
        /// Structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
    }

    public struct Str_SDLinkIP
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string linkIP;
    }

    /// <summary>
    /// The input param of GetRadarLinkSDState
    /// 获取雷达联动的远程球机状态输入参数
    /// </summary>
    public struct NET_IN_RADAR_GET_LINKSTATE
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// channel id
        /// 通道号
        /// <summary>
        public int nChannel;
        /// <summary>
        /// The number of ip which state you want to get
        /// 待查的联动设备ip个数（当个数为0时，会返回当前设备所有的联动设备状态）
        /// <summary>
        public int nSDLinkNum;
        /// <summary>
        /// The array of ip which state you want to get
        /// 待查联动设备ip数组
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public Str_SDLinkIP[] szSDLinkIP;
    }

    /// <summary>
    /// Link device state
    /// 联动设备状态
    /// </summary>
    public enum NET_EM_RADAR_LINK_SD_STATE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// <summary>
        UNKNOWN = -1,
        /// <summary>
        /// Normal
        /// 正常
        /// <summary>
        NORMAL,
        /// <summary>
        /// Timeout
        /// 超时
        /// <summary>
        TIMEOUT,
        /// <summary>
        /// Offline
        /// 离线
        /// <summary>
        OFFLINE,
        /// <summary>
        /// Not link
        /// 未连接
        /// <summary>
        NOT_LINK,
    }

    /// <summary>
    /// Link device state information
    /// 联动设备状态信息
    /// </summary>
    public struct NET_LINKSTATE_INFO
    {
        /// <summary>
        /// Link device ip
        /// 联动设备ip
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSDLinkIP;
        /// <summary>
        /// Link device state
        /// 联动设备状态
        /// <summary>
        public NET_EM_RADAR_LINK_SD_STATE emState;
        /// <summary>
        /// virtual channel number, be used to control sd, start from 1
        /// 虚拟视频通道号，用于雷达控多球,通道号1开始
        /// <summary>
        public int nVirtualChannel;
        /// <summary>
        /// reserved
        /// 保留
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// The output param of GetRadarLinkSDState
    /// 获取雷达联动的远程球机状态输出参数
    /// </summary>
    public struct NET_OUT_RADAR_GET_LINKSTATE
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// The number of SD
        /// 联动设备个数
        /// <summary>
        public int nSDLinkNum;
        /// <summary>
        /// The state of SD
        /// 联动设备状态信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public NET_LINKSTATE_INFO[] stuSDLinkState;
    }

    /// <summary>
    /// Remote link device information
    /// 远程联动设备信息
    /// </summary>
    public struct NET_RADARLINKDEVICE_INFO
    {
        /// <summary>
        /// The ip of SD
        /// 设备ip
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSDLinkIP;
        /// <summary>
        /// Vendor
        /// 设备来源
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVendor;
        /// <summary>
        /// Port(not used, Please use CLIENT_AddRadarLinkSD instead)
        /// 服务端口(已废弃,请使用CLIENT_AddRadarLinkSD)
        /// <summary>
        public int nPort;
        /// <summary>
        /// Username(not used, Please use CLIENT_AddRadarLinkSD instead)
        /// 用户名(已废弃,请使用CLIENT_AddRadarLinkSD)
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserName;
        /// <summary>
        /// Password(not used, Please use CLIENT_AddRadarLinkSD instead)
        /// 密码(已废弃,请使用CLIENT_AddRadarLinkSD)
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPassword;
        /// <summary>
        /// Device type
        /// 设备类型
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDeviceType;
        /// <summary>
        /// Device name
        /// 设备名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceName;
        /// <summary>
        /// Reserved
        /// 保留
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 124)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Remote link devices information configuration (corresponding to RADAR_RADARLINKDEVICE)
    /// 雷达远程联动设备配置(对应 RADAR_RADARLINKDEVICE)
    /// </summary>
    public struct NET_CFG_RADAR_RADARLINKDEVICE_INFO
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// The number of remote devices
        /// 球机个数
        /// <summary>
        public int nDevNum;
        /// <summary>
        /// The array of remote devices
        /// 远程设备信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public NET_RADARLINKDEVICE_INFO[] stuDevInfo;
    }

    /// <summary>
    /// radar link SD enable configuration(corresponding to RADAR_LINKSD)
    /// 雷达联动球机使能配置(对应RADAR_LINKSD)
    /// </summary>
    public struct NET_CFG_RADAR_LINKSD_INFO
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// radar link SD enable
        /// 雷达联动球机使能
        /// <summary>
        public bool bRadarLink;
    }

    /// <summary>
    /// Remote device linkage enable information
    /// 远程球机联动使能信息
    /// </summary>
    public struct NET_REMOTESDLINK_INFO
    {
        /// <summary>
        /// The ip of SD
        /// 被控制的设备ip
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSDLinkIP;
        /// <summary>
        /// enable
        /// 联动使能
        /// <summary>
        public bool bRadarLink;
        /// <summary>
        /// Reserved
        /// 保留
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 476)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Radar remote SD link enable configuration(corresponding to RADAR_REMOTESDLINK)
    /// 雷达远程球机联动使能配置(对应RADAR_REMOTESDLINK)
    /// </summary>
    public struct NET_CFG_RADAR_REMOTESDLINK_INFO
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// The number of linkage SD
        /// 联动个数
        /// <summary>
        public int nLinkNum;
        /// <summary>
        /// Remote SD link enable information
        /// 远程球机联动使能信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public NET_REMOTESDLINK_INFO[] stuLinkInfos;
    }

    //// 报警联动信息
    public struct NET_CFG_ALARM_MSG_HANDLE
    {
        /// <summary>
        /// 能力
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否支持通道数量
        /// Whether Support Channel Count
        /// </summary>
        public byte abChannelCount;
        /// <summary>
        /// 是否支持报警输出数量
        /// Whether Support AlarmOut Count
        /// </summary>
        public byte abAlarmOutCount;
        /// <summary>
        /// 是否支持录像通道
        /// Whether Support RecordMask
        /// </summary>
        public byte abRecordMask;
        /// <summary>
        /// 是否支持录像使能
        /// Whether Support RecordEnable
        /// </summary>
        public byte abRecordEnable;
        /// <summary>
        /// 是否支持录像延时
        /// Whether Support RecordLatch
        /// </summary>
        public byte abRecordLatch;
        /// <summary>
        /// 是否支持报警输出通道
        /// Whether Support AlarmOutMask
        /// </summary>
        public byte abAlarmOutMask;
        /// <summary>
        /// 是否支持报警输出使能
        /// Whether Support AlarmOut Enable
        /// </summary>
        public byte abAlarmOutEn;
        /// <summary>
        /// 是否支持报警输出延时
        /// Whether Support AlarmOut Latch
        /// </summary>
        public byte abAlarmOutLatch;
        /// <summary>
        /// 是否支持扩展报警输出通道
        /// Whether Support ExAlarmOut Mask
        /// </summary>
        public byte abExAlarmOutMask;
        /// <summary>
        /// 是否支持扩展报警输出使能
        /// Whether Support ExAlarmOut Enable
        /// </summary>
        public byte abExAlarmOutEn;
        /// <summary>
        /// 是否支持云台联动使能
        /// Whether Support PTZ Link Enable
        /// </summary>
        public byte abPtzLinkEn;
        /// <summary>
        /// 是否支持轮巡掩码
        /// Whether Support Tour Mask
        /// </summary>
        public byte abTourMask;
        /// <summary>
        /// 是否支持轮巡使能
        /// Whether Support Tour Enable
        /// </summary>
        public byte abTourEnable;
        /// <summary>
        /// 是否支持快照
        /// Whether Support Snapshot
        /// </summary>
        public byte abSnapshot;
        /// <summary>
        /// 是否支持快照使能
        /// Whether Support Snapshot Enable
        /// </summary>
        public byte abSnapshotEn;
        /// <summary>
        /// 是否支持帧间隔，每隔多少帧抓一张图片
        /// Whether Support Snapshot Period, Snap a picture every sceond
        /// </summary>
        public byte abSnapshotPeriod;
        /// <summary>
        /// 是否支持连拍次数
        /// Whether Support Snapshot Times
        /// </summary>
        public byte abSnapshotTimes;
        /// <summary>
        /// 是否支持本地消息框提示
        /// Whether Support Local Message Box prompt
        /// </summary>
        public byte abTipEnable;
        /// <summary>
        /// 是否支持发送邮件
        /// Whether Support Send Mail Enable
        /// </summary>
        public byte abMailEnable;
        /// <summary>
        /// 是否支持上传到报警中心服务器
        /// Whether Support Upload to the alarm center server
        /// </summary>
        public byte abMessageEnable;
        /// <summary>
        /// 是否支持蜂鸣
        /// Whether Support Beep Enable
        /// </summary>
        public byte abBeepEnable;
        /// <summary>
        /// 是否支持语音提示
        /// Whether Support Voice Enable
        /// </summary>
        public byte abVoiceEnable;
        /// <summary>
        /// 是否支持联动视频矩阵掩码
        /// Whether Support Matrix Mask
        /// </summary>
        public byte abMatrixMask;
        /// <summary>
        /// 是否支持联动视频矩阵使能
        /// Whether Support Matrix Enable
        /// </summary>
        public byte abMatrixEnable;
        /// <summary>
        /// 是否支持联动开始延时时间
        /// Whether Support Event Latch
        /// </summary>
        public byte abEventLatch;
        /// <summary>
        /// 是否支持日志使能
        /// Whether Support Log Enable
        /// </summary>
        public byte abLogEnable;
        /// <summary>
        /// 是否支持报警延时
        /// Whether Support Delay
        /// </summary>
        public byte abDelay;
        /// <summary>
        /// 是否支持叠加提示字幕到视频
        /// Whether Support Add Message to video
        /// </summary>
        public byte abVideoMessageEn;
        /// <summary>
        /// 是否支持发送短消息
        /// Whether Support Send MMS Enable
        /// </summary>
        public byte abMMSEnable;
        /// <summary>
        /// 是否支持消息上传给网络使能
        /// Whether Support Message to Net Enable
        /// </summary>
        public byte abMessageToNetEn;
        /// <summary>
        /// 是否支持换面分割轮巡
        /// Whether Support TourSplit
        /// </summary>
        public byte abTourSplit;
        /// <summary>
        /// 是否支持叠加图片标题使能
        /// Whether Support Snapshot Title Enable
        /// </summary>
        public byte abSnapshotTitleEn;
        /// <summary>
        /// 是否支持云台联动使能
        /// Whether Support PTZ Link Enable
        /// </summary>
        public byte abPtzLinkEx;
        /// <summary>
        /// 是否支持叠加图片标题
        /// Whether Support Add Snapshot Title
        /// </summary>
        public byte abSnapshotTitle;
        /// <summary>
        /// 是否支持邮件详情
        /// Whether Support Mail Detail
        /// </summary>
        public byte abMailDetail;
        /// <summary>
        /// 是否支持叠加视频标题，主要指主码流
        /// Whether Support Add Video Title Enable, MainStream
        /// </summary>
        public byte abVideoTitleEn;
        /// <summary>
        /// 是否支持视频标题内容
        /// Whether Support Video Title
        /// </summary>
        public byte abVideoTitle;
        /// <summary>
        /// 是否支持轮巡
        /// Whether Support Tour
        /// </summary>
        public byte abTour;
        /// <summary>
        /// 是否支持指定事件详细信息里需要写到数据库的关键字
        /// Whether Support Specifies the KeyWords that need to be Written to the DB in the event details
        /// </summary>
        public byte abDBKeys;
        /// <summary>
        /// 是否支持叠加到JPEG图片的摘要信息
        /// Whether Support Add JPEG Summary
        /// </summary>
        public byte abJpegSummary;
        /// <summary>
        /// 是否支持补光灯使能
        /// Whether Support Flash Enable
        /// </summary>
        public byte abFlashEn;
        /// <summary>
        /// 是否支持补光灯延时
        /// Whether Support Flash Latch
        /// </summary>
        public byte abFlashLatch;
        /// <summary>
        /// 是否支持联动语音文件绝对路径
        /// Whether Support Audio File Name
        /// </summary>
        public byte abAudioFileName;
        /// <summary>
        /// 是否支持警号使能
        /// Whether Support AlarmBell Enable
        /// </summary>
        public byte abAlarmBellEn;
        /// <summary>
        /// 是否支持门禁控制使能
        /// Whether Support Access Control Enable
        /// </summary>
        public byte abAccessControlEn;
        /// <summary>
        /// 是否支持门禁控制
        /// Whether Support Access Control
        /// </summary>
        public byte abAccessControl;
        /// <summary>
        /// 是否支持语音呼叫
        /// Whether Support TalkBack
        /// </summary>
        public byte abTalkBack;
        /// <summary>
        /// 是否支持电话报警中心
        /// Whether Support PSTN Alarm Server
        /// </summary>
        public byte abPSTNAlarmServer;
        /// <summary>
        /// 是否支持警号输出延时
        /// Whether Support AlarmBell Latch
        /// </summary>
        public byte abAlarmBellLatch;
        /// <summary>
        /// 是否支持联动语音播放次数
        /// Whether Support PlayTimes
        /// </summary>
        public byte abPlayTimes;
        /// <summary>
        /// 是否支持重启使能
        /// Whether Support Reboot enable
        /// </summary>
        public byte abReboot;
        /// <summary>
        /// 是否支持蜂鸣时长
        /// Whether Support BeepTime
        /// </summary>
        public byte abBeepTime;
        /// <summary>
        /// 能力保留字段
        /// reserved for ability
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 68)]
        public byte[] byReserved;
        /// <summary>
        /// 事件响应时间表
        /// Alarm Time Section
        /// </summary>
        public NET_CFG_TIME_SCHEDULE stuTimeSection;
        /// <summary>
        /// 设备的视频通道数
        /// The video channel of the device
        /// </summary>
        public int nChannelCount;
        /// <summary>
        /// 设备的报警输出个数
        /// The alarm output amount of the device
        /// </summary>
        public int nAlarmOutCount;
        /// <summary>
        /// 录像通道掩码(按位)
        /// Subnet mask of the recording channel(use the bit to represent)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwRecordMask;
        /// <summary>
        /// 录像使能
        /// Record enable
        /// </summary>
        public bool bRecordEnable;
        /// <summary>
        /// 录像延时时间(秒)
        /// Record delay time(s)
        /// </summary>
        public int nRecordLatch;
        /// <summary>
        /// 报警输出通道掩码
        /// ubnet mask of alarm output channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwAlarmOutMask;
        /// <summary>
        /// 报警输出使能
        /// Alarm output enable
        /// </summary>
        public bool bAlarmOutEn;
        /// <summary>
        /// 报警输出延时时间(秒)
        /// Alarm output delay time (s)
        /// </summary>
        public int nAlarmOutLatch;
        /// <summary>
        /// 扩展报警输出通道掩码
        /// Subnet mask of extension alarm output channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwExAlarmOutMask;
        /// <summary>
        /// 扩展报警输出使能
        /// Extension alarm output enable
        /// </summary>
        public bool bExAlarmOutEn;
        /// <summary>
        /// 云台联动项 这个参数并没有被解析，应该是被扩展替代
        /// PTZ activation item
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_PTZ_LINK[] stuPtzLink;
        /// <summary>
        /// 云台联动使能
        /// PTZ activation enable
        /// </summary>
        public bool bPtzLinkEn;
        /// <summary>
        /// 轮询通道掩码
        /// Subnet mask of tour channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwTourMask;
        /// <summary>
        /// 轮询使能
        /// Tour enable
        /// </summary>
        public bool bTourEnable;
        /// <summary>
        /// 快照通道号掩码
        /// Snapshot channel subnet mask
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwSnapshot;
        /// <summary>
        /// 快照使能
        /// Snapshot enable
        /// </summary>
        public bool bSnapshotEn;
        /// <summary>
        /// 连拍周期(秒)
        /// Snapshot period(s)
        /// </summary>
        public int nSnapshotPeriod;
        /// <summary>
        /// 连拍次数
        /// Snapshot times
        /// </summary>
        public int nSnapshotTimes;
        /// <summary>
        /// 本地消息框提示
        /// Local prompt dialogue box
        /// </summary>
        public bool bTipEnable;
        /// <summary>
        /// 发送邮件，如果有图片，作为附件
        /// Send out emali. The image is sent out as the attachment.
        /// </summary>
        public bool bMailEnable;
        /// <summary>
        /// 上传到报警服务器
        /// Upload to the alarm server
        /// </summary>
        public bool bMessageEnable;
        /// <summary>
        /// 蜂鸣
        /// Buzzer
        /// </summary>
        public bool bBeepEnable;
        /// <summary>
        /// 语音提示
        /// Audio prompt
        /// </summary>
        public bool bVoiceEnable;
        /// <summary>
        /// 联动语音播放次数bVoiceEnable=TRUE时生效
        /// The Linkage Audio play times,bVoiceEnable=TRUE is effective
        /// </summary>
        public int nPlayTimes;
        /// <summary>
        /// 联动视频矩阵通道掩码
        /// Subnet mask of the activated video channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwMatrixMask;
        /// <summary>
        /// 联动视频矩阵
        /// Activate the video matrix
        /// </summary>
        public bool bMatrixEnable;
        /// <summary>
        /// 联动开始延时时间(秒)，0－15
        /// Activation delay time (s),0-15
        /// </summary>
        public int nEventLatch;
        /// <summary>
        /// 是否记录日志
        /// Record log or not
        /// </summary>
        public bool bLogEnable;
        /// <summary>
        /// 设置时先延时再生效，单位为秒
        /// Delay first and then becomes valid when set. Unit is second.
        /// </summary>
        public int nDelay;
        /// <summary>
        /// 叠加提示字幕到视频。叠加的字幕包括事件类型，通道号，秒计时。
        /// Overlay the prompt character to the video. The overlay character includes the event type, channel number. The unit is second.
        /// </summary>
        public bool bVideoMessageEn;
        /// <summary>
        /// 发送彩信使能
        /// Enable MMS
        /// </summary>
        public bool bMMSEnable;
        /// <summary>
        /// 消息上传给网络使能
        /// Send the message to the network enable
        /// </summary>
        public bool bMessageToNetEn;
        /// <summary>
        /// 轮巡时的分割模式 0: 1画面; 1: 8画面
        /// Tour split mod 0: 1tour; 1: 8tour
        /// </summary>
        public int nTourSplit;
        /// <summary>
        /// 是否叠加图片标题
        /// Enble osd
        /// </summary>
        public bool bSnapshotTitleEn;
        /// <summary>
        /// 云台配置数
        /// PTZ link configuration number
        /// </summary>
        public int nPtzLinkExNum;
        /// <summary>
        /// 扩展云台信息
        /// PTZ extend information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_PTZ_LINK_ITEM[] stuPtzLinkEx;
        /// <summary>
        /// 图片标题内容数
        /// Number of picture title
        /// </summary>
        public int nSnapTitleNum;
        /// <summary>
        /// 图片标题内容
        /// Picture title content
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_EVENT_TITLE[] stuSnapshotTitle;
        /// <summary>
        /// 邮件详细内容
        /// Mail detial
        /// </summary>
        public NET_CFG_MAIL_DETAIL stuMailDetail;
        /// <summary>
        /// 是否叠加视频标题，主要指主码流
        /// Whether overlay video title, mainly refers to the main stream
        /// </summary>
        public bool bVideoTitleEn;
        /// <summary>
        /// 视频标题内容数目
        /// Video title num
        /// </summary>
        public int nVideoTitleNum;
        /// <summary>
        /// 视频标题内容
        /// Video title
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_EVENT_TITLE[] stuVideoTitle;
        /// <summary>
        /// 轮询联动数目
        /// Tour num
        /// </summary>
        public int nTourNum;
        /// <summary>
        /// 轮询联动配置
        /// Tour configuration
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_TOURLINK[] stuTour;
        /// <summary>
        /// 指定数据库关键字的有效数
        /// Specify the db keyword on the number of effective
        /// </summary>
        public int nDBKeysNum;
        /// <summary>
        /// 指定事件详细信息里需要写到数据库的关键字
        /// The specify event detail information need write the BD keyword
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64 * 64)]
        public string szDBKeys;
        /// <summary>
        /// 叠加到JPEG图片的摘要信息
        /// The summary information of the jpeg image
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byJpegSummary;
        /// <summary>
        /// 是否使能补光灯
        /// Whether enable flash
        /// </summary>
        public bool bFlashEnable;
        /// <summary>
        /// 补光灯延时时间(秒),延时时间范围：[10,300]
        /// Flash delay time (s),the time range:[10,300]
        /// </summary>
        public int nFlashLatch;
        /// <summary>
        /// 联动语音文件绝对路径
        /// The Absolute Path to the Linkage Audio Files
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szAudioFileName;
        /// <summary>
        /// 警号使能
        /// Warning Signal Enable
        /// </summary>
        public bool bAlarmBellEn;
        /// <summary>
        /// 门禁使能
        /// Entrance Guard Enable
        /// </summary>
        public bool bAccessControlEn;
        /// <summary>
        /// 门禁组数
        /// Class Number of Entrance Guard
        /// </summary>
        public uint dwAccessControl;
        /// <summary>
        /// 门禁联动操作信息
        /// Entrance Guard Linkage Operation Information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public EM_CFG_ACCESSCONTROLTYPE[] emAccessControlType;
        /// <summary>
        /// 语音呼叫联动信息
        /// Voice Call Linkage Information
        /// </summary>
        public NET_CFG_TALKBACK_INFO stuTalkback;
        /// <summary>
        /// 电话报警中心联动信息
        /// Telephone Alarm Center Linkage Information
        /// </summary>
        public NET_CFG_PSTN_ALARM_SERVER stuPSTNAlarmServer;
        /// <summary>
        /// 警号输出延时时间(10-300秒)
        /// Police no. output delay time(10-300 s)
        /// </summary>
        public int nAlarmBellLatch;
        /// <summary>
        /// 重启使能TRUE:使能 FALSE:不使能
        /// Rebot Enable,TRUE:enable FALSE:unenble
        /// </summary>
        public bool bReboot;
        /// <summary>
        /// 蜂鸣时长最大值为3600，0代表持续蜂鸣
        /// The Max Beep Time:3600,0 Stand for persistent buzz
        /// </summary>
        public int nBeepTime;
        /// <summary>
        /// 云台补光灯联动项使能
        /// PTZ light activation enable
        /// </summary>
        public bool abLightingLink;
        /// <summary>
        /// 云台补光灯联动项
        /// PTZ light activation
        /// </summary>
        public NET_CFG_LIGHTING_LINK_INFO stuLightingLink;
    }


    /// <summary>
    /// Alarm linkage configuration
    /// 报警联动配置
    /// </summary>
    public struct NET_RADAR_ANALYSERULE
    {
        /// <summary>
        /// 被控制的球机IP
        /// The ip of device which was controlled
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSDLinkIP;
        /// <summary>
        /// 报警配置编号，编号唯一
        /// The id of Alarm configuration
        /// </summary>
        public int nAlarmOutNumber;
        /// <summary>
        /// 报警使能
        /// alarm enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 报警联动配置
        /// alarm link configuration
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE stuEventHandler;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// radar link analyse rule configuration(corresponding to RADAR_ANALYSERULE)
    /// 雷达报警联动配置(对应RADAR_ANALYSERULE)
    /// </summary>
    public struct NET_CFG_RADAR_ANALYSERULE_INFO
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// The number of alarm linkage configuration
        /// 报警联动配置个数
        /// <summary>
        public int nAnalyseRuleNum;
        /// <summary>
        /// The array of alarm linkage configuration
        /// 报警联动配置数组
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public NET_RADAR_ANALYSERULE[] stuAnalyseRules;
    }

    /// <summary>
    /// human info
    /// 人员信息
    /// </summary>
    public struct NET_HUMAN
    {
        /// <summary>
        /// bounding box(8192 coordinate system)
        /// 包围盒(8192坐标系)
        /// <summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// Object ID
        /// 物体ID
        /// <summary>
        public uint nObjectID;
        /// <summary>
        /// Intelligent object global unique object identification
        /// Valid data bits are 21 bits, including '\0'
        /// Top 2 bits %d%d: 01-video clip, 02-picture, 03-file, 99-other
        /// Middle 14 bit yyyymmddhhmmss
        /// Last 5 bits %U%U%U%U%U: object ID, such as 00001
        /// 智能物体全局唯一物体标识
        /// 有效数据位21位，包含’\0’
        /// 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
        /// 中间14位YYYYMMDDhhmmss:年月日时分秒
        /// 后5位%u%u%u%u%u：物体ID，如00001
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 22)]
        public string szSerialUUID;
        /// <summary>
        /// reserved
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 230)]
        public byte[] bReserved;
    }

    /// <summary>
    /// Corresponding to data block description of event type EVENT_IVS_STAY_ALONE_DETECTION
    /// 事件类型 EVENT_IVS_STAY_ALONE_DETECTION (单人独处事件) 对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_STAY_ALONE_DETECTION_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// 0:Pulse 1:Start 2:Stop
        /// 0:脉冲 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// Event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// timestamp (in milliseconds)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// class type
        /// 智能事件所属大类
        /// <summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// time for the event occurred
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// UTC corresponds to milliseconds
        /// UTC时间对应的毫秒数
        /// <summary>
        public int UTCMS;
        /// <summary>
        /// event ID
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// human info
        /// 人员信息
        /// <summary>
        public NET_HUMAN stuHuman;
        /// <summary>
        /// scene image
        /// 全景图
        /// <summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// detect region number
        /// 检测区域顶点数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// detect region
        /// 检测区域
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// reserved
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Corresponding to data block description of event type EVENT_IVS_PHONECALL_DETECT  (phone call detect event)
    /// 事件类型 EVENT_IVS_PHONECALL_DETECT(打电话检测事件) 对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_PHONECALL_DETECT_INFO
    {
        /// <summary>
        /// Channel ID
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// Event action, 0:Pulse, 1:Start, 2:Stop
        /// 0:脉冲 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// Event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Timestamp (in milliseconds)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// Event occurrence time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// id of event group
        /// 事件组ID
        /// <summary>
        public int nGroupID;
        /// <summary>
        /// the file count in the current file's group
        /// 一个事件组内的抓拍张数
        /// <summary>
        public int nCountInGroup;
        /// <summary>
        /// the index of the file in the group
        /// 一个事件组内的抓拍序号，从1开始
        /// <summary>
        public int nIndexInGroup;
        /// <summary>
        /// UTC corresponds to milliseconds
        /// UTC对应的毫秒数
        /// <summary>
        public uint UTCMS;
        /// <summary>
        /// detect object
        /// 检测到的物体
        /// <summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// rule detect region's point number
        /// 规则检测区域顶点数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// rule detect region
        /// 规则检测区域
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// The common information of intelligence event
        /// 智能事件公共信息
        /// <summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// rule number
        /// 智能事件规则编号
        /// <summary>
        public uint nRuleID;
        /// <summary>
        /// Object num
        /// 检测到的物体数量
        /// <summary>
        public uint nObjectNum;
        /// <summary>
        /// Multiple detected object information
        /// 多个检测到的物体信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// SerialUUID number
        /// 智能物体数量
        /// <summary>
        public uint nSerialUUIDNum;
        /// <summary>
        /// Intelligent object global unique object identification
        /// Valid data bits are 21 bits, including '\0'
        /// Top 2 bits %d%d: 01-video clip, 02-picture, 03-file, 99-other
        /// Middle 14 bit yyyymmddhhmmss
        /// Last 5 bits %U%U%U%U%U: object ID, such as 00001
        /// 智能物体全局唯一物体标识
        /// 有效数据位21位，包含’\0’
        /// 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
        /// 中间14位YYYYMMDDhhmmss:年月日时分秒
        /// 后5位%u%u%u%u%u：物体ID，如00001
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2816)]
        public string szSerialUUID;
        /// <summary>
        /// stuSceneImage 是否有效
        /// Whether stuSceneImage is valid
        /// </summary>
        public bool bSceneImage;
        /// <summary>
        /// 全景广角图
        /// Global scene iamge
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 用户名称
        /// User Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserName;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 188)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Trigger mode of leaving post
    /// 离岗的触发模式
    /// </summary>
    public enum EM_LEAVEDETECTION_TRIGGER_MODE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// <summary>
        UNKNOEN,
        /// <summary>
        /// No person
        /// 无人
        /// <summary>
        NOPERSON,
        /// <summary>
        /// Leave
        /// 离开
        /// <summary>
        LEAVE,
        /// <summary>
        /// Static
        /// 静止(睡岗)
        /// <summary>
        STATIC,
        /// <summary>
        /// Not within the allowed number of people on duty (abnormal number of people on duty)
        /// 不在允许值岗人数范围内(值岗人数异常)
        /// <summary>
        OUTPERSONLIMIT,
    }

    /// <summary>
    /// Detection state
    /// 检测状态
    /// </summary>
    public enum EM_LEAVEDETECTION_STATE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// <summary>
        UNKNOWN = 0,
        /// <summary>
        /// Leave
        /// 离岗
        /// <summary>
        LEAVE,
        /// <summary>
        /// On-the-job
        /// 在岗
        /// <summary>
        ON_THE_JOB,
    }

    /// <summary>
    /// Event type  EVENT_IVS_LEAVEDETECTION(leave check)corresponding data block description info
    /// 事件类型 EVENT_IVS_LEAVEDETECTION(离岗检测事件)对应数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_IVS_LEAVE_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// Time stamp(ms)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// Detected object
        /// 检测到的物体
        /// <summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// The corresponding file info of the event
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// <summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// Rule Detect Area Top Number
        /// 规则检测区域顶点数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// Rule Detect Area
        /// 规则检测区域
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event;
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// <summary>
        public byte bEventAction;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// <summary>
        public byte byImageIndex;
        /// <summary>
        /// intelligent things info
        /// 智能事件公共信息
        /// <summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// Trigger mode of leaving post
        /// 离岗的触发模式
        /// <summary>
        public EM_LEAVEDETECTION_TRIGGER_MODE emTriggerMode;
        /// <summary>
        /// Detection state
        /// 检测状态
        /// <summary>
        public EM_LEAVEDETECTION_STATE emState;
        /// <summary>
        /// stuSceneImage 是否有效
        /// If stuSceneImage is valid
        /// </summary>
        public bool bSceneImage;
        /// <summary>
        /// 全景广角图
        /// Scene Image info
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 用户名称
        /// User Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserName;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved bytes.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public byte[] bReserved;
    }

    /// <summary>
    /// Corresponding to data block description of event type EVENT_IVS_SMOKING_DETECT(smoking detect)
    /// 事件类型 EVENT_IVS_SMOKING_DETECT(吸烟检测事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_SMOKING_DETECT_INFO
    {
        /// <summary>
        /// Channel ID
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// Event action, 0:Pulse, 1:Start, 2:Stop
        /// 0:脉冲 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// Event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Timestamp (in milliseconds)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// Event occurrence time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// id of event group
        /// 事件组ID
        /// <summary>
        public int nGroupID;
        /// <summary>
        /// the file count in the current file's group
        /// 一个事件组内的抓拍张数
        /// <summary>
        public int nCountInGroup;
        /// <summary>
        /// the index of the file in the group
        /// 一个事件组内的抓拍序号，从1开始
        /// <summary>
        public int nIndexInGroup;
        /// <summary>
        /// UTC corresponds to milliseconds
        /// UTC对应的毫秒数
        /// <summary>
        public uint UTCMS;
        /// <summary>
        /// detect object
        /// 检测到的物体
        /// <summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// rule detect region's point number
        /// 规则检测区域顶点数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// rule detect region
        /// 规则检测区域
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// The common information of intelligence event
        /// 智能事件公共信息
        /// <summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// Intelligent object global unique object identification
        /// Valid data bits are 21 bits, including '\0'
        /// Top 2 bits %d%d: 01-video clip, 02-picture, 03-file, 99-other
        /// Middle 14 bit yyyymmddhhmmss
        /// Last 5 bits %U%U%U%U%U: object ID, such as 00001
        /// 智能物体全局唯一物体标识
        /// 有效数据位21位，包含’\0’
        /// 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
        /// 中间14位YYYYMMDDhhmmss:年月日时分秒
        /// 后5位%u%u%u%u%u：物体ID，如00001
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 22)]
        public string szSerialUUID;
        /// <summary>
        /// 全景广角图
        /// Scene image info
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImageInfo;
        /// <summary>
        /// 用户名称
        /// User Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserName;
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved;
    }

    /// <summary>
    /// IO control command. Corresponding to CLIENT_QueryIOControlState
    /// IO控制命令,对应CLIENT_QueryIOControlState接口
    /// </summary>
    public enum EM_NET_IOTYPE
    {
        /// <summary>
        /// Control alarm input
        /// 控制报警输入,对应结构体为ALARM_CONTROL
        /// <summary>
        ALARMINPUT = 1,
        /// <summary>
        /// ontrol alarm output
        /// 控制报警输出，对应结构体为ALARM_CONTROL
        /// <summary>
        ALARMOUTPUT = 2,
        /// <summary>
        /// Control alarm decoder output
        /// 控制报警解码器输出，对应结构体为DECODER_ALARM_CONTROL
        /// <summary>
        DECODER_ALARMOUT = 3,
        /// <summary>
        /// Control wireless alarm output
        /// 控制无线报警输出，对应结构体为ALARM_CONTROL
        /// <summary>
        WIRELESS_ALARMOUT = 5,
        /// <summary>
        /// Alarm activation type(auto/manual/close). Use TRIGGER_MODE_CONTROL structure
        /// 报警触发方式（手动,自动,关闭）,使用TRIGGER_MODE_CONTROL结构体
        /// <summary>
        ALARM_TRIGGER_MODE = 7,
    }

    /// <summary>
    /// Alarm IO control 
    /// 报警IO控制
    /// </summary>
    public struct NET_ALARM_CONTROL
    {
        /// <summary>
        /// Port serial number
        /// 端口序号
        /// <summary>
        public ushort index;
        /// <summary>
        /// Port status
        /// 端口状态，0 - 关闭，1 - 打开
        /// <summary>
        public ushort state;
    }

    /// <summary>
    /// thermal  Monitoring spot alarm result value type 
    /// 热成像测温点报警结果值类型
    /// </summary>
    public enum NET_RADIOMETRY_RESULT
    {
        /// <summary>
        /// <summary>
        UNKNOWN,
        /// <summary>
        /// concrete value
        /// 具体值
        /// <summary>
        VAL,
        /// <summary>
        /// max
        /// 最大
        /// <summary>
        MAX,
        /// <summary>
        /// min
        /// 最小
        /// <summary>
        MIN,
        /// <summary>
        /// average
        /// 平均
        /// <summary>
        AVR,
        /// <summary>
        /// standard
        /// 标准
        /// <summary>
        STD,
        /// <summary>
        /// middle
        /// 中间
        /// <summary>
        MID,
        /// <summary>
        /// ISO
        /// ISO
        /// <summary>
        ISO,
        /// <summary>
        /// difference
        /// 温差
        /// <summary>
        DIFF,
        /// <summary>
        /// slope
        /// 斜率
        /// <summary>
        SLOPE,
    }

    /// <summary>
    /// thermal  Monitoring spot alarm condition 
    /// 热成像测温点报警条件
    /// </summary>
    public enum NET_RADIOMETRY_ALARMCONTION
    {
        /// <summary>
        /// <summary>
        UNKNOWN,
        /// <summary>
        /// below
        /// 小于
        /// <summary>
        BELOW,
        /// <summary>
        /// equal
        /// 等于
        /// <summary>
        MATCH,
        /// <summary>
        /// above
        /// 大于
        /// <summary>
        ABOVE,
    }

    /// <summary>
    /// thermal  Monitoring spot  abnormity alarm
    /// 热成像测温点温度异常报警
    /// </summary>
    public struct NET_ALARM_HEATIMG_TEMPER_INFO
    {
        /// <summary>
        ///  abnormal spot name, select from the TM rule config
        /// 温度异常点名称 从测温规则配置项中选择
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// alarm number
        /// 报警项编号
        /// <summary>
        public int nAlarmId;
        /// <summary>
        /// alarm result value nValue type, refer to enumeration NET_RADIOMETRY_RESULT
        /// 报警结果值  的类型,见枚举 NET_RADIOMETRY_RESULT
        /// <summary>
        public int nResult;
        /// <summary>
        /// alarm condition, refer to enumeration NET_RADIOMETRY_ALARMCONTION
        /// 报警条件,见枚举 NET_RADIOMETRY_ALARMCONTION
        /// <summary>
        public int nAlarmContion;
        /// <summary>
        /// alarm  value
        /// 报警温度值
        /// <summary>
        public float fTemperatureValue;
        /// <summary>
        ///  unit (currently configured  unit), refer to EM_TEMPERATURE_UNIT
        /// 温度单位(当前配置的温度单位),见 EM_TEMPERATURE_UNIT
        /// <summary>
        public int nTemperatureUnit;
        /// <summary>
        /// alarm spot coordinate, relative coordinate system, value is 0~8191
        /// 报警点的坐标 相对坐标体系,取值均为0~8191
        /// <summary>
        public NET_POINT stCoordinate;
        /// <summary>
        /// preset
        /// 预置点
        /// <summary>
        public int nPresetID;
        /// <summary>
        /// channel number
        /// 通道号
        /// <summary>
        public int nChannel;
        /// <summary>
        /// 0:start 1: stop
        /// 0:开始 1:停止 -1:无意义
        /// <summary>
        public int nAction;
        /// <summary>
        /// alarm coordinates, the type is spot or line or polygon. replace stCoordinate field
        /// 报警坐标, 其类型可以是点，线或多边形。替换stCoordinate字段
        /// <summary>
        public NET_POLY_POINTS stuAlarmCoordinates;
        /// <summary>
        /// 报警最大温度值
        /// Alarm maximum  value
        /// </summary>
        public double dTemperatureMaxValue;
        /// <summary>
        /// 报警最小温度值
        /// Alarm min  value
        /// </summary>
        public double dTemperatureMinValue;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 预置点名称
        /// Name of preset point
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// / 测温报警编号，从1开始加的（每发生一次事件+1），根据这个编号来判断是否丢失事件
        /// Temperature alarm number, added from 1
        /// </summary>
        public int nSequenceNum;
        /// <summary>
        /// / 报警阈值温度/温度斜率
        /// Alarm threshold temperature/temperature slope
        /// </summary>
        public float fThreshold;
        /// <summary>
        /// / 设备本地时间
        /// Device local time
        /// </summary>
        public NET_TIME stuLocaleTime;
        /// <summary>
        /// / 最高温坐标点，相对坐标系，范围[0,8191]
        /// Maximum temperature coordinate point, relative coordinate system, range [0,8191]
        /// </summary>
        public NET_POINT_EX2 stHotPoint;
        /// <summary>
        /// / 最低温坐标点，相对坐标系，范围[0,8191]
        /// Lowest temperature coordinate point, relative coordinate system, range [0,8191]
        /// </summary>
        public NET_POINT_EX2 stColdPoint;
        /// <summary>
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 28)]
        public string reserved;
    }

    /// <summary>
    /// hotspot warning(ALARM_HOTSPOT_WARNING)
    /// 热成像热点异常报警事件(对应 ALARM_HOTSPOT_WARNING)
    /// </summary>
    public struct NET_ALARM_HOTSPOT_WARNING_INFO
    {
        /// <summary>
        /// 0:start 1:stop
        /// 0:开始 1:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// channel id
        /// 视频通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// hotspot point, 0~8192
        /// 热点的坐标,坐标值 0~8192
        /// <summary>
        public NET_POINT stuCoordinate;
        /// <summary>
        /// hotspot value
        /// 热点温度值
        /// <summary>
        public float fHotSpotValue;
        /// <summary>
        ///  unit,refer to EM_TEMPERATURE_UNIT
        /// 温度单位(当前配置的温度单位),见 EM_TEMPERATURE_UNIT
        /// <summary>
        public int nTemperatureUnit;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// DevLocation 配置( 对应CFG_CMD_DEVLOCATION )
    /// </summary>
    public struct CFG_DEVLOCATION_INFO
    {
        /// <summary>
        /// 经度 单位百万分之一度，范围0-360度
        /// </summary>
        public uint unLongitude;
        /// <summary>
        /// 纬度 单位百万分之一度，范围0-360度
        /// </summary>
        public uint unLatitude;
        /// <summary>
        /// 海拔 单位米
        /// </summary>
        public double dbAltitude;
        /// <summary>
        /// true：GPS信息按照配置上报
        /// </summary>
        public bool bConfigEnable;
        /// <summary>
        /// 设备高度 单位米
        /// </summary>
        public float fHeight;
    }

    /// <summary>
    /// LocationCalibrate 配置( 对应CFG_CMD_LOCATION_CALIBRATE)
    /// </summary>
    public struct CFG_LOCATION_CALIBRATE_INFO
    {
        /// <summary>
        /// 可见光横向视角
        /// </summary>
        public uint nVisualMaxHFOV;
        /// <summary>
        /// 可见光纵向视角
        /// </summary>
        public uint nVisualMaxVFOV;
        /// <summary>
        /// 热成像横向视角
        /// </summary>
        public uint nThermoMaxHFOV;
        /// <summary>
        /// 热成像纵向视角
        /// </summary>
        public uint nThermoMaxVFOV;
        /// <summary>
        /// 标定点信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public CFG_LOCATION_CALIBRATE_POINT_INFO[] stuPointInfo;
        /// <summary>
        /// 标定点个数
        /// </summary>
        public int nPointNum;
        /// <summary>
        ///  字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;
    }

    /// <summary>
    /// 标定点信息
    /// </summary>
    public struct CFG_LOCATION_CALIBRATE_POINT_INFO
    {
        /// <summary>
        /// 标定点ID
        /// </summary>
        public uint nID;
        /// <summary>
        /// 标定点名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szName;
        /// <summary>
        /// 使能
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 经度
        /// </summary>
        public uint nLongitude;
        /// <summary>
        /// 纬度
        /// </summary>
        public uint nLatitude;
        /// <summary>
        /// 海拔
        /// </summary>
        public double fAltitude;
        /// <summary>
        /// 标定点基本信息
        /// </summary>
        public CFG_CALIBRATE_INFO stuCalibrateInfo;
        ///  字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;
    }

    /// <summary>
    /// 标定基本信息 
    /// </summary>
    public struct CFG_CALIBRATE_INFO
    {
        /// <summary>
        /// 标定信息单元
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public CFG_CALIBRATE_UNIT_INFO_ARRAY[] stuCalibrateUnitInfo;
        /// <summary>
        /// 标定数量
        /// </summary>
        public int nInfoNum;
    }

    /// <summary>
    /// 标定基本信息组 
    /// </summary>
    public struct CFG_CALIBRATE_UNIT_INFO_ARRAY
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public CFG_CALIBRATE_UNIT_INFO[] stuCalibrateUnitInfo;
    }

    /// <summary>
    /// 标定基本信息组单元
    /// </summary>
    public struct CFG_CALIBRATE_UNIT_INFO
    {
        /// <summary>
        /// 分辨率高
        /// </summary>
        public uint nHeight;
        /// <summary>
        /// 分辨率宽
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// 云台位置(P/T/Z 归一化)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public float[] nPosition;
        /// <summary>
        /// 标定点坐标
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public uint[] nLocation;
        /// <summary>
        /// 横向视场角(单位：0.01度)
        /// </summary>
        public uint nHFOV;
        /// <summary>
        /// 纵向视场角(单位：0.01度)
        /// </summary>
        public uint nVFOV;
    }

    /// <summary>
    /// Object type of high toss detection
    /// 高空抛物物体动作
    /// </summary>
    public enum EM_HIGHTOSS_ACTION_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// New object appearing in the detection area for the first time or not confirmed in the physical separation action during tracking
        /// 第一次出现在检测区域中，或者跟踪时物理分离动作中尚未确认的新物体
        /// </summary>
        APPEAR,
        /// <summary>
        /// Moving, object are being tracked normally
        /// 正在运动，物体被正常跟踪
        /// </summary>
        MOVE,
        /// <summary>
        /// Object stop moving. This object will not appear in the next frame object list, and restore in the object list after moving.
        /// 物体停止运动，这个物体不会出现在下一帧物体列表中，物体开始移动后再恢复在列表中
        /// </summary>
        STAY,
        /// <summary>
        /// If the object is removed from the original area, or covered, or tracking fails, the removed object ID will not be automatically deleted, and it is possible for the object to reappear and be used again
        /// 物体从原来的区域移除，或者被遮盖，或者跟踪失败，移除的物体ID不会被自动删除，并且物体重新出现是有可能再次被使用
        /// </summary>
        REMOVE,
        /// <summary>
        /// Moving outside the tracking area, or reaching the upper limit of the algorithm to track objects , the disappeared object ID will no longer appear
        /// 运动到跟踪区域之外，或者达到了算法跟踪物体的上限而被清除，消失的物体ID将不再出现
        /// </summary>
        DISAPPEAR,
        /// <summary>
        /// Separated from other objects, it can be used to detect objects left behind. Association ID means separated from the object corresponding to this ID
        /// 从其他物体中分离出来，可以用来检测物体遗留，关联ID表示从这个ID对应物体分离
        /// </summary>
        SPLIT,
        /// <summary>
        /// Merging to other objects can be used to check object preservation. Association ID means merging to the corresponding object with this ID
        /// 合并到其他物体，可以用来检查物体保全，关联ID表示合并到这个ID对相应的物体
        /// </summary>
        MERGE,
        /// <summary>
        /// If the algorithm is unable to determine whether an object in the separation action is the same as the original object, a new object should be created first, and then renamed to the old object ID after the evidence is sufficient. The associated ID represents the new ID temporarily used
        /// 如果算法无法确定分离动作中某个物体是原先同一个物体，应该先创建一个新的物体，证据充分后再重命名为旧的物体ID，关联ID表示暂时使用的新的ID
        /// </summary>
        RENAME,
    }

    /// <summary>
    /// analyse object type
    /// 视频分析支持的对象类型
    /// </summary>
    public enum EM_ANALYSE_OBJECT_TYPE
    {
        /// <summary>
        /// unknown 
        /// 未知的
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// human
        /// 人
        /// </summary>
        HUMAN,
        /// <summary>
        /// vehicle
        /// 车辆
        /// </summary>
        VEHICLE,
        /// <summary>
        /// fire
        /// 火
        /// </summary>
        FIRE,
        /// <summary>
        /// smoke
        /// 烟雾
        /// </summary>
        SMOKE,
        /// <summary>
        /// plate
        /// 片状物体 
        /// </summary>
        PLATE,
        /// <summary>
        /// human face 
        /// 人脸
        /// </summary> 
        HUMANFACE,
        /// <summary>
        /// container
        /// 货柜
        /// </summary>
        CONTAINER,
        /// <summary>
        /// animal
        /// 动物
        /// </summary>
        ANIMAL,
        /// <summary>
        /// traffic light
        /// 红绿灯
        /// </summary>
        TRAFFICLIGHT,
        /// <summary>
        /// paster paper
        /// 贴纸 贴片
        /// </summary>
        PASTEPAPER,
        /// <summary>
        /// human head
        /// 人的头部
        /// </summary>
        HUMANHEAD,
        /// <summary>
        /// entity
        /// 普通物体
        /// </summary>
        ENTITY,
        /// <summary>
        /// package
        /// 包裹
        /// </summary>
        PACKAGE,
    }

    /// <summary>
    /// Object info of high toss
    /// 高空抛物物体信息
    /// </summary>
    public struct NET_HIGHTOSS_OBJECT_INFO
    {
        /// <summary>
        /// Object ID
        /// 物体ID
        /// <summary>
        public uint nObjectID;
        /// <summary>
        /// Object action
        /// 物体动作类型
        /// <summary>
        public EM_HIGHTOSS_ACTION_TYPE emObjAction;
        /// <summary>
        /// Bounding box
        /// 包围盒
        /// <summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// Confidence
        /// 置信度
        /// <summary>
        public uint nConfidence;
        /// <summary>
        /// Object type
        /// 物体类型
        /// <summary>
        public EM_ANALYSE_OBJECT_TYPE emObjectType;
        /// <summary>
        /// Object center
        /// 物体型心
        /// <summary>
        public NET_POINT stuCenter;
        /// <summary>
        /// Small pciture
        /// 抓拍小图
        /// <summary>
        public NET_EVENT_IMAGE_OFFSET_INFO stuImageInfo;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1516)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Corresponding to data block description of event type EVENT_IVS_HIGH_TOSS_DETECT(High toss detection)
    /// 事件类型EVENT_IVS_HIGH_TOSS_DETECT(高空抛物检测事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_HIGH_TOSS_DETECT_INFO
    {
        /// <summary>
        /// channel id
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// 0:pulse 1:start 2:stop
        /// 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// PTS,unit:ms
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// UTC
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// Rule ID, used to indicate which rule triggers
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// <summary>
        public uint nRuleID;
        /// <summary>
        /// Event class
        /// 智能事件所属大类
        /// <summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// Object info
        /// 物体信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_HIGHTOSS_OBJECT_INFO[] stuObjInfos;
        /// <summary>
        /// Object number
        /// 物体个数
        /// <summary>
        public uint nObjNum;
        /// <summary>
        /// The number of stuDetectRegion
        /// 检测区域顶点数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// The region of alarm occur, [0,8191]
        /// 检测区域,[0,8191]
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// frame sequence
        /// 视频分析帧序号
        /// <summary>
        public int nFrameSequence;
        /// <summary>
        /// Event group ID, the same groupid in the capture process of the same object
        /// 事件组ID, 同一物体抓拍过程内GroupID相同
        /// <summary>
        public int nGroupID;
        /// <summary>
        /// Capture sequence number, starting from 1
        /// 抓拍序号，从1开始
        /// <summary>
        public int nIndexInGroup;
        /// <summary>
        /// Capture count
        /// 抓拍张数
        /// <summary>
        public int nCountInGroup;
        /// <summary>
        /// image info
        /// 图片信息
        /// <summary>
        public NET_EVENT_IMAGE_OFFSET_INFO stuImageInfo;
        /// <summary>
        /// Whether to upload a large image. True means that the first image is a panoramic image, and the information is represented by imageinfo
        /// 是否上传大图, true表示第一个图片为全景大图，信息由ImageInfo来表示
        /// <summary>
        public bool bIsGlobalScene;
        /// <summary>
        /// Used to mark capture frames
        /// 用于标记抓拍帧
        /// <summary>
        public int nMark;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 384)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Corresponding to data block description of event type EVENT_IVS_CONGESTION_DETECTION
    /// 事件类型EVENT_IVS_CONGESTION_DETECTION(道路场景车辆拥堵报警事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_CONGESTION_DETECTION_INFO
    {
        /// <summary>
        /// channel id
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// 0:pulse 1:start 2:stop
        /// 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// PTS,unit:ms
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// UTC
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// file information
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// class type
        /// 智能事件所属大类
        /// <summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// event ID
        /// 事件ID
        /// <summary>
        public uint nEventID;
        /// <summary>
        /// rule id
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// <summary>
        public uint nRuleID;
        /// <summary>
        /// preset ID
        /// 事件触发的预置点号，从1开始
        /// <summary>
        public int nPresetID;
        /// <summary>
        /// preset name
        /// 事件触发的预置名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// The mask of alarm, bit0 whether has jam alarm; bit1 whether has queue alarm
        /// 报警业务掩码, 不同掩码位表示不同报警类型：bit0位表示是否有拥堵报警；bit1位表示是否有排队报警；
        /// <summary>
        public int nAlarmMask;
        /// <summary>
        /// The number of vehicles in jam
        /// 拥堵车辆数量
        /// <summary>
        public int nVehicleQuantity;
        /// <summary>
        /// The number of vehicles in queue
        /// 车辆排队长度
        /// <summary>
        public int nQueueLength;
        /// <summary>
        /// The number of stuDetectRegion
        /// stuDetectRegion中有效坐标点个数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// The region of alarm occur
        /// 发生报警的区域坐标
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Corresponding to data block description of event type SMART_KITCHEN_CLOTHES_DETECTION
    /// 事件类型SMART_KITCHEN_CLOTHES_DETECTION(智慧厨房穿着检测事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO
    {
        /// <summary>
        /// channel id
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:pulse 1:start 2:stop
        /// 1:开始 2:停止
        /// </summary>
        public int nAction;
        /// <summary>
        /// name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// PTS,unit:ms
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// UTC
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// rule id
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// class type
        /// 智能事件所属大类
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// class alias
        /// 智能事件所属大类别名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClassAlias;
        /// <summary>
        /// human image
        /// 人体图片信息
        /// </summary>
        public NET_HUMAN_IMAGE_INFO stuHumanImage;
        /// <summary>
        /// scene image
        /// 全景广角图片信息
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// scene image
        /// 人脸图片信息
        /// </summary>
        public NET_FACE_IMAGE_INFO stuFaceImage;
        /// <summary>
        /// objectID
        /// 目标ID
        /// </summary>
        public uint nObjectID;
        /// <summary>
        /// has mask
        /// 检测是否有戴口罩
        /// </summary>
        public EM_NONMOTOR_OBJECT_STATUS emHasMask;
        /// <summary>
        /// has chef hat
        /// 检测是否有戴厨师帽
        /// </summary>
        public EM_NONMOTOR_OBJECT_STATUS emHasChefHat;
        /// <summary>
        /// has chef clothes
        /// 检测是否有穿厨师服
        /// </summary>
        public EM_NONMOTOR_OBJECT_STATUS emHasChefClothes;
        /// <summary>
        /// chef clothes color
        /// 厨师服颜色(检测出不符合规定的厨师服颜色)
        /// </summary>
        public EM_OBJECT_COLOR_TYPE emChefClothesColor;
        /// <summary>
        /// image info
        /// 图片信息数组
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// image info number
        /// 图片信息个数 
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 区域内目标列表
    /// list of targets in the area
    /// </summary>
    public struct NET_ANIMAL_OBJECT_LIST_INFO
    {
        /// <summary>
        /// 目标包围盒,8192坐标系
        /// Target bounding box, 8192 coordinate system
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 目标中心点
        /// Target center point
        /// </summary>
        public NET_POINT stuPoint;
        /// <summary>
        /// 目标ID
        /// Target id
        /// </summary>
        public int nObjectID;
        /// <summary>
        /// 目标编号
        /// Target number
        /// </summary>
        public int nObjectNumber;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// Corresponding to data block description of event type NET_DEV_EVENT_ANIMAL_DETECTION_INFO
    /// 事件类型NET_DEV_EVENT_ANIMAL_DETECTION_INFO(动物检测事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_ANIMAL_DETECTION_INFO
    {
        /// <summary>
        /// channel id
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:pulse 1:start 2:stop
        /// 1:开始 2:停止
        /// </summary>
        public int nAction;
        /// <summary>
        /// name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// PTS,unit:ms
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// UTC
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// rule id
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// Sequence
        /// 帧序号
        /// </summary>
        public uint nSequence;
        /// <summary>
        /// scene image
        /// 全景广角图片信息
        /// </summary>
        public NET_ANIMAL_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// animal objects
        /// 动物统计信息
        /// </summary>
        public NET_ANIMAL_OBJECTS_STATISTICS stuObjectsStatistics;
        /// <summary>
        /// class type
        /// 智能事件所属大类
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// detection scene type
        /// 动物检测规则下的场景类型
        /// </summary>
        public EM_DETECTION_SCENE_TYPE emDetectionSceneType;
        /// <summary>
        /// image info
        /// 图片信息数组
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 区域内目标列表个数
        /// Object List Count
        /// </summary>
        public int nObjectListCount;
        /// <summary>
        /// 区域内目标列表
        /// Object List Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_ANIMAL_OBJECT_LIST_INFO[] stuObjectListInfo;
        /// <summary>
        /// 预留字节
        /// Reserve byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved;
    }

    // 事件类型 EVENT_IVS_QUEUEDETECTION (排队检测事件)对应的规则配置
    public struct NET_CFG_IVS_QUEUEDETECTION_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szRuleName;
        /// <summary>
        /// 规则使能
        /// </summary>
	    public byte bRuleEnable;
        /// <summary>
        /// 保留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// </summary>
	    public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_OBJECT_LIST_SIZE_ARRAY[] szObjectTypes;
        /// <summary>
        /// 云台预置点编号	0~65535
        /// </summary>
	    public int nPtzPresetId;
        /// <summary>
        /// 报警联动	
        /// </summary>
	    public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]
        public NET_WEEK_TSECT_ARRAY[] stuWeekTsectArray;
        /// <summary>
        /// 拌线入侵
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_CFG_POLYLINE[] stuDetectLine;
        /// <summary>
        /// 占线限值，队伍长度占线比例限值
        /// </summary>
        public int nOccupyLineMargin;
        /// <summary>
        /// 单位秒，排队检测报警时间，排队超过阈值的状态维持了"排队检测报警时间"以后报警
        /// </summary>
        public int nTriggerTime;
        /// <summary>
        /// 最大检测区域的个数
        /// </summary>
        public int nMaxDetectRegionNum;
        /// <summary>
        /// 检测区域
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 异常人数阈值
        /// </summary>
        public int nThreshold;
        /// <summary>
        /// 人数异常检测方式
        /// </summary>
        public int nDetectType;
        /// <summary>
        /// 计划ID
        /// </summary>
        public int nPlanID;
        /// <summary>
        /// 区域ID（一个预置点可以对应多个区域ID）
        /// </summary>
        public int nAreaID;
        /// <summary>
        /// 滞留检测报警使能，对应报警为 EVENT_IVS_STAYDETECTION
        /// </summary>
        public bool bStayDetectEnable;
        /// <summary>
        /// 最短滞留持续时间，单位秒[1, 1800], 开启滞留检测报警时需设置
        /// </summary>
        public int nStayMinDuration;
        /// <summary>
        /// 人数异常报警使能, 默认为TRUE。对应报警为 EVENT_IVS_MAN_NUM_DETECTION
        /// </summary>
        public bool bManNumAlarmEnable;
    }

    public struct NET_OBJECT_LIST_SIZE_ARRAY
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szObjectType;
    }

    public struct NET_WEEK_TSECT_ARRAY
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_MAN_NUM_DETECTION(立体视觉区域内人数统计事件)对应的规则配置
    /// </summary>
    public struct NET_CFG_IVS_MAN_NUM_DETECTION_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szRuleName;
        /// <summary>
        /// 规则使能
        /// </summary>
	    public bool bRuleEnable;
        /// <summary>
        /// 触发跟踪使能,仅对绊线，入侵规则有效
        /// </summary>
        public byte bTrackEnable;
        /// <summary>
        /// 保留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved1;
        /// <summary>
        /// 相应物体类型个数
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// </summary>
	    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_OBJECT_LIST_SIZE_ARRAY[] szObjectTypes;
        /// <summary>
        /// 报警联动
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// </summary>
	    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]
        public NET_WEEK_TSECT_ARRAY[] stuWeekTsectArray;
        /// <summary>
        /// 云台预置点编号	0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 检测区域顶点数
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区域
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 异常人数阈值
        /// </summary>
        public int nThreshold;
        /// <summary>
        /// 人数异常检测方式
        /// 0-小于等于阈值报警 1-大于等于阈值报警
        /// </summary>
        public int nDetectType;
        /// <summary>
        /// 灵敏度,[1-10]
        /// </summary>
        public int nSensitivity;
        /// <summary>
        /// 最大检测高度,单位cm
        /// </summary>
        public int nMaxHeight;
        /// <summary>
        /// 最小检测高度,单位cm
        /// </summary>
        public int nMinHeight;
        /// <summary>
        /// 是否开启滞留检测报警功能, 对应报警为StayDetection。
        /// </summary>
        public bool bStayDetectEnable;
        /// <summary>
        /// 最短滞留持续时间，单位秒[2, 65535], 开启滞留检测报警时需设置
        /// </summary>
        public int nStayMinDuration;
        /// <summary>
        /// 是否开启人数异常报警功能, 默认为TRUE。对应报警为ManNumDetection
        /// </summary>
        public bool bManNumAlarmEnable;
        /// <summary>
        /// 区域ID（一个预置点对应多个区域ID）
        /// </summary>
        public uint nAreaID;
        /// <summary>
        /// 计划ID，范围 1~MaxNumberStatPlan
        /// </summary>
        public uint nPlanId;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 504)]
        public byte[] bReserved;
    }

    /// <summary>
    ///  set point alarm
    /// 测温点报警设置
    /// </summary>
    public struct NET_CFG_RADIOMETRY_ALARMSETTING
    {
        /// <summary>
        /// alarm SN alarm no. unified SN
        /// 报警唯一编号 报警编号统一编码
        /// <summary>
        public int nId;
        /// <summary>
        /// enable this point alarm
        /// 是否开启该点报警
        /// <summary>
        public bool bEnable;
        /// <summary>
        ///  Monitoring alarm result type, see CFG_STATISTIC_TYPE, may take value:
        /// point  Monitoring, detailed value,
        /// line  Monitoring: max, min, average
        /// region  Monitoring: max, min, average, standard, medium, ISO
        /// 测温报警结果类型，见 CFG_STATISTIC_TYPE，可取值：
        /// 点测温：具体值，
        /// 线测温：最大, 最小, 平均
        /// 区域测温：最大, 最小, 平均, 标准, 中间, ISO
        /// <summary>
        public int nResultType;
        /// <summary>
        /// alarm condition, see CFG_COMPARE_RESULT
        /// 报警条件，见 CFG_COMPARE_RESULT
        /// <summary>
        public int nAlarmCondition;
        /// <summary>
        /// alarm threshold , floating point number
        /// 报警阈值温度 浮点数
        /// <summary>
        public float fThreshold;
        /// <summary>
        ///  error, flosting point number, such as 0.1 means +/- error is within 0.1
        /// 温度误差，浮点数，比如0.1 表示正负误差在0.1范围内
        /// <summary>
        public float fHysteresis;
        /// <summary>
        /// threshold  duration time, unit:s
        /// 阈值温度持续时间 单位：秒
        /// <summary>
        public int nDuration;
    }

    /// <summary>
    ///  Monitoring rule local parameter config
    /// 测温规则本地参数配置
    /// </summary>
    public struct NET_CFG_RADIOMETRY_LOCALPARAM
    {
        /// <summary>
        /// enable local config or not
        /// 是否启用本地配置
        /// <summary>
        public bool bEnable;
        /// <summary>
        /// target radiation coefficient, floating poing number
        /// 目标辐射系数 浮点数 0~1
        /// <summary>
        public float fObjectEmissivity;
        /// <summary>
        /// target distance
        /// 目标距离
        /// <summary>
        public int nObjectDistance;
        /// <summary>
        /// 目标反射温度（仅做兼容性保留。新对接使用fReflectedTemp字段）
        /// target reflection temperature（Only compatibility reservations are made. The new connection uses the fReflectedTemp field）
        /// </summary>
        public int nRefalectedTemp;
    }

    /// <summary>
    /// Regional  Monitoring subtypes
    /// 区域测温的子类型
    /// </summary>
    public enum EM_CFG_AREA_SUBTYPE
    {
        /// <summary>
        /// <summary>
        UNKNOWN,
        /// <summary>
        /// Rect
        /// 矩形
        /// <summary>
        RECT,
        /// <summary>
        /// Ellipse
        /// 椭圆
        /// <summary>
        ELLIPSE,
        /// <summary>
        /// Polygon
        /// 多边形
        /// <summary>
        POLYGON,
    }

    /// <summary>
    ///  Monitoring rule
    /// 测温规则
    /// </summary>
    public struct NET_CFG_RADIOMETRY_RULE
    {
        /// <summary>
        ///  Monitoring enable
        /// 测温使能
        /// <summary>
        public bool bEnable;
        /// <summary>
        /// preset point no.
        /// 预置点编号
        /// <summary>
        public int nPresetId;
        /// <summary>
        /// rule no.
        /// 规则编号
        /// <summary>
        public int nRuleId;
        /// <summary>
        /// custom name
        /// 自定义名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        ///  Monitoring mode type, see EM_RADIOMETRY_METERTYPE
        /// 测温模式的类型，见 EM_RADIOMETRY_METERTYPE
        /// <summary>
        public EM_RADIOMETRY_METERTYPE nMeterType;
        /// <summary>
        ///  point coordinate, use relative coordinate system, take average value as 0~8191
        /// 测温点坐标 使用相对坐标体系，取值均为0~8191
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_CFG_POLYGON[] stCoordinates;
        /// <summary>
        ///  Monitoring point coordinate actual number
        /// 测温点坐标实际个数
        /// <summary>
        public int nCoordinateCnt;
        /// <summary>
        ///  sampling period unit :s
        /// 温度采样周期 单位 : 秒
        /// <summary>
        public int nSamplePeriod;
        /// <summary>
        ///  Monitoring point alarm setup
        /// 测温点报警设置
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_CFG_RADIOMETRY_ALARMSETTING[] stAlarmSetting;
        /// <summary>
        /// actual number of  points alarm settings
        /// 测温点报警设置实际个数
        /// <summary>
        public int nAlarmSettingCnt;
        /// <summary>
        /// local parameter setup
        /// 本地参数配置
        /// <summary>
        public NET_CFG_RADIOMETRY_LOCALPARAM stLocalParameters;
        /// <summary>
        /// Regional  Monitoring subtypes
        /// 区域测温的子类型
        /// <summary>
        public EM_CFG_AREA_SUBTYPE emAreaSubType;
    }

    /// <summary>
    /// 测温点报警设置Ex
    /// Temperature set point alarm Ex
    /// </summary>
    public struct NET_CFG_RADIOMETRY_ALARMSETTING_EX
    {
        /// <summary>
        /// 预报警阈值
        /// Forecast alarm threshold
        /// </summary>
        public float fPreThreshold;
        /// <summary>
        /// 预报警温度持续时间；单位：秒
        /// Forecast duration of alarm temperature; Unit: second
        /// </summary>
        public uint nPreDuration;
        /// <summary>
        /// 预报警阈值使能
        /// Forecast alarm threshold enable
        /// </summary>
        public bool bUsefPreThreshold;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string byReserved;
    }

    /// <summary>
    /// 测温规则扩展
    /// Temperature Monitoring ruleEX
    /// </summary>
    public struct NET_A_CFG_RADIOMETRY_RULE_EX
    {
        /// <summary>
        /// 标定黑体温度，精度0.1，实际值扩大了10倍；比如显示是38度，实际该值获取的是380；如果需要设置39度，如该值需要传入390。
        /// Black Body Temp,The accuracy is 0.1, and the actual value is increased by 10 times; For example, the display is 38 degrees, and the actual value is 380; If you need to set 39 degrees, for example, this value needs to be passed in 390
        /// </summary>
        public int nBlackBodyTemp;
        /// <summary>
        /// 高精度目标反射温度使能
        /// High precision target reflection temperature enabled
        /// </summary>
        public bool bUsefReflectedTemp;
        /// <summary>
        /// 目标反射温度，使用此字段需赋值bUsefReflectedTemp为true
        /// Target reflectedtemp. Set bUsefReflectedTemp to true when using this field
        /// </summary>
        public float fReflectedTemp;
        /// <summary>
        /// 测温点报警设置Ex，数组有效个数为CFG_RADIOMETRY_RULE.nAlarmSettingCnt
        /// Temperature Monitoring point alarm setup Ex, The number of array valid is CFG_RADIOMETRY_RULE.nAlarmSettingCnt
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_CFG_RADIOMETRY_ALARMSETTING_EX[] stuAlarmSettingEx;
        /// <summary>
        /// 物体距离(小数部分)
        /// Decimal part of target distance
        /// </summary>
        public float fDistanceDecimalPart;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 240)]
        public string byReserved;
    }

    /// <summary>
    ///  rule configuration structure
    /// 测温规则配置结构
    /// </summary>
    public struct NET_CFG_RADIOMETRY_RULE_INFO
    {
        /// <summary>
        /// rule number
        /// 规则个数
        /// <summary>
        public int nCount;
        /// <summary>
        ///  Monitoring rule
        /// 测温规则
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public NET_CFG_RADIOMETRY_RULE[] stRule;
        /// <summary>
        /// 测温规则-扩展新增的字段
        /// Temperature Monitoring rule-EX
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public NET_A_CFG_RADIOMETRY_RULE_EX[] stRuleEx;
    }

    /// <summary>
    /// thermal imaging  Monitoring global config
    /// 热成像测温全局配置
    /// </summary>
    public struct NET_CFG_THERMOMETRY_INFO
    {
        /// <summary>
        /// relative humidity
        /// 相对湿度
        /// <summary>
        public int nRelativeHumidity;
        /// <summary>
        /// atmospheric 
        /// 大气温度
        /// <summary>
        public float fAtmosphericTemperature;
        /// <summary>
        /// object radiation coefficient
        /// 物体辐射系数
        /// <summary>
        public float fObjectEmissivity;
        /// <summary>
        /// object distance
        /// 物体距离
        /// <summary>
        public int nObjectDistance;
        /// <summary>
        /// object reflection 
        /// 物体反射温度
        /// <summary>
        public float fReflectedTemperature;
        /// <summary>
        ///  unit, see TEMPERATURE_UNIT
        /// 温度单位，见 TEMPERATURE_UNIT
        /// <summary>
        public int nTemperatureUnit;
        /// <summary>
        /// color batch enable
        /// 色标功能使能
        /// <summary>
        public bool bIsothermEnable;
        /// <summary>
        /// isotherm minimum  value
        /// 等温线下限温度值
        /// <summary>
        public int nMinLimitTemp;
        /// <summary>
        /// isotherm median  value
        /// 等温线中位温度值
        /// <summary>
        public int nMediumTemp;
        /// <summary>
        /// isotherm upper limit 
        /// 等温线上限温度值
        /// <summary>
        public int nMaxLimitTemp;
        /// <summary>
        /// isotherm Saturated 
        /// 等温线饱和温度值
        /// <summary>
        public int nSaturationTemp;
        /// <summary>
        /// Color  rectangular area (OSD position), use the relative coordinates system, the value are 0-8191
        /// 色温条矩形区域（OSD 位置），使用相对坐标体系，取值均为0-8191
        /// <summary>
        public NET_CFG_RECT stIsothermRect;
        /// <summary>
        /// whether to display the color batch (OSD overlay)
        /// 是否显示色标条（OSD 叠加）
        /// <summary>
        public bool bColorBarDisplay;
        /// <summary>
        /// whether enable hotspot detector tracking or not
        /// 是否开启热点探测追踪使能
        /// <summary>
        public bool bHotSpotFollow;
        /// <summary>
        /// color  switch
        /// 测温开关
        /// <summary>
        public bool bTemperEnable;
        /// <summary>
        /// high color  color
        /// 高色温标注颜色
        /// <summary>
        public NET_CFG_RGBA stHighCTMakerColor;
        /// <summary>
        /// low  mark color
        /// 低色温标注颜色
        /// <summary>
        public NET_CFG_RGBA stLowCTMakerColor;
        /// <summary>
        /// 是否开启冷点探测追踪使能
        /// Whether to enable cold spot detection tracking
        /// </summary>
        public bool bColdSpotFollow;
        /// <summary>
        /// 物体距离(小数部分)
        /// Decimal part of target distance
        /// </summary>
        public float fDistanceDecimalPart;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1016)]
        public string szResvered;
    }

    /// <summary>
    /// Period
    /// 时间段
    /// </summary>
    public struct NET_AV_CFG_TimeSection
    {
        /// <summary>
        /// <summary>
        public int nStructSize;
        /// <summary>
        /// Sub Mask
        /// 掩码
        /// <summary>
        public int nMask;
        /// <summary>
        /// Begin hour
        /// 开始时间
        /// <summary>
        public int nBeginHour;
        /// <summary>
        /// <summary>
        public int nBeginMinute;
        /// <summary>
        /// <summary>
        public int nBeginSecond;
        /// <summary>
        /// End hour
        /// 结束时间
        /// <summary>
        public int nEndHour;
        /// <summary>
        /// <summary>
        public int nEndMinute;
        /// <summary>
        /// <summary>
        public int nEndSecond;
    }

    /// <summary>
    /// PTZ activation type
    /// 云台联动类型
    /// </summary>
    public enum EM_AV_CFG_PtzLinkType
    {
        /// <summary>
        /// No activation
        /// 无联动
        /// <summary>
        None,
        /// <summary>
        /// Activate preset
        /// 联动预置点
        /// <summary>
        Preset,
        /// <summary>
        /// Activate tour
        /// 联动巡航
        /// <summary>
        Tour,
        /// <summary>
        /// Activate pattern
        /// 联动轨迹
        /// <summary>
        Pattern,
    }

    /// <summary>
    /// PTZ activation  info
    /// 联动云台信息
    /// </summary>
    public struct NET_AV_CFG_PtzLink
    {
        /// <summary>
        /// <summary>
        public int nStructSize;
        /// <summary>
        /// Activation type
        /// 联动类型
        /// <summary>
        public EM_AV_CFG_PtzLinkType emType;
        /// <summary>
        /// Activation parameter 1
        /// 联动参数1
        /// <summary>
        public int nParam1;
        /// <summary>
        /// Activation parameter 2
        /// 联动参数2
        /// <summary>
        public int nParam2;
        /// <summary>
        /// Activation parameter 3
        /// 联动参数3
        /// <summary>
        public int nParam3;
        /// <summary>
        /// Activation PTZ channel
        /// 所联动云台通道
        /// <summary>
        public int nChannelID;
    }

    /// <summary>
    /// Coordinates
    /// 坐标点
    /// </summary>
    public struct NET_AV_CFG_Point
    {
        /// <summary>
        /// <summary>
        public int nStructSize;
        /// <summary>
        /// <summary>
        public int nX;
        /// <summary>
        /// <summary>
        public int nY;
    }

    /// <summary>
    /// Width and height
    /// 宽高
    /// </summary>
    public struct NET_AV_CFG_Size
    {
        /// <summary>
        /// <summary>
        public int nStructSize;
        /// <summary>
        /// <summary>
        public uint nWidth;
        /// <summary>
        /// <summary>
        public uint nHeight;
    }

    /// <summary>
    /// color
    /// 颜色
    /// </summary>
    public struct NET_AV_CFG_Color
    {
        /// <summary>
        /// <summary>
        public int nStructSize;
        /// <summary>
        /// Red
        /// 红
        /// <summary>
        public int nRed;
        /// <summary>
        /// Green
        /// 绿
        /// <summary>
        public int nGreen;
        /// <summary>
        /// Blue
        /// 蓝
        /// <summary>
        public int nBlue;
        /// <summary>
        /// Transparent
        /// 透明
        /// <summary>
        public int nAlpha;
    }

    /// <summary>
    /// Event title contents
    /// 事件标题内容
    /// </summary>
    public struct NET_AV_CFG_EventTitle
    {
        /// <summary>
        /// <summary>
        public int nStructSize;
        /// <summary>
        /// Title text
        /// 标题文本
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szText;
        /// <summary>
        /// The title top corner coordinates. It adopts 0-8191 relative coordinates.
        /// 标题左上角坐标, 采用0-8191相对坐标系
        /// <summary>
        public NET_AV_CFG_Point stuPoint;
        /// <summary>
        /// The width and the height of the title. It adopts 0-8191 relative coordinates. if there is a 0 or two o, it means the self-adaptive width and height according to the font
        /// 标题的宽度和高度,采用0-8191相对坐标系，某项或者两项为0表示按照字体自适应宽高
        /// <summary>
        public NET_AV_CFG_Size stuSize;
        /// <summary>
        /// Foreground color
        /// 前景颜色
        /// <summary>
        public NET_AV_CFG_Color stuFrontColor;
        /// <summary>
        /// background color
        /// 背景颜色
        /// <summary>
        public NET_AV_CFG_Color stuBackColor;
    }

    /// <summary>
    /// Tour activation config
    /// 轮巡联动配置
    /// </summary>
    public struct NET_AV_CFG_TourLink
    {
        /// <summary>
        /// <summary>
        public int nStructSize;
        /// <summary>
        /// Tour enable
        /// 轮巡使能
        /// <summary>
        public bool bEnable;
        /// <summary>
        /// Tour split mode
        /// 轮巡时的分割模式
        /// <summary>
        public EM_CFG_SPLITMODE emSplitMode;
        /// <summary>
        /// Tour channel list
        /// 轮巡通道号列表
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public int[] nChannels;
        /// <summary>
        /// Tour channel amount
        /// 轮巡通道数量
        /// <summary>
        public int nChannelCount;
    }

    /// <summary>
    /// Alarm activation 
    /// 报警联动
    /// </summary>
    public struct NET_AV_CFG_EventHandler
    {
        /// <summary>
        /// <summary>
        public int nStructSize;
        /// <summary>
        /// Event respond schedule
        /// 事件响应时间表
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 42)]
        public NET_AV_CFG_TimeSection[] stuTimeSect;
        /// <summary>
        /// Record enable
        /// 录像使能
        /// <summary>
        public bool bRecordEnable;
        /// <summary>
        /// Record channel No. list
        /// 录像通道号列表
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public uint[] nRecordMask;
        /// <summary>
        /// Capacity set. It is to mark nRecordLatch is valid or not.
        /// 能力集, 标识nRecordLatch是否有效
        /// <summary>
        public bool abRecordLatch;
        /// <summary>
        /// Record delay time(10~300s)
        /// 录像延时时间（10~300秒）
        /// <summary>
        public int nRecordLatch;
        /// <summary>
        /// Alarm output enable
        /// 报警输出使能
        /// <summary>
        public bool bAlarmOutEn;
        /// <summary>
        /// Alarm output channel No. list
        /// 报警输出通道号列表
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public uint[] nAlarmOutMask;
        /// <summary>
        /// Capacity set. it is to makr nAlarmOutLatch is valid or not.
        /// 能力集, 标识nAlarmOutLatch是否有效
        /// <summary>
        public bool abAlarmOutLatch;
        /// <summary>
        /// Alarm output delay time. (10~300s)
        /// 报警输出延时时间（10~300秒）
        /// <summary>
        public int nAlarmOutLatch;
        /// <summary>
        /// Extension alarm output enable
        /// 扩展报警输出使能
        /// <summary>
        public bool bExAlarmOutEn;
        /// <summary>
        /// Extension alarm output channel list
        /// 扩展报警输出通道列表
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public uint[] nExAlarmOutMask;
        /// <summary>
        /// PTZ activation enable
        /// 云台联动使能
        /// <summary>
        public bool bPtzLinkEn;
        /// <summary>
        /// Valid activation amount
        /// 有效联动项数目
        /// <summary>
        public int nPtzLinkNum;
        /// <summary>
        /// PTZ activatiom item
        /// 云台联动项
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_AV_CFG_PtzLink[] stuPtzLink;
        /// <summary>
        /// Snap enable
        /// 快照使能
        /// <summary>
        public bool bSnapshotEn;
        /// <summary>
        /// Snap channel No. list
        /// 快照通道号列表
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public uint[] nSnapshotMask;
        /// <summary>
        /// Capacity set. It is to mark nSnapshotPeriod is valid or not.
        /// 能力集, 标识nSnapshotPeriod是否有效
        /// <summary>
        public bool abSnapshotPeriod;
        /// <summary>
        /// Frame interval. Snap at what frame. The snap amount in the specified period also has relationship with the snap frame rate. 0=There is no interval frame and snap continuesly.
        /// 帧间隔，每隔多少帧抓一张图片，一定时间内抓拍的张数还与抓图帧率有关。0表示不隔帧，连续抓拍。
        /// <summary>
        public int nSnapshotPeriod;
        /// <summary>
        /// Capacity set. nSnapshotTimes validity
        /// 能力集, nSnapshotTimes有效性
        /// <summary>
        public bool abSnapshotTimes;
        /// <summary>
        /// Snap times. When SnapshotEnable is true,system snaps continuesly when SnapshotTimes is 0 until the event ends.
        /// 连拍次数, 在SnapshotEnable为true的情况下，SnapshotTimes为0则表示持续抓拍，直到事件结束。
        /// <summary>
        public int nSnapshotTimes;
        /// <summary>
        /// Overlay picture title or not.
        /// 是否叠加图片标题
        /// <summary>
        public bool bSnapshotTitleEn;
        /// <summary>
        /// Valid picture title amount
        /// 有效图片标题数目
        /// <summary>
        public int nSnapTitleNum;
        /// <summary>
        /// Picture title contents
        /// 图片标题内容
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_AV_CFG_EventTitle[] stuSnapTitles;
        /// <summary>
        /// Local info prompt dialogue box
        /// 本地消息框提示
        /// <summary>
        public bool bTipEnable;
        /// <summary>
        /// Send email. Attach picture if there is any.
        /// 发送邮件，如果有图片，作为附件
        /// <summary>
        public bool bMailEnable;
        /// <summary>
        /// Upload to alarm server
        /// 上传到报警服务器
        /// <summary>
        public bool bMessageEnable;
        /// <summary>
        /// Buzzer
        /// 蜂鸣
        /// <summary>
        public bool bBeepEnable;
        /// <summary>
        /// Auido prompt
        /// 语音提示
        /// <summary>
        public bool bVoiceEnable;
        /// <summary>
        /// Capacity set. nDejitter validity.
        /// 能力集, nDejitter有效性
        /// <summary>
        public bool abDejitter;
        /// <summary>
        /// Signal anti-dither time.0~100s
        /// 信号去抖动时间，单位为秒,0~100
        /// <summary>
        public int nDejitter;
        /// <summary>
        /// Record log or not.
        /// 是否记录日志
        /// <summary>
        public bool bLogEnable;
        /// <summary>
        /// nDelay validity
        /// nDelay有效性
        /// <summary>
        public bool abDelay;
        /// <summary>
        /// Delay and then become valid when set. The unit is second.
        /// 设置时先延时再生效, 单位为秒
        /// <summary>
        public int nDelay;
        /// <summary>
        /// Overlay video title or not. It mainly refers to the main stream.
        /// 是否叠加视频标题，主要指主码流
        /// <summary>
        public bool bVideoTitleEn;
        /// <summary>
        /// Valid video title amount
        /// 有效视频标题数目
        /// <summary>
        public int nVideoTitleNum;
        /// <summary>
        /// Video title contents
        /// 视频标题内容
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_AV_CFG_EventTitle[] stuVideoTitles;
        /// <summary>
        /// MMS enable
        /// 发送彩信使能
        /// <summary>
        public bool bMMSEnable;
        /// <summary>
        /// Tour activation amount. It is the same as the video output.
        /// 轮巡联动数目，和视频输出一致
        /// <summary>
        public int nTourNum;
        /// <summary>
        /// Tour activation setup. Each video output has one setup.
        /// 轮巡联动配置, 每个视频输出对应一个配置
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_AV_CFG_TourLink[] stuTour;
        /// <summary>
        /// Key word amount
        /// 关键字数量
        /// <summary>
        public int nDBKeysNum;
        /// <summary>
        /// Key word
        /// 关键字
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2048)]
        public string szDBKeys;
        /// <summary>
        /// Capacity set. It is to mark byJpegSummary is valid or not.
        /// 能力集, 标识byJpegSummary是否有效
        /// <summary>
        public bool abJpegSummary;
        /// <summary>
        /// Abstract info overlay to the JPEG picture.
        /// 叠加到JPEG图片的摘要信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byJpegSummary;
    }

    /// <summary>
    ///  alarm config
    /// 温度报警配置
    /// </summary>
    public struct NET_AV_CFG_TemperatureAlarm
    {
        /// <summary>
        /// <summary>
        public int nStructSize;
        /// <summary>
        /// Alarm enable
        /// 报警使能
        /// <summary>
        public bool bEnable;
        /// <summary>
        /// Sensor name
        /// 传感器名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Min normal 
        /// 正常温度最小值
        /// <summary>
        public float fNormalTempMin;
        /// <summary>
        /// Max normal 
        /// 正常温度最大值
        /// <summary>
        public float fNormalTempMax;
        /// <summary>
        /// Alarm activation
        /// 报警联动
        /// <summary>
        public NET_AV_CFG_EventHandler stuEventHandler;
        /// <summary>
        /// 报警时间间隔。（单位：秒）
        /// Report Interval
        /// </summary>
        public uint nReportInterval;
    }

    /// <summary>
    /// hot alarm condition
    /// 热点报警条件
    /// </summary>
    public enum EM_HOT_ALARM_CONDITION
    {
        /// <summary>
        /// unknown
        /// 未知
        /// <summary>
        UNKNOWN,
        /// <summary>
        /// above max  threshold
        /// 高于阈值
        /// <summary>
        ABOVE_MAX,
        /// <summary>
        /// 
        /// 低于阈值，高于阈值(冷点报警条件也取此值时生效)
        /// <summary>
        ABOVE_MAX_AND_BELOW_MIN,
    }

    /// <summary>
    /// cold alarm condition
    /// 冷点报警条件
    /// </summary>
    public enum EM_COLD_ALARM_CONDITION
    {
        /// <summary>
        /// unknown
        /// 未知
        /// <summary>
        UNKNOWN,
        /// <summary>
        /// below min  threshold
        /// 低于阈值
        /// <summary>
        BELOW_MIN,
        /// <summary>
        /// 
        /// 低于阈值，高于阈值(热点报警条件也取此值时生效)
        /// <summary>
        ABOVE_MAX_AND_BELOW_MIN,
    }

    /// <summary>
    /// hot cold spot warning config NET_EM_CFG_HOT_COLD_SPOT_WARNING
    /// 热冷点报警配置 NET_EM_CFG_HOT_COLD_SPOT_WARNING
    /// </summary>
    public struct NET_HOT_COLD_SPOT_WARNING_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 热点报警使能
        /// hot alarm enable
        /// </summary>
        public bool bHotAlarmEnable;
        /// <summary>
        /// 冷点报警使能
        /// cold alarm enable
        /// </summary>
        public bool bColdAlarmEnable;
        /// <summary>
        /// 热点报警条件
        /// hot alarm condition
        /// </summary>
        public EM_HOT_ALARM_CONDITION emHotAlarmCondition;
        /// <summary>
        /// 冷点报警条件
        /// cold alarm condition
        /// </summary>
        public EM_COLD_ALARM_CONDITION emColdAlarmCondition;
        /// <summary>
        /// 字节对齐
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// 热点报警温度阈值
        /// hot alarm  threshold
        /// </summary>
        public double dHotThreshold;
        /// <summary>
        /// 冷点报警温度阈值
        /// cold alarm  threshold
        /// </summary>
        public double dColdThreshold;
        /// <summary>
        /// 热点联动使能
        /// hot spot link enable
        /// </summary>
        public bool bHotSpotLinkEnable;
        /// <summary>
        /// 冷点联动使能
        /// cold spot link enable
        /// </summary>
        public bool bColdSpotLinkEnable;
        /// <summary>
        /// 报警联动
        /// alarm activation
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE stuEventHandler;
    }

    /// <summary>
    /// Dynamic configuartion support video window
    /// 动检支持的视频窗口配置
    /// </summary>
    public struct NET_CFG_MOTION_WINDOW
    {
        /// <summary>
        /// The area threshold,[0, 100]
        /// 面积阀值，取值[0, 100]
        /// <summary>
        public int nThreshold;
        /// <summary>
        /// Sensitive,[0, 100]
        /// 灵敏度，取值[0, 100]
        /// <summary>
        public int nSensitive;
        /// <summary>
        /// Motion window area, coordinate range [0, 8192)
        /// 动检窗口区域, 坐标位置取值[0, 8192)
        /// <summary>
        public NET_CFG_RECT stuWindow;
    }

    public struct NET_CFG_DETECT_REGION
    {
        /// <summary>
        /// Zone ID
        /// 区域ID
        /// <summary>
        public int nRegionID;
        /// <summary>
        /// Motion window name
        /// 动态窗口名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRegionName;
        /// <summary>
        /// Area threshold, value[0, 100]
        /// 面积阀值，取值[0, 100]
        /// <summary>
        public int nThreshold;
        /// <summary>
        /// Sensitivity 1-6
        /// 灵敏度1～6
        /// <summary>
        public int nSenseLevel;
        /// <summary>
        /// Motion zone row
        /// 动态检测区域的行数
        /// <summary>
        public int nMotionRow;
        /// <summary>
        /// Motion detection zone column
        /// 动态检测区域的列数
        /// <summary>
        public int nMotionCol;
        /// <summary>
        /// Detection zone, max 32*32 blocks
        /// 检测区域，最多32*32块区域
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32 * 32)]
        public byte[] byRegion;
    }

    /// <summary>
    /// Motion detect alarm setup
    /// 动态检测报警配置
    /// </summary>
    public struct NET_CFG_MOTION_INFO
    {
        /// <summary>
        /// 报警通道号(0开始), nVersion=1时，此字段无效
        /// Alarm channel number (Begins with 0)
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 使能开关
        /// Enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 一代动检灵敏度1～6
        /// Sensitivity 1~6
        /// </summary>
        public int nSenseLevel;
        /// <summary>
        /// 一代动态检测区域的行数
        /// The rows of the motion detect zone
        /// </summary>
        public int nMotionRow;
        /// <summary>
        /// 一代动态检测区域的列数
        /// The columns of the motion detect zone
        /// </summary>
        public int nMotionCol;
        /// <summary>
        /// 一代检测区域，最多32*32块区域
        /// Motion detect,Max 32*32 zones
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32 * 32)]
        public byte[] byRegion;
        /// <summary>
        /// 报警联动
        /// Alarm activation
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段，时间段获取和设置以此成员为准，忽略 stuEventHandler 中的 stuTimeSection
        /// Event responding period,if you want set and get time, take this as the standard;ignore the "stuTimeSection" filed in stuEventHandler
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 6)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 0, 1, 由能力集确定, 只读, 等于1时以下字段有效
        /// 0, 1, be determined by the capability set set, read only,when equal 1,the following fields
        /// </summary>
        public int nVersion;
        /// <summary>
        /// 只读，决定nSenseLevel是否有效
        /// Read only,decide nSenseLevel efficiency or not
        /// </summary>
        public bool bSenseLevelEn;
        /// <summary>
        /// 只读，面积占用比使能， 决定nVolumeRatio是否有效
        /// Read only,the area impropriate enable, decide nVolumeRatio efficiency or not
        /// </summary>
        public bool bVRatioEn;
        /// <summary>
        /// 一代动检的面积占用比,1-100
        /// The area impropriate,1-100
        /// </summary>
        public int nVolumeRatio;
        /// <summary>
        /// 只读，灵敏度使能，决定nSubRatio值是否有效
        /// Read only, sensitivity enable,decide nVolumeRatio efficiency or not
        /// </summary>
        public bool bSRatioEn;
        /// <summary>
        /// 一代动检的残差阈值, 1-100
        /// Motion inspection of residual error threshold, 1-100
        /// </summary>
        public int nSubRatio;
        /// <summary>
        /// 此字段及以下两个字段已废弃
        /// Read only,0: nMotionRow, nMotionCol,byRegion availability, 1: the following field in the video window
        /// </summary>
        public bool abWindow;
        /// <summary>
        /// 视频窗口个数
        /// Number of video window
        /// </summary>
        public int nWindowCount;
        /// <summary>
        /// 视频窗口数组
        /// Video window
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_MOTION_WINDOW[] stuWindows;
        /// <summary>
        /// 只读，1：nRegionCount，stuRegion有效
        /// 0：nMotionRow，nMotionCol，byRegion有效
        /// Read only, 1:nRegionCount, stuRegion valid
        /// 0:nMotionRow, nMotionCol, byRegion valid
        /// </summary>
        public bool abDetectRegion;
        /// <summary>
        /// 三代动态检测区域个数
        /// 3rd generation motion detection zone quantity
        /// </summary>
        public int nRegionCount;
        /// <summary>
        /// 三代动态检测区域
        /// 3rd generation motion detection zone
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_DETECT_REGION[] stuRegion;
        /// <summary>
        /// 前端动态检测联动
        /// Remote alarm activation
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuRemoteEventHandler;
        /// <summary>
        /// 前端动态检测联动, 事件响应时间段，时间段获取和设置以此成员为准，忽略 stuRemoteEventHandler 中的 stuTimeSection
        /// Remote event responding period, if you want set and get time, take this as the standard; ignore the "stuTimeSection" filed in stuRemoteEventHandler
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 6)]
        public NET_CFG_TIME_SECTION[] stuRemoteTimeSection;
    }

    /// <summary>
    /// Sensitivity level of intelligent dynamic inspection
    /// 智能动检敏感等级
    /// </summary>
    public enum EM_SMART_MOTION_DETECT_SENSITIVITY_LEVEL
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// <summary>
        UNKNOWN,
        /// <summary>
        /// Low
        /// 低
        /// <summary>
        LOW,
        /// <summary>
        /// Middle
        /// 中
        /// <summary>
        MIDDLE,
        /// <summary>
        /// High
        /// 高
        /// <summary>
        HIGH,
    }

    /// <summary>
    /// Intelligent dynamic detection object
    /// 智能动态检测对象
    /// </summary>
    public struct NET_SMART_MOTION_DETECT_OBJECT
    {
        /// <summary>
        /// Dynamic detection human enable
        /// 动态检测人使能
        /// <summary>
        public bool bHuman;
        /// <summary>
        /// Dynamic detection vehicle enable
        /// 动态检测车使能
        /// <summary>
        public bool bVehicle;
        /// <summary>
        /// Dynamic detection animal enable
        /// </summary>
        public bool bAnimal;
        /// <summary>
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016)]
        public byte[] byReserved;
    }

	/// <summary>
    /// Intelligent dynamic detection region info
    /// </summary>
    public struct NET_SMART_MOTION_DETECT_REGION
    {
        /// <summary>
        /// / Region name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / Intelligent dynamic detection object
        /// </summary>
        public NET_SMART_MOTION_DETECT_OBJECT stuObjectType;
        /// <summary>
        /// / Region point
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT_EX[] stuRegion;
        /// <summary>
        /// / Region Num
        /// </summary>
        public int nRegionNum;
        /// <summary>
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }
	
    /// <summary>
    /// Intelligent dynamic detection configuration
    /// 智能动态检测配置
    /// </summary>
    public struct NET_CFG_SMART_MOTION_DETECT
    {
        /// <summary>
        /// Struct size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// Dynamic inspection enable, on: TRUE, off: FALSE
        /// 动检使能，开：TRUE 关：FALSE
        /// <summary>
        public bool bEnable;
        /// <summary>
        /// Motion detection sensitivity level
        /// 动检敏感级别
        /// <summary>
        public EM_SMART_MOTION_DETECT_SENSITIVITY_LEVEL emMotionDetectSensitivityLevel;
        /// <summary>
        /// Intelligent dynamic detection configuration
        /// 智能动态检测对象
        /// <summary>
        public NET_SMART_MOTION_DETECT_OBJECT stuMotionDetectObject;
        /// <summary>
        /// 智能跟踪是否开启
        /// Is intelligent tracking enabled
        /// </summary>
        public bool bSmartTrack;
		/// <summary>
        /// Intelligent dynamic detection Mode
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szMode;
        /// <summary>
        /// Feature enable
        /// </summary>
        public bool bFeatureEnable;
        /// <summary>
        /// Intelligent dynamic detection region num
        /// </summary>
        public int nDetectRegionsNum;
        /// <summary>
        /// Intelligent dynamic detection region info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_SMART_MOTION_DETECT_REGION[] stuDetectRegions;
        /// <summary>
        /// Tracking zoom enable
        /// </summary>
        public bool bTrackingZoomEnable;
    }

    /// <summary>
    /// Enumeration Type Sensor Sensing Way
    /// 传感器感应方式枚举类型
    /// </summary>
    public enum EM_SENSE_METHOD_EX
    {
        /// <summary>
        /// Unknown type
        /// 未知类型
        /// <summary>
        UNKNOWN = -1,
        /// <summary>
        /// Magnetic Door
        /// 门磁
        /// <summary>
        DOOR = 0,
        /// <summary>
        /// Passive Infrared
        /// 被动红外
        /// <summary>
        PASSIVEINFRA,
        /// <summary>
        /// Gas Sense
        /// 气感
        /// <summary>
        GAS,
        /// <summary>
        /// Smoking Sense
        /// 烟感
        /// <summary>
        SMOKING,
        /// <summary>
        /// Water Sense
        /// 水感
        /// <summary>
        WATER,
        /// <summary>
        /// Active Infrared
        /// 主动红外
        /// <summary>
        ACTIVEFRA,
        /// <summary>
        /// Glass Broken
        /// 玻璃破碎
        /// <summary>
        GLASS,
        /// <summary>
        /// EMERGENCY SWITCH
        /// 紧急开关
        /// <summary>
        EMERGENCYSWITCH,
        /// <summary>
        /// Shock
        /// 震动
        /// <summary>
        SHOCK,
        /// <summary>
        /// Double Method(Infrared+Microwave)
        /// 双鉴(红外+微波)
        /// <summary>
        DOUBLEMETHOD,
        /// <summary>
        /// Three Method
        /// 三技术
        /// <summary>
        THREEMETHOD,
        /// <summary>
        /// 
        /// 温度
        /// <summary>
        TEMP,
        /// <summary>
        /// Humidity
        /// 湿度
        /// <summary>
        HUMIDITY,
        /// <summary>
        /// Wind
        /// 风速
        /// <summary>
        WIND,
        /// <summary>
        /// Call Button
        /// 呼叫按钮
        /// <summary>
        CALLBUTTON,
        /// <summary>
        /// Gas Pressure
        /// 气体压力
        /// <summary>
        GASPRESSURE,
        /// <summary>
        /// Gas Concentration
        /// 燃气浓度
        /// <summary>
        GASCONCENTRATION,
        /// <summary>
        /// Gas Flow
        /// 气体流量
        /// <summary>
        GASFLOW,
        /// <summary>
        /// Oil
        /// 油量检测
        /// <summary>
        OIL,
        /// <summary>
        /// Mileage
        /// 里程数检测
        /// <summary>
        MILEAGE,
        /// <summary>
        /// Other
        /// 其他
        /// <summary>
        OTHER,
        /// <summary>
        /// Determination of CO2
        /// 二氧化碳浓度检测
        /// <summary>
        CO2,
        /// <summary>
        /// Noise detection
        /// 噪音检测
        /// <summary>
        SOUND,
        /// <summary>
        /// PM2.5 detection
        /// PM2.5检测
        /// <summary>
        PM25,
        /// <summary>
        /// Determination of SF6
        /// 六氟化硫浓度检测
        /// <summary>
        SF6,
        /// <summary>
        /// O3
        /// 臭氧
        /// <summary>
        O3,
        /// <summary>
        /// ambient light detection
        /// 环境光照检测
        /// <summary>
        AMBIENTLIGHT,
        /// <summary>
        /// infra red
        /// 红外报警
        /// <summary>
        INFRARED,
        /// <summary>
        /// temp 1500
        /// 1500温度传感器
        /// <summary>
        TEMP1500,
        /// <summary>
        /// temp DS18B20
        /// DS18B20温度传感器
        /// <summary>
        TEMPDS18B20,
        /// <summary>
        /// humidity 1500
        /// 1500湿度传感器
        /// <summary>
        HUMIDITY1500,
        /// <summary>
        /// urgency button
        /// 紧急按钮
        /// <summary>
        URGENCYBUTTON,
        /// <summary>
        /// steal
        /// 盗窃
        /// <summary>
        STEAL,
        /// <summary>
        /// perimeter
        /// 周界
        /// <summary>
        PERIMETER,
        /// <summary>
        /// prevent remove
        /// 防拆
        /// <summary>
        PREVENTREMOVE,
        /// <summary>
        /// doorbell
        /// 门铃
        /// <summary>
        DOORBELL,
        /// <summary>
        /// alter volt
        /// 交流电压传感器
        /// <summary>
        ALTERVOLT,
        /// <summary>
        /// direct volt
        /// 直流电压传感器
        /// <summary>
        DIRECTVOLT,
        /// <summary>
        /// alter cur
        /// 交流电流传感器
        /// <summary>
        ALTERCUR,
        /// <summary>
        /// direct cur
        /// 直流电流传感器
        /// <summary>
        DIRECTCUR,
        /// <summary>
        /// RSU general
        /// 高新兴通用模拟量
        /// <summary>
        RSUGENERAL,
        /// <summary>
        /// RSU door
        /// 高新兴门禁感应
        /// <summary>
        RSUDOOR,
        /// <summary>
        /// RSU power off
        /// 高新兴断电感应
        /// <summary>
        RSUPOWEROFF,
        /// <summary>
        /// curtain sensor
        /// 幕帘传感器
        /// <summary>
        CURTAINSENSOR,
        /// <summary>
        /// mobile sensor
        /// 移动传感器
        /// <summary>
        MOBILESENSOR,
        /// <summary>
        /// fire alarm
        /// 火警
        /// <summary>
        FIREALARM,
        /// <summary>
        /// lock tongue
        /// 锁舌
        /// <summary>
        LOCKTONGUE,
        /// <summary>
        /// The Total Number of Enumerated Types,notice:can not be used as a constant
        /// 枚举类型总数,注意：这个值不能作为常量使用
        /// <summary>
        NUM,
    }

    /// <summary>
    /// Alarm control method
    /// 报警使能控制方式枚举类型
    /// </summary>
    public enum EM_CTRL_ENABLE
    {
        /// <summary>
        /// No enable
        /// 不控制使能
        /// <summary>
        NORMAL = 0,
        /// <summary>
        /// Always enable
        /// 总是使能
        /// <summary>
        ALWAYS_EN,
        /// <summary>
        /// Bypass
        /// 旁路
        /// <summary>
        ONCE_DIS,
        /// <summary>
        /// Disappear
        /// 移除
        /// <summary>
        ALWAYS_DIS,
    }

    /// <summary>
    /// DefenceArea Type
    /// 防区类型
    /// </summary>
    public enum EM_CFG_DEFENCEAREATYPE
    {
        /// <summary>
        /// unknown type
        /// 未知类型
        /// <summary>
        Unknown = 0,
        /// <summary>
        /// instant zone
        /// 即时防区
        /// <summary>
        InTime,
        /// <summary>
        /// delay zone
        /// 延时防区
        /// <summary>
        Delay,
        /// <summary>
        /// 24-hour zone
        /// 24小时防区
        /// <summary>
        FullDay,
        /// <summary>
        /// follow zone
        /// 跟随防区
        /// <summary>
        Follow,
        /// <summary>
        /// medical zone
        /// 医疗紧急防区
        /// <summary>
        Medical,
        /// <summary>
        /// panic zone
        /// 恐慌防区
        /// <summary>
        Panic,
        /// <summary>
        /// Fire zone
        /// 火警防区
        /// <summary>
        Fire,
        /// <summary>
        /// 24-hour sound zone
        /// 24小时有声防区
        /// <summary>
        FullDaySound,
        /// <summary>
        /// 24-hour mute zone
        /// 24小时无声防区
        /// <summary>
        FullDaySlient,
        /// <summary>
        /// enter zone 1
        /// 出入防区1
        /// <summary>
        Entrance1,
        /// <summary>
        /// enter zone 2
        /// 出入防区2
        /// <summary>
        Entrance2,
        /// <summary>
        /// internal zone
        /// 内部防区
        /// <summary>
        InSide,
        /// <summary>
        /// external zone
        /// 外部防区
        /// <summary>
        OutSide,
        /// <summary>
        /// people detect zone
        /// 人员检测防区
        /// <summary>
        PeopleDetect,
        /// <summary>
        /// Robbery zone
        /// 匪警防区
        /// <summary>
        Robbery,
    }

    /// <summary>
    /// the volume config of audio input
    /// 音频输入音量配置
    /// </summary>
    public struct NET_AUDIOIN_VOLUME_INFO
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// the volume
        /// 音频输入音量
        /// <summary>
        public int nVolume;
    }

    /// <summary>
    /// the volume config of audio output
    /// 音频输出音量配置
    /// </summary>
    public struct NET_AUDIOOUT_VOLUME_INFO
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// the volume
        /// 音频输出音量
        /// <summary>
        public int nVolume;
    }

    // 热成像测温点温度异常报警配置
    public struct NET_CFG_HEAT_IMAGING_TEMPER_INFO
    {
        public uint dwSize;
        public bool bEnable;                // 使能
        public NET_ALARM_MSG_HANDLE stuEventHandler;       // 报警联动
    }

    // 自定义结构体，标示楼层号字符串
    public struct NET_Floor_Str
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szFloorStrNum;                          // 楼层号
    }

    // CLIENT_GetFloorInfo入参
    public struct NET_IN_GET_FLOOR_INFO
    {
        public uint dwSize;          // 结构体大小
        public int nFloorNum;                      // 楼层号个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_Floor_Str[] szFloors;           // 楼层号
    }

    // 楼层号信息
    public struct NET_FLOOR_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szFloor;                     // 楼层号
        public uint nControlModuleToken;           // 楼层号对应梯控模块地址
        public uint nControlModulePort;            // 楼层号对应梯控模块端口
        public uint nCallLiftModuleToken;          // 楼层号对应呼梯模块令牌
        public uint nCallLiftModulePort;           // 楼层号对应呼梯模块端口
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;   // 保留字节
    }

    // CLIENT_GetFloorInfo出参
    public struct NET_OUT_GET_FLOOR_INFO
    {
        public uint dwSize;                         // 结构体大小
        public int nFloorInfoNum;                   // 楼层号信息个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_FLOOR_INFO[] stuFloorInfo;       // 楼层号信息
    }

    /// <summary>
    /// PTZ conditions for visual structure
    /// 云台可视域状态结构
    /// </summary>
    public struct NET_OUT_PTZ_VIEW_RANGE_STATUS
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// Visual range, the unit: m
        /// 可视距离, 单位:米
        /// <summary>
        public double dbDistance;
        /// <summary>
        /// Horizontal viewing angles, 0~1800, unit: 1/10 degrees
        /// 水平可视角度, 0~1800, 单位:十分之一度
        /// <summary>
        public int nAngelH;
        /// <summary>
        /// Horizontal azimuth Angle, 0 ~ 3600, unit: 1/10 degrees
        /// 水平方位角度, 0~3600, 单位:十分之一度
        /// <summary>
        public int nAzimuthH;
        /// <summary>
        /// Horizontal inclination angle, -900~900, unit: 1/10 degree
        /// 水平倾斜角度, -900~900, 单位:十分之一度
        /// <summary>
        public int nInclinationH;
        /// <summary>
        /// Vertical viewing angles, 0~1800, unit: 1/10 degrees
        /// 垂直可视角度, 0~1800, 单位:十分之一度
        /// <summary>
        public int nAngelV;
        /// <summary>
        /// Vertical azimuth Angle, 0 ~ 3600, unit: 1/10 degrees
        /// 垂直方位角度, 0~3600, 单位:十分之一度
        /// <summary>
        public int nAzimuthV;
        /// <summary>
        /// / 水平角度，扩大100倍值，[0-36000]
        /// / Horizontal angle, increase by 100 times the value,[0-36000]
        /// </summary>
        public int nPan;
        /// <summary>
        /// / 垂直角度，扩大100倍值，[-18000-18000]
        /// / Vertical angle, increase by 100 times the value,[-18000-18000]
        /// </summary>
        public int nTilt;
        /// <summary>
        /// / 显示放大倍数，扩大100倍值，[0-MaxZoom*100]
        /// / Display magnification, increase the value by 100 times,[0-MaxZoom*100]
        /// </summary>
        public int nZoom;
    }

    /// <summary>
    /// image offset info
    /// 事件图片偏移信息
    /// </summary>
    public struct NET_EVENT_IMAGE_OFFSET_INFO
    {
        /// <summary>
        /// offset
        /// 偏移
        /// <summary>
        public uint nOffSet;
        /// <summary>
        /// image length,unit:byte
        /// 图片大小,单位字节
        /// <summary>
        public uint nLength;
        /// <summary>
        /// image width
        /// 图片宽度
        /// <summary>
        public uint nWidth;
        /// <summary>
        /// image height
        /// 图片高度
        /// <summary>
        public uint nHeight;
        /// <summary>
        /// image path
        /// 图片路径
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szPath;
        /// <summary>
        /// reserved
        /// 预留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Object info
    /// 检测目标信息
    /// </summary>
    public struct NET_OBJECT_INFO
    {
        /// <summary>
        /// Target bounding box (8192 coordinate system)
        /// 目标包围盒(8192坐标系)
        /// <summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] bReserved;
    }

    /// <summary>
    /// Abnormal object type
    /// 目标类型
    /// </summary>
    public enum EM_ABNORMAL_OBJECT_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// <summary>
        UNKNOWN,
        /// <summary>
        /// Pig
        /// 猪
        /// <summary>
        PIG,
    }

    /// <summary>
    /// Object abnormal type
    /// 异常行为
    /// </summary>
    public enum EM_OBJECT_ABNORMAL_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// <summary>
        UNKNOWN,
        /// <summary>
        /// Retrograde
        /// 逆向运动
        /// <summary>
        RETROGRADE,
    }

    /// <summary>
    /// Objcet anomaly detection event Corresponding to data block description of event type EVENT_IVS_ANYTHING_DETECT
    /// 事件类型 EVENT_IVS_OBJECT_ABNORMAL 目标异常检测事件 对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_OBJECT_ABNORMAL_INFO
    {
        /// <summary>
        /// Channel
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// Event action 0:pulse 1:start 2:stop
        /// 0-脉冲 1-开始 2-结束
        /// <summary>
        public int nAction;
        /// <summary>
        /// Event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Time stamp(unit:ms)
        /// 时间戳(单位:毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// Event occur time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public uint nEventID;
        /// <summary>
        /// Panoramic information
        /// 全景大图信息
        /// <summary>
        public NET_EVENT_IMAGE_OFFSET_INFO stuSceneImage;
        /// <summary>
        /// Event class type
        /// 智能事件所属大类
        /// <summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// Area ID(a preset point can correspond to multiple area IDs)
        /// 区域ID(一个预置点可以对应多个区域ID)
        /// <summary>
        public ushort nAreaID;
        /// <summary>
        /// Preset point number, starting from 1
        /// 预置点编号,从1开始
        /// <summary>
        public ushort nPresetID;
        /// <summary>
        /// Object info
        /// 目标信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_OBJECT_INFO[] stuObjectInfo;
        /// <summary>
        /// Object info num
        /// 目标信息个数
        /// <summary>
        public int nObjectInfoNum;
        /// <summary>
        /// Abnormal object
        /// 目标类型
        /// <summary>
        public EM_ABNORMAL_OBJECT_TYPE emObjectType;
        /// <summary>
        /// Abnormal type
        /// 异常行为
        /// <summary>
        public EM_OBJECT_ABNORMAL_TYPE emAbnormalType;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] bReserved;
    }

    /// <summary>
    /// Catrgory type of breed object
    /// 智慧养殖检测目标子类型
    /// </summary>
    public enum EM_BREED_DETECT_CATEGORY_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// <summary>
        UNKNOWN,
        /// <summary>
        /// Pig
        /// 猪
        /// <summary>
        PIG,
    }

    /// <summary>
    /// Animal object info
    /// 智慧养殖对象信息
    /// </summary>
    public struct NET_VAOBJECT_ANIMAL_INFO
    {
        /// <summary>
        /// objectID，Each ID represents a unique object
        /// 物体ID，每个ID表示一个唯一的物体
        /// <summary>
        public uint nObjectID;
        /// <summary>
        /// Catrgory type of breed object
        /// 智慧养殖检测目标子类型
        /// <summary>
        public EM_BREED_DETECT_CATEGORY_TYPE emCategoryType;
        /// <summary>
        /// Bounding box
        /// 包围盒
        /// <summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// Object weight, unit g
        /// 对象重量, 单位: g
        /// <summary>
        public uint nObjectWeight;
        /// <summary>
        /// Image data of object
        /// 物体截图
        /// <summary>
        public NET_SCENE_IMAGE_INFO_EX stuImageData;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Corresponding to data block description of event type EVENT_IVS_BREED_DETECTION(breed detection)
    /// 事件类型EVENT_IVS_BREED_DETECTION(智慧养殖检测事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_BREED_DETECTION_INFO
    {
        /// <summary>
        /// Channel ID
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// 0:脉冲 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// Event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Timestamp (in milliseconds)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// Time for the event occurred
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// Rule ID，used to indicate which rule triggers
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// <summary>
        public uint nRuleID;
        /// <summary>
        /// Sequence
        /// 帧序号
        /// <summary>
        public uint nSequence;
        /// <summary>
        /// Event class
        /// 智能事件所属大类
        /// <summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// Scene image
        /// 全景广角图
        /// <summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// Byte alignment
        /// 字节对齐
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;
        /// <summary>
        /// Object count
        /// 检测到的物体个数
        /// <summary>
        public uint nObjectNum;
        /// <summary>
        /// Object info
        /// 检测到的物体信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_VAOBJECT_ANIMAL_INFO[] stuObjects;
        /// <summary>
        /// Column  (unit: ℃)
        /// 栏位温度（单位：℃）
        /// <summary>
        public double dBreedStallTemp;
        /// <summary>
        /// Field number
        /// 栏位号
        /// <summary>
        public uint nBreedStallNum;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 500)]
        public byte[] byReserved;
    }

    // CLIENT_AttachCustomSnapInfo 接口输入参数
    public struct NET_IN_ATTACH_CUSTOM_SNAP_INFO
    {
        public uint dwSize;                                             // 结构体大小
        public int nChannelID;                                          // 订阅通道号
        public fAttachCustomSnapInfo cbCustomSnapInfo;                  // 自定义定时抓图订阅回调函数
        public IntPtr dwUser;                                           // 用户数据
    }

    // CLIENT_AttachCustomSnapInfo 接口输出参数
    public struct NET_OUT_ATTACH_CUSTOM_SNAP_INFO
    {
        public uint dwSize;                         // 结构体大小
    }

    public enum EM_CUSTOM_SNAP_TYPE
    {
        UNKNOWN,            // 未知
        PIG_TEMPERATURE,    // 猪体温检测, 对应结构体 NET_PIG_TEMPERATURE_INFO
    }

    // 图片文件订阅回调信息
    public struct NET_CB_CUSTOM_SNAP_INFO
    {
        public uint nChannelID;         // 通道号
        public NET_TIME stuSnapTime;        // 抓图时间
        public EM_CUSTOM_SNAP_TYPE emCustomSnapType;   // 自定义抓图类型
        public IntPtr pDetailInfo;        // 图片包含数据, 根据emCustomSnapType值来确定具体的结构体类型
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserve;    // 保留字节
    }

    // 猪体温信息
    public struct NET_PIG_TEMPERATURE_DATA
    {
        public NET_RECT stuRect;                // 物体位置 
        public uint nID;                    // 物体编号
        public float fMaxTemperature;        // 最大温
        public float fMinTemperature;        // 最小温
        public float fAverageTemperature;    // 平均温
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserve;    // 保留字节
    }

    // 猪体温信息数组
    public struct NET_PIG_TEMPERATURE_INFO
    {
        public uint nPigNum;                                // 猪的数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
        public NET_PIG_TEMPERATURE_DATA[] stuPigInfo;       // 猪的信息
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserve;                            // 保留字节
    }

    /// <summary>
    /// Waring zone intrusion direction 
    /// 区域入侵入侵方向
    /// </summary>
    public enum NET_CROSSREGION_DIRECTION_INFO
    {
        /// <summary>
        /// <summary>
        UNKNOW = 0,
        /// <summary>
        /// Entry
        /// 进入
        /// <summary>
        ENTER,
        /// <summary>
        /// Exit
        /// 离开
        /// <summary>
        LEAVE,
        /// <summary>
        /// Appear
        /// 出现
        /// <summary>
        APPEAR,
        /// <summary>
        /// Disappear
        /// 消失
        /// <summary>
        DISAPPEAR,
    }

    /// <summary>
    /// Warning zone detected operation type 
    /// 区域检测事件动作
    /// </summary>
    public enum NET_CROSSREGION_ACTION_INFO
    {
        /// <summary>
        /// <summary>
        UNKNOW = 0,
        /// <summary>
        /// In the area
        /// 在区域内
        /// <summary>
        INSIDE,
        /// <summary>
        /// Cross area
        /// 穿越区域
        /// <summary>
        CROSS,
        /// <summary>
        /// Appear
        /// 出现
        /// <summary>
        APPEAR,
        /// <summary>
        /// Disappear
        /// 消失
        /// <summary>
        DISAPPEAR,
    }

    /// <summary>
    /// Warning zone event( Corresponding to event DH_EVENT_CROSSREGION_DETECTION)
    /// 区域入侵事件(对应事件 DH_EVENT_CROSSREGION_DETECTION)
    /// </summary>
    public struct NET_ALARM_EVENT_CROSSREGION_INFO
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// Channel No.
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// Time stamp (Unit is ms)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// Event occurrence time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// Event operation. 0=pulse event.1=continues event begin. 2=continuous event stop
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// <summary>
        public int nEventAction;
        /// <summary>
        /// Warning zone intrusion direction
        /// 区域入侵入侵方向
        /// <summary>
        public NET_CROSSREGION_DIRECTION_INFO emDirection;
        /// <summary>
        /// Detected types in the warning zone
        /// 区域入侵检测动作类型
        /// <summary>
        public NET_CROSSREGION_ACTION_INFO emActionType;
        /// <summary>
        /// Rule triggered amount
        /// 规则被触发生次数
        /// <summary>
        public int nOccurrenceCount;
        /// <summary>
        /// Event type
        /// 事件级别,GB30147需求项
        /// <summary>
        public int nLevel;
        /// <summary>
        /// name
        /// 名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Target information detection enablement
        /// 是否检测到物体信息
        /// <summary>
        public bool bIsObjectInfo;
        /// <summary>
        /// Object information detected
        /// 检测到的物体信息
        /// <summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// Actually returns multiple detected object information
        /// 实际返回多个检测到的物体信息
        /// <summary>
        public int nRetObjectNum;
        /// <summary>
        /// Multiple detected object information
        /// 多个检测到的物体信息
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 事件触发源的Mac地址
        /// Trigger type - 1: unknown 0: vehicle detector 1: radar 2: video
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szMac;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// Abandoned object event (Corresponding to event DH_EVENT_LEFT_DETECTION)
    /// 物品遗留事件(对应事件 DH_EVENT_LEFT_DETECTION)
    /// </summary>
    public struct NET_ALARM_EVENT_LEFT_INFO
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// Channel No.
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// Time stamp (Unit is ms)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// Event occurrence time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// Event operation. 0=pulse event.1=continues event begin. 2=continuous event stop
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// <summary>
        public int nEventAction;
        /// <summary>
        /// Rule triggered amount
        /// 规则被触发生次数
        /// <summary>
        public int nOccurrenceCount;
        /// <summary>
        /// Event type
        /// 事件级别,GB30147需求项
        /// <summary>
        public int nLevel;
        /// <summary>
        /// Event triggered preset period, starting from 1 (no unknown)
        /// 事件触发的预置点号，从1开始（没有表示未知）
        /// <summary>
        public short nPreserID;
        /// <summary>
        /// Preset name for event triggered
        /// 事件触发的预置名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// 目标抓拍角度范围
    /// Target capture angle range
    /// </summary>
    public struct NET_ANGEL_RANGE
    {
        /// <summary>
        /// 角度最小值
        /// Minimum angle
        /// </summary>
        public int nMin;
        /// <summary>
        /// 角度最大值
        /// Maximum angle
        /// </summary>
        public int nMax;
    }

    /// <summary>
    /// 目标信息
    /// target infomation
    /// </summary>
    public struct NET_EVENT_WHOLE_FACE_INFO
    {
        /// <summary>
        /// 目标在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角
        /// 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效
        /// The angle information of the target in the captured image, nPitch: the pitch angle of the head up and down, the yaw angle of the nYaw left and right head, and the roll angle of the nRoll head in the plane left and right
        /// Angle value range [-90,90], all three angle values are 999, indicating that the angle information is invalid
        /// </summary>
        public NET_EULER_ANGLE stuFaceCaptureAngle;
        /// <summary>
        /// 目标抓拍角度范围(角度最小值,最大值), 三个角度依次分别是Pitch抬头低头,仰俯角;yaw是左右转头,偏航角;Roll是头在平面内左偏右偏，翻滚角
        /// target capture angle range (minimum angle, maximum angle), the three angles are Pitch up and down, pitch and pitch angles; yaw is left and right turn head, yaw angle; Roll is head left and right in the plane, roll angle
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public NET_ANGEL_RANGE[] stuAngelRange;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 目标检测事件(对应事件 EVENT_FACE_DETECTION)
    /// Human detect event( corresponding to event EVENT_FACE_DETECTION)
    /// </summary>
    public struct NET_A_ALARM_EVENT_FACE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// Channel No.
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Time stamp (Unit is ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occurrence time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event operation. 0=pulse event.1=continues event begin. 2=continuous event stop
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// 目标个数
        /// target count
        /// </summary>
        public int nFaceCount;
        /// <summary>
        /// 目标信息
        /// target info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_EVENT_WHOLE_FACE_INFO[] stuFaces;
        /// <summary>
        /// 事件触发的预置点号, 从1开始
        /// Preset point number triggered by event, starting from 1
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
		/// <summary>
        /// / The floor where the elevator is located has a maximum value of 255
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szElevatorFloor;
    }

    /// <summary>
    /// IPC alarm,local alarm IPC send out by DVR or NVR(Corresponding to event  DH_ALARM_IPC)
    /// IPC报警,IPC通过DVR或NVR上报的本地报警(对应事件 DH_ALARM_IPC)
    /// </summary>
    public struct NET_ALARM_IPC_INFO
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// Channel No.
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// Event operation. 0=pulse event.1=continues event begin. 2=continuous event stop
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// <summary>
        public int nEventAction;
        /// <summary>
        /// Event occurrence time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Alarm channel name
        /// 报警通道名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 报警输入通道号，从0开始。没有该字段表示无法区分报警通道号。
        /// Alarm input channel number, starting from 0. The absence of this field means that the alarm channel number cannot be distinguished.
        /// </summary>
        public int nAlarmChannel;
    }

    /// <summary>
    /// alarm event typeDH_EVENT_TAKENAWAYDETECTION (object move event) corresponding data description info
    /// 报警事件类型DH_EVENT_TAKENAWAYDETECTION(物品搬移事件)对应的数据描述信息
    /// </summary>
    public struct NET_ALARM_TAKENAWAY_DETECTION_INFO
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// channel number
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// timestamp (unit is millisecond)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// event occurrence time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// event action, 0 means pulse event, 1 means continuity event begins, 2 means continuity event ends
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// <summary>
        public int nEventAction;
        /// <summary>
        /// rule triggered occurrence times
        /// 规则被触发生次数
        /// <summary>
        public int nOccurrenceCount;
        /// <summary>
        /// event level, GB30147 requirement item, o hint, 1 general, 2 alarm
        /// 事件级别,GB30147需求项, 0 提示1 普通2 警告
        /// <summary>
        public int nLevel;
        /// <summary>
        /// Event triggered preset period, starting from 1 (no unknown)
        /// 事件触发的预置点号，从1开始（没有表示未知）
        /// <summary>
        public short nPreserID;
        /// <summary>
        /// Preset name for event triggered
        /// 事件触发的预置名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// monitorwall operate type
    /// 电视墙操作类型
    /// </summary>
    public enum NET_MONITORWALL_OPERATE_TYPE
    {
        /// <summary>
        /// add tv wall, corresponding to NET_IN_MONITORWALL_ADD and NET_OUT_MONITORWALL_ADD
        /// 添加电视墙, 对应 NET_IN_MONITORWALL_ADD 和 NET_OUT_MONITORWALL_ADD
        /// <summary>
        ADD,
        /// <summary>
        /// scheme tour control, corresponding to NET_IN_CTRL_COLLECTIONTOUR and NET_OUT_CTRL_COLLECTIONTOUR
        /// 预案轮巡控制, 对应 NET_IN_CTRL_COLLECTIONTOUR 和 NET_OUT_CTRL_COLLECTIONTOUR
        /// <summary>
        CTRL_TOUR,
        /// <summary>
        /// get matrix current status, corresponding to NET_IN_MONITORWALL_GET_STATUS NET_OUT_MONITORWALL_GET_STATUS
        /// 获取矩阵当前状态, 对应 NET_IN_MONITORWALL_GET_STATUS 和 NET_OUT_MONITORWALL_GET_STATUS
        /// <summary>
        GET_STATUS,
        /// <summary>
        /// set scheme time schedule, corresponding to NET_IN_MONITORWALL_SET_COLL_SCHD NET_OUT_MONITORWALL_SET_COLL_SCHD
        /// 设置预案时间表, 对应 NET_IN_MONITORWALL_SET_COLL_SCHD 和 NET_OUT_MONITORWALL_SET_COLL_SCHD
        /// <summary>
        SET_COLL_SCHD,
        /// <summary>
        /// get scheme schedule, corresponding to NET_IN_MONITORWALL_GET_COLL_SCHD and NET_OUT_MONITORWALL_GET_COLL_SCHD
        /// 获取预案时间表, 对应 NET_IN_MONITORWALL_GET_COLL_SCHD 和 NET_OUT_MONITORWALL_GET_COLL_SCHD
        /// <summary>
        GET_COLL_SCHD,
        /// <summary>
        /// delete tv wall, corresponding to NET_IN_MONITORWALL_REMOVE and NET_OUT_MONITORWALL_REMOVE
        /// 删除电视墙, 对应 NET_IN_MONITORWALL_REMOVE 和 NET_OUT_MONITORWALL_REMOVE
        /// <summary>
        REMOVE,
        /// <summary>
        /// setup enable, corresponding to NET_IN_MONITORWALL_SET_ENABLE and NET_OUT_MONITORWALL_SET_ENABLE
        /// 设置使能, 对应 NET_IN_MONITORWALL_SET_ENABLE 和 NET_OUT_MONITORWALL_SET_ENABLE
        /// <summary>
        SET_ENABLE,
        /// <summary>
        /// Get enable, corresponding to NET_IN_MONITORWALL_GET_ENABLE and NET_OUT_MONITORWALL_GET_ENABLE
        /// 获取使能, 对应 NET_IN_MONITORWALL_GET_ENABLE 和 NET_OUT_MONITORWALL_GET_ENABLE
        /// <summary>
        GET_ENABLE,
        /// <summary>
        /// tv wall exists or not, corresponding to NET_IN_MONITORWALL_NAME_EXIST and NET_OUT_MONITORWALL_NAME_EXIST
        /// 电视墙是否存在, 对应 NET_IN_MONITORWALL_NAME_EXIST 和 NET_OUT_MONITORWALL_NAME_EXIST
        /// <summary>
        NAME_EXIST,
        /// <summary>
        /// modify the monitorwall name, corresponding to NET_IN_MONITORWALL_RENAME and NET_OUT_MONITORWALL_RENAME
        /// 修改电视墙名称, 对应 NET_IN_MONITORWALL_RENAME 和 NET_OUT_MONITORWALL_RENAME
        /// <summary>
        RENAME,
        /// <summary>
        /// Update the video source URL which has been set up on the wall, corresponding to NET_IN_MONITORWALL_UPDATE_SOURCE_URL and NET_OUT_MONITORWALL_UPDATE_SOURCE_URL
        /// 更新已上墙的视频源URL, 对应 NET_IN_MONITORWALL_UPDATE_SOURCE_URL 和 NET_OUT_MONITORWALL_UPDATE_SOURCE_URL
        /// <summary>
        UPDATE_SOURCE_URL,
        /// <summary>
        /// Getting TV Wall Lock-in State, corresponding to NET_IN_MONITORWALL_GET_LOCK_STATUS 和 NET_OUT_MONITORWALL_GET_LOCK_STATUS
        /// 获取电视墙锁定状态, 对应 NET_IN_MONITORWALL_GET_LOCK_STATUS 和 NET_OUT_MONITORWALL_GET_LOCK_STATUS
        /// <summary>
        GET_LOCK_STATUS,
        /// <summary>
        /// Lock the TV wall (the window that opens freely can't move any more to prevent users from misoperation), corresponding to NET_IN_MONITORWALL_LOCK 和 NET_OUT_MONITORWALL_LOCK
        /// 锁定电视墙(自由开窗的窗口不能再移动，防止用户误操作), 对应 NET_IN_MONITORWALL_LOCK 和 NET_OUT_MONITORWALL_LOCK
        /// <summary>
        LOCK,
    }

    /// <summary>
    /// tv wall enable info 
    /// 电视墙使能信息
    /// </summary>
    public struct NET_MONITORWALL_ENABLE_INFO
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// enable
        /// 使能
        /// <summary>
        public bool bEanble;
        /// <summary>
        /// tv wall name
        /// 电视墙名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
    }

    /// <summary>
    /// CLIENT_OperateMonitorWallport input parameter =>NET_MONITORWALL_OPERATE_SET_ENABLE
    /// CLIENT_OperateMonitorWall接口输入参数=>NET_MONITORWALL_OPERATE_SET_ENABLE
    /// </summary>
    public struct NET_IN_MONITORWALL_SET_ENABLE
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// tv wall quantity to set
        /// 要设置的电视墙数量
        /// <summary>
        public int nMonitorWallNum;
        /// <summary>
        /// tv wall enable
        /// 电视墙使能
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_MONITORWALL_ENABLE_INFO[] stuEnable;
    }

    /// <summary>
    /// CLIENT_OperateMonitorWallport  output parameter =>NET_MONITORWALL_OPERATE_SET_ENABLE
    /// CLIENT_OperateMonitorWall接口输出参数=>NET_MONITORWALL_OPERATE_SET_ENABLE
    /// </summary>
    public struct NET_OUT_MONITORWALL_SET_ENABLE
    {
        /// <summary>
        /// <summary>
        public uint dwSize;
    }


    /// <summary>
    /// Mask infromation
    /// Mask信息
    /// </summary>
    public struct NET_CFG_MASK_INFO
    {
        /// <summary>
        /// The offset of mask in binary data
        /// Mask信息在二进制数据块中的偏移
        /// <summary>
        public uint nOffset;
        /// <summary>
        /// The length of mask data,Unit:Byte
        /// Mask信息大小,单位：字节
        /// <summary>
        public uint nLength;
        /// <summary>
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 应用场景
    /// Application scenario
    /// </summary>
    public enum EM_DEPOSIT_DETECTION_SCENE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_DEPOSIT_DETECTION_SCENE_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 格口检测
        /// Grid mouth detection
        /// </summary>
        EM_DEPOSIT_DETECTION_SCENE_TYPE_LATTICE,
        /// <summary>
        /// 传送带阻塞检测
        /// Conveyor block detection
        /// </summary>
        EM_DEPOSIT_DETECTION_SCENE_TYPE_CONVEROR_BELT,
    }

    /// <summary>
    /// Corresponding to data block description of event type EVENT_IVS_DEPOSIT_DETECTION (DepositDetection)
    /// 事件类型 EVENT_IVS_DEPOSIT_DETECTION (包裹堆积程度检测事件) 对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_DEPOSIT_DETECTION_INFO
    {
        /// <summary>
        /// Channel ID
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// 0:脉冲 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// Event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Timestamp (in milliseconds)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// Time for the event occurred
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event corresponding to file information
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public uint nEventID;
        /// <summary>
        /// The point number of rule detect region
        /// 规则检测区域顶点数
        /// <summary>
        public int nDetectRegionNum;
        /// <summary>
        /// The point list of rule detect region
        /// 规则检测区域
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// RegionName
        /// 格口名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRegionName;
        /// <summary>
        /// Percentage of packages accumulated
        /// 包裹堆积百分比
        /// <summary>
        public uint nStackThreshold;
        /// <summary>
        /// Lattice state 0:unknown 1:empty 2:half 3:full 4:house full
        /// 格口状态 0：未知1：空仓 2：半仓 3：满仓 4： 爆仓
        /// <summary>
        public uint nGridState;
        /// <summary>
        /// Scene image
        /// 全景大图信息
        /// <summary>
        public NET_INTELLIGENCE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// Lattice image
        /// 格口抠图图片信息
        /// <summary>
        public NET_INTELLIGENCE_IMAGE_INFO stuDepositImage;
        /// <summary>
        /// Reserved for image info
        /// 为图片信息做预留字节，新增的字段请在该保留字节下面添加
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
        /// <summary>
        /// Mask information
        /// Mask信息
        /// <summary>
        public NET_CFG_MASK_INFO stuMask;
        /// <summary>
        /// 应用场景
        /// Application scenario
        /// </summary>
        public EM_DEPOSIT_DETECTION_SCENE_TYPE emSceneType;
    }

    /// <summary>
    /// Corresponding to data block description of event type EVENT_IVS_VIOLENT_THROW_DETECTION
    /// 事件类型EVENT_IVS_VIOLENT_THROW_DETECTION(暴力抛物检测)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_VIOLENT_THROW_DETECTION_INFO
    {
        /// <summary>
        /// Channel id
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// 0:脉冲 1:开始 2:停止
        /// <summary>
        public int nAction;
        /// <summary>
        /// Event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Timestamp (in milliseconds)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// Time for the event occurred
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// Event file info
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// The sequence of frame
        /// 视频分析帧序号
        /// <summary>
        public int nFrameSequence;
        /// <summary>
        /// The name of detection region
        /// 暴力抛物检测区域名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRegionName;
        /// <summary>
        /// The image info of big picture
        /// 大图信息
        /// <summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 保留字节
        /// Reserve byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserver;
    }

    // CLIENT_GetDeviceSerialNo 入参
    public struct NET_IN_GET_DEVICESERIALNO_INFO
    {
        public uint dwSize;                                 // 结构体大小
    }

    // CLIENT_GetDeviceSerialNo 出参
    public struct NET_OUT_GET_DEVICESERIALNO_INFO
    {
        public uint dwSize;                               // 结构体大小
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSN;                              // 序列号
    }

    // CLIENT_GetMachineName 入参
    public struct NET_IN_GET_MACHINENAME_INFO
    {
        public uint dwSize;                                 // 结构体大小
    }

    // CLIENT_GetMachineName 出参
    public struct NET_OUT_GET_MACHINENAME_INFO
    {
        public uint dwSize;                                 // 结构体大小
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;                                // 本机名称
    }


    // X光机检查的物品类别
    public enum EM_XRAY_OBJECT_TYPE
    {
        UNKNOWN,                            // 未知
        KNIFE,                              //	刀具
        BOTTLELIQUID,                       //	瓶装液体
        GUN,                                //	枪支
        UMBRELLA,                           //	雨伞
        PHONE,                              //	手机
        NOTEBOOK,                           //	笔记本
        POWERBANK,                          //	充电宝
        SHOES,                              //	鞋子
        ROD,                                //	杆子
        METAL,                              //	金属
        EXPLOSIVE,                          //	爆炸物
        CONTAINERSPRAY,                     //	喷雾喷灌
        EXPLOSIVEFIREWORKS,                 //	烟花爆竹
        LIGHTER,                            //	打火机
        STICK,                              //	警棍
        BRASSKNUCKLE,                       //	指虎
        HANDCUFFS,                          //	手铐
        LVORY,                              //	象牙
        BOOK,                               //	书籍
        CD,                                 //	光盘
        HAMMERS,                            //	锤子
        PLIERS,                             //	钳子
        AXE,                                //	斧头
        SCREWDRIVER,                        //	螺丝刀
        WRENCH,                             //	扳手
        ELECTRICSHOCKSTICK,                 //	电击棍
        BLUNTLNSTRUMENT,                    //	钝器
        ELECTRONIC,                         //	电子产品
        PISTOL,                             //	手枪
        FOLDINGKNIFE,                       //	折叠刀
        SHARPKNIFE,                         //	尖刀
        KITCHENKNIFE,                       //	菜刀
        UTILITYKNIFE,                       //	美工刀
        SCISSORS,                           //	剪刀
        FIREWORKS,                          //	烟花
        FIRECRACKER,                        //	爆竹
        THERMOS,                            //	保温杯
        GLASSBOTTLES,                       //	玻璃瓶
        PLASTICBOTTLE,                      //	塑料瓶
        IGNITIONOIL,                        //	打火机油
        NAILPOLISH,                         //	指甲油	
    }

    // CLIENT_GetDevCaps NET_IXRAY_PACKAGE_MANAGER_CAPS 入参
    public struct NET_IN_IXRAY_PACKAGE_MANAGER_CAPS
    {
        public uint dwSize;                               // 结构体大小
    }

    // CLIENT_GetDevCaps NET_IXRAY_PACKAGE_MANAGER_CAPS 出参
    public struct NET_OUT_IXRAY_PACKAGE_MANAGER_CAPS
    {
        public uint dwSize;                                     // 该结构体大小
        public int nObjectTypes;                                // 包裹违禁物类型个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public EM_XRAY_OBJECT_TYPE[] emObjectType;              // 包裹违禁物类型列表
    }

    /// <summary>
    /// CLIENT_GetDevCaps 对应的类型(NET_FACERECOGNITIONSE_CAPS) 输入参数
    /// CLIENT_GetDevCaps (NET_FACERECOGNITIONSE_CAPS) input parameter
    /// </summary>
    public struct NET_IN_FACERECOGNITIONSERVER_CAPSBILITYQUERY
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 目标检测框颜色
    /// Target Box color caps
    /// </summary>
    public struct NET_FACEBOXCOLOR_CAPS
    {
        /// <summary>
        /// 是否支持目标检测框颜色上报
        /// whether support Target box color change
        /// </summary>
        public bool bSupport;
        /// <summary>
        /// 默认颜色
        /// Default color
        /// </summary>
        public NET_COLOR_RGBA stuDefaultColor;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 是否支持以图搜图
    /// Is it supported to search by pictures
    /// </summary>
    public enum EM_SUPPORT_SEARCH_BY_PIC
    {
        /// <summary>
        /// 未知, IVSS, NVR, DVR大概率支持目标以图搜图，IPC-FR不支持
        /// Unknown, IVSS, NVR, DVR are very likely to support search by picture, and ipc-fr is not support search by picture.
        /// </summary>
        EM_SUPPORT_SEARCH_BY_PIC_UNKNOWN,
        /// <summary>
        /// 不支持
        /// Unsuppoer
        /// </summary>
        EM_SUPPORT_SEARCH_BY_PIC_UNSUPPORT,
        /// <summary>
        /// 支持
        /// Support
        /// </summary>
        EM_SUPPORT_SEARCH_BY_PIC_SUPPORT,
    }

    /// <summary>
    /// 支持的电梯控制方式类型的集合
    /// Supported types of elevator control methods
    /// </summary>
    public enum EM_FACE_RECOGNITION_SUPPORT_LIFT_CONTROL_TYPES
    {
        /// <summary>
        /// / 未知
        /// / unknown
        /// </summary>
        EM_FACE_RECOGNITION_SUPPORT_LIFT_CONTROL_TYPES_UNKNOWN,
        /// <summary>
        /// / 本地485协议梯控方式
        /// / Local485
        /// </summary>
        EM_FACE_RECOGNITION_SUPPORT_LIFT_CONTROL_TYPES_LOCAL485,
        /// <summary>
        /// / 网络协议梯控方式
        /// / Network
        /// </summary>
        EM_FACE_RECOGNITION_SUPPORT_LIFT_CONTROL_TYPES_NETWORK,
    }

    /// <summary>
    /// CLIENT_GetDevCaps 对应的类型(NET_FACERECOGNITIONSE_CAPS)输出参数
    /// CLIENT_GetDevCaps (NET_FACERECOGNITIONSE_CAPS) output parameter
    /// </summary>
    public struct NET_OUT_FACERECOGNITIONSERVER_CAPSBILITYQUERY
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否支持多通道查找
        /// support multi channel
        /// </summary>
        public bool bmultiFind;
        /// <summary>
        /// 最多支持添加自定义目标类型数量
        /// Maximum number of Target Target types supported
        /// </summary>
        public uint nmaxFaceType;
        /// <summary>
        /// 目标检测框颜色能力
        /// Target Box color caps
        /// </summary>
        public NET_FACEBOXCOLOR_CAPS stuFaceBoxColor;
        /// <summary>
        /// 是否支持以图搜图数据推送
        /// Whether to support push data which is returned by searching Target database by picture
        /// </summary>
        public bool bAsynPush;
        /// <summary>
        /// 最大目标库数量, 0表示无效
        /// Max group number, 0 means invalid
        /// </summary>
        public uint nMaxGroupNum;
        /// <summary>
        /// 最大存储目标容量, 0表示无效
        /// Max person number, 0 means invalid
        /// </summary>
        public uint nMaxPersonNum;
        /// <summary>
        /// 批量导图每次接收图片的大小, 单位KB
        /// The size of each image recevied about milti appen, unit:KB
        /// </summary>
        public uint nMultiAppendPicLength;
        /// <summary>
        /// 是否支持以图搜图
        /// Is it supported to search by pictures
        /// </summary>
        public EM_SUPPORT_SEARCH_BY_PIC emSupportSearchByPic;
        /// <summary>
        /// 以图搜图支持的目标类型掩码, emSupportSearchByPic为EM_SUPPORT_SEARCH_BY_PIC_SUPPORT时有效
        /// bit0:目标, bit1:人体, bit2:机动车, bit3:非机动车
        /// Object type about search by pictures, it is effective when emSupportSearchByPic is EM_SUPPORT_SEARCH_BY_PIC_SUPPORT
        /// bit0:Target, bit1:human, bit2:traffiv, bit3:nomotor
        /// </summary>
        public uint dwSearchTypeMask;
        /// <summary>
        /// 单个图片最大大小的值，单位KB
        /// single picture max length, uint:KB
        /// </summary>
        public uint nSinglePicMaxLength;
        /// <summary>
        /// 设备目标注册库是否支持一人多图
        /// Does the device Target registry support one person multi Target pictures
        /// </summary>
        public bool bPersonWithMultiFace;
        /// <summary>
        /// 是否支持使用目标库GroupID和人员UUID分别对目标库和人员进行管理
        /// Whether to support the use of the Target database GroupID and personnel UUID to manage the Target database and personnel respectively
        /// </summary>
        public bool bSupportIDFromServer;
        /// <summary>
        /// 是否支持SMD属性特征以图搜图的类型掩码, bit0: 人脸, bit1: 人体, bit2: 机动车, bit3: 非机动车
        /// Whether to support type masks for SMD attribute features to search for images, bit0: face, bit1: human body, bit2: motor vehicle, bit3: non motor vehicle
        /// </summary>
        public uint nSupportSMDPicSearchMask;
        /// <summary>
        /// 查询条件与结果中的时间能否支持UTC时间格式 0: 不支持，1: 支持
        /// Whether the time in the query conditions and results can support UTC time format 0: No, 1: Yes
        /// </summary>
        public int nSupportRealUTC;
        /// <summary>
        /// 支持从大图检测小图的方法，1-支持detectMultiFace，0(或不存在该字段)-不确定,兼容老设备
        /// Supports the method of detecting small images from large images, 1-supports detectMultiFace, 0 (or if the field does not exist) - Uncertain, compatible with old devices
        /// </summary>
        public uint nDetectMethod;
        /// <summary>
        /// / 支持的电梯控制方式类型的集合个数
        /// / Number of supported elevator control method types
        /// </summary>
        public int nSupportLiftControlTypesCount;
        /// <summary>
        /// / 支持的电梯控制方式类型的集合
        /// / Supported types of elevator control methods
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public EM_FACE_RECOGNITION_SUPPORT_LIFT_CONTROL_TYPES[] emSupportLiftControlTypes;
		/// <summary>
        /// Whether to support face 1V1 similarity comparison
        /// </summary>
        public bool bSupportMatchTwoFace;
    }

    /// <summary>
    /// CLIENT_GetDevCaps NET_REMOTE_SPEAK_CAPS input param
    /// CLIENT_GetDevCaps NET_REMOTE_SPEAK_CAPS 入参
    /// </summary>
    public struct NET_IN_REMOTE_SPEAK_CAPS
    {
        /// <summary>
        /// Struct size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// Channel number
        /// 通道数
        /// <summary>
        public int nChannelNum;
        /// <summary>
        /// Channel list
        /// 通道列表
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public int[] nChannels;
    }

    /// <summary>
    /// Speak audio type
    /// 音频编码压缩格式
    /// </summary>
    public enum EM_SPEAK_AUDIO_TYPE
    {
        EM_SPEAK_AUDIO_TYPE_UNKNOWN = 0,                            // Unknow
        EM_SPEAK_AUDIO_TYPE_PCM,                                    // PCM
        EM_SPEAK_AUDIO_TYPE_ADPCM,                                  // ADPCM
        EM_SPEAK_AUDIO_TYPE_G711A,                                  // G711A
        EM_SPEAK_AUDIO_TYPE_G711Mu,                                 // G711Mu
        EM_SPEAK_AUDIO_TYPE_G726,                                   // G726
        EM_SPEAK_AUDIO_TYPE_G729,                                   // G729
        EM_SPEAK_AUDIO_TYPE_MPEG2,                                  // MPEG2
        EM_SPEAK_AUDIO_TYPE_AMR,                                    // AMR
        EM_SPEAK_AUDIO_TYPE_AAC,									// AAC
    }

    /// <summary>
    /// Speak audio Format
    /// 音频格式
    /// </summary>
    public struct NET_SPEAK_AUDIO_FORMAT
    {
        /// <summary>
        /// Audio type
        /// 音频编码格式
        /// </summary>
        public EM_SAFE_BELT_STATE emFormat;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// speak audio play path
    /// 音频文件路径
    /// </summary>
    public struct NET_SPEAK_AUDIO_PLAY_PATH
    {
        /// <summary>
        /// file path
        /// 文件路径
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
        /// <summary>
        /// Whether to support upload
        /// 是否支持上传
        /// <summary>
        public bool bSupportUpload;
        /// <summary>
        /// Maximum number of file to upload
        /// 支持最大上传个数
        /// <summary>
        public int nMaxFileUploadNum;
        /// <summary>
        /// Maximum size of file,Unit:byte
        /// 最大上传文件大小，单位：字节
        /// <summary>
        public int nMaxUploadFileSize;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 756)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Speak caps
    /// 音频文件路径和能力集
    /// </summary>
    public struct NET_SPEAK_CAPS
    {
        /// <summary>
        /// Speak audio Formats
        /// 音频格式
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_SPEAK_AUDIO_FORMAT[] stuAudioFormats;
        /// <summary>
        /// The number of speak audio format
        /// 音频格式个数
        /// <summary>
        public int nAudioFormatNum;
        /// <summary>
        /// The number of speak audio play path
        /// 音频文件路径个数
        /// <summary>
        public int nAudioPlayPathNum;
        /// <summary>
        /// speak audio play paths
        /// 音频文件路径
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_SPEAK_AUDIO_PLAY_PATH[] stuAudioPlayPaths;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_GetDevCaps NET_REMOTE_SPEAK_CAPS output param
    /// CLIENT_GetDevCaps NET_REMOTE_SPEAK_CAPS 出参
    /// </summary>
    public struct NET_OUT_REMOTE_SPEAK_CAPS
    {
        /// <summary>
        /// Struct size
        /// 结构体大小
        /// <summary>
        public uint dwSize;
        /// <summary>
        /// The number of caps returned by device
        /// 实际返回的能力集个数
        /// <summary>
        public int nRetCapNum;
        /// <summary>
        /// Caps list, memory alloc by user
        /// 能力集,见NET_SPEAK_CAPS
        /// <summary>
        public IntPtr pstuCaps;
        /// <summary>
        /// Byte alignment
        /// 字节对齐
        /// <summary>
        public IntPtr pReserved;
        /// <summary>
        /// The max number of caps alloc by user
        /// 用户分配的最大能力集数组个数
        /// </summary>
        public int nMaxCapNum;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_CROSSLINEDETECTION_EX(拌线入侵事件)对应的数据块描述信息
    /// event type EVENT_IVS_CROSSLINEDETECTION_EX(warning line event )corresponding to datadescriptioninfo
    /// </summary>
    public struct NET_A_DEV_EVENT_CROSSLINE_INFO_EX
    {
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// channel no.
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// field align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// time stamp(unit is ms)
        /// </summary>
        public float PTS;
        /// <summary>
        /// 事件发生的时间
        /// event occurance time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体
        /// detection object
        /// </summary>
        public NET_MSG_OBJECT_EX stuObject;
        /// <summary>
        /// 事件对应文件信息
        /// event corresponding to file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 规则检测线
        /// rule detection line
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectLine;
        /// <summary>
        /// 规则检测线顶点数
        /// rule detection line top number
        /// </summary>
        public int nDetectLineNum;
        /// <summary>
        /// 物体运动轨迹
        /// object motion track
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] TrackLine;
        /// <summary>
        /// 物体运动轨迹顶点数
        /// object motion track top number
        /// </summary>
        public int nTrackLineNum;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// event motion , 0 means pulse event ,1 means continuity event start ,2 means continuity event end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 表示入侵方向, 0-由左至右, 1-由右至左
        /// means intrusion direction, 0- leto to right, 1- right to left
        /// </summary>
        public byte bDirection;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// picture no., same one time(accurate to second)may have multiple pictures , start from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// snapshot mark(by bit), see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件源设备上的index,-1表示数据无效,-1表示数据无效
        /// event source device index,-1 means invalid data,-1 means invalid data
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// event source device SN, field do not existor is null means local device
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// 事件触发累计次数
        /// event trigger accumulated times
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 检测到的物体信息个数
        /// detection object info number
        /// </summary>
        public int nMsgObjArrayCount;
        /// <summary>
        /// 检测到的物体信息数组指针
        /// detection object info group indicator
        /// </summary>
        public IntPtr pMsgObjArray;
        /// <summary>
        /// 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 全景广角图
        /// scene image
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 检测到人的数量
        /// Number of people detected
        /// </summary>
        public uint nObjetcHumansNum;
        /// <summary>
        /// 检测的到人
        /// People detected
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_VAOBJECT_NUMMAN[] stuObjetcHumans;
        /// <summary>
        /// 规则编号,用于标示哪个规则触发的事件，缺省时默认为0
        /// Rule ID, used to indicate which rule triggers the event. The default value is 0
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 事件级别
        /// Event level
        /// </summary>
        public EM_EVENT_LEVEL emEventType;
        /// <summary>
        /// 预置点的坐标和放大倍数
        /// The coordinates and magnification of the preset points
        /// </summary>
        public NET_PRESET_POSITION stPosition;
        /// <summary>
        /// 可见光横向视场角,单位度 实际角度乘以100
        /// Horizontal field Angle of visible light ,the actual Angle times 100
        /// </summary>
        public uint nVisibleHFOV;
        /// <summary>
        /// 可见光纵向视场角,单位度 实际角度乘以100
        /// Longitudinal field Angle of visible light ,the actual Angle times 100
        /// </summary>
        public uint nVisibleVFOV;
        /// <summary>
        /// 当前报警通道的横向视场角，单位度，实际角度乘以100
        /// Lateral field angle of view of the current alarm channel,Unit: degrees,the actual Angle times 100
        /// </summary>
        public uint nCurChannelHFOV;
        /// <summary>
        /// 当前报警通道的纵向视场角，单位度，实际角度乘以100
        /// Longitudinal field angle of view of the current alarm channel,Unit: degrees,the actual Angle times 100
        /// </summary>
        public uint nCurChannelVFOV;
        /// <summary>
        /// 图片信息个数
        /// picture number
        /// </summary>
        public int nImageNum;
        /// <summary>
        /// 图片信息数组
        /// picture info
        /// </summary>
        public IntPtr pImageArray;
        /// <summary>
        /// 车的后视镜状态，-1: 未知 0-正常，1-不正常(如数量缺失等)
        /// The status of the rearview mirror of the car, -1: Unknown, 0-normal, 1-abnormal (such as missing quantity, etc.)
        /// </summary>
        public int nCarMirrorStatus;
        /// <summary>
        /// 车的车灯状态，-1: 未知 0-正常，1-不正常(如灯未亮等)
        /// Status of vehicle lights: -1: Unknown, 0-normal, 1-abnormal (such as lights not on, etc.)
        /// </summary>
        public int nCarLightStatus;
        /// <summary>
        /// 船只物体个数
        /// Number of Boat objects
        /// </summary>
        public uint nObjectBoatsNum;
        /// <summary>
        /// 船只物品信息
        /// Boat Objects Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_BOAT_OBJECT[] stuBoatObjects;
        /// <summary>
        /// 车道/航道方向, 0:未知, 1:上行, 2:下行
        /// Lane/Course Direction, 0: Unknown, 1: UpGoing, 2: DownGoing
        /// </summary>
        public int nUpDownGoing;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 452)]
        public byte[] byReserved1;
    }

    // 自定义的标题信息
    public struct NET_USER_DEF_TITLE_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szText;                           // 标题内容
        public bool bEncodeBlend;                       // 是加叠加到编码视频使能
        public bool bPreviewBlend;                      // 叠加到预览视频使能
        public NET_RECT stuRect;                        // 区域, 坐标取值[0~8191], 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
        public NET_COLOR_RGBA stuFrontColor;            // 前景色
        public NET_COLOR_RGBA stuBackColor;             // 背景色
        public EM_TITLE_TEXT_ALIGNTYPE emTextAlign;     // 文本对齐方式
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 516)]
        public byte[] byReserved;                // 保留字节 
    }

    // 用户自定义OSD标题 NET_EM_CFG_USER_DEF_TITLE
    public struct NET_OSD_USER_DEF_TITLE
    {
        public uint dwSize;
        public int nUserDefTitleNum;                        // 自定义标题数量
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_USER_DEF_TITLE_INFO[] stuUserDefTitle;   // 自定义标题
    }

    /// <summary>
    /// event type EVENT_IVS_TRAFFIC_OVERSTOPLINE (cross line event)corresponding to data module info
    /// 事件类型 EVENT_IVS_TRAFFIC_OVERSTOPLINE (压停车线事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_OVERSTOPLINE
    {
        /// <summary>
        /// channel no.
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// TriggerType: trigger type, 0 detect, 1 radar, 2 video
        /// TriggerType:触发类型,0车检器,1雷达,2视频
        /// <summary>
        public int nTriggerType;
        /// <summary>
        /// time stamp( unit is ms)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public uint PTS;
        /// <summary>
        /// event time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// snapshot no.
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// <summary>
        public int nSequence;
        /// <summary>
        /// event action,
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// <summary>
        public byte byEventAction;
        /// <summary>
        /// picture no., within same time, may have more than one picture, start ftom 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// <summary>
        public byte byImageIndex;
        /// <summary>
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// corresponding to lane no.
        /// 对应车道号
        /// <summary>
        public int nLane;
        /// <summary>
        /// detected object
        /// 检测到的物体
        /// <summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// vehicle body info
        /// 车身信息
        /// <summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// event corresponding to text
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// bottom trigger snapshot frame mark
        /// 底层产生的触发抓拍帧标记
        /// <summary>
        public int nMark;
        /// <summary>
        /// video analysis no.
        /// 视频分析帧序号
        /// <summary>
        public int nFrameSequence;
        /// <summary>
        /// video analysis data source address
        /// 视频分析的数据源地址
        /// <summary>
        public int nSource;
        /// <summary>
        /// snapshot maek, see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// corresponding to picture resolution
        /// 对应图片的分辨率
        /// <summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// traffic vehicle info
        /// 交通车辆信息
        /// <summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;
        /// <summary>
        /// vehicle speed,Km/h
        /// 车辆实际速度,Km/h
        /// <summary>
        public int nSpeed;
        /// <summary>
        /// GPS info ,
        /// GPS信息 
        /// <summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// reserved text
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 984)]
        public byte[] byReserved;
        /// <summary>
        /// public info
        /// 公共信息
        /// <summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// whether stuNonMotor is valid
        /// stuNonMotor 字段是否有效
        /// <summary>
        public bool bHasNonMotor;
        /// <summary>
        /// non motor info
        /// 非机动车对象
        /// <summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// EVENT_IVS_TRAFFIC_TURNLEFTAFTERSTRAIGHT (turn left not give precedence to straight)corresponding data block description info
    /// 事件类型 EVENT_IVS_TRAFFIC_TURNLEFTAFTERSTRAIGHT (左转未礼让直行事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TURNLEFTAFTERSTRAIGHT_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 保留字节对齐
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string Reserved;
        /// <summary>
        /// Time stamp(ms)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public uint nEventID;
        /// <summary>
        /// Event corresponding to file information
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// plate info
        /// 车牌信息
        /// <summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// car body info
        /// 车身信息
        /// <summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Traffic car info
        /// 车辆信息
        /// <summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// Corresponding lane number
        /// 对应车道号
        /// <summary>
        public int nLane;
        /// <summary>
        /// snap index,such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// <summary>
        public int nSequence;
        /// <summary>
        /// Event action, 0 represents the pulse event, 1 means persistent event starts, 2 means persistent event ends
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// <summary>
        public byte byEventAction;
        /// <summary>
        /// (Serial chip, the same time (accurate to seconds) may have multiple images, starting from 0)
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// <summary>
        public byte byImageIndex;
        /// <summary>
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// (Grab flag (bit), see specific NET_RESERVED_COMMON)
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// (the resolution of relative picture)
        /// 对应图片的分辨率
        /// <summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// GPS info ,
        /// GPS信息 
        /// <summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 984)]
        public byte[] byReserved;
        /// <summary>
        /// public info
        /// 公共信息
        /// <summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// EVENT_IVS_TRAFFIC_BIGBENDSMALLTURN (small turn on big bend)corresponding data block description info
    /// 事件类型 EVENT_IVS_TRAFFIC_BIGBENDSMALLTURN (大弯小转事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_BIGBENDSMALLTURN_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 保留字节对齐
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string Reserved;
        /// <summary>
        /// Time stamp(ms)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public uint nEventID;
        /// <summary>
        /// Event corresponding to file information
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// plate info
        /// 车牌信息
        /// <summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// car body info
        /// 车身信息
        /// <summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Traffic car info
        /// 车辆信息
        /// <summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// Corresponding lane number
        /// 对应车道号
        /// <summary>
        public int nLane;
        /// <summary>
        /// snap index,such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// <summary>
        public int nSequence;
        /// <summary>
        /// Event action, 0 represents the pulse event, 1 means persistent event starts, 2 means persistent event ends
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// <summary>
        public byte byEventAction;
        /// <summary>
        /// (Serial chip, the same time (accurate to seconds) may have multiple images, starting from 0)
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// <summary>
        public byte byImageIndex;
        /// <summary>
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// (Grab flag (bit), see specific NET_RESERVED_COMMON)
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// (the resolution of relative picture)
        /// 对应图片的分辨率
        /// <summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
        /// <summary>
        /// public info
        /// 公共信息
        /// <summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// Event type EVENT_IVS_TRAFFIC_TURNRIGHTAFTERSTRAIGHT(Turn right to make a straight event)
    /// 事件类型 EVENT_IVS_TRAFFIC_TURNRIGHTAFTERSTRAIGHT(右转不礼让横向直行)对应数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TURNRIGHTAFTERSTRAIGHT_INFO
    {
        /// <summary>
        /// Channel ID
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// Event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Reserved
        /// 字节保留
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved;
        /// <summary>
        /// Timestamp (in milliseconds)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double dPTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// The corresponding file info of the event
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Detected object
        /// 车牌信息
        /// <summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// Pedestrain info
        /// 车身信息
        /// <summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Traffic car info
        /// 车辆信息
        /// <summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// Corresponding lane No.
        /// 车道号
        /// <summary>
        public int nLane;
        /// <summary>
        /// Snap index,such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 抓拍序号, 如3, 2, 1, 1表示抓拍结束, 0表示异常结束
        /// <summary>
        public int nSequence;
        /// <summary>
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event;
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// <summary>
        public byte byEventAction;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// <summary>
        public byte byImageIndex;
        /// <summary>
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// Snap flag(by bit)0 bit:"*",1 bit:"Timing",2 bit:"Manual",3 bit:"Marked",4 bit:"Event",5 bit:"Mosaic",6 bit:"Cutout"
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// <summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1012)]
        public byte[] byReserved;
        /// <summary>
        /// Public info
        /// 公共信息
        /// <summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// Event type  EVENT_IVS_TRAFFIC_PARKINGONYELLOWBOX(parking on yellow)corresponding data block description info
    /// 事件类型 EVENT_IVS_TRAFFIC_PARKINGONYELLOWBOX(黄网格线抓拍事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_PARKINGONYELLOWBOX_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string bReserved1;
        /// <summary>
        /// Time stamp(ms)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public uint PTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public int nEventID;
        /// <summary>
        /// Corresponding lane No.
        /// 对应车道号
        /// <summary>
        public int nLane;
        /// <summary>
        /// Detected object
        /// 检测到的物体
        /// <summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// Vehicle body info
        /// 车身信息
        /// <summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// The corresponding file info of the event
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// the first and second time interval(s)
        /// 第二张和第一张的延时时间,单位秒
        /// <summary>
        public int nInterval1;
        /// <summary>
        /// 3rd and 2nd delay time, unit is second
        /// 第三张和第二张的延时时间,单位秒
        /// <summary>
        public int nInterval2;
        /// <summary>
        /// follow time,if a car and a car before entering the pornographic websites,is less than this value,just as with car to enter, to enter the case if the parkingis not illegal
        /// 跟随时间,如果一辆车与前一辆车进入黄网格的时间差小于此值,就认为是跟车进入,跟车进入情况下如果停车则不算违章
        /// <summary>
        public int nFollowTime;
        /// <summary>
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event;
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// <summary>
        public byte bEventAction;
        /// <summary>
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// <summary>
        public byte byImageIndex;
        /// <summary>
        /// Snap flag(by bit),please refer to NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// <summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// <summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// GPS info ,
        /// GPS信息 车载
        /// <summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// reserved
        /// 保留字节
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 984)]
        public byte[] bReserved;
        /// <summary>
        /// public info
        /// 公共信息
        /// <summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// EVENT_IVS_TRAFFIC_QUEUEJUMP (car jump a queue) corresponding data block description info
    /// 事件类型 EVENT_IVS_TRAFFIC_QUEUEJUMP (车辆加塞事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_QUEUEJUMP_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// <summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// byte alignment
        /// 保留字节对齐
        /// <summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string Reserved;
        /// <summary>
        /// Time stamp(ms)
        /// 时间戳(单位是毫秒)
        /// <summary>
        public double PTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// <summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// <summary>
        public uint nEventID;
        /// <summary>
        /// Event corresponding to file information
        /// 事件对应文件信息
        /// <summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// plate info
        /// 车牌信息
        /// <summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// car body info
        /// 车身信息
        /// <summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Traffic car info
        /// 车辆信息
        /// <summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// Corresponding lane number
        /// 对应车道号
        /// <summary>
        public int nLane;
        /// <summary>
        /// snap index,such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// <summary>
        public int nSequence;
        /// <summary>
        /// Event action, 0 represents the pulse event, 1 means persistent event starts, 2 means persistent event ends
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// <summary>
        public byte byEventAction;
        /// <summary>
        /// (Serial chip, the same time (accurate to seconds) may have multiple images, starting from 0)
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// <summary>
        public byte byImageIndex;
        /// <summary>
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// (Grab flag (bit), see specific NET_RESERVED_COMMON)
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// <summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// (the resolution of relative picture)
        /// 对应图片的分辨率
        /// <summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// public info
        /// 公共信息
        /// <summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 事件类型掩码，bit0表示报警事件，bit1表示违章事件。若bit0和bit1都置位则既是报警事件又是违章事件，默认bit0置位，报警事件
        /// Event type mask, bit0 indicates alarm event, bit1 indicates violation event. If both bit0 and bit1 are set, it is both an alarm event and a violation event. By default, bit0 is set, and an alarm event occurs.
        /// </summary>
        public uint nEventType;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// EVENT_IVS_TRAFFIC_TRUCKFORBID(truck forbid)corresponding data block description info
    /// 事件类型 EVENT_IVS_TRAFFIC_TRUCKFORBID(货车禁止事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFICTRUCKFORBID_INFO
    {
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public int nChannel;
        /// <summary>
        /// enent name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Event group ID,A detection of multiple human characteristics at the same nGroupID
        /// 事件组ID，同一辆车抓拍过程内GroupID相同
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// nCountInGroup snap amount of one event group
        /// 一个事件组内的抓拍张数
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// IndexInGroup snap SN of one event group
        /// 一个事件组内的抓拍序号
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// Time stamp(ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// Millisecond
        /// UTC时间对应的毫秒数
        /// </summary>
        public int UTCMS;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// plate info
        /// 车牌信息
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// car body info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Corresponding lane number
        /// 车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// snap index,such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// Traffic car info
        /// 车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// Event corresponding to file information
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Grab flag (bit), see specific NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// the resolution of relative picture
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016)]
        public byte[] byReserved;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// 违章关联的多个视频信息
    /// Multiple video information related to violation
    /// </summary>
    public struct NET_RELATING_VIDEO_INFO
    {
        /// <summary>
        /// 违章关联视频FTP上传路径
        /// FTP upload path of violation related video
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szVideoPath;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// event type EVENT_IVS_TRAFFIC_DRIVER_CALLING(driver call event )corresponding to data block description info 
    /// 事件类型EVENT_IVS_TRAFFIC_DRIVER_CALLING(驾驶员打电话事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_DRIVER_CALLING
    {
        /// <summary>
        /// channel no.
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// TriggerType: trigger type , 0 vehicle detector, 1 radar, 2 video
        /// TriggerType:触发类型,0车检器,1雷达,2视频
        /// </summary>
        public int nTriggerType;
        /// <summary>
        /// time stamp(unit is ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public uint PTS;
        /// <summary>
        /// event occurred time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// means snapshot no., as 3,2,1,1 means snapshot end,0 means abnormal end
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// event motion , 0 means pulse event ,1 means continuity event start ,2 means continuity event end; BYTE byReserved1[2];
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved1[2];
        /// </summary>
        public byte byEventAction;
        /// <summary>
        /// picture no., same time (accurate to second) maybe multiple picture , start from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// event corresponding to file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// corresponding to lane no.
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// bottom trigger snapshot frame mark
        /// 底层产生的触发抓拍帧标记
        /// </summary>
        public int nMark;
        /// <summary>
        /// video analysis frame no.
        /// 视频分析帧序号
        /// </summary>
        public int nFrameSequence;
        /// <summary>
        /// video analysis data source address
        /// 视频分析的数据源地址
        /// </summary>
        public int nSource;
        /// <summary>
        /// detection received object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// body info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;
        /// <summary>
        /// vehicle actual speed,Km/h
        /// 车辆实际速度,Km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// snapshot mark(by bit), see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// corresponding to picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// GPS info ,
        /// GPS信息 车载
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// driver ID
        /// 司机ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDriverID;
        /// <summary>
        /// 违章关联的多个视频信息个数
        /// Number of multiple video information associated with violation
        /// </summary>
        public int nRelatingVideoInfoNum;
        /// <summary>
        /// 违章关联的多个视频信息数组，最多支持16个视频
        /// Multiple video information arrays associated with violations, supporting up to 16 videos
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_RELATING_VIDEO_INFO[] stuRelatingVideoInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// reserve text
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 952)]
        public byte[] byReserved;
    }

    /// <summary>
    /// event type EVENT_IVS_TRAFFIC_DRIVER_SMOKING (driver smoke event )corresponding to data block description info 
    /// 事件类型EVENT_IVS_TRAFFIC_DRIVER_SMOKING (驾驶员抽烟事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_DRIVER_SMOKING
    {
        /// <summary>
        /// channel no.
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// TriggerType: trigger type , 0 vehicle detector, 1 radar, 2 video
        /// TriggerType:触发类型,0车检器,1雷达,2视频
        /// </summary>
        public int nTriggerType;
        /// <summary>
        /// time stamp(unit is ms)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public uint PTS;
        /// <summary>
        /// event occurred time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// means snapshot no., as 3,2,1,1 means snapshot end,0 means abnormal end
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// event motion , 0 means pulse event ,1 means continuity event start ,2 means continuity event end; BYTE byReserved1[2];
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; BYTE byReserved1[2];
        /// </summary>
        public byte byEventAction;
        /// <summary>
        /// picture no., same time(accurate to second) may be multiple pictures , start from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// event corresponding to file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// corresponding to lane no.
        /// 对应车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// bottom occurred trigger snapshot mark
        /// 底层产生的触发抓拍帧标记
        /// </summary>
        public int nMark;
        /// <summary>
        /// video analysis frame no.
        /// 视频分析帧序号
        /// </summary>
        public int nFrameSequence;
        /// <summary>
        /// video analysis data source address
        /// 视频分析的数据源地址
        /// </summary>
        public int nSource;
        /// <summary>
        /// detection received object
        /// 检测到的物体
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// body info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Traffic vehicle info
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;
        /// <summary>
        /// car actual speed,Km/h
        /// 车辆实际速度,Km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// snapshot mark(by bit), see NET_RESERVED_COMMON
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// corresponding to picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// GPS info ,
        /// GPS信息 
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// driver ID
        /// 司机ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDriverID;
        /// <summary>
        /// 违章关联的多个视频信息个数
        /// Number of multiple video information associated with violation
        /// </summary>
        public int nRelatingVideoInfoNum;
        /// <summary>
        /// 违章关联的多个视频信息数组，最多支持16个视频
        /// Multiple video information arrays associated with violations, supporting up to 16 videos
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_RELATING_VIDEO_INFO[] stuRelatingVideoInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// reserve text
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 952)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Event type EVENT_IVS_TRAFFIC_TURNRIGHTAFTERPEOPLE(Turn right and go straight to pedestrians)
    /// 事件类型 EVENT_IVS_TRAFFIC_TURNRIGHTAFTERPEOPLE(右转不礼让直行行人)对应数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_TURNRIGHTAFTERPEOPLE_INFO
    {
        /// <summary>
        /// Channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// Event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Reserved
        /// 字节保留
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved;
        /// <summary>
        /// Timestamp (in milliseconds)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double dPTS;
        /// <summary>
        /// Event occurred time
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// The corresponding file info of the event
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Detected object
        /// 车牌信息
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// Pedestrain info
        /// 车身信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Traffic car info
        /// 车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// Corresponding lane No.
        /// 车道号
        /// </summary>
        public int nLane;
        /// <summary>
        /// Snap index,such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// 抓拍序号，如3, 2, 1, 1表示抓拍正常结束，0表示抓拍异常结束
        /// </summary>
        public int nSequence;
        /// <summary>
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event;
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// </summary>
        public byte byEventAction;
        /// <summary>
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// </summary>
        public byte byImageIndex;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// Snap flag(by bit)0 bit:"*",1 bit:"Timing",2 bit:"Manual",3 bit:"Marked",4 bit:"Event",5 bit:"Mosaic",6 bit:"Cutout"
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// picture resolution
        /// 对应图片的分辨率
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1012)]
        public byte[] byReserved;
        /// <summary>
        /// Public info
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    // 事件类型 ALARM_BREED_DETECTION (智慧养殖检测事件) 对应的数据块描述信息
    public struct NET_ALARM_BREED_DETECTION_INFO
    {
        public int nChannelID;             // 通道号
        public int nAction;                // 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束;	
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;           // 报警名称
        public double dbPTS;                   // 时间戳(单位是毫秒)
        public NET_TIME_EX stuUTC;                 // 事件发生的时间
        public uint nEventID;              // 事件ID    

        public uint nRuleID;               // 智能事件规则编号，用于标示哪个规则触发的事件
        public uint nSequence;             // 帧序号
        public EM_SCENE_CLASS_TYPE emClassType;            // 智能事件所属大类
        public uint nBreedStallNum;            // 栏位号
        public uint nObjectNum;             // 检测到的物体个数
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_VAOBJECT_ANIMAL_INFO[] stuObjects;         // 检测到的物体信息
        public double dbBreedStallTemp;        // 栏位温度（单位：℃）
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] szReserved;       // 预留字节
    }

    /// <summary>
    /// Gesture information
    /// 手势信息
    /// </summary>
    public struct NET_GESTURE_INFO
    {
        /// <summary>
        /// Gesture type
        /// 手势类型
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szType;
        /// <summary>
        /// Alarm trigger times
        /// 报警触发次数
        /// </summary>
        public uint nCount;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] szReserved;
    }

    /// <summary>
    /// Event type DH_ALARM_GESTURE_DETECTION (Gesture detection event) corresponding data block description information
    /// 事件类型 DH_ALARM_GESTURE_DETECTION(手势检测事件) 对应的数据块描述信息
    /// </summary>
    public struct NET_ALARM_GESTURE_DETECTION_INFO
    {
        /// <summary>
        /// Channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0: pulse 1: start 2: stop
        /// 0:脉冲,1:开始, 2:停止
        /// </summary>
        public int nAction;
        /// <summary>
        /// Event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Category of intelligent events
        /// 智能事件所属大类
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// Relative event timestamp,int:ms
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// Time of occurrence
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// Event time milliseconds
        /// 事件时间毫秒数
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// Gesture information
        /// 手势信息
        /// </summary>
        public NET_GESTURE_INFO stuGestureInfo;
        /// <summary>
        /// GroupID Event group ID, which is the same in the process of capturing the same object
        /// GroupID事件组ID，同一物体抓拍过程内GroupID相同
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// CountInGroup Number of snapshots in an event group
        /// CountInGroup一个事件组内的抓拍张数
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// IndexInGroup Capture sequence number in an event group
        /// IndexInGroup一个事件组内的抓拍序号，从1开始
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] szReserved;
    }

    /// <summary>
    /// Event type EVENT_IVS_GESTURE_DETECTION corresponding data block description information
    /// 事件类型 EVENT_IVS_GESTURE_DETECTION (手势检测事件)对应的数据块描述信息
    /// </summary>
    public struct NET_EVENT_GESTURE_DETECTION_INFO
    {
        /// <summary>
        /// Channel ID
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0: pulse 1: start 2: stop
        /// 0:脉冲,1:开始, 2:停止
        /// </summary>
        public int nAction;
        /// <summary>
        /// Event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Category of intelligent events
        /// 智能事件所属大类
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// Relative event timestamp,int:ms
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// Time of occurrence
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// Event time milliseconds
        /// 事件时间毫秒数
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// Gesture information
        /// 手势信息
        /// </summary>
        public NET_GESTURE_INFO stuGestureInfo;
        /// <summary>
        /// GroupID Event group ID, which is the same in the process of capturing the same object
        /// GroupID事件组ID，同一物体抓拍过程内GroupID相同
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// CountInGroup Number of snapshots in an event group
        /// CountInGroup一个事件组内的抓拍张数
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// IndexInGroup Capture sequence number in an event group
        /// IndexInGroup一个事件组内的抓拍序号，从1开始
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] szReserved;
    }

    /// <summary>
    /// Mask Detect mode
    /// 门禁测温口罩检测模式
    /// </summary>
    public enum EM_MASK_DETECT_MODE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// No detecttion
        /// 不检测口罩
        /// </summary>
        NO_DETECTION,
        /// <summary>
        /// Remind
        /// 口罩提醒模式
        /// </summary>
        REMIND,
        /// <summary>
        /// Intercept
        /// 口罩拦截模式
        /// </summary>
        INTERCEPT,
    }

    /// <summary>
    ///  param
    /// 门禁测温类型
    /// </summary>
    public enum EM_TEMP_MEASURE_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// Infrared
        /// 单片机红外测温
        /// </summary>
        INFRARED,
        /// <summary>
        /// Thermal image
        /// 热成像测温
        /// </summary>
        THERMAL_IMAGE,
        /// <summary>
        /// Guide module
        /// 高德测温模块测温
        /// </summary>
        GUIDE_MODULE,
        /// <summary>
        /// Wrist
        /// 单点手腕测温
        /// </summary>
        WRIST,
    }

    /// <summary>
    /// Infrared  param
    /// 单片机红外测温模式参数
    /// </summary>
    public struct NET_INFRARED_MEASURE_MODE_PARAM
    {
        /// <summary>
        /// Max distance, unit:cm
        /// 最远测试距离，单位: cm
        /// </summary>
        public int nMaxDistance;
        /// <summary>
        ///  retention time, unit:ms
        /// 红外温度保存时间（ms） （人员在设备鉴权时，从红外设备取温度的有效倒退时间）
        /// </summary>
        public int nRetentionTime;
        /// <summary>
        ///  threshold, unit:oC
        /// 温度阈值，单位: 摄氏度
        /// </summary>
        public double dbTempThreshold;
        /// <summary>
        /// Correct , unit:oC
        /// 温度矫正值，单位: 摄氏度
        /// </summary>
        public double dbCorrectTemp;
        /// <summary>
        /// Valid  lower limit, unit:oC
        /// 有效温度下限，低于此值的温度为无效温度（摄氏度）
        /// </summary>
        public double dbValidTempLowerLimit;
        /// <summary>
        /// Be debug model enable
        /// 是否开启测温调试模式（在屏幕上显示测温调试数据）
        /// </summary>
        public bool bDebugModelEnable;
        /// <summary>
        /// Measure rect enable
        /// 测温区域框显示使能（在视频流界面显示测试区域框）
        /// </summary>
        public bool bRectEnable;
        /// <summary>
        /// Sensor type
        /// 测温模块传感器类型
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSensorType;
        /// <summary>
        /// Reserved
        /// 预留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Thermal image  param
    /// 热成像模式下参数
    /// </summary>
    public struct NET_THERMAL_IMAGE_MEASURE_MODE_PARAM
    {
        /// <summary>
        /// Face compare threshold
        /// 人脸比对阈值
        /// </summary>
        public int nFaceCompareThreshold;
        /// <summary>
        ///  retention time, unit:ms
        /// 热成像温度保留时间（s） (人脸无法比对通过时，通过刷卡等其他方式验证权限，找到人员底库后再去热成像设备进行比对，此字段用于温度保存多少时间)
        /// </summary>
        public int nRetentionTime;
        /// <summary>
        /// Max distance when report over temp
        /// 上报温度过高事件的最大距离，在此距离内测到温度过高直接上报（cm）
        /// </summary>
        public int nOverTempMaxDistance;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Thermal image calibration mode
    /// 热成像标定模式
    /// </summary>
    public enum EM_THERMAL_IMAGE_CALIBRATION_MODE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// In door
        /// 室内模式
        /// </summary>
        INDOOR,
        /// <summary>
        /// Wall mounting
        /// 壁装模式
        /// </summary>
        WALL_MOUNTING,
        /// <summary>
        /// Gate
        /// 闸机模式
        /// </summary>
        GATE,
        /// <summary>
        /// Floor
        /// 高端落地式模式
        /// </summary>
        FLOOR,
    }

    /// <summary>
    /// Guide module  param
    /// 高德测温模块使用参数
    /// </summary>
    public struct NET_GUIDE_MODULE_MEASURE_MODE_PARAM
    {
        /// <summary>
        /// Measure rect enable
        /// 测温区域框显示使能（在视频流界面显示测试区域框）
        /// </summary>
        public bool bRectEnable;
        /// <summary>
        /// Max distance, unit:cm
        /// 允许的最远测温距离（cm）
        /// </summary>
        public int nMaxDistance;
        /// <summary>
        ///  threshold, unit:oC
        /// 温度阈值（摄氏度）
        /// </summary>
        public double dbTempThreshold;
        /// <summary>
        /// Correct , unit:oC
        /// 温度矫正值（摄氏度）
        /// </summary>
        public double dbCorrectTemp;
        /// <summary>
        /// Valid  lower limit, unit:oC
        /// 有效温度下限，低于此值的温度为无效温度（摄氏度）
        /// </summary>
        public double dbValidTempLowerLimit;
        /// <summary>
        /// Threshold of Replace  randly, 0 means not enable this ability
        /// 温度随机替换阈值（低于此阈值的温度会被随机替换为一个有效温度，用于兼容错误情况。阈值为0时表示此功能不开启）。
        /// </summary>
        public double dbTempRandReplaceThreshold;
        /// <summary>
        /// Be debug model enable
        /// 是否开启测温调试模式（在人脸框顶部显示测温数据）
        /// </summary>
        public bool bDebugModelEnable;
        /// <summary>
        /// Calibration model
        /// 热成像标定模式，不同标定模式下的标定参数不一样
        /// </summary>
        public EM_THERMAL_IMAGE_CALIBRATION_MODE emCalibrationMode;
        /// <summary>
        /// Be display heat map enable
        /// 是否显示热图
        /// </summary>
        public bool bHeatDisplayEnbale;
        /// <summary>
        /// reserved
        /// 预留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 单点手腕测温模式参数
    /// Wrist  param
    /// </summary>
    public struct NET_WRIST_MEASURE_MODE_PARAM
    {
        /// <summary>
        ///  threshold, unit:oC
        /// 温度阈值（摄氏度）
        /// </summary>
        public double dbTempThreshold;
        /// <summary>
        /// Correct , unit:oC
        /// 温度矫正值（摄氏度）
        /// </summary>
        public double dbCorrectTemp;
        /// <summary>
        /// Valid  lower limit, unit:oC
        /// 有效温度下限，低于此值的温度为无效温度（摄氏度）
        /// </summary>
        public double dbValidTempLowerLimit;
        /// <summary>
        /// Measure time out, unit:ms
        /// 测温超时时间（秒）
        /// </summary>
        public int nMeasureTimeout;
        /// <summary>
        /// Valid measure distance,less than this value is valid, unit:cm
        /// 有效温度测量距离（cm），小于该距离测量到的温度认为有效
        /// </summary>
        public int nValidMeasureDistance;
        /// <summary>
        /// Invalid measure distance,greater than this value is invalid, unit:cm
        /// 无效温度测量距离（cm），大于该距离测量到的温度认为无效，直接过滤，，在有效和无效距离之间测量的温度是不准的，需要提示用户靠近一点。
        /// </summary>
        public int nInvalidMeasureDistance;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// AccessControl measure  config
    /// 门禁测温配置
    /// </summary>
    public struct NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Enable or not
        /// 测温功能是否启用
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// Only measure 
        /// 仅测温模式是否启用
        /// </summary>
        public bool bOnlyTempMode;
        /// <summary>
        /// Be display 
        /// 温度值是否在提示结果中显示
        /// </summary>
        public bool bDisplayTemp;
        /// <summary>
        /// Mask detect mode
        /// 口罩检测模式
        /// </summary>
        public EM_MASK_DETECT_MODE emMaskDetectMode;
        /// <summary>
        /// Measure type
        /// 测温类型
        /// </summary>
        public EM_TEMP_MEASURE_TYPE emMeasureType;
        /// <summary>
        /// Infrared  param, valid when emMeasureType is EM_TEMP_MEASURE_TYPE_INFRARED
        /// 红外测温模式参数, emMeasureType 为 EM_TEMP_MEASURE_TYPE_INFRARED 时有效
        /// </summary>
        public NET_INFRARED_MEASURE_MODE_PARAM stuInfraredTempParam;
        /// <summary>
        /// Thermal image  param, valid when emMeasureType is EM_TEMP_MEASURE_TYPE_THERMAL_IMAGE
        /// 热成像测温模式参数, emMeasureType 为 EM_TEMP_MEASURE_TYPE_THERMAL_IMAGE 时有效
        /// </summary>
        public NET_THERMAL_IMAGE_MEASURE_MODE_PARAM stuThermalImageTempParam;
        /// <summary>
        /// Guide module  param, valid when emMeasureType is EM_TEMP_MEASURE_TYPE_GUIDE_MODULE
        /// 高德模块测温模式参数, emMeasureType 为 EM_TEMP_MEASURE_TYPE_GUIDE_MODULE 时有效
        /// </summary>
        public NET_GUIDE_MODULE_MEASURE_MODE_PARAM stuGuideModuleTempParam;
        /// <summary>
        /// Wrist  param, valid when emMeasureType is EM_TEMP_MEASURE_TYPE_WRIST
        /// 手腕单点测温模式参数, emMeasureType 为 EM_TEMP_MEASURE_TYPE_WRIST 时有效
        /// </summary>
        public NET_WRIST_MEASURE_MODE_PARAM stuWristTempParam;
    }

    /// <summary>
    /// Corresponding to data block description of event type EVENT_IVS_NONMOTOR_ENTRYING (DepositDetection)
    /// 事件类型EVENT_IVS_NONMOTOR_ENTRYING(非机动车进入电梯事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_NONMOTOR_ENTRYING_INFO
    {
        /// <summary>
        /// 通道号
        /// channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 1:开始 2:停止
        /// 1:Start 2:Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Time stamp(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occurred time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 规则ID
        /// Rule ID
        /// </summary>
        public int nRuleID;
        /// <summary>
        /// 视频帧序号
        /// Sequence
        /// </summary>
        public int nSequence;
        /// <summary>
        /// 智能事件所属大类
        /// Class type
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 目标个数
        /// The number of objects
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// 非机动车目标
        /// The list of objects
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_VA_OBJECT_NONMOTOR[] stuObjects;
        /// <summary>
        /// 全景广角图
        /// Scene image
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved;
    }

    /// <summary>
    /// 车辆ACC报警
    /// Vehicle ACC alarm
    /// </summary>
    public struct NET_ALARM_VEHICLE_ACC_INFO
    {
        public uint dwSize;
        /// <summary>
        /// ACC状态, 0:无效, 1:开启, 2:关闭
        /// ACC status, 0: invalid, 1: on, 2: off
        /// </summary>
        public int nACCStatus;
        /// <summary>
        /// ACC状态, 0:无效, 1:开启, 2:关闭
        /// ACC status, 0: invalid, 1: on, 2: off
        /// </summary>
        public int nAction;
        /// <summary>
        /// GPS信息
        /// GPS information
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 常电状态, 0:未知, 1:连接, 2:断开 
        /// Normal power status, 0: Unknown, 1: Connected, 2: Disconnected
        /// </summary>
        public int nConstantElectricStatus;
        /// <summary>
        /// 事件发生的时间 
        /// The time at which the event occurred
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// 总的里程数,单位:米,当nACCStatus为2时,将ntotalMileage进行上报
        /// Total mileage, in meters, when nACCStatus is 2, the ntotalMileage is reported
        /// </summary>
        public uint nTotalMileage;
        /// <summary>
        /// nACCStatus为1时刻的时间
        /// nACCStatus is 1 moment time
        /// </summary>
        public NET_TIME_EX stuStartTime;
        /// <summary>
        /// nACCStatus为1时刻的GPS信息
        /// nACCStatus is 1 moment GPS information
        /// </summary>
	    public NET_GPS_STATUS_INFO stuStartGPS;
        /// <summary>
        /// / stuRealUTC 是否有效，bRealUTC 为 TRUE 时，用 stuRealUTC，否则用 stuTime 字段
        /// Is stuRealUTC valid? When bRealUTC is true, use stuRealUTC; otherwise, use the stuTime field
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// / 事件发生的时间(标准UTC时间)
        /// Time of event occurrence (standard UTC time)
        /// </summary>
        public NET_TIME_EX stuRealUTC;
    }

    /// <summary>
    /// 车辆急加速事件
    /// Vehicle abrupt speed up event
    /// </summary>
    public struct NET_ALARM_BUS_SHARP_ACCELERATE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// GPS信息
        /// GPS information
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 事件发生的时间
        /// The time at which the event occurred
        /// </summary>
        public NET_TIME_EX stuStartTime;
        /// <summary>
        /// / 事件动作, 1:开始 2:停止
        /// Action, 1:start, 2:stop;
        /// </summary>
        public int nAction;
        /// <summary>
        /// / stuRealUTC 是否有效，bRealUTC 为 TRUE 时，用 stuRealUTC，否则用 stuTime 字段
        /// Is stuRealUTC valid? When bRealUTC is true, use stuRealUTC; otherwise, use the stuTime field
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// / 事件发生的时间(标准UTC时间)
        /// Time of event occurrence (standard UTC time)
        /// </summary>
        public NET_TIME_EX stuRealUTC;
    }

    /// <summary>
    /// 车辆急减速事件
    /// Vehicle abrupt slow down event
    /// </summary>
    public struct NET_ALARM_BUS_SHARP_DECELERATE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// GPS信息
        /// GPS information
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 事件发生的时间
        /// The time at which the event occurred
        /// </summary>
        public NET_TIME_EX stuStartTime;
        /// <summary>
        /// / 事件动作, 1:开始 2:停止
        /// Action, 1:start, 2:stop;
        /// </summary>
        public int nAction;
        /// <summary>
        /// / stuRealUTC 是否有效，bRealUTC 为 TRUE 时，用 stuRealUTC，否则用 stuTime 字段
        /// Is stuRealUTC valid? When bRealUTC is true, use stuRealUTC; otherwise, use the stuTime field
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// / 事件发生的时间(标准UTC时间)
        /// Time of event occurrence (standard UTC time)
        /// </summary>
        public NET_TIME_EX stuRealUTC;
    }

    /// <summary>
    /// GPS未定位报警
    /// GPS not aligned alarm
    /// </summary>
    public struct NET_ALARM_GPS_NOT_ALIGNED_INFO
    {
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示报警开始,2表示报警结束; 
        /// Event action, 0 for pulse events, 1 for alarm start, 2 for alarm end; 
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件发生的时间 
        /// The time at which the event occurred
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// 开始时间,nAction为2时上报此字段 
        /// Start time, nAction is 2 hours to report this field
        /// </summary>
        public NET_TIME_EX stuStartTime;
        /// <summary>
        /// 保留字节
        /// Reserve byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 988)]
        public byte[] byReserver;
    }

    /// <summary>
    /// 车辆超速报警事件
    /// Alarm of high speed
    /// </summary>
    public struct NET_ALARM_HIGH_SPEED_INFO
    {
        /// <summary>
        /// 事件动作,1表示持续性事件开始,2表示持续性事件结束; 
        /// Event action, 1 indicates the beginning of the persistent event, 2 indicates the end of the continuous event; 
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件发生的时间 
        /// The time at which the event occurred
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp(milliseconds)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// GPS信息
        /// GPS information
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 车连限速值km/h
        /// Speed limit(Km/h)
        /// </summary>
        public int nSpeedLimit;
        /// <summary>
        /// 当前车辆速度km/h
        /// Current vehicle speed(Km/h)
        /// </summary>
        public int nCurSpeed;
        /// <summary>
        /// 最高速度Km/h
        /// Max speed(Km/h)
        /// </summary>
        public int nMaxSpeed;
        /// <summary>
        /// 开始时间,nAction为2时上报此字段 
        /// Start time, nAction is 2 hours to report this field
        /// </summary>
        public NET_TIME_EX stuStartTime;
        /// <summary>
        /// 保留字节
        /// Reserve byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 472)]
        public byte[] byReserver;
    }

    /// <summary>
    /// 司机未按确认按钮报警事件
    /// Alarm of driver not confirm
    /// </summary>
    public struct NET_ALARM_DRIVER_NOTCONFIRM_INFO
    {
        /// <summary>
        /// 事件动作,1表示持续性事件开始,2表示持续性事件结束; 
        /// Event action, 1 indicates the beginning of the persistent event, 2 indicates the end of the continuous event; 
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件发生的时间 
        /// The time at which the event occurred
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp(milliseconds)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 保留字节
        /// Reserve byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserver;
    }

    /// <summary>
    /// 温度过高报警
    ///  alarm
    /// </summary>
    public struct NET_ALARM_TEMPERATURE_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 温度传感器名称
        /// The name of the  sensor
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSensorName;
        /// <summary>
        /// 通道号
        /// Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:开始 1:停止
        /// 0: Start 1: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 当前温度值, 单位摄氏度
        /// Current  value, in degrees Celsius
        /// </summary>
        public float fTemperature;
        /// <summary>
        /// 事件发生时间
        /// The time of the event
        /// </summary>
        public NET_TIME stTime;
        /// <summary>
        /// GPS信息
        /// GPS
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatus;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件发生的时间
        /// / Time of occurrence of the event
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 时区索引
        /// / Time Zone Index
        /// </summary>
        public uint nTimeZone;
        /// <summary>
        /// / 夏令时标志,1:当前时间属于夏令时时间,0:当前时间不属于夏令时时间,默认值为0
        /// / Daylight saving time flag, 1: The current time belongs to daylight saving time, 0: The current time does not belong to daylight saving time, default value is 0
        /// </summary>
        public uint nDSTTune;
    }

    /// <summary>
    /// 存储组不存在事件
    /// A storage group does not exist
    /// </summary>
    public struct NET_ALARM_STORAGE_NOT_EXIST_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 0:开始 1:停止
        /// 0: Start 1: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 在录像或抓图存储点中设置但不存在的组
        /// Groups that do not exist in the recording or capture storage point
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szGroup;
        /// <summary>
        /// 事件发生时间
        /// The time of the event
        /// </summary>
        public NET_TIME stTime;
        /// <summary>
        /// GPS信息
        /// GPS information
        /// </summary>
        public NET_GPS_STATUS_INFO stGPSStatus;
        /// <summary>
        /// / stuRealUTC 是否有效，bRealUTC 为 TRUE 时，用 stuRealUTC，否则用 stuTime 字段
        /// Is stuRealUTC valid? When bRealUTC is true, use stuRealUTC; otherwise, use the stuTime field
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// / 事件发生的时间(标准UTC时间)
        /// Time of event occurrence (standard UTC time)
        /// </summary>
        public NET_TIME_EX stuRealUTC;
    }

    /// <summary>
    /// 存储错误类型
    /// storage error
    /// </summary>
    public enum EM_STORAGE_ERROR
    {
        /// <summary>
        /// 无
        /// No error
        /// </summary>
        STORAGE_ERROR_NONE,
        /// <summary>
        /// 分区错误
        /// Patition error
        /// </summary>
        STORAGE_ERROR_PATITION,
        /// <summary>
        /// 初始化文件系统错误 
        /// Init system file error
        /// </summary>
        STORAGE_ERROR_INIT_FS,
        /// <summary>
        /// 读数据失败 
        /// Read data error
        /// </summary>
        STORAGE_ERROR_READ_DATA,
        /// <summary>
        /// 写数据失败 
        /// Write data error
        /// </summary>
        STORAGE_ERROR_WRITE_DATA,
        /// <summary>
        /// RAID错误 
        /// RAID error
        /// </summary>
        STORAGE_ERROR_RAID_FAILED,
        /// <summary>
        /// RAID降级 
        /// RAID degranded
        /// </summary>
        STORAGE_ERROR_RAID_DEGRADED,
        /// <summary>
        /// iSCSI错误 
        /// iSCSI error
        /// </summary>
        STORAGE_ERROR_ISCSI_FAILED,
    }

    /// <summary>
    /// 存储错误报警
    /// Storage mistake
    /// </summary>
    public struct NET_ALARM_STORAGE_FAILURE_EX
    {
        public uint dwSize;
        /// <summary>
        /// 0:开始 1:停止
        /// 0: Start 1: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// The event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 存储设备名称
        /// The name of the storage device
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDevice;
        /// <summary>
        /// 存储组名称
        /// Store the group name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szGroup;
        /// <summary>
        /// 路径
        /// Path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szPath;
        /// <summary>
        /// 错误类型
        /// Error type
        /// </summary>
        public EM_STORAGE_ERROR emError;
        /// <summary>
        /// 硬盘所在槽编码, 从1开始
        /// The slot where the hard drive is encoded, starting at 1
        /// </summary>
        public int nPhysicNo;
        /// <summary>
        /// 事件发生时间
        /// The time of the event
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// GPS信息
        /// GPS information
        /// </summary>
        public NET_GPS_STATUS_INFO stGPSStatus;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// 订阅Bus状态输入参结构
    /// Subscribe to the Bus status input parameter structure
    /// </summary>
    public struct NET_IN_BUS_ATTACH
    {
        public uint dwSize;
        /// <summary>
        /// 状态回调函数
        /// The state callback function
        /// </summary>
        public fBusStateCallBack cbBusState;
        /// <summary>
        /// 用户数据
        /// user data
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// 订阅Bus状态输出参结构
    /// Subscribe to the Bus state output parameter structure
    /// </summary>
    public struct NET_OUT_BUS_ATTACH
    {
        public uint dwSize;
    }

    /// <summary>
    /// Bus status type,used in fBusStateCallBack
    /// Bus状态类型
    /// </summary>
    public enum EM_ALARM_BUS_TYPE
    {
        /// <summary>
        /// Driver sign up event(Corresponding to NET_A_ALARM_BUS_DRIVER_CHECK_INFO)
        /// 司机签到事件(对应结构体 NET_A_ALARM_BUS_DRIVER_CHECK_INFO)
        /// </summary>
        ALARM_BUS_DRIVER_CHECK = 0x0001,
        /// <summary>
        /// In station(corresponding to structure NET_A_ALARM_BUS_IMPORT_SITE_INFO)
        /// 进站事件(对应结构体 NET_A_ALARM_BUS_IMPORT_SITE_INFO)
        /// </summary>
        ALARM_BUS_IMPORT_SITE = 0X0002,
        /// <summary>
        /// Out event(corresponding to structure NET_A_ALARM_BUS_EXPORT_SITE_INFO)
        /// 离站事件(对应结构体 NET_A_ALARM_BUS_EXPORT_SITE_INFO)
        /// </summary>
        ALARM_BUS_EXPORT_SITE = 0x0003,
        /// <summary>
        /// Abnormal vehicle event(corresponding to structure NET_A_ALARM_BUS_ABNORMAL_INFO)
        /// 车辆异常事件(对应结构体 NET_A_ALARM_BUS_ABNORMAL_INFO)
        /// </summary>
        ALARM_BUS_ABNORMAL = 0x0004,
        /// <summary>
        /// Unlock car door event (corresponding to structure NET_A_ALARM_VEHICLE_DOOR_OPEN_INFO)
        /// 车门打开事件(对应结构体 NET_A_ALARM_VEHICLE_DOOR_OPEN_INFO)
        /// </summary>
        ALARM_BUS_DOOR_OPEN = 0x0005,
        /// <summary>
        /// Current mileage event(corresponding to structure NET_A_ALARM_BUS_CUR_MILEAGE_INFO)
        /// 当前里程事件(对应结构体 NET_A_ALARM_BUS_CUR_MILEAGE_INFO)
        /// </summary>
        ALARM_BUS_CUR_MILEAGE = 0x0006,
        /// <summary>
        /// Current oil event(corresponding to structure NET_A_ALARM_BUS_CUR_OIL_INFO)
        /// 当前油耗情况事件(对应结构体 NET_A_ALARM_BUS_CUR_OIL_INFO)
        /// </summary>
        ALARM_BUS_CUR_OIL = 0x0007,
        /// <summary>
        /// Low oil event(corresponding to structure NET_A_ALARM_BUS_LOW_OIL_INFO)
        /// 低油量报警事件(对应结构体 NET_A_ALARM_BUS_LOW_OIL_INFO)
        /// </summary>
        ALARM_BUS_LOW_OIL = 0x0008,
        /// <summary>
        /// Passenger card check event(corresponding to structure NET_A_ALARM_PASSENGER_CARD_CHECK )
        /// 乘客刷卡事件(对应结构体 NET_A_ALARM_PASSENGER_CARD_CHECK )
        /// </summary>
        ALARM_BUS_PASSENGER_CARD_CHECK = 0x0009,
        /// <summary>
        /// vehicle standing over time(corresponding to structure NET_A_ALARM_VEHICLE_STANDING_OVER_TIME_INFO )
        /// 停车超时事件(对应结构体 NET_A_ALARM_VEHICLE_STANDING_OVER_TIME_INFO )
        /// </summary>
        ALARM_BUS_VEHICLE_STANDING_OVER_TIME = 0x000a,
        /// <summary>
        /// Not work time(corresponding to structure NET_A_ALARM_DVRIVE_AFTER_WORK )
        /// 非工作时间事件(对应结构体 NET_A_ALARM_DVRIVE_AFTER_WORK )
        /// </summary>
        ALARM_BUS_DRIVE_AFTER_WORK = 0x000b,
        /// <summary>
        /// PAD shutdown event; DVR notify PadShutdown event, PAD will delay shutdown automatically by receiving this event(corresponding to structure NET_A_ALARM_BUS_PAD_SHUTDOWN_INFO)
        /// PAD关机事件, DVR上报PadShutdown消息, PAD收到后自动延时关机(对应结构体 NET_A_ALARM_BUS_PAD_SHUTDOWN_INFO)
        /// </summary>
        ALARM_BUS_PAD_SHUTDOWN = 0x000c,
        /// <summary>
        /// Tired drive event(corresponding to NET_A_ALARM_TIRED_DRIVE_CHECK_INFO )
        /// 疲劳驾驶事件(对应结构体 NET_A_ALARM_TIRED_DRIVE_CHECK_INFO )
        /// </summary>
        ALARM_BUS_TIRED_DRIVE_CHECK = 0x000d,
        /// <summary>
        /// Steal oil event(corresponding to NET_A_ALARM_BUS_STEAL_OIL_INFO)
        /// 偷油事件(对应结构体 NET_A_ALARM_BUS_STEAL_OIL_INFO)
        /// </summary>
        ALARM_BUS_STEAL_OIL = 0x000e,
        /// <summary>
        /// Circuit shift event(corresponding to NET_A_ALARM_BUS_CIRCUIT_SHIFT_INFO)
        /// 线路偏移事件(对应结构体 NET_A_ALARM_BUS_CIRCUIT_SHIFT_INFO)
        /// </summary>
        ALARM_BUS_CIRCUIT_SHIFT = 0x000f,
        /// <summary>
        /// Route overtime event(corresponding to NET_A_ALARM_BUS_ROUTE_OVERTIME_INFO)
        /// 线路超时事件(对应结构体 NET_A_ALARM_BUS_ROUTE_OVERTIME_INFO)
        /// </summary>
        ALARM_BUS_ROUTE_OVERTIME = 0x0010,
        /// <summary>
        /// Vehicle Carry Alarm event(corresponding to NET_A_ALARM_BUS_VEHICLE_CARRY_ALARM_INFO)
        /// 载重报警事件(对应结构体 NET_A_ALARM_BUS_VEHICLE_CARRY_ALARM_INFO)
        /// </summary>
        ALARM_BUS_VEHICLE_CARRY_ALARM = 0x0011,
        /// <summary>
        /// Vehicle Paulin Alarm event(corresponding to NET_A_ALARM_BUS_VEHICLE_PAULIN_ALARM_INFO)
        /// 篷布报警事件(对应结构体 NET_A_ALARM_BUS_VEHICLE_PAULIN_ALARM_INFO)
        /// </summary>
        ALARM_BUS_VEHICLE_PAULIN_ALARM = 0x0012,
        /// <summary>
        /// Vehicle Lift Alarm event(corresponding to NET_A_ALARM_BUS_VEHICLE_LIFT_ALARM_INFO)
        /// 举升报警事件(对应结构体 NET_A_ALARM_BUS_VEHICLE_LIFT_ALARM_INFO)
        /// </summary>
        ALARM_BUS_VEHICLE_LIFT_ALARM = 0x0013,
        /// <summary>
        /// Fire pressure alarm event(corresponding to NET_A_ALARM_BUS_FIRE_PRESSURE_ALARM_INFO)
        /// 火灾压力传感器报警事件(对应结构体 NET_A_ALARM_BUS_FIRE_PRESSURE_ALARM_INFO)
        /// </summary>
        ALARM_BUS_FIRE_PRESSURE_ALARM = 0x0014,
        /// <summary>
        /// Add oil event(corresponding to NET_ALARM_BUS_ADD_OIL_INFO)
        /// 油量增加检测事件(对应 NET_ALARM_BUS_ADD_OIL_INFO)
        /// </summary>
        ALARM_BUS_ADD_OIL = 0x0015,

    }

    /// <summary>
    /// The type of swipe card
    /// 刷卡类型
    /// </summary>
    public enum EM_PASSENGER_CARD_CHECK_TYPE
    {
        /// <summary>
        /// 未知 
        /// Unkown
        /// </summary>
        EM_PASSENGER_CARD_CHECK_TYPE_UNKOWN,
        /// <summary>
        /// 签到/上车 
        /// Sign in
        /// </summary>
        EM_PASSENGER_CARD_CHECK_TYPE_SIGNIN,
        /// <summary>
        /// 签出/下车 
        /// Sign out 
        /// </summary>
        EM_PASSENGER_CARD_CHECK_TYPE_SIGNOUT,
        /// <summary>
        /// 正常刷卡，不区分上下车 
        /// Normal
        /// </summary>
        EM_PASSENGER_CARD_CHECK_TYPE_NORMAL,
    }

    /// <summary>
    /// CLIENT_SetMarkFileByTime输入参数
    /// CLIENT_SetMarkFileByTime input parameter
    /// </summary>
    public struct NET_IN_SET_MARK_FILE_BY_TIME
    {
        public uint dwSize;
        /// <summary>
        /// 需要锁定的通道号,从0开始,元素为-1时,表示全通道
        /// the channel ID you want to lock, begin at 0, when the filed is -1,  it means all channels
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 开始时间
        /// start time
        /// </summary>
        public NET_TIME_EX stuStartTime;
        /// <summary>
        /// 结束时间
        /// end time
        /// </summary>
        public NET_TIME_EX stuEndTime;
        /// <summary>
        /// 标记动作	true : 标记, false : 清除
        /// action tag 	true : tag, false : clear
        /// </summary>
        public bool bFlag;
        /// <summary>
        /// nLockTime字段标志位， 为 TRUE 时使用nLockTime
        /// nLockTime TRUE : using nLockTime
        /// </summary>
        public bool bLockTimeFlag;
        /// <summary>
        /// 锁定时长，以加锁时间为起点 ，单位为小时
        /// Lock duration, Starting from the locking time ,Unit hour
        /// </summary>
        public uint nLockTime;
    }

    /// <summary>
    /// CLIENT_SetMarkFileByTime输出参数
    /// CLIENT_SetMarkFileByTime output parameter
    /// </summary>
    public struct NET_OUT_SET_MARK_FILE_BY_TIME
    {
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_GetMarkInfo输入参数
    /// CLIENT_GetMarkInfo input parameter
    /// </summary>
    public struct NET_IN_GET_MARK_INFO
    {
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_GetMarkInfo输出参数
    /// CLIENT_GetMarkInfo output parameter
    /// </summary>
    public struct NET_OUT_GET_MARK_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 总容量（单位M）
        /// total capacity (unit M)
        /// </summary>
        public int nTotalSpace;
        /// <summary>
        /// 录像被锁定的容量 单位M
        /// locked capacity of the video unit M
        /// </summary>
        public int nMarkSpace;
    }

    /// <summary>
    /// CLIENT_GetRecordState输入参数
    /// CLIENT_GetRecordState input parameter
    /// </summary>
    public struct NET_IN_GET_RECORD_STATE
    {
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// channel number
        /// </summary>
        public int nChannel;
    }

    /// <summary>
    /// CLIENT_GetRecordState输出参数
    /// CLIENT_GetRecordState output parameter
    /// </summary>
    public struct NET_OUT_GET_RECORD_STATE
    {
        public uint dwSize;
        /// <summary>
        /// 是否在录像
        /// whether it is recording
        /// </summary>
        public bool bState;
    }

    /// <summary>
    /// 事件类型CONVEYORBLOCK_DETECTION传送阻塞报警事件对应的数据块描述信息 
    /// Corresponding to data block description of event type CONVEYORBLOCK_DETECTION
    /// </summary>
    public struct NET_DEV_EVENT_CONVEYORBLOCK_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0-脉冲 1-开始 2-结束
        /// Event action 0:pulse 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// IVS Event Class Type
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Smart event rule number, used to mark which rule triggered the event
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 相对事件时间戳,单位毫秒
        /// Relative event timestamp, in milliseconds
        /// </summary>
        public double dPTS;
        /// <summary>
        /// 事件发生时间，带时区偏差的UTC时间，单位秒
        /// Event occurrence time, UTC time with time zone offset, in seconds
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件时间毫秒数
        /// Event time milliseconds
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// 事件编号，用来唯一标志一个事件
        /// Event number, used to uniquely identify an event
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 帧序号
        /// Frame number
        /// </summary>
        public uint nSequence;
        /// <summary>
        /// 全景图
        /// Panorama
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// stuSceneImage 是否有效
        /// stuSceneImage wheather valid
        /// </summary>
        public bool bSceneImage;
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved;
    }

    /// <summary>
    /// 传送带检测类型
    /// Conveyer belt detection type
    /// </summary>
    public enum EM_CONVEYER_BELT_DETECT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// 满载
        /// Full load
        /// </summary>
        FULL_LOAD,
        /// <summary>
        /// 空载
        /// Non load
        /// </summary>
        NON_LOAD,
        /// <summary>
        /// 跑偏
        /// Run off
        /// </summary>
        RUN_OFF,
        /// <summary>
        /// 阻塞
        /// Block
        /// </summary>
        BLOCK,
        /// <summary>
        /// 大块异物
        /// Bulk
        /// </summary>
        BULK,
        /// <summary>
        /// 煤量占比
        /// CoalRatio
        /// </summary>
	    COALRATIO,
    }

    /// <summary>
    /// 报警模式
    /// Alarm mode
    /// </summary>
    public enum EM_NET_ALARM_OUT_MODE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        UNKNOWN = -1,
        /// <summary>
        /// 报警输出1输出
        /// Alarm output 1 output
        /// </summary>
        MODE_0,
        /// <summary>
        /// 报警输出2输出
        /// Alarm output 2 output
        /// </summary>
        MODE_1,
        /// <summary>
        /// 报警输出1,2同时输出
        /// Alarm output 1 and 2 are output at the same time
        /// </summary>
        MODE_2,
    }

    /// <summary>
    /// 煤量占比配置
    /// Proportion of coal allocation
    /// </summary>
    public struct NET_COAL_RATIO_LEVEL
    {
        /// <summary>
        /// 煤量占比最小值，用于界定当前等级煤量的最小值,取值0-1
        /// The minimum coal content, which is used to define the minimum value of the current coal level. Value 0-1
        /// </summary>
        public float fCoalLevelMin;
        /// <summary>
        /// 煤量占比最大值，用于界定当前等级煤量的最大值,取值0-1
        /// The maximum coal content, which is used to define the maximum coal content of the current level. Value 0-1
        /// </summary>
        public float fCoalLevelMax;
        /// <summary>
        /// 报警模式，用于界定不同煤量占比等级对应报警输出报警模式
        /// Alarm mode, used to define the alarm output alarm mode corresponding to different coal content levels
        /// </summary>
        public EM_NET_ALARM_OUT_MODE emAlarmOutMode;
    }

    /// <summary>
    /// EVENT_IVS_CONVEYER_BELT_DETECT(传送带检测)对应的规则配置结构体
    /// EVENT_IVS_CONVEYER_BELT_DETECT(Conveyer belt detect)corresponding rule configuration structure
    /// </summary>
    public struct NET_CONVEYER_BELT_DETECT_RULE_INFO
    {
        /// <summary>
        /// 检测区域顶点数
        /// Detect region number
        /// <summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区域
        /// Channel
        /// <summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;
        /// <summary>
        /// 传送带检测类型
        /// Conveyer belt detection type
        /// </summary>
        public EM_CONVEYER_BELT_DETECT_TYPE emDetectType;
        /// <summary>
        /// 最短持续时间，单位秒, 取值：[3-30]
        /// Minimum duration, in seconds, value: [3-30]
        /// </summary>
        public uint nMinDuration;
        /// <summary>
        /// 报告时间间隔，单位秒, 取值：[1-300]
        /// Report time interval, in seconds, value: [1-300]
        /// </summary>
        public uint nReportInterval;
        /// <summary>
        /// 灵敏度，值越小灵敏度越低。取值1-10
        /// The smaller the sensitivity, the lower the sensitivity. Values 1-10
        /// </summary>
        public uint nSensitivity;
        /// <summary>
        /// 对比线，用于表示检测区域内传送带的平均宽度
        /// 直线类型，直中每个端点的坐标归一化到[0,8191)区间
        /// The contrast line is used to represent the average width of the conveyor belt in the detection area
        /// For line type, the coordinates of each end point in the line are normalized to [0,8191] interval
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_POINTCOORDINATE[] stuComparetLine;
        /// <summary>
        /// 大块物占比值，尺寸大于SizeFilterThreshold  / 10* ComparetLine表示的传送带平均宽度 的物体被认为是大块异物,取值[2-8]
        /// The proportion of large objects, which is larger than the average width of conveyor belt indicated by sizefilterthreshold / 10 * comparetline, is considered as large foreign objects, and the value is [2-8]
        /// </summary>
        public uint nSizeFilterThreshold;
        /// <summary>
        /// 预警值，用于界定跑偏的程度；0<预警值<停机值<10, 取值[1-9]
        /// Warning value, used to define the degree of deviation; 0 < warning value < stop value < 10, value [1-9]
        /// </summary>
        public uint nWarningThreshold;
        /// <summary>
        /// 停机值，用于界定跑偏的程度；0<预警值<停机值<10, 取值[1-9]
        /// Stop value, used to define the degree of deviation; 0 < warning value < stop value < 10, value [1-9]
        /// </summary>
        public uint nDowntimeThreshold;
        /// <summary>
        /// 煤量占比配置，默认三组，对应煤量占比三个等级，每个等级由煤量占比最大值、最小值组成煤量阈值，三档的阈值互不冲突
        /// Coal ratio configuration, the default is three groups, corresponding to three levels of coal ratio, each level is composed of the maximum and minimum coal ratio, and the thresholds of the three levels are mutually Do not conflict
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public NET_COAL_RATIO_LEVEL[] stuCoalRatioLevel;
        /// <summary>
        /// 煤量占比配置数
        /// Coal ratio configuration number
        /// </summary>
        public int nCoalRatioLevelNums;
        /// <summary>
        /// 阻塞报警阈值;取值0-10
        /// Block alarm threshold; value 0-10
        /// </summary>
        public uint nClogThreshold;
        /// <summary>
        /// 输出不同皮带运动状态时的报警， 0代表该报警不考虑皮带是否运动(默认，即包含1和2),1代表仅在皮带静止时输出报警,2代表仅在皮带运动时输出报警
        /// Output alarms in different belt movement states, 0 means that the alarm does not consider whether the belt is moving (default, including 1 and 2), 1 means that the alarm is only output when the belt is stationary, 2 means that it is only when the belt is moving Output alarm
        /// </summary>
        public uint nIsMoveAlarm;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4048)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 报警事件类型CONVEYER_BELT_BULK (传送带大块异物检测事件) 对应的数据块描述信息 
    /// the describe of CONVEYER_BELT_BULK's data(Large foreign body detection event of conveyer belt)
    /// </summary>
    public struct NET_DEV_EVENT_CONVEYER_BELT_BULK_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action: 1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 相对事件时间戳,单位毫秒
        /// Relative event timestamp, in milliseconds
        /// </summary>
        public double dPTS;
        /// <summary>
        /// 事件发生时间，带时区偏差的UTC时间，单位秒
        /// Event occurrence time, UTC time with time zone offset, in seconds
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Smart event rule number, used to mark which rule triggered the event
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 智能事件所属大类
        /// IVS Event Class Type
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 规则检测线顶点数
        /// The points number of detection line
        /// </summary>
        public int nDetectLineNum;
        /// <summary>
        /// 规则检测线
        /// Detection line
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectLine;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 规则检测区域顶点数
        /// The points number of detection region
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// Detection region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 大块物占比值, 尺寸大于SizeFilterThreshold  / 10* ComparetLine表示的传送带平均宽度 的物体被认为是大块异物取值[2-8]
        /// The proportion of large objects, objects larger than the average width of conveyor belt indicated by sizefilterthreshold / 10 * comparetline are considered as large foreign objects, and the value is [2-8]
        /// </summary>
        public uint nSizeFilterThreshold;
        /// <summary>
        /// 检测到的物体个数
        /// Number of objects detected
        /// </summary>
        public uint nObjectNum;
        /// <summary>
        /// 检测到的物体信息
        /// Information of objects detected
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 全景广角图信息
        /// Scene image
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 保留字节
        /// Reserve byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserver;
    }

    /// <summary>
    /// 报警事件类型CONVEYER_BELT_NONLOAD (传送带空载检测事件) 对应的数据块描述信息
    /// the describe of CONVEYER_BELT_NONLOAD's data(Non load detection event of conveyer belt)
    /// </summary>
    public struct NET_DEV_EVENT_CONVEYER_BELT_NONLOAD_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action: 1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 相对事件时间戳,单位毫秒
        /// Relative event timestamp, in milliseconds
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生时间，带时区偏差的UTC时间，单位秒
        /// Event occurrence time, UTC time with time zone offset, in seconds
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Smart event rule number, used to mark which rule triggered the event
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 智能事件所属大类
        /// IVS Event Class Type
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 规则检测区域
        /// Detection region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 规则检测区域顶点数
        /// The points number of detection region
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 全景广角图信息
        /// Scene image
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 保留字节
        /// Reserve byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserver;
    }

    /// <summary>
    /// 报警事件类型CONVEYER_BELT_RUNOFF (传送带跑偏检测事件) 对应的数据块描述信息
    /// the describe of CONVEYER_BELT_RUNOFF's data(Run off detection event of conveyer belt)
    /// </summary>
    public struct NET_DEV_EVENT_CONVEYER_BELT_RUNOFF_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action: 1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;
        /// <summary>
        /// 相对事件时间戳,单位毫秒
        /// Relative event timestamp, in milliseconds
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生时间，带时区偏差的UTC时间，单位秒
        /// Event occurrence time, UTC time with time zone offset, in seconds
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Smart event rule number, used to mark which rule triggered the event
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 智能事件所属大类
        /// IVS Event Class Type
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 规则检测区域顶点数
        /// The points number of detection region
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// Detection region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 预警值，用于界定跑偏的程度；0<预警值<停机值<10取值[1-9]
        /// Warning value, used to define the degree of deviation; 0 < warning value < stop value < 10 value [1-9]
        /// </summary>
        public uint nWarningThreshold;
        /// <summary>
        /// 停机值，用于界定跑偏的程度；0<预警值<停机值<10取值[1-9]
        /// Stop value, used to define the degree of deviation; 0 < warning value < stop value < 10 value [1-9]
        /// </summary>
        public uint nDowntimeThreshold;
        /// <summary>
        /// 皮带跑偏报警类型，0代表不报警，1代表预警报警，2代表停机报警
        /// Belt deviation alarm type, 0 for no alarm, 1 for early warning alarm, 2 for shutdown alarm
        /// </summary>
        public uint nAlarmType;
        /// <summary>
        /// 检测到的物体个数
        /// Number of objects detected
        /// </summary>
        public uint nObjectNum;
        /// <summary>
        /// 检测到的物体信息
        /// Information of objects detected
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 全景广角图信息
        /// Scene image
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 保留字节
        /// Reserve byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserver;
    }

    /// <summary>
    /// 8192坐标点
    /// 8192 coordinate point
    /// </summary>
    public struct NET_UINT_POINT
    {
        public uint nx;
        public uint ny;
    }

    /// <summary>
    /// 报警事件类型EVENT_IVS_CONVEYER_BELT_COAL_RATIO (传送带煤量检测) 对应的数据块描述信息
    /// Alarm event type EVENT_IVS_CONVEYER_BELT_COAL_RATIO (conveyor belt coal detection) corresponding data block description information
    /// </summary>
    public struct NET_DEV_EVENT_CONVEYER_BELT_COAL_RATIO_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作,1表示持续性事件开始,2表示持续性事件结束
        /// Event action, 1 means the continuous event starts, 2 means the continuous event ends
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// The category of the smart event
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Smart event rule number, used to indicate which rule triggered the event
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 事件发生的时间
        /// Time when the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件时间毫秒数
        /// milliseconds of event time
        /// </summary>
        public uint UTCMS;
        /// <summary>
        /// 事件编号，用来唯一标志一个事件
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 规则检测区域顶点数
        /// Number of vertices in rule detection region
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// Rule detection area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_UINT_POINT[] stuDetectRegion;
        /// <summary>
        /// 当前煤量占比值	
        /// Current coal content ratio value
        /// </summary>
        public float fCoalData;
        /// <summary>
        /// 本次事件触发对应的报警模式	
        /// This event triggers the corresponding alarm mode
        /// </summary>
        public uint nAlarmOutMode;
        /// <summary>
        /// 全景广角图信息
        /// Scene image
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] szReserved;
    }

    /// <summary>
    /// 即时抓图(又名手动抓图)入参, 对应命令SNAP_MNG_SNAP_SHOT
    /// realtime snapshot (manual snapshot) input parameter, corresponding command SNAP_MNG_SNAP_SHOT 
    /// </summary>
    public struct NET_IN_SNAP_MNG_SHOT
    {
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 连拍次数, 0表示停止抓拍,正数表示连续抓拍的张数
        /// continuous snapshot times, 0 means stopping snapshot, positive number means the number of continuous snapshot
        /// </summary>
        public int nTime;
    }

    /// <summary>
    /// 即时抓图(又名手动抓图)出参, 对应命令SNAP_MNG_SNAP_SHOT
    /// realtime snapshot (manual snapshot) output parameter, corresponding command SNAP_MNG_SNAP_SHOT 
    /// </summary>
    public struct NET_OUT_SNAP_MNG_SHOT
    {
        public uint dwSize;
    }

    /// <summary>
    /// 开启/关闭指定通道录像入参
    /// enable/unable designated channel video input parameter 
    /// </summary>
    public struct NET_IN_SET_COURSE_RECORD_STATE
    {
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 0:开启, 1:关闭
        /// continuous snapshot times, 0 means stopping snapshot, positive number means the number of continuous snapshot
        /// </summary>
        public int nAction;
    }

    /// <summary>
    /// 开启/关闭指定通道录像出参
    /// enable/unable designated channel video out parameter
    /// </summary>
    public struct NET_OUT_SET_COURSE_RECORD_STATE
    {
        public uint dwSize;
    }

    /// <summary>
    /// 实时抽帧配置,
    /// Real-time frame drawing config
    /// </summary>
    public struct NET_CFG_BACKUP_LIVE_INFO
    {
        /// <summary>
        /// 是否启动抽帧  
        /// whether to enable, start frame drawing
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 抽帧备份比率，如为0表示只保留I帧，其它情况下表示保留I帧以及紧邻其后的若干P帧
        /// 单位：百分比
        /// 如果GOP为50，20表示保留50*20%=10帧数据(即1个I帧和9个P帧)。如果计算结果带小数，则取整
        /// If it is 0, only I frame will be reserved. In other cases, I frame and several P frames next to it will be reserved
        /// Unit: percentage
        /// If GOP is 50, 20 means 50 * 20% = 10 frames of data (i.e. 1 I frame and 9 P frames) are reserved. If the calculation result is decimal, then round
        /// </summary>
        public int nBackupRate;
        /// <summary>
        /// 抽帧时间段
        /// frame drawing time section
        /// </summary>
        public NET_CFG_TIME_SECTION stuTimeSection;
    }

    /// <summary>
    /// 定时录像配置信息
    /// Schedule record configuration information
    /// </summary>
    public struct NET_CFG_RECORD_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 时间表
        /// Time table
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 6)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 预录时间，为零时表示关闭(0~300)
        /// Pre-record time.The value ranges from 0 to 300. This function is unable when the value is 0.
        /// </summary>
        public int nPreRecTime;
        /// <summary>
        /// 录像冗余开关
        /// Record redundancy enbale button
        /// </summary>
        public bool bRedundancyEn;
        /// <summary>
        /// 0－主码流，1－辅码流1，2－辅码流2，3－辅码流3
        /// 0-main stream,1-extra stream 1,2-extra stream 2,3-extra stream 3
        /// </summary>
        public int nStreamType;
        /// <summary>
        /// 协议版本号, 只读
        /// Protocol Version No., read only
        /// </summary>
        public int nProtocolVer;
        /// <summary>
        /// 为true时有假日配置信息，bHolidayEn、stuHolTimeSection才有效;
        /// There are Holiday Configuration Information When it  is True, bHolidayEn,stuHolTimeSection is effective;
        /// </summary>
        public bool abHolidaySchedule;
        /// <summary>
        /// 假日录像使能TRUE:使能,FALSE:未使能
        /// Holiday Video Enable TRUE:Enable,FALSE:Unable
        /// </summary>
        public bool bHolidayEn;
        /// <summary>
        /// 假日录像时间表
        /// Holiday Video Schedule
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_CFG_TIME_SECTION[] stuHolTimeSection;
        /// <summary>
        /// 实时抽帧配置个数
        /// Real-time frame drawing config number
        /// </summary>
        public int nBackupLiveNum;
        /// <summary>
        /// 实时抽帧配置,
        /// Real-time c config, 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CFG_BACKUP_LIVE_INFO[] stuBackupLiveInfo;
        /// <summary>
        /// 是否录制视频帧
        /// Record video frames
        /// </summary>
        public bool bSaveVideo;
        /// <summary>
        /// 录像时是否保存音频数据
        /// Whether to save audio data when recording
        /// </summary>
        public bool bSaveAudio;
        /// <summary>
        /// 报警输入使能
        /// Alarm input enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 单次Pir录像时长限制（单位秒），0表示无限制
        /// Single Pir recording duration limit (in seconds), 0 indicates no limit
        /// </summary>
        public uint nMaxRecordTime;
        /// <summary>
        /// 预留字节
        /// Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 输出有效模式
    /// output valid mode
    /// </summary>
    public enum EM_ALARMOUT_POLE
    {
        /// <summary>
        /// 未知
        /// unknow
        /// </summary>
        EM_ALARMOUT_POLE_UNKNOWN,
        /// <summary>
        /// 低电平有效
        /// low level active
        /// </summary>
        EM_ALARMOUT_POLE_LOW,
        /// <summary>
        /// 高电平有效
        /// high level active
        /// </summary>
        EM_ALARMOUT_POLE_HIGH,
    }

    /// <summary>
    /// 报警输出时间段控制
    /// Alarm output time period control information
    /// </summary>
    public struct NET_ALARMOUT_TIME_SCHEDULE_INFO
    {
        /// <summary>
        /// / 分时段报警输出使能
        /// / Enable segmented alarm output
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 报警输出通道的状态的配置
    /// The state of the alarm output channel configuration
    /// </summary>
    public struct NET_CFG_ALARMOUT_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 报警通道名称
        /// Alarm channel name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szChnName;
        /// <summary>
        /// 输出类型, 用户自定义
        /// Output types, user-defined
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szOutputType;
        /// <summary>
        /// 输出模式, 0-自动报警, 1-强制报警, 2-关闭报警, 3- 开关模式
        /// Output mode, 0 - automatic alarm 1 - Forced Alarm, 2 - Turn off the alarm, 3 - switch mode
        /// </summary>
        public int nOutputMode;
        /// <summary>
        /// 脉冲模式输出时间, 单位为秒(0-255秒)
        /// Pulse mode output time, unit is second(0-255s)
        /// </summary>
        public int nPulseDelay;
        /// <summary>
        /// 根地址, 0表示本地通道, 1表示连接在第一个串口上的扩展通道, 2、3...以此类推, -1表示无效
        /// Root address, 0 means local channel, 1 means connection expansion channel on first serial, 2,3...and so on, -1 means invalid
        /// </summary>
        public int nSlot;
        /// <summary>
        /// 第一级级联地址, 表示连接在第nSlot串口上的第nLevel1个探测器或仪表, 从0开始, -1表示无效
        /// First level cascading address, means connected at no. nSlot serial no. nLevel1 sensor or meter, start from 0, -1 means invalid
        /// </summary>
        public int nLevel1;
        /// <summary>
        /// 表示nLevel2字段是否存在
        /// means nLevel2 field exists or not
        /// </summary>
        public byte abLevel2;
        /// <summary>
        /// 第二级级联地址, 表示连接在第nLevel1个的仪表上的探测器序号, 从0开始
        /// Second level cascading address, means connected at no. nLevel1 meter sensor no., start from 0
        /// </summary>
        public int nLevel2;
        /// <summary>
        /// 输出有效模式
        /// output valid mode
        /// </summary>
        public EM_ALARMOUT_POLE emPole;
        /// <summary>
        /// 报警输出时间段控制信息
        /// Alarm output time period control information
        /// </summary>
        public NET_ALARMOUT_TIME_SCHEDULE_INFO stuTimeSchedule;
        /// <summary>
        /// 预留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetVideoEncodeBitrate输入参数
    /// CLIENT_GetVideoEncodeBitrate input parameter
    /// </summary>
    public struct NET_IN_GET_VIDEO_ENCODE_BITRATE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// channel number
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 码流类型
        /// stream type
        /// </summary>
        public EM_STREAM_TYPE emStreamType;
    }

    /// <summary>
    /// CLIENT_GetVideoEncodeBitrate输出参数
    /// CLIENT_GetVideoEncodeBitrate output parameter
    /// </summary>
    public struct NET_OUT_GET_VIDEO_ENCODE_BITRATE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 码率大小,单位kbps
        /// Code rate size, in kbps
        /// </summary>
        public uint nBitrate;
    }

    /// <summary>
    /// Types of parking spaces
    /// 车位类型
    /// </summary>
    public enum EM_SPACE_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN = -1,
        /// <summary>
        /// Big Car
        /// 大车位
        /// </summary>
        BIG_CAR,
        /// <summary>
        /// Car
        /// 小车位
        /// </summary>
        CAR,
    }

    /// <summary>
    /// Statistical model
    /// 统计模式
    /// </summary>
    public enum EM_STATISTICS_MODE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// Area
        /// 区域
        /// </summary>
        AREA,
        /// <summary>
        /// Space
        /// 车位
        /// </summary>
        SPACE,
    }

    /// <summary>
    /// 车位信息
    /// Space Mode Info
    /// </summary>
    public struct NET_A_CFG_SPACE_MODE_INFO
    {
        /// <summary>
        /// 车位编号
        /// Park Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szParkNo;
        /// <summary>
        /// 车位中心点坐标
        /// The coordinates of the center point of the parking space
        /// </summary>
        public NET_CFG_POLYGON stuCoordinate;
        /// <summary>
        /// 车位类型: 0:未知, 1:小车车位, 2:大车车位, 3:危化品车位, 4:货车车位, 5:小客车车位, 6:大客车车位
        /// Type of parking space: 0: Unknown, 1: Car parking space, 2: Car parking space, 3: Hazardous chemical parking space, 4: Truck parking space, 5: Passenger car parking space, 6: Bus parking space
        /// </summary>
        public int nSpaceType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 60)]
        public string szReserved;
    }

    /// <summary>
    /// Parking mode statistics
    /// 车位模式统计信息
    /// </summary>
    public struct NET_SPACE_MODE_INFO
    {
        /// <summary>
        /// Parking number
        /// 车位编号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szParkNo;
        /// <summary>
        /// Types of parking spaces
        /// 车位类型
        /// </summary>
        public EM_SPACE_TYPE emSpaceType;
        /// <summary>
        /// Is there a car in this parking space
        /// 该车位是否有车
        /// </summary>
        public bool bUsed;
        /// <summary>
        /// Reserved bytes
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Regional pattern statistics
    /// 区域模式统计信息
    /// </summary>
    public struct NET_AREA_MODE_INFO
    {
        /// <summary>
        /// Area name
        /// 车位编号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szParkNo;
        /// <summary>
        /// Total number of parking spaces in the area
        /// 车位类型
        /// </summary>
        public uint nCount;
        /// <summary>
        /// Types of parking spaces
        /// 该车位是否有车
        /// </summary>
        public EM_SPACE_TYPE emSpaceTyp;
        /// <summary>
        /// Number of available parking spaces in the area
        /// 该车位是否有车
        /// </summary>
        public int nRemainCnt;
        /// <summary>
        /// Reserved bytes
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 更新类型
    /// Updata Type
    /// </summary>
    public enum EM_UPDATE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_UPDATE_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 删除区域或车位
        /// delete area or parking space
        /// </summary>
        EM_UPDATE_TYPE_DELETE,
        /// <summary>
        /// 修改区域或车位
        /// modify area or parking space
        /// </summary>
        EM_UPDATE_TYPE_MODIFY,
        /// <summary>
        /// 增加区域或车位
        /// Add area or parking space
        /// </summary>
        EM_UPDATE_TYPE_ADD,
    }

    /// <summary>
    /// 区域或车位更新信息
    /// Area or parking space update information
    /// </summary>
    public struct NET_UPDATE_INFO
    {
        /// <summary>
        /// 更新类型
        /// Type
        /// </summary>
        public EM_UPDATE_TYPE emType;
        /// <summary>
        /// 更新的区域或车位名称
        /// Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
        /// <summary>
        /// 更新前的车位类型
        /// Before Update Type
        /// </summary>
        public EM_SPACE_TYPE emBeforeUpdateType;
        /// <summary>
        /// 更新后的车位类型
        /// After Update Type
        /// </summary>
        public EM_SPACE_TYPE emAfterUpdateType;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szResvered;
    }

    /// <summary>
    /// Event type EVENT_IVS_TRAFFIC_PARKING_STATISTICS  corresponding to data block description info
    /// 事件类型 EVENT_IVS_TRAFFIC_PARKING_STATISTICS 对应的数据描述信息
    /// </summary>
    public struct NET_EVENT_TRAFFIC_PARKING_STATISTICS_INFO
    {
        /// <summary>
        /// 0:脉冲
        /// 0:pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Time stamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time of event
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 区域模式统计信息 区域;emStatisticsMode为 EM_STATISTICS_MODE_AREA 时有效
        /// The emstatisticsmode is em_ STATISTICS_ MODE_ Valid for area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public NET_AREA_MODE_INFO[] stuAreaModeInfo;
        /// <summary>
        /// 区域模式统计信息个数
        /// Number of regional pattern statistics
        /// </summary>
        public int nAreaModeInfoNum;
        /// <summary>
        /// 车位模式统计信息,每个元素表示一个车位；emStatisticsMode为 EM_STATISTICS_MODE_SPACE 时有效
        /// Each element represents a parking space; emstatisticsmode is em_ STATISTICS_ MODE_ Valid in space
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 99)]
        public NET_SPACE_MODE_INFO[] stuSpaceModeInfo;
        /// <summary>
        /// 车位模式统计信息个数
        /// Number of parking mode statistics
        /// </summary>
        public int nSpaceModeInfoNum;
        /// <summary>
        /// 统计模式
        /// Statistical model
        /// </summary>
        public EM_STATISTICS_MODE emStatisticsMode;
        /// <summary>
        /// 区域或车位更新信息
        /// Area or parking space update information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 99)]
        public NET_UPDATE_INFO[] stuUpdateInfo;
        /// <summary>
        /// 区域或车位更新信息个数
        /// Number of area or parking space update information
        /// </summary>
        public int nUpdateInfoNum;
        /// <summary>
        /// 图片信息数组
        /// Image information
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Image information number
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1008)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_RemotePreUploadFile 接口输入参数(前端设备预上传文件)
    /// CLIENT_RemotePreUploadFile input param(preupload remote file to remote device)
    /// </summary>
    public struct NET_IN_REMOTE_PREUPLOAD_FILE
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// Channel id
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 源文件路径
        /// The path of source file
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFileSrc;
        /// <summary>
        /// 目标文件保存名称
        /// The name of destination file
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFileNameDst;
        /// <summary>
        /// 目标文件夹路径：可为空字符串, 空时设备使用默认路径校验
        /// The folder path of destination file, can be ""
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFolderDst;
        /// <summary>
        /// / 文件大小，单位字节，szFileSrc为空时有效
        /// File size in bytes, valid when szFilesrc is empty
        /// </summary>
        public uint nFileLength;
    }

    /// <summary>
    /// 错误原因类型
    /// Error reason type
    /// </summary>
    public enum EM_REASON_TYPE
    {
        /// <summary>
        /// 未知原因
        /// unknow
        /// </summary>
        EM_REASON_TYPE_UNKNOWN,
        /// <summary>
        /// 文件个数超出
        /// File number is over
        /// </summary>
        EM_REASON_TYPE_OVERNUMBER,
        /// <summary>
        /// 文件存储空间已满
        /// The file storage is full
        /// </summary>
        EM_REASON_TYPE_FULLSTORAGE,
        /// <summary>
        /// 该文件太大
        /// The file is too large
        /// </summary>
        EM_REASON_TYPE_TOOLARGE_FILE,
        /// <summary>
        /// 无效的文件类型
        /// Invalid file type
        /// </summary>
        EM_REASON_TYPE_INVALID_FILETYPE,
        /// <summary>
        /// 没有上传权限
        /// Without upload authorized
        /// </summary>
        EM_REASON_TYPE_UNAUTH_UPLOAD,
        /// <summary>
        /// 文件命名异常
        /// Exception name of file
        /// </summary>
        EM_REASON_TYPE_EXCEPTION_NAME,
        /// <summary>
        /// 文件名太长
        /// The file name is too long
        /// </summary>
        EM_REASON_TYPE_TOOLONG_NAME,
        /// <summary>
        /// 文件名已存在
        /// The file name already exists
        /// </summary>
        EM_REASON_TYPE_EXIST_NAME,
    }

    /// <summary>
    /// CLIENT_RemotePreUploadFile 接口输出参数(前端设备预上传文件)
    /// CLIENT_RemotePreUploadFile output param(preupload remote file to remote device)
    /// </summary>
    public struct NET_OUT_REMOTE_PREUPLOAD_FILE
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 标志是否继续上传该文件。因如文件过大，设备可拒绝接收上传
        /// The flag to be continue to upload
        /// </summary>
        public bool bContinue2Upload;
        /// <summary>
        /// 错误原因, 当bContinue2Upload为false时emType有效
        /// Reason of refused to upload, valid when bContinue2Upload == false
        /// </summary>
        public EM_REASON_TYPE emType;
    }

    /// <summary>
    /// 上传进度状态
    /// Upload process status
    /// </summary>
    public enum EM_UPLOAD_PROCESS_STATUS
    {
        /// <summary>
        /// 上传中
        /// Uploading
        /// </summary>
        EM_UPLOAD_PROCESS_STATUS_UPLOADING,
        /// <summary>
        /// 完成
        /// Complete
        /// </summary>
        EM_UPLOAD_PROCESS_STATUS_COMPLETE,
        /// <summary>
        /// 失败
        /// Failed
        /// </summary>
        EM_UPLOAD_PROCESS_STATUS_FAILED,
        /// <summary>
        /// 取消
        /// Cancel
        /// </summary>
        NET_UPLOAD_PROCESS_STATUS_CANCEL,
    }

    /// <summary>
    /// CLIENT_StartRemoteUploadFile 接口输入参数(上传文件到前端设备)
    /// CLIENT_StartRemoteUploadFile input param(upload remote file to remote device)
    /// </summary>
    public struct NET_IN_REMOTE_UPLOAD_FILE
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// channel number
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 源文件路径
        /// The path of source file
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFileSrc;
        /// <summary>
        /// 目标文件保存名称
        /// The name of destination file
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFileNameDst;
        /// <summary>
        /// 目标文件夹路径：可为空字符串, 空时设备使用默认路径校验
        /// The folder path of destination file, can be ""
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFolderDst;
        /// <summary>
        /// 上传进度回调
        /// Upload process callback
        /// </summary>
        public fRemoteUploadFileCallBack cbUploadFile;
        /// <summary>
        /// 用户参数
        /// User data
        /// </summary>
        public IntPtr dwUser;
        /// <summary>
        /// 文件传输分包大小(字节): 0表示SDK默认分包
        /// file upload subpackage size. 0 means NetSDK default
        /// </summary>
	    public uint nPacketLen;
    }

    /// <summary>
    /// CLIENT_StartRemoteUploadFile 接口输出参数(上传文件到前端设备)
    /// CLIENT_StartRemoteUploadFile output param(upload remote file to remote device)
    /// </summary>
    public struct NET_OUT_REMOTE_UPLOAD_FILE
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_RemoteList 接口输入参数
    /// CLIENT_RemoteList input param
    /// </summary>
    public struct NET_IN_REMOTE_LIST
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 指定路径
        /// file path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
    }

    /// <summary>
    /// 文件信息
    /// remote file info
    /// </summary>
    public struct NET_REMOTE_FILE_INFO
    {
        /// <summary>
        /// 文件绝对路径
        /// file path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
        /// <summary>
        /// 文件大小，单位：字节
        /// file size unit:byte
        /// </summary>
        public uint nSize;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_RemoteList 接口输出参数
    /// CLIENT_RemoteList output param
    /// </summary>
    public struct NET_OUT_REMOTE_LIST
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 文件信息,见NET_REMOTE_FILE_INFO
        /// remote file info NET_REMOTE_FILE_INFO
        /// </summary>
        public IntPtr pstuFileInfo;
        /// <summary>
        /// 文件信息数组大小, 用户填写
        /// max File count, user fill in
        /// </summary>
        public uint nMaxFileCount;
        /// <summary>
        /// 返回的文件数量
        /// return file count
        /// </summary>
        public uint nRetFileCount;
    }

    /// <summary>
    /// CLIENT_RemoteRemoveFiles 接口输入参数
    /// CLIENT_RemoteRemoveFiles input param
    /// </summary>
    public struct NET_IN_REMOTE_REMOVE_FILES
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 文件个数
        /// file number
        /// </summary>
        public int nFileNum;
        /// <summary>
        /// 文件名数组指针
        /// file list
        /// </summary>
        public IntPtr pszFileName;
    }

    /// <summary>
    /// CLIENT_RemoteRemoveFiles 接口输出参数
    /// CLIENT_RemoteRemoveFiles output param
    /// </summary>
    public struct NET_OUT_REMOTE_REMOVE_FILES
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_PreUploadRemoteFile 接口输入参数(设置文件长度)
    /// CLIENT_PreUploadRemoteFile input params(set upload file length)
    /// </summary>
    public struct NET_IN_PRE_UPLOAD_REMOTE_FILE
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 源文件路径
        /// Path of source file
        /// </summary>
        public IntPtr pszFileSrc;
        /// <summary>
        /// 保存在设备端的文件路径
        /// Path of saved file in device
        /// </summary>
        public IntPtr pszFileDst;
    }

    /// <summary>
    /// CLIENT_PreUploadRemoteFile 接口输出参数(设置文件长度)
    /// CLIENT_PreUploadRemoteFile output params(set upload file length)
    /// </summary>
    public struct NET_OUT_PRE_UPLOAD_REMOTE_FILE
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 标志是否继续上传该文件, true:上传 false:不上传
        /// Flag of whether continue upload or not, true: upload, false: not upload
        /// </summary>
        public bool bContinue2Upload;
        /// <summary>
        /// 错误原因, 当bContinue2Upload为false时emType有效  
        /// Reason of error, when bContinue2Upload is false, emType is valid
        /// </summary>
        public EM_REASON_TYPE emType;
    }

    /// <summary>
    /// CLIENT_UploadRemoteFile 接口输入参数(上传文件到设备)
    /// CLIENT_UploadRemoteFile's interface input param(upload file to the device)
    /// </summary>
    public struct NET_IN_UPLOAD_REMOTE_FILE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 原始文件名称
        /// path of source file
        /// </summary>
        public IntPtr pszFileSrc;
        /// <summary>
        /// 目标文件名称
        /// name of target file
        /// </summary>
        public IntPtr pszFileDst;
        /// <summary>
        /// 目标文件夹路径：可为NULL, NULL时设备使用默认路径
        /// target file path: may be NULL, NULL device use default path
        /// </summary>
        public IntPtr pszFolderDst;
        /// <summary>
        /// 文件分包大小(字节): 0表示不分包
        /// file pack size(byte): 0 means not pack
        /// </summary>
        public uint nPacketLen;
        /// <summary>
        /// 文件上传超时时间，填0时默认10s，字段CLIENT_StartUploadRemoteFile接口有效
        /// File upload timeout period. If 0 is set, the default value is 10 seconds.The CLIENT_StartUploadRemoteFile field is valid for the interface
        /// </summary>
        public uint nTimeOut;
    }

    /// <summary>
    /// CLIENT_UploadRemoteFile 接口输出参数(上传文件到设备)
    /// CLIENT_UploadRemoteFile's interface output param(upload file to the device)
    /// </summary>
    public struct NET_OUT_UPLOAD_REMOTE_FILE
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 获取文件的条件
    /// Error reason type
    /// </summary>
    public enum EM_REMOTE_FILE_COND
    {
        /// <summary>
        /// 无条件
        /// Unknown
        /// </summary>
        EM_REMOTE_FILE_COND_NONE,
        /// <summary>
        /// 语音联动的文件,*无法*按路径获取,*只能*获取获取文件名称
        /// Unknown
        /// </summary>
        EM_REMOTE_FILE_COND_VOICE,
    }

    /// <summary>
    /// CLIENT_ListRemoteFile 接口输入参数
    /// CLIENT_ListRemoteFile's interface input param
    /// </summary>
    public struct NET_IN_LIST_REMOTE_FILE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 路径当emCondition为EM_REMOTE_FILE_COND_VOICE时，这个字段无效
        /// path
        /// </summary>
        public IntPtr pszPath;
        /// <summary>
        /// 只获取文件名称, 不返回文件夹信息, 文件信息中只有文件名有效当emCondition为EM_REMOTE_FILE_COND_VOICE时，这个字段无效
        /// only for file name
        /// </summary>
        public bool bFileNameOnly;
        /// <summary>
        /// 指定获取文件的条件
        /// query condition
        /// </summary>
        public EM_REMOTE_FILE_COND emCondition;
    }

    /// <summary>
    /// 文件/目录信息
    /// file/catalog info
    /// </summary>
    public struct NET_REMOTE_FILE_INFO_EX
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否文件夹
        /// is directory or not
        /// </summary>
        public bool bDirectory;
        /// <summary>
        /// 路径
        /// file path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szPath;
        /// <summary>
        /// 创建时间
        /// create time
        /// </summary>
        public NET_TIME stuCreateTime;
        /// <summary>
        /// 修改时间
        /// modify time
        /// </summary>
        public NET_TIME stuModifyTime;
        /// <summary>
        /// 文件大小
        /// size of file
        /// </summary>
        public Int64 nFileSize;
        /// <summary>
        /// 文件类型
        /// type of file
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szFileType;
    }

    /// <summary>
    /// CLIENT_ListRemoteFile 接口输出参数
    /// CLIENT_ListRemoteFile's interface output param
    /// </summary>
    public struct NET_OUT_LIST_REMOTE_FILE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 文件信息数组, 用户分配内存,大小为sizeof(NET_REMOTE_FILE_INFO_EX)*nMaxFileCount
        /// array of file,the space application by the user,apply to sizeof(NET_REMOTE_FILE_INFO_EX)*nMaxFileCount
        /// </summary>
        public IntPtr pstuFiles;
        /// <summary>
        /// 文件信息数组大小, 用户填写
        /// size of array
        /// </summary>
        public int nMaxFileCount;
        /// <summary>
        /// 返回的文件数量
        /// return count
        /// </summary>
        public int nRetFileCount;
    }

    /// <summary>
    /// CLIENT_RemoveRemoteFiles 接口输入参数
    /// CLIENT_RemoveRemoteFiles's interface input param
    /// </summary>
    public struct NET_IN_REMOVE_REMOTE_FILES
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 文件路径数组指针
        /// pointer of file path
        /// </summary>
        public IntPtr pszPath;
        /// <summary>
        /// 文件路径数量
        /// count of file
        /// </summary>
        public int nFileCount;
    }

    /// <summary>
    /// CLIENT_RemoveRemoteFiles 接口输出参数
    /// CLIENT_RemoveRemoteFiles's interface output param
    /// </summary>
    public struct NET_OUT_REMOVE_REMOTE_FILES
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_StartMultiFindFaceRecognitionRecord 输入参数(对应的开始识别人脸多通道查询)
    /// CLIENT_StartMultiFindFaceRecognitionRecord Corresponding Multimodal Target recognition
    /// </summary>
    public struct NET_IN_STARTMULTIFIND_FACERECONGNITIONRECORD
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 开始时间
        /// Start time
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// 结束时间
        /// End time
        /// </summary>
        public NET_TIME stEndTime;
        /// <summary>
        /// 地点,支持模糊匹配
        /// Place to support fuzzy matching
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szMachineAddress;
        /// <summary>
        /// 待查询报警类型,详见 EM_FACERECOGNITION_ALARM_TYPE
        /// To query the type of alarm, see EM_FACERECOGNITION_ALARM_TYPE
        /// </summary>
        public int nAlarmType;
        /// <summary>
        /// 人员信息是否有效
        /// Staff info is valid or not
        /// </summary>
        public bool abPersonInfo;
        /// <summary>
        /// 人员信息
        /// Staff info
        /// </summary>
        public NET_FACERECOGNITION_PERSON_INFO stPersonInfo;
        /// <summary>
        /// 通道号
        /// Channel no
        /// </summary>
        public IntPtr pChannelID;
        /// <summary>
        /// 通道个数
        /// Number of channels
        /// </summary>
        public int nChannelCount;
        /// <summary>
        /// 人员组数  
        /// Staff group
        /// </summary>
        public int nGroupIdNum;
        /// <summary>
        /// 人员组ID 
        /// Staff group ID 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128 * 64)]
        public char[] szGroupId;
        /// <summary>
        /// 人员信息是否有效, 并使用人员信息扩展结构体
        /// Use stPersonInfoEx when bUsePersonInfoEx is true, otherwise use stPersonInfo
        /// </summary>
        public bool abPersonExInfo;
        /// <summary>
        /// 人员信息扩展
        /// Expansion of personnel information
        /// </summary>
        public NET_FACERECOGNITION_PERSON_INFOEX stPersonInfoEx;
    }

    /// <summary>
    /// CLIENT_StartMultiFindFaceRecognitionRecord 输出参数(对应的开始识别人脸多通道查询)
    /// CLIENT_StartMultiFindFaceRecognitionRecord Corresponding Multimodal Target recognition
    /// </summary>
    public struct NET_OUT_STARTMULTIFIND_FACERECONGNITIONRECORD
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 返回的符合查询条件的记录个数
        /// Record number of returns that match the query criteria
        /// </summary>
        public int nTotalCount;
        /// <summary>
        /// 查询句柄
        /// Query handle
        /// </summary>
        public IntPtr lFindHandle;
        /// <summary>
        /// 获取到的查询令牌
        /// The search token received
        /// </summary>
        public int nToken;
    }

    /// <summary>
    /// CLIENT_DoFindFaceRecognitionRecord 输入参数(对应的开始识别人脸多通道查询)
    /// CLIENT_DoFindFaceRecognitionRecord Inpute parameters
    /// </summary>
    public struct NET_IN_DOFIND_FACERECONGNITIONRECORD
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 返回的符合查询条件的记录个数
        /// Record number of returns that match the query criteria
        /// </summary>
        public int nTotalCount;
        /// <summary>
        /// 查询句柄
        /// Query handle
        /// </summary>
        public IntPtr lFindHandle;
        /// <summary>
        /// 查询起始序号，表示从beginNumber条记录开始，取count条记录返回
        /// Begin Number
        /// </summary>
        public int nBeginNumber;
    }

    /// <summary>
    /// 目标识别信息数据
    /// Target recognition data
    /// </summary>
    public struct NET_DOFIND_FACERECONGNITIONRECORD_INFO
    {
        /// <summary>
        /// 全景图是否存在
        /// Does the panorama exist
        /// </summary>
        public bool bGlobalScenePic;
        /// <summary>
        /// 全景图片文件路径
        /// Panoramic image file path
        /// </summary>
        public NET_PIC_INFO_CPP stGlobalScenePic;
        /// <summary>
        /// 目标人脸物体信息
        /// the target face object information
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 目标人脸文件路径
        /// the target face file path
        /// </summary>
        public NET_PIC_INFO_CPP stObjectPic;
        /// <summary>
        /// 当前人脸匹配到的候选对象数量
        /// Face Matching the current number of candidates
        /// </summary>
        public int nCandidateNum;
        /// <summary>
        /// 当前人脸匹配到的候选对象信息
        /// Face candidates to match this informatio
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_CANDIDATE_INFO[] stuCandidates;
        /// <summary>
        /// 当前人脸匹配到的候选对象图片文件路径
        /// The current face matching candidates to the image file path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_CANDIDAT_PIC_PATHS_EX[] stuCandidatesPic;
        /// <summary>
        /// 报警发生时间
        /// time for an alarm
        /// </summary>
        public NET_TIME stTime;
        /// <summary>
        /// 报警发生地点
        /// Place for an alarm
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szAddress;
        /// <summary>
        /// 通道号
        /// channel no
        /// </summary>
        public int nChannelId;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] bReserved;
    }

    /// <summary>
    /// CLIENT_DoFindFaceRecognitionRecord 输出参数(对应的开始识别人脸多通道查询)
    /// CLIENT_DoFindFaceRecognitionRecord Out parameters
    /// </summary>
    public struct NET_OUT_DOFIND_FACERECONGNITIONRECORD
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 返回的目标识别信息数据(内存申请释放由用户管理)，结构体见NET_DOFIND_FACERECONGNITIONRECORD_INFO
        /// Return data NET_DOFIND_FACERECONGNITIONRECORD_INFO
        /// </summary>
        public IntPtr stuResults;
        /// <summary>
        /// 申请的目标识别信息的内存个数
        /// The number of memory applications for Target recognition information
        /// </summary>
        public int nResultNum;
        /// <summary>
        /// 实际返回个数
        /// Actual number of returns
        /// </summary>
        public int nTotalCount;
    }

    /// <summary>
    /// Type of alarm source device
    /// 报警源设备的类型
    /// </summary>
    public enum EM_PROFILE_ALARM_TRANSMIT_DEVSRC_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// number
        /// 数字
        /// </summary>
        DIGIT,
        /// <summary>
        /// simulation
        /// 模拟
        /// </summary>
        ANALOG,
        /// <summary>
        /// Intelligent lock
        /// 智能锁
        /// </summary>
        SMARTLOCK,
    }

    /// <summary>
    /// Alarm type
    /// 报警类型
    /// </summary>
    public enum EM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// PreventRemove
        /// "PreventRemove"防拆
        /// </summary>
	    PREVENTREMOVE,
        /// <summary>
        /// LowerPower
        /// "LowerPower"低电压
        /// </summary>
	    LOWERPOWER,
        /// <summary>
        /// Key
        /// "Key"钥匙
        /// </summary>
	    KEY,
        /// <summary>
        /// Duress
        /// "Duress"胁迫
        /// </summary>
	    DURESS,
        /// <summary>
        /// BatteryLost
        /// "BatteryLost":电池不在位
        /// </summary>
	    BATTERY_LOST,
        /// <summary>
        /// PSTNBreakLine
        /// "PSTNBreakLine":电话线断开
        /// </summary>
	    PSTNB_BREAKLINE,
        /// <summary>
        /// EmergencyHelp
        /// "EmergencyHelp":紧急求助
        /// </summary>
	    EMERGENCY_HELP,
        /// <summary>
        /// AlarmIn
        /// "AlarmIn":报警输入
        /// </summary>
	    ALARMIN,
    }

    /// <summary>
    /// Low voltage incidental information
    /// 低电压附带信息
    /// </summary>
    public struct NET_PROFILE_ALARM_TRANSMIT_LOWERPOWER
    {
        /// <summary>
        /// Current power
        /// 当前电量
        /// </summary>
        public int nPercent;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szReserved;
    }

    /// <summary>
    /// Information attached to alarm input
    /// 报警输入附带信息
    /// </summary>
    public struct NET_PROFILE_ALARM_TRANSMIT_ALARMIN
    {
        /// <summary>
        /// Channel ID
        /// 报警输入通道号
        /// </summary>
        public int nChannel;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szReserved;
    }

    /// <summary>
    /// Docking with domestic Le orange，Cloud attached information to be reported by PAAS Library
    /// 对接国内乐橙，paas库需要上报的云附带信息
    /// </summary>
    public struct NET_PROFILE_ALARM_TRANSMIT_CLOUDINFO
    {
        /// <summary>
        /// Alarm input channel number
        /// 报警输入通道号
        /// </summary>
        public int nVideoLinkChannel;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szReserved;
    }

    /// <summary>
    /// Additional information about the alarm type specified in the alarmtype field
    /// AlarmType字段中指定报警类型的附带信息
    /// </summary>
    public struct NET_PROFILE_ALARM_TRANSMIT_ALARM_INFO
    {
        /// <summary>
        /// Low voltage incidental information
        /// 低电压附带信息
        /// </summary>
        public NET_PROFILE_ALARM_TRANSMIT_LOWERPOWER stuLowerPower;
        /// <summary>
        /// Information attached to alarm input
        /// 报警输入附带信息
        /// </summary>
	    public NET_PROFILE_ALARM_TRANSMIT_ALARMIN stuAlarmIn;
        /// <summary>
        /// Docking with domestic Le orange，Cloud attached information to be reported by PAAS Library
        /// 对接国内乐橙，paas库需要上报的云附带信息
        /// </summary>
	    public NET_PROFILE_ALARM_TRANSMIT_CLOUDINFO stuCloudInfo;
        /// <summary>
        /// Reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] szReserved;
    }

    /// <summary>
    /// Alarm transmission event
    /// 报警传输事件
    /// </summary>
    public struct NET_ALARM_UPLOAD_PROFILE_ALARM_TRANSMIT_INFO
    {
        /// <summary>
        /// Struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 0=Start 1=Stop
        /// 0：脉冲 1:开始 2:停止
        /// </summary>
        public int nAction;
        /// <summary>
        /// Time when the alarm event occurred
        /// 报警事件发生的时间
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// Standard UTC time（Daylight saving time deviation without time zone）
        /// 标准UTC时间（不带时区夏令时偏差）
        /// </summary>
        public uint nRealUTC;
        /// <summary>
        /// Alarm user，When the indoor unit is analog，Used to distinguish between different simulators
        /// 报警用户，室内机为模拟机时，用于区分不同的模拟机
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// Sensor type
        /// 传感器类型
        /// </summary>
        public EM_SENSE_METHOD emSenseMethod;
        /// <summary>
        /// Type of alarm source device
        /// 报警源设备的类型
        /// </summary>
        public EM_PROFILE_ALARM_TRANSMIT_DEVSRC_TYPE emDevSrcType;
        /// <summary>
        /// Alarm type
        /// 报警类型
        /// </summary>
	    public EM_PROFILE_ALARM_TRANSMIT_ALARM_TYPE emAlarmType;
        /// <summary>
        /// Additional information about the alarm type specified in the alarmtype field
        /// AlarmType字段中指定报警类型的附带信息	
        /// </summary>
        public NET_PROFILE_ALARM_TRANSMIT_ALARM_INFO stuAlarmInfo;
        /// <summary>
        /// Equipment number
        /// 设备编号
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// Snap photo storage address
        /// 抓拍照片存储地址
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSnapURL;
    }

    /// <summary>
    /// camera channel type
    /// 输入通道类型
    /// </summary>
    public enum EM_CAMERA_CHANNEL_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        EM_CAMERA_CHANNEL_TYPE_UNKNOWN,
        /// <summary>
        /// local
        /// 本地通道（即物理通道）
        /// </summary>
        EM_CAMERA_CHANNEL_TYPE_LOCAL,
        /// <summary>
        /// remote
        /// 远程通道
        /// </summary>
        EM_CAMERA_CHANNEL_TYPE_REMOTE,
        /// <summary>
        /// reserved32
        /// 保留32通道数(兼容二代设备协议)
        /// </summary>
        EM_CAMERA_CHANNEL_TYPE_RESERVED32,
        /// <summary>
        /// output
        /// 输出通道
        /// </summary>
        EM_CAMERA_CHANNEL_TYPE_OUTPUT,
        /// <summary>
        /// matrix
        /// 模拟矩阵通道
        /// </summary>
        EM_CAMERA_CHANNEL_TYPE_MATRIX,
        /// <summary>
        /// compose
        /// 合成通道
        /// </summary>
        EM_CAMERA_CHANNEL_TYPE_COMPOSE,
        /// <summary>
        /// cascade
        /// 光纤级联通道  
        /// </summary>
        EM_CAMERA_CHANNEL_TYPE_CASCADE,
    }

    /// <summary>
    /// video stream
    /// 视频码流
    /// </summary>
    public enum EM_VIDEO_STREAM
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        EM_VIDEO_STREAM_UNKNOWN,
        /// <summary>
        /// main
        /// 主码流
        /// </summary>
	    EM_VIDEO_STREAM_MAIN,
        /// <summary>
        /// extra1
        /// 辅码流1
        /// </summary>
	    EM_VIDEO_STREAM_EXTRA1,
        /// <summary>
        /// extra2
        /// 辅码流2
        /// </summary>
	    EM_VIDEO_STREAM_EXTRA2,
        /// <summary>
        /// extra3
        /// 辅码流3
        /// </summary>
	    EM_VIDEO_STREAM_EXTRA3,
        /// <summary>
        /// auto
        /// 自动选择合适码流
        /// </summary>
	    EM_VIDEO_STREAM_AUTO,
        /// <summary>
        /// preview
        /// 预览裸数据码流
        /// </summary>
	    EM_VIDEO_STREAM_PREVIEW,
        /// <summary>
        /// no video stream, just audio stream
        /// 无视频码流(纯音频流)
        /// </summary>
	    EM_VIDEO_STREAM_NO_VIDEO_JUST_AUDIO,
    }

    /// <summary>
    /// the cameras info
    /// 视频源信息
    /// </summary>
    public struct NET_CAMERA_INFO
    {
        /// <summary>
        /// unigue channel, -1 means that the channelID is automatically assigned by the device
        /// 统一编号,  -1表示设备自动分配通道号
        /// </summary>
        public int nUniqueChannel;
        /// <summary>
        /// channel ID
        /// 通道号
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// control ID
        /// 控制编号, 键盘用户用，用编号定位通道，提高操作效率
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szControlID;
        /// <summary>
        /// if the device enable, default:true
        /// 设备是否启用, 固定true
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// name
        /// 名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// device ID of the logic channel
        /// 逻辑通道所属设备ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// input channel type
        /// 输入通道类型
        /// </summary>
        public EM_CAMERA_CHANNEL_TYPE emChannelType;
        /// <summary>
        /// video stream
        /// 视频码流
        /// </summary>
        public EM_VIDEO_STREAM emVideoStream;
        /// <summary>
        /// reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;
    }

    /// <summary>
    /// the camera groups info
    /// 设备组信息
    /// </summary>
    public struct NET_CAMERA_GROUP_INFO
    {
        /// <summary>
        /// device ID
        /// 设备ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// the count of cameras
        /// 视频源信息数量
        /// </summary>
        public int nCameraCount;
        /// <summary>
        /// array of cameras, the space application by the user,apply to sizeof(NET_CAMERA_INFO)*nCameraCount
        /// 视频源信息数组,用户分配内存,大小为sizeof(NET_CAMERA_INFO)*nCameraCount
        /// </summary>
        public IntPtr pCameras;
        /// <summary>
        /// the info of remote device, effective when szDeviceID is invalid
        /// 远程设备信息, szDeviceID没有值时有效
        /// </summary>
        public NET_REMOTE_DEVICE stuRemoteDevice;
        /// <summary>
        /// reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// input param of CLIENT_MatrixAddCamerasByGroup (batch add cameras)
    /// CLIENT_MatrixAddCamerasByGroup (批量添加视频源) 接口输入参数
    /// </summary>
    public struct NET_IN_ADD_LOGIC_BYGROUP_CAMERA
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// the count of camera groups
        /// 设备组个数
        /// </summary>
        public int nCameraGroup;
        /// <summary>
        /// array of camera groups, the space application by the user,apply to sizeof(NET_CAMERA_GROUP_INFO)*nCameraGroup
        /// 设备组信息
        /// </summary>
        public IntPtr pstCameraGroupInfo;
    }

    /// <summary>
    /// the result inforamtion of cameras returned by adding camera groups
    /// 添加视频源组返回的视频源添加结果信息
    /// </summary>
    public struct NET_ADD_BYGROUP_RESULT_CAMERA
    {
        /// <summary>
        /// unique channel
        /// 统一编号
        /// </summary>
        public uint nUniqueChannel;
        /// <summary>
        /// FaileCode, 0-Success,1-unsupport
        /// 失败码, 0-成功,1-通道不支持设置
        /// </summary>
        public uint nFailedCode;
        /// <summary>
        /// reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;
    }

    /// <summary>
    /// the result inforamtion of camera groups returned by adding camera groups
    /// 添加视频源组返回结果信息
    /// </summary>
    public struct NET_ADD_BYGROUP_RESULT
    {
        /// <summary>
        /// device ID
        /// 设备ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// the count of cameras, consistent with the nCameraCount in NET_CAMERA_GROUP_INFO
        /// 视频源结果个数，与NET_CAMERA_GROUP_INFO中的nCameraCount一致
        /// </summary>
        public int nResultCam;
        /// <summary>
        /// array of cameras by adding camera groups, the space application by the user,apply to sizoef(NET_ADD_BYGROUP_RESULT_CAMERA)*nRetResultCamera
        /// 返回的视频源结果信息，由用户分配内存，大小为sizoef(NET_ADD_BYGROUP_RESULT_CAMERA)*nRetResultCamera
        /// </summary>
        public IntPtr pstResultCamera;
        /// <summary>
        /// reserved
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// output paramer of CLIENT_MatrixAddCamerasByGroup (batch add cameras)
    /// CLIENT_MatrixAddCamerasByGroup (批量添加视频源) 接口输出参数
    /// </summary>
    public struct NET_OUT_ADD_LOGIC_BYGROUP_CAMERA
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// the count of groups, consistent with the nCameraGroup in NET_IN_ADD_LOGIC_BYGROUP_CAMERA
        /// 返回的group结果个数，与NET_IN_ADD_LOGIC_BYGROUP_CAMERA中的nCameraGroup一致
        /// </summary>
        public int nGroupCount;
        /// <summary>
        /// array of camera groups  by adding camera groups, the space application by the user, apply to sizoef(NET_ADD_BYGROUP_RESULT)*nMaxResultGroup
        /// 添加视频源组返回的结果数组，由用户分配内存, 大小为sizeof(NET_ADD_BYGROUP_RESULT)*nGroupCount
        /// </summary>
        public IntPtr pstAddByGroupResult;
    }

    /// <summary>
    /// intput paramer of CLIENT_MatrixGetCameraAllByGroup
    /// CLIENT_MatrixGetCameraAllByGroup 接口输入参数
    /// </summary>
    public struct NET_IN_GET_CAMERA_ALL_BY_GROUP
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel type
        /// 输入通道类型
        /// </summary>
        public EM_CAMERA_CHANNEL_TYPE emChannelType;
    }

    /// <summary>
    /// output paramer of CLIENT_MatrixGetCameraAllByGroup
    /// CLIENT_MatrixGetCameraAllByGroup 接口输出参数
    /// </summary>
    public struct NET_OUT_GET_CAMERA_ALL_BY_GROUP
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// max camera group number, max:1024
        /// 设备组最大个数, 最多为1024
        /// </summary>
        public int nMaxCameraGroup;
        /// <summary>
        /// camera group number
        /// 设备实际组个数
        /// </summary>
        public int nCameraGroup;
        /// <summary>
        /// device group information, the space application by the user, apply to sizoef(NET_CAMERA_GROUP_INFO)*nMaxCameraGroup
        /// 设备组信息，由用户分配内存, 大小为sizeof(NET_CAMERA_GROUP_INFO)*nMaxCameraGroup
        /// </summary>
        public IntPtr pstCameraGroupInfo;
    }

    /// <summary>
    /// delete camera group info
    /// 删除组视频通道信息
    /// </summary>
    public struct NET_DELETE_CAMERA_GROUP_INFO
    {
        /// <summary>
        /// sevice ID, if delete all the channel under device, need this deviceID, else don't need deviceID
        /// 设备ID, 如果"uniqueChannels"数组大小为1，元素值为-1，则"DeviceID"必填，否则不需要填
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// unique channel number, max:1024
        /// unique通道号数量, 最多为1024
        /// </summary>
        public int nUniqueChannelNum;
        /// <summary>
        /// unique channel, If the array size is 1 and the element value is -1, delete all the channel under device
        /// unique通道号, 指向的数组大小为1，元素值为-1则表示删除设备下的所有通道
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public int[] szUniqueChannels;
    }

    /// <summary>
    /// intput paramer of CLIENT_MatrixDeleteCameraByGroup 
    /// CLIENT_MatrixDeleteCameraByGroup 接口输入参数
    /// </summary>
    public struct NET_IN_DELETE_CAMERA_BY_GROUP
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// delete camera group number
        /// 删除设备组实际个数
        /// </summary>
        public int nCameraGroup;
        /// <summary>
        /// delete camera group info, the space application by the user, apply to sizoef(NET_DELETE_CAMERA_GROUP_INFO)*nCameraGroup
        /// 删除设备组信息，由用户分配内存, 大小为sizeof(NET_DELETE_CAMERA_GROUP_INFO)*nCameraGroup
        /// </summary>
        public IntPtr pstCameraGroupInfo;
    }

    /// <summary>
    /// output paramer of CLIENT_MatrixDeleteCameraByGroup
    /// CLIENT_MatrixDeleteCameraByGroup 接口输出参数
    /// </summary>
    public struct NET_OUT_DELETE_CAMERA_BY_GROUP
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// driving direction(relate to lane)
    /// 车辆行驶方向（相对车道方向）
    /// </summary>
    public enum EM_VEHICLE_DRIVING_DIRECTION
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        EM_VEHICLE_DRIVING_DIRECTION_UNKNOWN,
        /// <summary>
        /// obverse
        /// 正向
        /// </summary>
	    EM_VEHICLE_DRIVING_DIRECTION_OBVERSE,
        /// <summary>
        /// reverse
        /// 反向
        /// </summary>
	    EM_VEHICLE_DRIVING_DIRECTION_REVERSE,
    }

    /// <summary>
    /// Radar detection model
    /// 雷达检测车型
    /// </summary>
    public enum EM_RADAR_DETECTION_VEHICLE_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
	    EM_RADAR_DETECTION_VEHICLE_TYPE_UNKNOWN,
        /// <summary>
        /// Mid passenger car
        /// 中小客车
        /// </summary>
        EM_RADAR_DETECTION_VEHICLE_TYPE_MID_PASSENGER_CAR,
        /// <summary>
        /// Motor bus
        /// 大客车
        /// </summary>
        EM_RADAR_DETECTION_VEHICLE_TYPE_MOTOR_BUS,
        /// <summary>
        /// Micro truck
        /// 小货车
        /// </summary>
        EM_RADAR_DETECTION_VEHICLE_TYPE_MICRO_TRUCK,
        /// <summary>
        /// Mid truck
        /// 中型货车
        /// </summary>
	    EM_RADAR_DETECTION_VEHICLE_TYPE_MID_TRUCK,
        /// <summary>
        /// Large truck
        /// 大型货车
        /// </summary>
	    EM_RADAR_DETECTION_VEHICLE_TYPE_LARGE_TRUCK,
        /// <summary>
        /// Supper truck
        /// 特大货车
        /// </summary>
	    EM_RADAR_DETECTION_VEHICLE_TYPE_SUPER_TRUCK,
        /// <summary>
        /// Container car
        /// 集装箱车
        /// </summary>
	    EM_RADAR_DETECTION_VEHICLE_TYPE_CONTAINER_CAR,
        /// <summary>
        /// Motorcycle
        /// 摩托车
        /// </summary>
	    EM_RADAR_DETECTION_VEHICLE_TYPE_MOTORCYCLE,
        /// <summary>
        /// Tractot
        /// 拖拉机
        /// </summary>
	    EM_RADAR_DETECTION_VEHICLE_TYPE_TRACTOR,
    }

    /// <summary>
    /// Radar reports vehicle information
    /// 雷达上报车辆信息
    /// </summary>
    public struct NET_RADAR_REPORTS_VEHICLE_INFO
    {
        /// <summary>
        /// Vehicle ID
        /// 车辆ID
        /// </summary>
        public uint nVehicleId;
        /// <summary>
        /// Vehicle Length(unit: cm)
        /// 车辆长度（单位：厘米）
        /// </summary>
        public uint nVehicleLength;
        /// <summary>
        /// Vehicle Width(unit: cm)
        /// 车辆宽度（单位：厘米）
        /// </summary>
        public uint nVehicleWidth;
        /// <summary>
        /// Vehicle Height(unit: cm)
        /// 车辆高度（单位：厘米）
        /// </summary>
        public uint nVehicleHeight;
        /// <summary>
        /// Vehicle Volume(unit: cm3)
        /// 车辆体积（单位：立方厘米）
        /// </summary>
        public uint nVehicleVolume;
        /// <summary>
        /// Lane ID
        /// 车道号
        /// </summary>
        public uint nLaneID;
        /// <summary>
        /// Vehicle direction (relative to lane direction)
        /// 车辆行驶方向(相对车道方向)
        /// </summary>
        public EM_VEHICLE_DRIVING_DIRECTION emDrivingDirection;
        /// <summary>
        /// Time when the vehicle reaches the radar detection position
        /// 车辆到达雷达检测位置的时间
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDetectTime;
        /// <summary>
        /// Vehicle baffle height(unit: cm)
        /// 车辆的挡板高度（单位：厘米）
        /// </summary>
        public uint nVehicleRailingHigh;
        /// <summary>
        /// Vehicle speed(Unit: km / h)
        /// 车辆速度(单位：千米/小时)
        /// </summary>
        public uint nVehicleSpeed;
        /// <summary>
        /// Vehicle type
        /// 车辆类型
        /// </summary>
        public EM_RADAR_DETECTION_VEHICLE_TYPE emVehicleType;
        /// <summary>
        /// Number of vehicle axles
        /// 车辆车轴个数
        /// </summary>
        public uint nAxisNum;
        /// <summary>
        /// Vehicle axle type
        /// 车辆车轴类型
        /// </summary>
        public uint nAxisType;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Trigger opportunity type
    /// 触发时机类型
    /// </summary>
    public enum EM_TRIGGER_OCCUR_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
	    EM_TRIGGER_OCCUR_TYPE_UNKNOWN = -1,
        /// <summary>
        /// Enter
        /// 进入
        /// </summary>
	    EM_TRIGGER_OCCUR_TYPE_ENTER,
        /// <summary>
        /// Leave
        /// 离开
        /// </summary>
	    EM_TRIGGER_OCCUR_TYPE_LEAVE,
    }

    /// <summary>
    /// The type of traffic light
    /// 交通灯类型
    /// </summary>
    public enum EM_TRFAFFIC_LIGHT_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
	    EM_TRFAFFIC_LIGHT_TYPE_UNKNOWN = 0,
        /// <summary>
        /// Red
        /// 红灯
        /// </summary>
	    EM_TRFAFFIC_LIGHT_TYPE_RED,
        /// <summary>
        /// Yellow
        /// 黄灯
        /// </summary>
	    EM_TRFAFFIC_LIGHT_TYPE_YELLOW,
        /// <summary>
        /// Green
        /// 绿灯
        /// </summary>
	    EM_TRFAFFIC_LIGHT_TYPE_GREEN,
    }

    /// <summary>
    /// Corresponding to data block description of event EVENT_IVS_TRAFFIC_CAR_MEASUREMENT
    /// 事件类型 EVENT_IVS_TRAFFIC_CAR_MEASUREMENT(交通卡口测量(车辆长、宽、高度、重量等)事件) 对应数据
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO
    {
        /// <summary>
        /// Channel number
        /// 通道号
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0: pulse
        /// 0:脉冲
        /// </summary>
        public int nAction;
        /// <summary>
        /// Event name
        /// 事件名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Timestamp (in milliseconds)
        /// 时间戳(单位是毫秒)
        /// </summary>
        public double PTS;
        /// <summary>
        /// Time of event
        /// 事件发生的时间
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// event file info
        /// 事件对应文件信息
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// Event ID
        /// 事件ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// Vehicle speed,km/h
        /// 车速,单位km/h	
        /// </summary>
        public uint nSpeed;
        /// <summary>
        /// Trigger type
        /// 触发类型
        /// </summary>
        public EM_TRIGGER_TYPE emTriggerType;
        /// <summary>
        /// Trigger opportunity
        /// 触发时机
        /// </summary>
        public EM_TRIGGER_OCCUR_TYPE emTriggerOccur;
        /// <summary>
        /// Mark capture frame
        /// 标记抓拍帧	
        /// </summary>
        public uint nMark;
        /// <summary>
        /// Data source address of video analysis
        /// 视频分析的数据源地址	
        /// </summary>
        public uint nSource;
        /// <summary>
        /// Video analysis frame No
        /// 视频分析帧序号
        /// </summary>
        public uint nFrameSequence;
        /// <summary>
        /// Lane ID
        /// 车道号
        /// </summary>
        public int nLaneID;
        /// <summary>
        /// Start time of red light
        /// 红灯开始的时间
        /// </summary>
        public NET_TIME_EX stuRedLightStartTime;
        /// <summary>
        /// Capture process
        /// 抓拍过程
        /// </summary>
        public EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess;
        /// <summary>
        /// Card information
        /// 卡片信息
        /// </summary>
        public NET_EVENT_CARD_INFO stuCardInfo;
        /// <summary>
        /// Vehicle direction (relative to lane direction)
        /// 车辆行驶方向(相对车道方向) 
        /// </summary>
        public EM_VEHICLE_DRIVING_DIRECTION emDrivingDirection;
        /// <summary>
        /// Type of traffic lights
        /// 交通信号灯类型
        /// </summary>
        public EM_TRFAFFIC_LIGHT_TYPE emLightState;
        /// <summary>
        /// Opening Strobe state
        /// 开闸状态
        /// </summary>
        public EM_OPEN_STROBE_STATE emOpenStrobeState;
        /// <summary>
        /// Location of the capture vehicle
        /// 抓拍车的位置
        /// </summary>
        public EM_VEHICLE_DIRECTION emVehicleDirection;
        /// <summary>
        /// Driver's seat belt status
        /// 主驾驶座位安全带状态
        /// </summary>
        public EM_SAFEBELT_STATE emMainSeat;
        /// <summary>
        /// Passenger seat belt status
        /// 副驶座位安全带状态
        /// </summary>
        public EM_SAFEBELT_STATE emSlaveSeat;
        /// <summary>
        /// Vehicle information, recording license plate number and license plate color at the front and rear of the vehicle
        /// 车辆信息，记录了车头、车尾车牌号和车牌颜色
        /// </summary>
        public NET_EVENT_PLATE_INFO stuPlateInfo;
        /// <summary>
        /// Weighing system vehicle information
        /// 称重系统车辆信息
        /// </summary>
        public NET_CAR_WEIGHT_INFO stuCarWeightInfo;
        /// <summary>
        /// Radar reports vehicle information
        /// 雷达上报车辆信息
        /// </summary>
        public NET_RADAR_REPORTS_VEHICLE_INFO stuRadarReportsVehicleInfo;
        /// <summary>
        /// Public information
        /// 公共信息
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// Detected object information
        /// 检测到的物体信息
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// Vehicle information
        /// 检测到的车辆信息
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// Traffic Vehicle information
        /// 交通车辆信息
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// / 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// / 车身信息扩展，对应NET_A_MSG_OBJECT_EX2
        /// / Vehicle body information extension, corresponding to NET_A_MSG_OBJECT_EX2
        /// </summary>
        public IntPtr pstuVehicleEx2;
		/// <summary>
        /// / Current distance from the vehicle to the front car, unit: centimeters, range: 0~500, 0 means no front following, non-zero means following distance.
        /// </summary>
        public int nDistanceHead;
        /// <summary>
        /// / Current distance from the vehicle to the rear car, unit: centimeters, range: 0~500, 0 means no rear following, non-zero means following distance.
        /// </summary>
        public int nDistanceTail;
        /// <summary>
        /// / 保留字节
        /// Reserved bytes
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1012 - 8)]
        public byte[] byResersed;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1012 - 4)]
        public byte[] byResersed;
#endif
    }

    /// <summary>
    /// burning status
    /// 刻录状态
    /// </summary>
    public enum EM_NET_BURN_STATE
    {
        /// <summary>
        /// stop
        /// 停止
        /// </summary>
        BURN_STATE_STOP,
        /// <summary>
        /// stoping
        /// 停止中
        /// </summary>
        BURN_STATE_STOPING,
        /// <summary>
        /// initialize
        /// 初始化
        /// </summary>
        BURN_STATE_INIT,
        /// <summary>
        /// burning
        /// 刻录中
        /// </summary>
        BURN_STATE_BURNING,
        /// <summary>
        /// pause
        /// 暂停
        /// </summary>
        BURN_STATE_PAUSE,
        /// <summary>
        /// changing
        /// 换盘中
        /// </summary>
        BURN_STATE_CHANGE_DISK,
        /// <summary>
        /// attachment initialize
        /// 附件初始化
        /// </summary>
        BURN_STATE_PREPARE_EXTRA_FILE,
        /// <summary>
        /// wait for attachment burning
        /// 等待附件刻录
        /// </summary>
        BURN_STATE_WAIT_EXTRA_FILE,
        /// <summary>
        /// attachment burning
        /// 附件刻录中
        /// </summary>
        BURN_STATE_UPLOAD_FILE_START,
        /// <summary>
        /// detecting disk
        /// 检测光盘中
        /// </summary>
        BURN_STATE_CHECKING_DISK,
        /// <summary>
        /// disk is ready
        /// 光盘准备就绪
        /// </summary>
        BURN_STATE_DISK_READY,
    }

    /// <summary>
    /// burning error code
    /// 刻录错误码
    /// </summary>
    public enum EM_NET_BURN_ERROR_CODE
    {
        /// <summary>
        /// normal
        /// 正常
        /// </summary>
        BURN_CODE_NORMAL,
        /// <summary>
        /// unknown error
        /// 未知错误
        /// </summary>
        BURN_CODE_UNKNOWN_ERROR,
        /// <summary>
        /// burning full
        /// 刻录满
        /// </summary>
        BURN_CODE_SPACE_FULL,
        /// <summary>
        /// start burning error
        /// 开始刻录出错
        /// </summary>
        BURN_CODE_START_ERROR,
        /// <summary>
        /// stop burning error
        /// 停止刻录出错
        /// </summary>
        BURN_CODE_STOP_ERROR,
        /// <summary>
        /// burning error
        /// 刻录出错
        /// </summary>
        BURN_CODE_WRITE_ERROR,
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        BURN_CODE_UNKNOWN,
    }

    /// <summary>
    /// CD driver tray state
    /// 光驱托盘状态
    /// </summary>
    public enum EM_NET_BURN_DEV_TRAY_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        EM_NET_BURN_DEV_TRAY_TYPE_UNKNOWN,
        /// <summary>
        /// ready
        /// 光盘就绪
        /// </summary>
        EM_NET_BURN_DEV_TRAY_TYPE_READY,
        /// <summary>
        /// open
        /// 托盘弹出
        /// </summary>
        EM_NET_BURN_DEV_TRAY_TYPE_OPEN,
        /// <summary>
        /// no disk
        /// 无盘
        /// </summary>
        EM_NET_BURN_DEV_TRAY_TYPE_NODISK,
        /// <summary>
        /// not ready
        /// 光盘未就绪
        /// </summary>
        EM_NET_BURN_DEV_TRAY_TYPE_NOT_READY,
    }

    /// <summary>
    /// CD driver using state
    /// 光驱使用状态
    /// </summary>
    public enum EM_NET_BURN_DEV_OPERATE_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        EM_NET_BURN_DEV_OPERATE_TYPE_UNKNOWN,
        /// <summary>
        /// write
        /// 执行写
        /// </summary>
        EM_NET_BURN_DEV_OPERATE_TYPE_WRITE,
        /// <summary>
        /// read
        /// 执行读
        /// </summary>
        EM_NET_BURN_DEV_OPERATE_TYPE_READ,
        /// <summary>
        /// idle
        /// 空闲
        /// </summary>
        EM_NET_BURN_DEV_OPERATE_TYPE_IDLE,
    }

    /// <summary>
    /// Burning session
    /// 刻录模式
    /// </summary>
    public enum EM_NET_BURN_MODE
    {
        /// <summary>
        /// sync
        /// 同步
        /// </summary>
        BURN_MODE_SYNC,
        /// <summary>
        /// turn
        /// 轮流
        /// </summary>
        BURN_MODE_TURN,
        /// <summary>
        /// cycle
        /// 循环
        /// </summary>
        BURN_MODE_CYCLE,
    }

    /// <summary>
    /// Extension Burning mode
    /// 刻录扩展模式
    /// </summary>
    public enum EM_NET_BURN_EXTMODE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        BURN_EXTMODE_UNKNOWN,
        /// <summary>
        /// Normal Burning
        /// 正常刻录
        /// </summary>
        BURN_EXTMODE_NORMAL = 1,
        /// <summary>
        /// Nodist Burning
        /// 无盘刻录
        /// </summary>
        BURN_EXTMODE_NODISK,
    }

    /// <summary>
    /// burning stream format
    /// 刻录流格式
    /// </summary>
    public enum EM_NET_BURN_RECORD_PACK
    {
        /// <summary>
        /// DHAV
        /// </summary>
        BURN_PACK_DHAV,
        /// <summary>
        /// PS
        /// </summary>
        BURN_PACK_PS,
        /// <summary>
        /// ASF
        /// </summary>
        BURN_PACK_ASF,
        /// <summary>
        /// MP4
        /// </summary>
        BURN_PACK_MP4,
        /// <summary>
        /// TS
        /// </summary>
        BURN_PACK_TS,
    }

    /// <summary>
    /// Format type
    /// 格式类型
    /// </summary>
    public enum EM_BACKUP_STATES
    {
        /// <summary>
        /// "Unknown"
        /// </summary>
        EM_CB_STATES_UNKNOWN,
        /// <summary>
        /// "Created"
        /// </summary>
        EM_CB_STATES_CREATED,
        /// <summary>
        /// "Ready"
        /// </summary>
        EM_CB_STATES_READY,
        /// <summary>
        /// "Running"
        /// </summary>
        EM_CB_STATES_RUNNING,
        /// <summary>
        /// "Finished"
        /// </summary>
        EM_CB_STATES_FINISHED,
        /// <summary>
        /// "Error"
        /// </summary>
        EM_CB_STATES_ERROR,
        /// <summary>
        /// "Aborted"
        /// </summary>
        EM_CB_STATES_ABORTED,
        /// <summary>
        /// "Pause"
        /// </summary>
        EM_CB_STATES_PAUSE,
    }

    /// <summary>
    /// CD driver used state
    /// 光驱使用状态
    /// </summary>
    public enum EM_NET_BURN_DEV_USED_STATE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        EM_NET_BURN_DEV_USED_STATE_UNKNOWN,
        /// <summary>
        /// stop
        /// 停止
        /// </summary>
        EM_NET_BURN_DEV_USED_STATE_STOP,
        /// <summary>
        /// buring
        /// 刻录中
        /// </summary>
        EM_NET_BURN_DEV_USED_STATE_BURNING,
    }

    /// <summary>
    /// Disk state
    /// 光盘状态
    /// </summary>
    public enum EM_DISK_STATE
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        EM_DISK_STATE_UNKNOWN,
        /// <summary>
        /// Exist disk
        /// 已放磁盘
        /// </summary>
        EM_DISK_STATE_EXIST,
        /// <summary>
        /// No disk
        /// 未放磁盘
        /// </summary>
        EM_DISK_STATE_NO_EXIST,
        /// <summary>
        /// Need change disk
        /// 需要换盘
        /// </summary>
        EM_DISK_STATE_NEED_CHANGE,
    }

    /// <summary>
    /// source mode
    /// 源模式
    /// </summary>
    public enum EM_BACKUP_SOURCE_MODE
    {
        /// <summary>
        /// "Single",/*Single backup mode*/
        /// "Single",/*单个备份模式*/
        /// </summary>
        EM_SOURCE_MODE_SINGLE,
        /// <summary>
        /// "Combin",/*Combined backup mode*/
        /// "Combin",/*合并备份模式*/
        /// </summary>
        EM_SOURCE_MODE_COMBIN,
    }

    /// <summary>
    /// backup mode
    /// 备份模式
    /// </summary>
    public enum EM_BACKUP_TARGET_MODE
    {
        /// <summary>
        /// "Sync", /*Sync backup*/
        /// "Sync", /*同步备份*/
        /// </summary>
        EM_TARGET_MODE_SYNC,
        /// <summary>
        /// "Turn", /*Training backup*/
        /// "Turn", /*轮训备份*/
        /// </summary>
        EM_TARGET_MODE_TURN,
        /// <summary>
        /// "Cycle", /*Cycle backup*/
        /// "Cycle", /*循环备份*/
        /// </summary>
        EM_TARGET_MODE_CYCLE,
    }

    /// <summary>
    /// Format type
    /// 格式类型
    /// </summary>
    public enum EM_BACKUP_FORMAT
    {
        /// <summary>
        /// "asf"
        /// </summary>
        EM_BACKUP_FORMAT_ASF,
        /// <summary>
        /// "dav"
        /// </summary>
        EM_BACKUP_FORMAT_DAV,
        /// <summary>
        /// "mp4"
        /// </summary>
        EM_BACKUP_FORMAT_MP4,
    }

    /// <summary>
    /// source types
    /// 源类型
    /// </summary>
    public enum EM_BACKUP_SOURCE_TYPE
    {
        /// <summary>
        /// "RealTime", /*Real-time source*/, the source type is valid
        /// "RealTime", /*实时源*/,源类型有效
        /// </summary>
        EM_SOURCE_TYPE_REALTIME,
        /// <summary>
        /// "Local", /*local source*/
        /// "Local", /*本地源*/
        /// </summary>
        EM_SOURCE_TYPE_LOCAL,
        /// <summary>
        /// "Network", /*Network source*/
        /// "Network", /*网络源*/
        /// </summary>
        EM_SOURCE_TYPE_NETWORK,
    }

    /// <summary>
    /// Target type
    /// 目标类型
    /// </summary>
    public enum EM_BACKUP_TARGET_TYPE
    {
        /// <summary>
        /// "Local"
        /// "Local", /*本地源*/
        /// </summary>
        EM_BACKUP_TARGET_TYPE_LOCAL,
        /// <summary>
        /// "Network"
        /// "Network", /*网络源*/
        /// </summary>
        EM_BACKUP_TARGET_TYPE_NETWORK,
    }

    /// <summary>
    /// Burner informaiton
    /// 刻录机信息
    /// </summary>
    public struct NET_DEV_BURNING
    {
        /// <summary>
        /// Burner driver type;0:DHFS,1:DISK,2:CDRW
        /// 刻录驱动器类型；0：DHFS,1：DISK,2：CDRW
        /// </summary>
        public uint dwDriverType;
        /// <summary>
        /// Bus type;0:USB,1:1394,2:IDE
        /// 总线类型；0：USB,1：1394,2：IDE, 3: SATA, 4: ESATA
        /// </summary>
        public uint dwBusType;
        /// <summary>
        /// Total space(KB)
        /// 总容量(KB)
        /// </summary>
        public uint dwTotalSpace;
        /// <summary>
        /// Free space(KB)
        /// 剩余容量(KB)
        /// </summary>
        public uint dwRemainSpace;
        /// <summary>
        /// Burner driver name
        /// 刻录驱动器名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] dwDriverName;
        /// <summary>
        /// CD driver Tray state
        /// 光驱托盘状态
        /// </summary>
        public EM_NET_BURN_DEV_TRAY_TYPE emTrayType;
        /// <summary>
        /// CD driver using state
        /// 光盘使用状态
        /// </summary>
        public EM_NET_BURN_DEV_OPERATE_TYPE emOperateType;
    }

    /// <summary>
    /// Device burner informaiton
    /// 设备刻录机信息
    /// </summary>
    public struct NET_BURNING_DEVINFO
    {
        /// <summary>
        /// Burner device amount
        /// 刻录设备个数
        /// </summary>
        public uint dwDevNum;
        /// <summary>
        /// Each burner device information
        /// 各刻录设备信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_DEV_BURNING[] stDevs;
    }

    /// <summary>
    /// CLIENT_StartBurnSession port input parameter
    /// CLIENT_StartBurnSession 接口输入参数
    /// </summary>
    public struct NET_IN_START_BURN_SESSION
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// session ID
        /// 会话ID
        /// </summary>
        public uint nSessionID;
    }

    /// <summary>
    /// CLIENT_StartBurnSession port output parameter
    /// CLIENT_StartBurnSession 接口输出参数
    /// </summary>
    public struct NET_OUT_START_BURN_SESSION
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_StartBurn port input parameter
    /// CLIENT_StartBurn 接口输入参数
    /// </summary>
    public struct NET_IN_START_BURN
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// burning device mask, by bit means multiple burning device group
        /// 刻录设备掩码, 按位表示多个刻录设备组合
        /// </summary>
        public uint dwDevMask;
        /// <summary>
        /// burning channel group
        /// 刻录通道数组
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nChannels;
        /// <summary>
        /// burning channel number
        /// 刻录通道数
        /// </summary>
        public int nChannelCount;
        /// <summary>
        /// burning mode
        /// 刻录模式
        /// </summary>
        public EM_NET_BURN_MODE emMode;
        /// <summary>
        /// burning stream format
        /// 刻录流格式
        /// </summary>
        public EM_NET_BURN_RECORD_PACK emPack;
        /// <summary>
        /// Extension Burning mode
        /// 刻录扩展模式
        /// </summary>
        public EM_NET_BURN_EXTMODE emExtMode;
    }

    /// <summary>
    /// CLIENT_StartBurn port output parameter
    /// CLIENT_StartBurn 接口输出参数
    /// </summary>
    public struct NET_OUT_START_BURN
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_BurnGetState port output parameter
    /// CLIENT_BurnGetState 接口输出参数
    /// </summary>
    public struct NET_OUT_BURN_GET_STATE
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// burning status
        /// 刻录状态
        /// </summary>
        public EM_NET_BURN_STATE emState;
        /// <summary>
        /// error code
        /// 错误码
        /// </summary>
        public EM_NET_BURN_ERROR_CODE emErrorCode;
        /// <summary>
        /// burning device mask, by bit means multiple device group
        /// 刻录设备掩码, 按位表示多个刻录设备组合
        /// </summary>
        public uint dwDevMask;
        /// <summary>
        /// burning channel group
        /// 刻录通道数组
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nChannels;
        /// <summary>
        /// burning channel number
        /// 刻录通道数
        /// </summary>
        public int nChannelCount;
        /// <summary>
        /// burning mode
        /// 刻录模式
        /// </summary>
        public EM_NET_BURN_MODE emMode;
        /// <summary>
        /// burning stream format
        /// 刻录流格式
        /// </summary>
        public EM_NET_BURN_RECORD_PACK emPack;
        /// <summary>
        /// current burning file no.
        /// 当前刻录文件编号
        /// </summary>
        public int nFileIndex;
        /// <summary>
        /// burning start time
        /// 刻录开始时间
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// burning device status
        /// 刻录设备状态
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_BURN_DEV_STATE[] stuDevState;
        /// <summary>
        /// Event operation. 0=pulse event.1=continues event begin. 2=continuous event stop
        /// 刻录剩余时间, 单位秒, -1代表无效
        /// </summary>
        public int nRemainTime;
        /// <summary>
        /// extra mode,when emExtMode = BURN_EXTMODE_NODISK,stuDevState maybe invalid
        /// 扩展模式,当为无盘刻录时，stuDevState可能无效
        /// </summary>
        public EM_NET_BURN_EXTMODE emExtMode;
		/// <summary>
        /// Burn the interrogation room number
        /// </summary>
        public uint nBurnSessionId;
    }

    /// <summary>
    /// fAttachBurnStateCB parameter
    /// fAttachBurnStateCB 参数
    /// </summary>
    public struct NET_CB_BURNSTATE
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// info type
        /// "UploadFileStart":may start to upload attachment
        /// "InitBurnDevice":initialize burning device
        /// "Burning":burning
        /// "BurnExtraFileStop":stop burning
        /// "BurnFilePause":pause burning
        /// "SpaceFull":burning space full
        /// "BurnFileError": burning error
        /// 消息类型
        /// "UploadFileStart"：可以开始附件上传
        /// "InitBurnDevice":初始化刻录设备
        /// "Burning":刻录中
        /// "BurnExtraFileStop"：刻录停止
        /// "BurnFilePause":刻录暂停
        /// "SpaceFull":刻录空间满
        /// "BurnFileError":刻录出错
        /// </summary>
        public IntPtr szState;
        /// <summary>
        /// current burning file name, use to "UploadFileStart" start upload attachment info
        /// 当前刻录附件文件名,用于"UploadFileStart"开始附件上传消息
        /// </summary>
        public IntPtr szFileName;
        /// <summary>
        /// total capacity, unit KB, use to "Burning" , display capacity or calculate progress
        /// 总容量,单位KB,用于"Burning"刻录中,显示容量或计算进度
        /// </summary>
        public uint dwTotalSpace;
        /// <summary>
        /// free capacity, unit KB, useto "Burning"
        /// 剩余容量,单位KB,用于"Burning"刻录中
        /// </summary>
        public uint dwRemainSpace;
        /// <summary>
        /// burning device name, use for different burning devices
        /// 刻录设备名称,用于区分不同的刻录设备
        /// </summary>
        public IntPtr szDeviceName;
        /// <summary>
        /// Burning remaining time. Unit is second. -1=invalid
        /// 刻录剩余时间, 单位秒, -1代表无效
        /// </summary>
        public int nRemainTime;
    }

    /// <summary>
    /// Backup status information
    /// 备份状态信息
    /// </summary>
    public struct NET_BACKUP_STATES_INFO
    {
        /// <summary>
        /// Backup progress
        /// 备份进度
        /// </summary>
        public uint nProgress;
        /// <summary>
        /// Backup state value
        /// 备份状态值
        /// </summary>
        public EM_BACKUP_STATES emState;
        /// <summary>
        /// The name of the backup device
        /// 备份的设备名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceName;
        /// <summary>
        /// reserved bytes
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string byReserved;
    }

    /// <summary>
    /// fAttachBackupTaskStateCB
    /// fAttachBackupTaskStateCB 参数
    /// </summary>
    public struct NET_CB_BACKUPTASK_STATE
    {
        /// <summary>
        /// Backup state information
        /// 备份状态信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_BACKUP_STATES_INFO[] stuStates;
        /// <summary>
        /// Number of backup state information
        /// 备份状态信息个数
        /// </summary>
        public int nStatesNum;
        /// <summary>
        /// reserved bytes
        /// 预留字节数
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string bReserved;
    }

    /// <summary>
    /// CLIENT_AttachBurnState input parameter
    /// CLIENT_AttachBurnState输入参数
    /// </summary>
    public struct NET_IN_ATTACH_STATE
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// disk name, as "/dev/sda"
        /// 光盘名称,如"/dev/sda"
        /// </summary>
        public IntPtr szDeviceName;
        /// <summary>
        /// burning listening callback
        /// 刻录监听回调
        /// </summary>
        public fAttachBurnStateCB cbAttachState;
        /// <summary>
        /// user data
        /// 用户数据
        /// </summary>
        public IntPtr dwUser;
        /// <summary>
        /// burning session handle, CLIENT_StartBurnSession retuen value. This value is 0, szDeviceName is valid, by burning device subscribe burning status
        /// 刻录会话句柄, CLIENT_StartBurnSession的返回值. 该值为0时, szDeviceName有效, 此时按刻录设备订阅刻录状态
        /// </summary>
        public IntPtr lBurnSession;
        /// <summary>
        /// extension burning listening callback
        /// 扩展刻录监听回调
        /// </summary>
        public fAttachBurnStateCBEx cbAttachStateEx;
        /// <summary>
        /// extension burninglistening callback user data
        /// 扩展刻录监听回调用户数据
        /// </summary>
        public IntPtr dwUserEx;
    }

    /// <summary>
    /// CLIENT_AttachBurnState output parameter
    /// CLIENT_AttachBurnState 输出参数
    /// </summary>
    public struct NET_OUT_ATTACH_STATE
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_BurnMarkTag port input parameter
    /// CLIENT_BurnMarkTag 接口输入参数
    /// </summary>
    public struct NET_IN_BURN_MARK_TAG
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// mark description info
        /// 标记描述信息
        /// </summary>
        public IntPtr pszDescInfo;
    }

    /// <summary>
    /// CLIENT_BurnMarkTag port output parameter
    /// CLIENT_BurnMarkTag 接口输出参数
    /// </summary>
    public struct NET_OUT_BURN_MARK_TAG
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_BurnGetState port input parameter
    /// CLIENT_BurnGetState 接口输入参数
    /// </summary>
    public struct NET_IN_BURN_GET_STATE
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// burning device status
    /// 刻录设备状态
    /// </summary>
    public struct NET_BURN_DEV_STATE
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// ROM device ID
        /// 光驱设备ID
        /// </summary>
        public int nDeviceID;
        /// <summary>
        /// ROM devicename
        /// 光驱设备名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDevName;
        /// <summary>
        /// ROM total capacity, uni KB
        /// 光驱总容量, 单位KB
        /// </summary>
        public uint dwTotalSpace;
        /// <summary>
        /// ROM remaining capacity, unit KB
        /// 光驱剩余容量, 单位KB
        /// </summary>
        public uint dwRemainSpace;
        /// <summary>
        /// ROM used state
        /// 光驱使用状态
        /// </summary>
        public EM_NET_BURN_DEV_USED_STATE emUsedType;
        /// <summary>
        /// sing ROM error
        /// 单个光驱出错状态
        /// </summary>
        public EM_NET_BURN_ERROR_CODE emError;
        /// <summary>
        /// Disk state
        /// 光盘状态
        /// </summary>
        public EM_DISK_STATE emDiskState;
    }

    /// <summary>
    /// backup source
    /// 备份源
    /// </summary>
    public struct NET_BACKUP_SOURCE
    {
        /// <summary>
        /// source type
        /// 源类型
        /// </summary>
        public EM_BACKUP_SOURCE_TYPE emSourceType;
        /// <summary>
        /// byte alignment
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string Reserved;
        /// <summary>
        /// Source path, when emSourceType is EM_BACKUP_SOURCE_TYPE_REALTIME, the corresponding format is "channel number/stream type". Example: "1/Main"
        /// Stream type: Main, Extra1, Extra2, Extra3
        /// 源路径，emSourceType为EM_BACKUP_SOURCE_TYPE_REALTIME时，对应格式"通道号/码流类型"。例："1/Main"
        /// 码流类型：Main、Extra1、Extra2、Extra3
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
        /// <summary>
        /// File name after backup
        /// 备份后的文件名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szRename;
        /// <summary>
        /// reserved bytes
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved;
    }

    /// <summary>
    /// backup purpose
    /// 备份目的
    /// </summary>
    public struct NET_BACKUP_TARGET
    {
        /// <summary>
        /// Target type
        /// 目标类型
        /// </summary>
        public EM_BACKUP_TARGET_TYPE emTargetType;
        /// <summary>
        /// reserved bytes
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string Reserved;
        /// <summary>
        /// The destination path of the backup
        /// 备份的目标路径
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
        /// <summary>
        /// File name after backup, if there is no such field, keep the original file name
        /// 备份后的文件名，如果无该字段，保留原文件名
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szRename;
        /// <summary>
        /// reserved bytes
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved;
    }


    /// <summary>
    /// Player target file backup directory
    /// </summary>
    public struct NET_BACKUP_PLAYER
    {
        /// <summary>
        /// / Path for player backup
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
        /// <summary>
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved;
    }
	
    /// <summary>
    /// CLIENT_StartBackupTask interface input parameters
    /// CLIENT_StartBackupTask接口输入参数
    /// </summary>
    public struct NET_IN_START_BACKUP_TASK_INFO
    {
        /// <summary>
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Source mode
        /// 源模式
        /// </summary>
        public EM_BACKUP_SOURCE_MODE emSourceMode;
        /// <summary>
        /// Backup mode
        /// 备份模式
        /// </summary>
        public EM_BACKUP_TARGET_MODE emTargetMode;
        /// <summary>
        /// Number of backup sources
        /// 备份源个数
        /// </summary>
        public int nSourceNum;
        /// <summary>
        /// Backup source, user allocated memory, sizeof(NET_BACKUP_SOURCE)*nSourceNum
        /// 备份源,用户分配内存,大小为sizeof(NET_BACKUP_SOURCE)*nSourceNum
        /// </summary>
        public IntPtr pstuSource;
        /// <summary>
        /// For backup purposes, the user allocates memory, the size is sizeof(NET_BACKUP_TARGET)*nTargetNum
        /// 备份目的,用户分配内存,大小为sizeof(NET_BACKUP_TARGET)*nTargetNum
        /// </summary>
        public IntPtr pstuTarget;
        /// <summary>
        /// Number of backup destinations
        /// 备份目的个数
        /// </summary>
        public int nTargetNum;
        /// <summary>
        /// The format type that the backup is expected to become
        /// 期望备份成为的格式类型
        /// </summary>
        public EM_BACKUP_FORMAT emFormat;
        /// <summary>
        /// task group ID
        /// 任务组ID
        /// </summary>
        public uint nGroupID;
        /// <summary>
        /// Whether to bring @hua player, when emFormat value dav, @hua player is required to play.
        /// 是否带私有播放器,emFormat值dav时，需要私有播放器播放。
        /// </summary>
        public bool bTakePlayer;
		/// <summary>
        /// Player target file backup directory
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_BACKUP_PLAYER[] stuPlayer;
        /// <summary>
        /// Number of valid backup directories for player target files
        /// </summary>
        public uint nPlayerNum;
    }

    /// <summary>
    /// CLIENT_StartBackupTask interface output parameters
    /// CLIENT_StartBackupTask接口输出参数
    /// </summary>
    public struct NET_OUT_START_BACKUP_TASK_INFO
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_AttachBackupTaskState input parameters
    /// CLIENT_AttachBackupTaskState 输入参数
    /// </summary>
    public struct NET_IN_ATTACH_BACKUP_STATE
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// task group ID
        /// 任务组ID
        /// </summary>
        public uint nGroupID;
        /// <summary>
        /// Subscribe to the backup state callback
        /// 订阅备份状态回调
        /// </summary>
        public fAttachBackupTaskStateCB cbAttachState;
        /// <summary>
        /// User data
        /// 用户数据
        /// </summary>
        public IntPtr dwUser;
        /// <summary>
        /// byte aligned
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved;
    }

    /// <summary>
    /// CLIENT_AttachBackupTaskState output parameters
    /// CLIENT_AttachBackupTaskState 输出参数
    /// </summary>
    public struct NET_OUT_ATTACH_BACKUP_STATE
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// Algorithm type
    /// 加密算法类型
    /// </summary>
    public enum EM_ALGORITHM_TYPE
    {
        /// <summary>
        /// Unknown
        /// 未知加密算法
        /// </summary>
        EM_ALGORITHM_TYPE_UNKNOWN,
        /// <summary>
        /// AES256-OFB
        /// AES256-OFB加密算法
        /// </summary>
        EM_ALGORITHM_TYPE_AES256_OFB,
        /// <summary>
        /// SM4_OFB
        /// SM加密算法
        /// </summary>
        EM_ALGORITHM_TYPE_SM4_OFB,
    }

    /// <summary>
    /// Encrypt or not
    /// 是否加密
    /// </summary>
    public enum EM_IS_ENCRYPT
    {
        /// <summary>
        /// Unknown
        /// 未知
        /// </summary>
        EM_IS_ENCRYPT_UNKNOWN,
        /// <summary>
        /// yes
        /// 已加密
        /// </summary>
        EM_IS_ENCRYPT_YES,
        /// <summary>
        /// no
        /// 未加密
        /// </summary>
        EM_IS_ENCRYPT_NO,
    }

    /// <summary>
    /// Is the current VK
    /// 是否当前vk
    /// </summary>
    public enum EM_IS_CURRENT_VK
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        EM_IS_CURRENT_VK_UNKNOWN,
        /// <summary>
        /// current
        /// 当前
        /// </summary>
        EM_IS_CURRENT_VK_CURRENT,
        /// <summary>
        /// previous
        /// 之前
        /// </summary>
        EM_IS_CURRENT_VK_PRE,
    }

    /// <summary>
    /// VK info
    /// VK二值对信息
    /// </summary>
    public struct NET_VKINFO
    {
        /// <summary>
        /// VKID
        /// VKID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szVKID;
        /// <summary>
        /// VK
        /// VK
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szVK;
        /// <summary>
        /// AlgorithmType
        /// 加密算法类型
        /// </summary>
        public EM_ALGORITHM_TYPE emAlgorithmType;
        /// <summary>
        /// Return VKID len
        /// 返回的VKID字段的实际大小
        /// </summary>
        public int nRetVKIDLen;
        /// <summary>
        /// Return VK len
        /// 返回的VK实际大小
        /// </summary>
        public int nRetVKLen;
        /// <summary>
        /// Encrypt or not
        /// 是否加密
        /// </summary>
        public EM_IS_ENCRYPT emIsEncrypt;
        /// <summary>
        /// Is the current VK  0: unknown, 1: current, 2: previous
        /// 是否是当前VK  0 ：未知，1：当前， 2：之前
        /// </summary>
        public EM_IS_CURRENT_VK emIsCurrent;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 492)]
        public byte[] szReserved;
    }

    /// <summary>
    /// CLIENT_RealPlayEx2 Interface into the reference
    /// CLIENT_RealPlayEx2 接口入参
    /// </summary>
    public struct NET_IN_REALPLAY
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// channel
        /// 通道
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// type
        /// 类型
        /// </summary>
        public EM_RealPlayType rType;
        /// <summary>
        /// Reserved
        /// 预留字段
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] szReserved;
        /// <summary>
        /// wnd handle
        /// 窗口句柄
        /// </summary>
        public IntPtr hWnd;
        /// <summary>
        /// Real-time data callback
        /// 实时数据回调
        /// </summary>
        public fRealDataCallBackEx2 cbRealData;
        /// <summary>
        /// Callback of raw codestream data
        /// 原始码流数据回调
        /// </summary>
        public fOriginalRealDataCallBack pOriginalRealDataCallBack;
        /// <summary>
        /// Add cipher stream data callback
        /// 加密码流数据回调
        /// </summary>
        public fEncryptRealDataCallBackEx pEncryptRealDataCallBackEx;
        /// <summary>
        /// Disconnect the callback
        /// 断线回调
        /// </summary>
        public fRealPlayDisConnectCallBack cbDisconnect;
        /// <summary>
        /// VK message callback
        /// VK信息回调
        /// </summary>
        public fVKInfoCallBack pVKInfoCallBack;
        /// <summary>
        /// user info
        /// 用户参数
        /// </summary>
        public IntPtr dwUser;
        /// <summary>
        /// / 是否同步等待错误码
        /// Whether to synchronize and wait for error codes
        /// </summary>
        public bool bWait;
    }

    /// <summary>
    /// CLIENT_RealPlayEx2 The ginseng
    /// CLIENT_RealPlayEx2 出参
    /// </summary>
    public struct NET_OUT_REALPLAY
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 图片与智能事件信息
    /// Picture and smart event information
    /// </summary>
    public struct NET_FILE_PROCESS_INFO
    {
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// the number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 违章关联的多个视频信息个数
        /// Number of multiple video information associated with violation
        /// </summary>
        public int nRelatingVideoInfoNum;
        /// <summary>
        /// 违章关联的多个视频信息数组，最多支持16个视频
        /// Multiple video information arrays associated with violations, supporting up to 16 videos
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_RELATING_VIDEO_INFO[] stuRelatingVideoInfo;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// the describe of EVENT_ALARM_LOCALALARM and EVENT_ALARM_MOTIONALARM's data
    /// 报警事件类型 EVENT_ALARM_LOCALALARM(外部报警),EVENT_ALARM_MOTIONALARM(动检报警)报警)
    /// </summary>
    public struct NET_DEV_EVENT_ALARM_INFO
    {
        /// <summary>
        /// 通道号
        /// channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// evnent name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 保留字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string Reserved;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// evnet ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 公共信息
        /// public info
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte byEventAction;
        /// <summary>
        /// 保留字节
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved;
        /// <summary>
        /// 传感器类型
        /// Sense Type
        /// </summary>
        public EM_SENSE_METHOD emSenseType;
        /// <summary>
        /// 防区类型
        /// Defence Area Type
        /// </summary>
        public EM_NET_DEFENCE_AREA_TYPE emDefenceAreaType;
        /// <summary>
        /// GPS信息
        /// GPS info
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPS;
        /// <summary>
        /// 本地报警时登陆的用户ID
        /// loign user ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// 本地报警时登陆的用户名
        /// loign user name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserName;
        /// <summary>
        /// 设备序列号
        /// s/n number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 外部输入报警
        /// alarm input
        /// </summary>
        public bool bExAlarmIn;
        /// <summary>
        /// 图片与智能事件信息
        /// Picture and smart event information
        /// </summary>
        public NET_FILE_PROCESS_INFO stuFileProcessInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// Zone
    /// 区域
    /// </summary>
    public struct NET_AV_CFG_Rect
    {
        public int nStructSize;
        public int nLeft;
        public int nTop;
        public int nRight;
        public int nBottom;
    }

    /// <summary>
    /// TV wall output mode information
    /// 电视墙输出模式信息
    /// </summary>
    public struct NET_AV_CFG_MONITOR_WALL_OUT_MODE_INFO
    {
        /// <summary>
        /// Horizontal resolution
        /// 水平分辨率
        /// </summary>
        public int nWidth;
        /// <summary>
        /// Vertical resolution
        /// 垂直分辨率
        /// </summary>
        public int nHeight;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Video wall output channel info
    /// 电视墙输出通道信息
    /// </summary>
    public struct NET_AV_CFG_MonitorWallTVOut
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public int nStructSize;
        /// <summary>
        /// Device ID. It is "null" or "Local"(local device)
        /// 设备ID, 为空或"Local"表示本地设备
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
        /// <summary>
        /// Channel ID
        /// 通道ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// Screen name
        /// 屏幕名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// Whether it is a virtual screen (virtual screen means a screen that does not exist on this device)TRUE: virtual screen FALSE: non virtual screen
        /// 是否是虚拟屏（虚拟屏表示在本设备上不存在的屏）TRUE:虚拟屏 FALSE:非虚拟屏
        /// </summary>
        public bool bIsVirtual;
        /// <summary>
        /// Home device address IP
        /// 归属设备地址IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szAddress;
        /// <summary>
        /// Output mode information
        /// 输出模式信息
        /// </summary>
        public NET_AV_CFG_MONITOR_WALL_OUT_MODE_INFO stuOutMode;
        /// <summary>
        /// / 相对物理坐标系下水平方向起始位置
        /// / Horizontal starting position in relative physical coordinate system
        /// </summary>
        public int nPosX;
        /// <summary>
        /// / 相对物理坐标系下垂直方向起始位置
        /// / Vertical starting position in relative physical coordinate system
        /// </summary>
        public int nPosY;
    }

    /// <summary>
    /// Video wall zone
    /// 电视墙区块
    /// </summary>
    public struct NET_AV_CFG_MonitorWallBlock
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public int nStructSize;
        /// <summary>
        /// Row amount of each TV
        /// 单个TV占的网格行数
        /// </summary>
        public int nLine;
        /// <summary>
        /// Column amount of each TV
        /// 单个TV占的网格列数
        /// </summary>
        public int nColumn;
        /// <summary>
        /// Coordinates of the zone
        /// 区块的区域坐标
        /// </summary>
        public NET_AV_CFG_Rect stuRect;
        /// <summary>
        /// TV amount
        /// TV数量
        /// </summary>
        public int nTVCount;
        /// <summary>
        /// TV array
        /// TV数组
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_AV_CFG_MonitorWallTVOut[] stuTVs;
        /// <summary>
        /// open or close time
        /// 开关机时间
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 42)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// region name
        /// 区块名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// composite ID
        /// 融合屏ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCompositeID;
        /// <summary>
        /// display unit block type
        /// 显示单元组类型,为支持由接收卡组成单元的小间距LED区块而增加该字段,其他类型的区块填写为"LCD",如不存在该字段,默认采用LCD
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szBlockType;
        /// <summary>
        /// Output delay unit: ms
        /// 输出延迟,单位：毫秒
        /// </summary>
        public int nOutputDelay;
    }

    /// <summary>
    /// Video wall
    /// 电视墙
    /// </summary>
    public struct NET_AV_CFG_MonitorWall
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public int nStructSize;
        /// <summary>
        /// Name
        /// 名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// Network row amount
        /// 网络行数
        /// </summary>
        public int nLine;
        /// <summary>
        /// Network column amount
        /// 网格列数
        /// </summary>
        public int nColumn;
        /// <summary>
        /// Zone amount
        /// 区块数量
        /// </summary>
        public int nBlockCount;
        /// <summary>
        /// Zone array
        /// 区块数组
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_AV_CFG_MonitorWallBlock[] stuBlocks;
        /// <summary>
        /// unable or not, 0-this TV wall is valid, 1-The TV wall is invalid
        /// 是否禁用, 0-该电视墙有效, 1-该电视墙无效
        /// </summary>
        public bool bDisable;
        /// <summary>
        /// TV wall description info 
        /// 电视墙描述信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szDesc;
        /// <summary>
        /// / 电视墙坐标系类型, 0:未知, 1:8192相对坐标系, 2:物理坐标系
        /// / TV wall coordinate system type, 0: unknown, 1: 8192 relative coordinate system, 2: physical coordinate system
        /// </summary>
        public int nCoordinateType;
    }

    /// <summary>
    /// Remote channel
    /// 远程通道
    /// </summary>
    public struct NET_AV_CFG_RemoteChannel
    {
        public int nStructSize;
        /// <summary>
        /// 使能
        /// enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 设备ID
        /// device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
        /// <summary>
        /// 通道号
        /// channel number
        /// </summary>
        public int nChannel;
    }

    /// <summary>
    /// Intelligent rules to detect human faces, automatic exposure configuration according to the detection area (NET_EM_CFG_VIDEOIN_FACE_AUTOEXPOSURE)
    /// 智能规则检测人脸，根据检测区域自动曝光配置 (对应命令 NET_EM_CFG_VIDEOIN_FACE_AUTOEXPOSURE )
    /// </summary>
    public struct NET_CFG_VIDEOIN_FACE_AUTOEXPOSURE_INFO
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// enable
        /// 是否开启
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 2A Face exposure interval check time: the current face leaves the screen and the brightness of the screen is maintained, unit second, range [0, 100]
        /// 2A人脸曝光间隔检测时间：当前人脸离开画面，画面亮度保持的时间，单位秒,范围[0, 100]
        /// </summary>
        public uint nInterval;
        /// <summary>
        /// taiget brightness, range[0, 100]
        /// 亮度等级,范围[0, 100]
        /// </summary>
        public uint nTargetBrightness;
    }

    /// <summary>
    /// CLIENT_QueryDevInfo NET_QUERY_PTZBASE_GET_HFOV_VALUE Type interface input parameters
    /// CLIENT_QueryDevInfo NET_QUERY_PTZBASE_GET_HFOV_VALUE 类型接口输入参数
    /// </summary>
    public struct NET_IN_PTZBASE_GET_HFOV_VALUE
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// The channel number starts from 0
        /// 通道号从0开始
        /// </summary>
        public int nChannel;
        /// <summary>
        /// Lens zoom value, normalized to 0~1
        /// 镜头变倍值,归一化到0~1
        /// </summary>
        public float fZoom;
    }

    /// <summary>
    /// CLIENT_QueryDevInfo NET_QUERY_PTZBASE_GET_HFOV_VALUE Type interface output parameters
    /// CLIENT_QueryDevInfo NET_QUERY_PTZBASE_GET_HFOV_VALUE 类型接口输出参数
    /// </summary>
    public struct NET_OUT_PTZBASE_GET_HFOV_VALUE
    {
        /// <summary>
        /// structure size
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Corresponding to the horizontal field of view of the magnification, the unit is 0.01 degrees, and it is expressed by 100 times
        /// 对应倍率水平视场角,单位0.01度，扩大100倍表示
        /// </summary>
        public int nValue;
        /// <summary>
        /// The minimum horizontal angle of view of the lens, the unit is the same as nValue
        /// 镜头最小水平视场角,单位同nValue
        /// </summary>
        public int nMinValue;
        /// <summary>
        /// The maximum horizontal field of view of the lens, the unit is the same as nValue
        /// 镜头最大水平视场角,单位同nValue
        /// </summary>
        public int nMaxValue;
    }

    /// <summary>
    /// light info
    /// 灯光信息
    /// </summary>
    public struct NET_LIGHT_INFO
    {
        /// <summary>
        /// lighting percent
        /// 亮度百分比
        /// </summary>
        public int nLight;
        /// <summary>
        /// angle
        /// 激光灯角度归一化值
        /// </summary>
        public int nAngle;
    }

    /// <summary>
    /// light type
    /// 灯光类型
    /// </summary>
    public enum EM_CFG_LC_LIGHT_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        EM_CFG_LC_LIGHT_TYPEUNKNOWN,
        /// <summary>
        /// infrared light
        /// 红外灯
        /// </summary>
        EM_CFG_LC_LIGHT_TYPE_INFRAREDLIGHT,
        /// <summary>
        /// wight kight
        /// 白光灯
        /// </summary>
        EM_CFG_LC_LIGHT_TYPE_WIHTELIGHT,
        /// <summary>
        /// laser light
        /// 激光灯
        /// </summary>
        EM_CFG_LC_LIGHT_TYPE_LASERLIGHT,
        /// <summary>
        /// aimix light
        /// 智能混光灯(根据智能ID切换红外和白光灯)
        /// </summary>
        EM_CFG_LC_LIGHT_TYPE_AIMIXLIGHT,
        /// <summary>
        /// polot light
        /// 指示灯
        /// </summary>
        EM_CFG_LC_LIGHT_TYPE_PILOTLIGHT,
    }

    /// <summary>
    /// light mode
    /// 灯光模式
    /// </summary>
    public enum EM_CFG_LC_MODE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        EM_CFG_LC_MODE_UNKNOWN,
        /// <summary>
        /// manual
        /// 手动
        /// </summary>
        EM_CFG_LC_MODE_MANUAL,
        /// <summary>
        /// zoom prio
        /// 倍率优先
        /// </summary>
        EM_CFG_LC_MODE_ZOOMPRIO,
        /// <summary>
        /// timing
        /// 定时(废弃)
        /// </summary>
        EM_CFG_LC_MODE_TIMING,
        /// <summary>
        /// auto
        /// 自动
        /// </summary>
        EM_CFG_LC_MODE_AUTO,
        /// <summary>
        /// off
        /// 关闭灯光
        /// </summary>
        EM_CFG_LC_MODE_OFF,
        /// <summary>
        /// exclusive manual
        /// 支持多种灯光(废弃)
        /// </summary>
        EM_CFG_LC_MODE_EXCLUSIVEMANUAL,
        /// <summary>
        /// smart light
        /// 智能灯光(废弃)
        /// </summary>
        EM_CFG_LC_MODE_SMARTLIGHT,
        /// <summary>
        /// linking
        /// 事件联动(废弃)
        /// </summary>
        EM_CFG_LC_MODE_LINKING,
        /// <summary>
        /// dusktodawn
        /// 光敏
        /// </summary>
        EM_CFG_LC_MODE_DUSKTODAWN,
        /// <summary>
        /// force on
        /// 强制打开灯光
        /// </summary>
        EM_CFG_LC_MODE_FORCEON,
    }

    /// <summary>
    /// Light Sensitivity configuration cell
    /// 补光灯灵敏度配置信息单元
    /// </summary>
    public struct NET_CFG_LIGHTING_V2_UNIT
    {
        /// <summary>
        /// light type
        /// 灯光类型
        /// </summary>
        public EM_CFG_LC_LIGHT_TYPE emLightType;
        /// <summary>
        /// light mode
        /// 灯光模式
        /// </summary>
        public EM_CFG_LC_MODE emMode;
        /// <summary>
        /// light correction
        /// 灯光补偿
        /// </summary>
        public int nCorrection;
        /// <summary>
        /// light sensitive
        /// 灯光灵敏度
        /// </summary>
        public int nSensitive;
        /// <summary>
        /// light switch delay
        /// 补光灯开关延时
        /// </summary>
        public int nLightSwitchDelay;
        /// <summary>
        /// nearLight array info
        /// 近光灯组信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = SDK_CONST_NUM.CFG_LC_LIGHT_COUNT)]
        public NET_LIGHT_INFO[] anNearLight;
        /// <summary>
        /// nearLight array number
        /// 近光灯组数量
        /// </summary>
        public int nNearLightLen;
        /// <summary>
        /// MidLight array info
        /// 中光灯组信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = SDK_CONST_NUM.CFG_LC_LIGHT_COUNT)]
        public NET_LIGHT_INFO[] anMiddleLight;
        /// <summary>
        /// MidLight array number
        /// 中光灯组数量
        /// </summary>
        public int nMiddleLightLen;
        /// <summary>
        /// FarLight array info
        /// 远光灯组信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = SDK_CONST_NUM.CFG_LC_LIGHT_COUNT)]
        public NET_LIGHT_INFO[] anFarLight;
        /// <summary>
        /// FarLight array number
        /// 远光灯组数量
        /// </summary>
        public int nFarLightLen;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;
    }

    /// <summary>
    /// day and night Light Sensitivity configuration
    /// 白天黑夜补光灯灵敏度配置
    /// </summary>
    public struct NET_CFG_LIGHTING_V2_DAYNIGHT
    {
        /// <summary>
        /// light info
        /// 各类型灯光信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = SDK_CONST_NUM.LC_LIGHT_TYPE_NUM)]
        public NET_CFG_LIGHTING_V2_UNIT[] anLightInfo;
        /// <summary>
        /// number of light type
        /// 灯光类型数量
        /// </summary>
        public int nLightInfoLen;
    }

    /// <summary>
    /// Light Sensitivity configuration
    /// 补光灯灵敏度配置
    /// </summary>
    public struct NET_CFG_LIGHTING_V2_INFO
    {
        /// <summary>
        /// channel
        /// 通道
        /// </summary>
        public int nChannel;
        /// <summary>
        /// day or night lightInfo number
        /// 白天黑夜对应灯光配置数量
        /// </summary>
        public int nDNLightInfoNum;
        /// <summary>
        /// day or night lightInfo number
        /// 白天黑夜对应灯光配置， 从元素0开始分别表示 白天、夜晚、普通、顺光、一般逆光、强逆光、低照度、自定义
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = SDK_CONST_NUM.CFG_LC_LIGHT_CONFIG)]
        public NET_CFG_LIGHTING_V2_DAYNIGHT[] anDNLightInfo;
    }

    /// <summary>
    /// radar alarm type
    /// 雷达报警类型
    /// </summary>
    public enum EM_RADAR_ALARM_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        EM_RADAR_ALARM_TYPE_UNKNOWN,
        /// <summary>
        /// type alarm
        /// 报警
        /// </summary>
        EM_RADAR_ALARM_TYPE_ALARM,
        /// <summary>
        /// type warning
        /// 预警
        /// </summary>
        EM_RADAR_ALARM_TYPE_WARNING,
    }

    /// <summary>
    /// radar detect object type
    /// 雷达检测对象类型
    /// </summary>
    public enum EM_RADAR_DETECT_OBJECT_TYPE
    {
        /// <summary>
        /// unknown
        /// 未知
        /// </summary>
        EM_RADAR_DETECT_OBJECT_UNKNOWN,
        /// <summary>
        /// human
        /// 人
        /// </summary>
        EM_RADAR_DETECT_OBJECT_HUMAN,
        /// <summary>
        /// vehicle
        /// 车
        /// </summary>
        EM_RADAR_DETECT_OBJECT_VEHICLE
    }

    /// <summary>
    /// radar detect object
    /// 雷达检测对象
    /// </summary>
    public struct NET_RADAR_DETECT_OBJECT
    {
        /// <summary>
        /// object id
        /// 物体ID
        /// </summary>
        public int nObjectID;
        /// <summary>
        /// object type
        /// 物体类型
        /// </summary>
        public EM_RADAR_DETECT_OBJECT_TYPE emObjectType;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved;
    }

    /// <summary>
    /// event of radar line detection info
    /// 事件类型EVENT_IVS_RADAR_LINE_DETECTION(雷达拌线入侵/绊线检测事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_RADAR_LINE_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Rule ID,used to indicate which rule triggers
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 智能事件所属大类
        /// Event class
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 事件对应文件信息
        /// Event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 检测到的对象个数
        /// The number of object
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// 雷达检测对象列表
        /// The list of objects which was detected
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_RADAR_DETECT_OBJECT[] stuObjects;
        /// <summary>
        /// 事件触发的预置点号
        /// PresetID
        /// </summary>
        public int nPresetID;
        /// <summary>
        /// 检测区域顶点数
        /// The number of stuDetectRegion
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 检测区域,[0,8191]
        /// The region of alarm occur, [0,8191]
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 全景广角图（当图片超过1张时 使用stuSceneImageEx）
        /// Scene image(UsestuSceneImageEx when there is more than one image)
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 报警等级
        /// Alarm level
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szAlarmLevel;
        /// <summary>
        /// 报警输入通道号
        /// Alarm input channel number
        /// </summary>
        public int nAlarmChannel;
        /// <summary>
        /// 全景广角图（扩展为10张）
        /// Panoramic wide-angle view (expanded to 10)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_SCENE_IMAGE_INFO_EX[] stuSceneImageEx;
        /// <summary>
        /// 全景广角图个数
        /// Number of panoramic wide-angle images
        /// </summary>
        public int nstuSceneImageExNum;
        /// <summary>
        /// 报警类型
        /// Alarm type
        /// </summary>
        public EM_RADAR_ALARM_TYPE emAlarmType;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// RFID card info
    /// RFID卡信息
    /// </summary>
    public struct NET_RFID_CARD_INFO
    {
        /// <summary>
        /// RFID卡片ID
        /// Rfid card id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
        public string szCardId;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// event of radar region detection info
    /// 事件类型EVENT_IVS_RADAR_REGION_DETECTION(雷达区域入侵检测事件)对应的数据块描述信息
    /// </summary>
    public struct NET_DEV_EVENT_RADAR_REGION_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Rule ID,used to indicate which rule triggers
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 智能事件所属大类
        /// Event class
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 事件对应文件信息
        /// Event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 检测到的对象个数
        /// The number of object
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// 雷达检测对象列表
        /// The list of objects which was detected
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_RADAR_DETECT_OBJECT[] stuObjects;
        /// <summary>
        /// 事件触发的预置点号
        /// PresetID
        /// </summary>
        public int nPresetID;
        /// <summary>
        /// 检测区域顶点数
        /// The number of stuDetectRegion
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 检测区域,[0,8191]
        /// The region of alarm occur, [0,8191]
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 全景广角图（当图片超过1张时 使用stuSceneImageEx）
        /// Scene image(UsestuSceneImageEx when there is more than one image)
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 报警类型
        /// AlarmType
        /// </summary>
        public EM_RADAR_ALARM_TYPE emAlarmType;
        /// <summary>
        /// 报警等级
        /// Alarm level
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szAlarmLevel;
        /// <summary>
        /// 报警输入通道号
        /// Alarm input channel number
        /// </summary>
        public int nAlarmChannel;
        /// <summary>
        /// RFID卡片信息个数
        /// RFID Number of card information
        /// </summary>
        public int nRFIDCardIdNum;
        /// <summary>
        /// RFID卡片信息，最多支持256张卡片信息
        /// RFID Card information, Up to 256 card information is supported
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_RFID_CARD_INFO[] stuRFIDCardId;
        /// <summary>
        /// 全景广角图（扩展为10张）
        /// Panoramic wide-angle view (expanded to 10)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_SCENE_IMAGE_INFO_EX[] stuSceneImageEx;
        /// <summary>
        /// 全景广角图个数
        /// Number of panoramic wide-angle images
        /// </summary>
        public int nstuSceneImageExNum;
        /// <summary>
        /// 触发事件目标的速度，用整型传输，扩大100倍 单位m/s
        /// The speed of the trigger event target, transmitted by integer, expanded by 100 times, unit m/s
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// 触发事件目标的id,范围[0,63]
        /// id of trigger event target, range [0,63]
        /// </summary>
        public int nTrackID;
        /// <summary>
        /// 触发事件目标的类型的掩码: 0x00未识别目标 0x01目标为人 0x02目标为交通工具 0x03目标为树 0x04目标为建筑物 0x05目标为屏幕 0x06目标为动物 0x07目标为大船 0x08目标为中船 0x09目标为小船
        /// Mask of the type of trigger event target: 0x00 unidentified target, 0x01 target is human, 0x02 target is vehicle, 0x03 target is tree, 0x04 target is building, 0x05 target is screen, 0x06 target is animal, 0x07 targets large ships, 0x08 targets medium ships, and 0x09 targets small ships
        /// </summary>
        public int nObjectType;
        /// <summary>
        /// 报警标志位，第0bit位表示是否超速，第1bit位表示是否AIS匹配 第2bit位表示是否禁行 第3bit位表示是否逆行
        /// Alarm flag bit, the 0th bit indicates whether it is overspeeding, and the 1st bit indicates whether the AIS matches The 2nd bit indicates whether the line is prohibited, and the 3rd bit indicates whether it is retrograde
        /// </summary>
        public int nAlarmFlag;
        /// <summary>
        /// 经度，用整型传输，1000000倍，小数点后6位有效，不足6位用0补齐
        /// longitude,Use integer transmission, 1000000 times, valid for 6 digits after the decimal point, and make up for less than 6 digits with 0
        /// </summary>
        public int nLongitude;
        /// <summary>
        /// 纬度，用整型传输，1000000倍，小数点后6位有效，不足6位用0补齐
        /// Latitude Use integer transmission, 1000000 times, valid for 6 digits after the decimal point, and make up for less than 6 digits with 0
        /// </summary>
        public int nLatitude;
        /// <summary>
        /// 车道/航道方向 -1:未知 0:无效 1:上行 2:下行
        /// Lane / channel direction - 1: unknown 0: invalid 1: up 2: down
        /// </summary>
        public int nUpDownGoing;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 当前触发事件目标的像素极坐标值--距离，扩大100倍的结果,单位米
        /// Pixel polar coordinate value of current trigger event target -- distance, result of 100 times expansion, unit: meter
        /// </summary>
        public int nDistance;
        /// <summary>
        /// 当前触发事件目标的极坐标值--角度，扩大100倍的结果，单位度
        /// Polar coordinate value of current trigger event target -- angle, result of 100 times expansion, unit:degree
        /// </summary>
        public int nAngle;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 988)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 防区状态
    /// defense state
    /// </summary>
    public enum EM_DEFENSE_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_DEFENSE_STATE_UNKNOWN,
        /// <summary>
        /// 布防
        /// arming
        /// </summary>
        EM_DEFENSE_STATE_ARMING,
        /// <summary>
        /// 撤防
        /// disarming
        /// </summary>
        EM_DEFENSE_STATE_DISARMING,
    }

    /// <summary>
    /// 防区状态数组，最多10个防区
    /// defense state array, MAX=10
    /// </summary>
    public struct NET_DEFENSE_STATE
    {
        /// <summary>
        /// 防区状态
        /// defense state
        /// </summary>
        public EM_DEFENSE_STATE emState;
        /// <summary>
        /// 防区ID
        /// defense id
        /// </summary>
        public int nDefenseID;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 NET_ALARM_DEFENSE_CHANGE (撤布防事件) 对应的数据块描述信息
    /// alrm defense change event info
    /// </summary>
    public struct NET_ALARM_DEFENSE_CHANGE_INFO
    {
        /// <summary>
        /// 通道
        /// channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// action 0:pulse 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// class type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 防区状态个数
        /// defense state number
        /// </summary>
        public int nDefenseStateNum;
        /// <summary>
        /// 防区状态数组，最多10个防区
        /// defense state array, MAX=10
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_DEFENSE_STATE[] stuDefenseState;
        /// <summary>
        /// 控制布撤防事件来源的标志位(0：未知；1：遥控器控制)
        /// The flag that controls the source of the arm and disarm events (0: unknown; 1: remote control)
        /// </summary>
        public int nSourceFlag;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 显示云台坐标的叠加配置 PTZ_COORDINATES
    /// Superposition configuration of PTZ coordinates
    /// </summary>
    public struct NET_OSD_CFG_PTZ_COORDINATES
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 显示时间,单位为秒，0 表示一直显示,自定义范围：1-3600
        /// time show, unit:s, 0:always, custom:1~3600s
        /// </summary>
        public int nDisplayTime;
        /// <summary>
        /// 叠加到主码流视频编码
        /// Video coding superimposed on main code stream
        /// </summary>
        public bool bEncodeBlend;
        /// <summary>
        /// 是否叠加到预览显示
        /// Whether to overlay to preview display
        /// </summary>
        public bool bPreviewBlend;
        /// <summary>
        /// 前景色
        /// Foreground color
        /// </summary>
        public NET_COLOR_RGBA stuFrontColor;
        /// <summary>
        /// 背景色
        /// Background color
        /// </summary>
        public NET_COLOR_RGBA stuBackColor;
        /// <summary>
        /// 区域, 坐标取值[0~8191], 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
        /// Zone. The coordinates value ranges from  0 to 8191. Only use left value and top value.The point (left,top) shall be the same as the point(right,bottom).
        /// </summary>
        public NET_RECT stuRect;
    }

    /// <summary>
    /// 电源电流状态类型
    /// current state
    /// </summary>
    public enum EM_CURRENT_STATE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_CURRENT_STATE_UNKNOWN = 0,
        /// <summary>
        /// 电流过载
        /// over current
        /// </summary>
        EM_CURRENT_STATE_OVER_CURRENT,
        /// <summary>
        /// 电流正常
        /// normal
        /// </summary>
        EM_CURRENT_STATE_NORMAL,
        /// <summary>
        /// 电源欠流
        /// under current
        /// </summary>
        EM_CURRENT_STATE_UNDER_CURRENT,
    }

    /// <summary>
    /// 电源电压状态类型
    /// voltage state
    /// </summary>
    public enum EM_VOLTAGE_STATE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_VOLTAGE_STATE_UNKNOWN,
        /// <summary>
        /// 过压
        /// over
        /// </summary>
        EM_VOLTAGE_STATE_OVER,
        /// <summary>
        /// 正常
        /// normal
        /// </summary>
        EM_VOLTAGE_STATE_NORMAL,
        /// <summary>
        /// 欠压
        /// under
        /// </summary>
        EM_VOLTAGE_STATE_UNDER,
    }

    /// <summary>
    /// 电源信息
    /// power info
    /// </summary>
    public struct NET_POWER_INFO
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 电源状态, 0-关闭, 1-打开, 2-打开但有故障
        /// power state, 0-close, 1-open, 2-open & fault
        /// </summary>
        public bool bPowerOn;
        /// <summary>
        /// 电源电流状态
        /// current state
        /// </summary>
        public EM_CURRENT_STATE_TYPE emCurrentState;
        /// <summary>
        /// 电源电压状态
        /// voltage state
        /// </summary>
        public EM_VOLTAGE_STATE_TYPE emVoltageState;
    }

    /// <summary>
    /// 电池在位状态
    /// battery exist state
    /// </summary>
    public enum EM_BATTERY_EXIST_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_BATTERY_EXIST_STATE_UNKNOWN = 0,
        /// <summary>
        /// 电池在位
        /// exist
        /// </summary>
        EM_BATTERY_EXIST_STATE_EXIST,
        /// <summary>
        /// 电池丢失
        /// missing
        /// </summary>
        EM_BATTERY_EXIST_STATE_MISSING,
    }

    /// <summary>
    /// 电池电量状态
    /// battery state
    /// </summary>
    public enum EM_BATTERY_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_BATTERY_STATE_UNKNOWN = 0,
        /// <summary>
        /// 电量正常
        /// normal
        /// </summary>
        EM_BATTERY_STATE_NORMAL,
        /// <summary>
        /// 电量低
        /// low
        /// </summary>
        EM_BATTERY_STATE_LOW,
    }

    /// <summary>
    /// 电池温度状态
    /// Battery  status
    /// </summary>
    public enum EM_BATTERY_TEMPER_STATE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_BATTERY_TEMPER_STATE_UNKNOWN,
        /// <summary>
        /// 温度过低
        /// 
        /// </summary>
        EM_BATTERY_TEMPER_STATE_LOW_TEMPER,
        /// <summary>
        /// 常温
        /// normalTemper
        /// </summary>
        EM_BATTERY_TEMPER_STATE_NORMAL_TEMPER,
        /// <summary>
        /// 温度过高
        /// 
        /// </summary>
        EM_BATTERY_TEMPER_STATE_HIGH_TEMPER,
        /// <summary>
        /// 超温
        /// overTemper
        /// </summary>
        EM_BATTERY_TEMPER_STATE_OVER_TEMPER,
        /// <summary>
        /// 异常
        /// abnormalTemper
        /// </summary>
        EM_BATTERY_TEMPER_STATE_ABNORMAL_TEMPER,
    }

    /// <summary>
    /// 电池信息, CLIENT_QueryDevState接口的 DH_DEVSTATE_POWER_STATE 命令参数
    /// battery info, 
    /// </summary>
    public struct NET_BATTERY_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 电池容量百分比
        /// Battery Capacity Percentage
        /// </summary>
        public int nPercent;
        /// <summary>
        /// 是否正在充电
        /// Whether real charging
        /// </summary>
        public bool bCharging;
        /// <summary>
        /// 电池在位状态
        /// battery in-place status
        /// </summary>
        public EM_BATTERY_EXIST_STATE emExistState;
        /// <summary>
        /// 电池电量状态
        /// battery power status
        /// </summary>
        public EM_BATTERY_STATE emState;
        /// <summary>
        /// 电池电压
        /// battery voltage
        /// </summary>
        public float fVoltage;
        /// <summary>
        /// 电池温度状态
        /// Battery  status
        /// </summary>
        public EM_BATTERY_TEMPER_STATE emTemperState;
    }

    /// <summary>
    /// 电源状态
    /// power status
    /// </summary>
    public struct NET_POWER_STATUS
    {
        public uint dwSize;
        /// <summary>
        /// 查询是否成功
        /// Search succeeded or not
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 电源数量
        /// Power amount
        /// </summary>
        public int nCount;
        /// <summary>
        /// 电源状态
        /// Power status
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_POWER_INFO[] stuPowers;
        /// <summary>
        /// 电池数量
        /// Battery Number
        /// </summary>
        public int nBatteryNum;
        /// <summary>
        /// 电池状态
        /// Battery Status
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_BATTERY_INFO[] stuBatteries;
    }

    /// <summary>
    /// 人脸图片比较信息
    /// face image compare info
    /// </summary>
    public struct NET_IMAGE_COMPARE_INFO
    {
        /// <summary>
        /// 在二进制数据块中的偏移,单位:字节
        /// offset in binary data,unit:byte
        /// </summary>
        public uint dwoffset;
        /// <summary>
        /// 图片大小,单位:字节
        /// Image length,unit:byte
        /// </summary>
        public uint dwLength;
        /// <summary>
        /// 图片宽度
        /// image width
        /// </summary>
        public uint dwWidth;
        /// <summary>
        /// 图片高度
        /// image height
        /// </summary>
        public uint dwHeight;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 比对方式
    /// comparison mode
    /// </summary>
    public enum EM_MATCH_TWO_FACE_TYPE
    {
        /// <summary>
        /// / 未知
        /// / unknown
        /// </summary>
        EM_MATCH_TWO_FACE_TYPE_UNKNOWN,
        /// <summary>
        /// / 图片比对
        /// / Image comparison
        /// </summary>
        EM_MATCH_TWO_FACE_TYPE_PIC,
        /// <summary>
        /// / 特征值比对
        /// / Eigenvalue comparison
        /// </summary>
        EM_MATCH_TWO_FACE_TYPE_EIGENVALUE,
    }

    /// <summary>
    /// CLIENT_MatchTwoFace 输入参数
    /// CLIENT_MatchTwoFace input param
    /// </summary>
    public struct NET_MATCH_TWO_FACE_IN
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 原图
        /// original image
        /// </summary>
        public NET_IMAGE_COMPARE_INFO stuOriginalImage;
        /// <summary>
        /// 比较图
        /// compare image
        /// </summary>
        public NET_IMAGE_COMPARE_INFO stuCompareImage;
        /// <summary>
        /// 两张人脸图片数据
        /// two face image data
        /// </summary>
        public IntPtr pSendBuf;
        /// <summary>
        /// 数据大小
        /// data length
        /// </summary>
        public uint dwSendBufLen;
        /// <summary>
        /// / 比对方式, 不填默认图片对比
        /// / Comparison mode, do not enter the default image comparison
        /// </summary>
        public EM_MATCH_TWO_FACE_TYPE emType;
        /// <summary>
        /// / 比对的人脸特征值, 两维数组分别为需要对比的两个特征值,使用szFeature时emType应传EM_MATCH_TWO_FACE_TYPE_EIGENVALUE
        /// / Compared face feature values, two-dimensional array are the two feature values to be compared, emType should pass EM_MATCH_TWO_FACE_TYPE_EIGENVALUE when using szFeature
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2 * 1024)]
        public string szFeature;
        /// <summary>
        /// / 比对的人脸特征值传入长度,两个维度数值分别对应szFeature的两个维度
        /// / The length of the compared face feature value is passed in, and the two dimension values correspond to the two dimensions of szFeature respectively
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public int[] nFeatureLen;
    }

    /// <summary>
    /// CLIENT_MatchTwoFace 输出参数
    /// CLIENT_MatchTwoFace output param
    /// </summary>
    public struct NET_MATCH_TWO_FACE_OUT
    {
        public uint dwSize;
        /// <summary>
        /// 两张图片的相似度,范围0~100
        /// Similarity ( expressed as a percentage, from 1 to 100)
        /// </summary>
        public int nSimilarity;
    }

    /// <summary>
    /// CLIENT_GetMonitorWallCollections接口输入参数(获取电视墙预案信息)
    /// CLIENT_GetMonitorWallCollections input param
    /// </summary>
    public struct NET_IN_WM_GET_COLLECTIONS
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 电视墙ID
        /// monitor wall ID
        /// </summary>
        public int nMonitorWallID;
    }

    /// <summary>
    /// 电视墙输出模式信息
    /// TV wall output mode information
    /// </summary>
    public struct NET_MONITOR_WALL_OUT_MODE_INFO
    {
        /// <summary>
        /// Horizontal resolution
        /// 水平分辨率
        /// </summary>
        public int nWidth;
        /// <summary>
        /// Vertical resolution
        /// 垂直分辨率
        /// </summary>
        public int nHeight;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 电视墙显示单元
    /// monitor wall output
    /// </summary>
    public struct NET_MONITORWALL_OUTPUT
    {
        /// <summary>
        /// struct size
        /// 结构体大小
        /// </summary>
        public int nStructSize;
        /// <summary>
        /// Device ID. It is "null" or "Local"(local device)
        /// 设备ID, 为空或"Local"表示本地设备
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// Channel ID
        /// 通道ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// Screen name
        /// 屏幕名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// Whether it is a virtual screen (virtual screen means a screen that does not exist on this device)TRUE: virtual screen FALSE: non virtual screen
        /// 是否是虚拟屏（虚拟屏表示在本设备上不存在的屏）TRUE:虚拟屏 FALSE:非虚拟屏
        /// </summary>
        public bool bIsVirtual;
        /// <summary>
        /// Home device address IP
        /// 归属设备地址IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szAddress;
        /// <summary>
        /// Output mode information
        /// 输出模式信息
        /// </summary>
        public NET_MONITOR_WALL_OUT_MODE_INFO stuOutMode;
        /// <summary>
        /// / 相对物理坐标系下水平方向起始位置
        /// / Horizontal starting position in relative physical coordinate system
        /// </summary>
        public int nPosX;
        /// <summary>
        /// / 相对物理坐标系下垂直方向起始位置
        /// / Vertical starting position in relative physical coordinate system
        /// </summary>
        public int nPosY;
    }

    /// <summary>
    /// 电视墙显示区块
    /// monitor wall block
    /// </summary>
    public struct NET_MONITORWALL_BLOCK
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 区块名称
        /// block name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 拼接屏ID
        /// composite ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCompositeID;
        /// <summary>
        /// 控制ID
        /// control ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szControlID;
        /// <summary>
        /// 单个显示单元所占的网格列数
        /// single output width
        /// </summary>
        public int nSingleOutputWidth;
        /// <summary>
        /// 单个显示单元所占的网格列数
        /// single output height
        /// </summary>
        public int nSingleOutputHeight;
        /// <summary>
        /// 区域坐标
        /// rect
        /// </summary>
        public NET_A_RECT_EX stuRect;
        /// <summary>
        /// 开机时间表, 第一维各元素表示周日~周六和节假日
        /// Start up schedule. Elements in the first dimension represent Sunday ~ Saturday and holidays
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_TSECT_ARRAY[] stuTimeSection;
        /// <summary>
        /// 显示单元数组, 用户分配内存，大小sizeof(NET_MONITORWALL_OUTPUT)
        /// monitor wall output, user malloc the memory,apply to sizeof(NET_MONITORWALL_OUTPUT)
        /// </summary>
        public IntPtr pstuOutputs;
        /// <summary>
        /// 显示单元数组大小, 用户填写
        /// max output count, user input
        /// </summary>
        public int nMaxOutputCount;
        /// <summary>
        /// 返回的显示单元数量
        /// ret output count
        /// </summary>
        public int nRetOutputCount;
        /// <summary>
        /// display unit block type
        /// 显示单元组类型,为支持由接收卡组成单元的小间距LED区块而增加该字段,其他类型的区块填写为"LCD",如不存在该字段,默认采用LCD
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szBlockType;
        /// <summary>
        /// Output delay unit: ms
        /// 输出延迟,单位：毫秒
        /// </summary>
        public int nOutputDelay;
    }

    /// <summary>
    /// 电视墙配置
    /// monitor wall config
    /// </summary>
    public struct NET_MONITORWALL
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 名称
        /// name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 网格行数
        /// grid line
        /// </summary>
        public int nGridLine;
        /// <summary>
        /// 网格列数
        /// grid colume
        /// </summary>
        public int nGridColume;
        /// <summary>
        /// 显示区块数组, 用户分配内存，大小sizeof(NET_MONITORWALL_BLOCK)
        /// monitor wall blocks, user malloc the memory,apply to sizeof(NET_MONITORWALL_BLOCK)
        /// </summary>
        public IntPtr pstuBlocks;
        /// <summary>
        /// 显示区块数组大小, 用户填写
        /// max block count, user input
        /// </summary>
        public int nMaxBlockCount;
        /// <summary>
        /// 返回的显示区块数量
        /// ret block count
        /// </summary>
        public int nRetBlockCount;
        /// <summary>
        /// 是否禁用, 0-该电视墙有效, 1-该电视墙无效
        /// unable? 0-able, 1-unable
        /// </summary>
        public bool bDisable;
        /// <summary>
        /// TV wall description info 
        /// 电视墙描述信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szDesc;
        /// <summary>
        /// / 电视墙坐标系类型, 0:未知, 1:8192相对坐标系, 2:物理坐标系
        /// / TV wall coordinate system type, 0: unknown, 1: 8192 relative coordinate system, 2: physical coordinate system
        /// </summary>
        public int nCoordinateType;
    }

    /// <summary>
    /// 预案类型
    /// save collection type
    /// </summary>
    public enum EM_SAVE_COLLECTION_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_SAVE_COLLECTION_UNKNOWN,
        /// <summary>
        /// 视频预案
        /// save collection video
        /// </summary>
        EM_SAVE_COLLECTION_VIDEO,
        /// <summary>
        /// 附加预案
        /// save collection additional
        /// </summary>
        EM_SAVE_COLLECTION_ADDITIONAL,
    }

    /// <summary>
    /// 电视墙预案
    /// monitor wall collection
    /// </summary>
    public struct NET_MONITORWALL_COLLECTION
    {
        public uint dwSize;
        /// <summary>
        /// 电视墙预案名称
        /// name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 区块数组
        /// area array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_BLOCK_COLLECTION[] stuBlocks;
        /// <summary>
        /// 区块数量
        /// area count
        /// </summary>
        public int nBlocksCount;
        /// <summary>
        /// 控制ID
        /// control ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szControlID;
        /// <summary>
        /// 电视墙配置
        /// tv wall config
        /// </summary>
        public NET_MONITORWALL stuMonitorWall;
        /// <summary>
        /// 预案类型
        /// plan type
        /// </summary>
        public EM_SAVE_COLLECTION_TYPE emType;
        /// <summary>
        /// 保留字节用，于字节对齐
        /// Reserve byte used for byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_GetMonitorWallCollections接口输出参数(获取电视墙预案信息)
    /// CLIENT_GetMonitorWallCollections output param
    /// </summary>
    public struct NET_OUT_WM_GET_COLLECTIONS
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 电视墙预案数组，由用户申请内存，大小sizeof(NET_MONITORWALL_COLLECTION)
        /// monitor wall collections, user malloc the memory,apply to sizeof(NET_MONITORWALL_COLLECTION)
        /// </summary>
        public IntPtr pCollections;
        /// <summary>
        /// 电视墙预案数组大小
        /// max collections count
        /// </summary>
        public int nMaxCollectionsCount;
        /// <summary>
        /// 电视墙预案数量
        /// collections count
        /// </summary>
        public int nCollectionsCount;
    }

    /// <summary>
    /// CLIENT_LoadMonitorWallCollection接口输入参数(载入电视墙预案)
    /// CLIENT_LoadMonitorWallCollection intput param
    /// </summary>
    public struct NET_IN_WM_LOAD_COLLECTION
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 电视墙序号
        /// monitor wall ID
        /// </summary>
        public int nMonitorWallID;
        /// <summary>
        /// 电视墙预案名称
        /// monitor wall name
        /// </summary>
        public IntPtr pszName;
    }

    /// <summary>
    /// CLIENT_LoadMonitorWallCollection接口输出参数(载入电视墙预案)
    /// CLIENT_LoadMonitorWallCollection output param
    /// </summary>
    public struct NET_OUT_WM_LOAD_COLLECTION
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_SaveMonitorWallCollection接口输入参数(保存电视墙预案)
    /// CLIENT_SaveMonitorWallCollection intput param
    /// </summary>
    public struct NET_IN_WM_SAVE_COLLECTION
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 电视墙序号
        /// monitor wall ID
        /// </summary>
        public int nMonitorWallID;
        /// <summary>
        /// 电视墙预案名称
        /// monitor wall name
        /// </summary>
        public IntPtr pszName;
        /// <summary>
        /// 控制ID
        /// pszControlID
        /// </summary>
        public IntPtr pszControlID;
        /// <summary>
        /// reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string byReserved;
        /// <summary>
        /// 预案类型
        /// save collection type
        /// </summary>
        public EM_SAVE_COLLECTION_TYPE emType;
    }
    /// <summary>
    /// CLIENT_SaveMonitorWallCollection接口输出参数(保存电视墙预案)
    /// CLIENT_SaveMonitorWallCollection output param
    /// </summary>
    public struct NET_OUT_WM_SAVE_COLLECTION
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_RenameMonitorWallCollection接口输入参数(预案重命名)
    /// CLIENT_RenameMonitorWallCollection input param
    /// </summary>
    public struct NET_IN_WM_RENAME_COLLECTION
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 电视墙序号
        /// monitor wall ID
        /// </summary>
        public int nMonitorWallID;
        /// <summary>
        /// 原名称
        /// old name
        /// </summary>
        public IntPtr pszOldName;
        /// <summary>
        /// 新名称
        /// new name
        /// </summary>
        public IntPtr pszNewName;
    }

    /// <summary>
    /// CLIENT_RenameMonitorWallCollection接口输出参数(预案重命名)
    /// CLIENT_RenameMonitorWallCollection output param
    /// </summary>
    public struct NET_OUT_WM_RENAME_COLLECTION
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_PERSON_TRANS_DETECTION (人员传输检测事件)对应的数据块描述信息
    /// event IVS person trans detection info 
    /// </summary>
    public struct NET_EVENT_IVS_PERSON_TRANS_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲事件
        /// 0:pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// class type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// GroupID事件组ID，同一物体抓拍过程内GroupID相同
        /// GroupID Event group ID, which is the same in the process of capturing the same object
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// 一个事件组内的抓拍张数
        /// the file count in the current file's group
        /// <summary>
        public int nCountInGroup;
        /// <summary>
        /// 一个事件组内的抓拍序号，从1开始
        /// the index of the file in the group
        /// <summary>
        public int nIndexInGroup;
        /// <summary>
        /// 事件时间毫秒数
        /// Event time milliseconds
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// 相对事件时间戳,单位毫秒
        /// Relative event timestamp, in milliseconds
        /// </summary>
        public double dPTS;
        /// <summary>
        /// 事件发生时间，带时区偏差的UTC时间，单位秒
        /// Event occurrence time, UTC time with time zone offset, in seconds
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 违规物品类型个数
        /// violation number
        /// <summary>
        public int nViolationNum;
        /// <summary>
        /// 设备检测到人员携带的违规物品类型
        /// violation
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10 * 32)]
        public sbyte[] szViolation;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 设备曝光配置基本信息
    /// Device exposure the basic configuration information
    /// </summary>
    public struct NET_CFG_VIDEOIN_EXPOSURE_BASE
    {
        /// <summary>
        /// 慢快门使能
        /// Slow shutter enabled
        /// </summary>
        public bool bSlowShutter;
        /// <summary>
        /// 曝光模式调节, 0- 默认自动,1- 低噪声,2- 防拖影,3- 50Hz防闪烁，4- 60Hz防闪烁, 5- 光圈优先, 6- 手动, 7- 增益优先, 8- 快门优先
        /// Exposure mode adjustment
        /// </summary>
        public byte byExposureMode;
        /// <summary>
        /// 防闪烁模式 0-Outdoor 1-50Hz防闪烁 2-60Hz防闪烁
        /// Anti-flicker mode 0-Outdoor 1-50Hz A.FLK 2-60Hz flicker prevention
        /// </summary>
        public byte byAntiFlicker;
        /// <summary>
        /// 曝光补偿, [0~14]
        /// Exposure compensation, [0-14]
        /// </summary>
        public byte byCompensation;
        /// <summary>
        /// 自动增益上限, [0, 2]
        /// Automatic gain limit, [0, 2]
        /// </summary>
        public byte byAutoGainMax;
        /// <summary>
        /// 增益档位, [0, 15]
        /// Gain gear, [0, 15]
        /// </summary>
        public byte byGain;
        /// <summary>
        /// 慢曝光, [0, 15]
        /// Slow exposure, [0, 15]
        /// </summary>
        public byte bySlowAutoExposure;
        /// <summary>
        /// 字节对齐
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bybyReserv;
        /// <summary>
        /// 曝光速度等级：0-自动曝光，1-曝光等级1，2-曝光等级2…n-1最大曝光等级数 n带时间上下限的自动曝光 n+1自定义时间手动曝光 (n为支持的曝光等级)
        /// Exposure level of speed: 0 - Auto Exposure 1 - Exposure Level 1,2 - Exposure Level 2 ... n-1 the maximum exposure level, n the time limit with automatic exposure, n +1 custom time manual exposure (n means support the exposure level)
        /// </summary>
        public int byExposureSpeed;
        /// <summary>
        /// 慢曝光等级
        /// Slow exposure level
        /// </summary>
        public byte bySlowSpeed;
        /// <summary>
        /// 光圈设置, [0~100]
        /// Aperture Settings, [0 ~ 100]
        /// </summary>
        public byte byIris;
        /// <summary>
        /// 背光补偿: 取值范围取决于设备能力集: 0-关闭 1-启用 2-指定区域背光补偿
        /// BLC: The range depends on the device capability set: 0 - off 1 - Enable 2 - designated areas BLC
        /// </summary>
        public byte byBacklight;
        /// <summary>
        /// 宽动态值 0-关闭，1~100-为真实范围值
        /// Wide dynamic value 0 - closed, range 1-100 - for real value
        /// </summary>
        public byte byWideDynamicRange;
        /// <summary>
        /// 宽动态模式, 0:关闭; 1:手动调节; 2:自动调节
        /// Wide dynamic mode 0: off; 1: manual adjustment; 2: automatic adjustment
        /// </summary>
        public byte byWideDynamicRangeMode;
        /// <summary>
        /// 强光抑制, 0:关闭; 1:弱; 2:中; 3:强
        /// Light inhibition 0: Off; 1: weak; 2: Medium; 3: Strong
        /// </summary>
        public byte byGlareInhibition;
        /// <summary>
        /// 双快门支持, 0:不支持; 1:支持双快门全帧率; 2:支持双快门半帧率; 3:支持双快门全帧率和半帧率
        /// Dual shutter support, 0: not supported; 1: Support Dual Shutter full frame rate; 2: supports dual shutter half frame rate;3: supports dual shutter half full frame rate and frame rate
        /// </summary>
        public byte byDoubleExposure;
        /// <summary>
        /// 字节对齐
        /// reserved
        /// </summary>
        public byte byReserved;
        /// <summary>
        /// 自动曝光恢复, 0-表示不恢复, 其他表示恢复的时间, 单位为秒
        /// Automatic exposure recovery, 0 - said they did not recover, others said recovery time, in seconds
        /// </summary>
        public int nRecoveryTime;
        /// <summary>
        /// 自动曝光时间下限或者手动曝光自定义时间, [0.1~80ms]
        /// Automatic exposure time limit or manual custom time, [0.1 ~ 80 ms]
        /// </summary>
        public float fValue1;
        /// <summary>
        /// 自动曝光时间上限, 需不小于下限, [0.1~80ms]
        /// Automatic exposure time limit, to be not less than the lower limit, [0.1 ~ 80ms]
        /// </summary>
        public float fValue2;
        /// <summary>
        /// 背光补偿区域
        /// BLC area
        /// </summary>
        public NET_CFG_RECT stuBacklightRegion;
        /// <summary>
        /// 光圈区间下限[0~100]
        /// the min value of [0~100]
        /// </summary>
        public byte byIrisMin;
        /// <summary>
        /// 光圈区间上限,取值不小于byMin[0~100]
        /// the max value of [0~100]
        /// </summary>
        public byte byIrisMax;
        /// <summary>
        /// 手动(区间)登陆下限
        /// the min value of gain
        /// </summary>
        public byte byGainMin;
        /// <summary>
        /// 手动(区间)登陆上限
        /// the max value of gain
        /// </summary>
        public byte byGainMax;
    }

    /// <summary>
    /// 设备曝光配置
    /// Device exposure configuration
    /// </summary>
    public struct NET_CFG_VIDEOIN_EXPOSURE_INFO
    {
        /// <summary>
        /// 配置的最大个数
        /// the maximum number of Configure
        /// </summary>
        public uint dwMaxExposureNum;
        /// <summary>
        /// 实际使用的最大个数(查询时返回实际解析个数, 封装时按照此值个数封装)
        /// The maximum number of actual use(query returns the actual number parsing, according to the number of this value when the packaging)
        /// </summary>
        public uint dwRetExposureNum;
        /// <summary>
        /// 曝光配置信息,由用户申请内存,大小为sizeof(CFG_VIDEOIN_EXPOSURE_BASE)*dwMaxExposureNum
        /// Exposure configuration information, user malloc memory, size is sizeof(NET_CFG_VIDEOIN_EXPOSURE_BASE)*dwMaxExposureNum
        /// </summary>
        public IntPtr pstuVideoInExposure;
    }

    /// <summary>
    /// 透传类型
    /// TransmitInfo type
    /// </summary>
    public enum NET_TRANSMIT_INFO_TYPE
    {
        /// <summary>
        /// 默认类型，即CLIENT_TransmitInfoForWeb接口的兼容透传方式
        /// default type
        /// </summary>
        NET_TRANSMIT_INFO_TYPE_DEFAULT,
        /// <summary>
        /// F6纯透传
        /// type F6
        /// </summary>
        NET_TRANSMIT_INFO_TYPE_F6,
    }

    /// <summary>
    /// 透传加密类型
    /// transmit encrypt type
    /// </summary>
    public enum EM_TRANSMIT_ENCRYPT_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_TRANSMIT_ENCRYPT_TYPE_UNKNOWN = -1,
        /// <summary>
        /// SDK内部自行确定是否加密，默认
        /// normal
        /// </summary>
        EM_TRANSMIT_ENCRYPT_TYPE_NORMAL,
        /// <summary>
        /// 设备支持加密的场景下，走multiSec加密
        /// type multisec
        /// </summary>
        EM_TRANSMIT_ENCRYPT_TYPE_MULTISEC,
        /// <summary>
        /// 设备支持加密的场景下，走binarySec加密，二进制部分不加密
        /// type binarysec
        /// </summary>
        EM_TRANSMIT_ENCRYPT_TYPE_BINARYSEC,
    }

    /// <summary>
    /// TransmitInfoForWebEx输入参数
    /// TransmitInfoForWebEx input param
    /// </summary>
    public struct NET_IN_TRANSMIT_INFO
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 透传类型
        /// transmit info type
        /// </summary>
        public NET_TRANSMIT_INFO_TYPE emType;
        /// <summary>
        /// Json请求数据,用户申请空间
        /// in json buffer
        /// </summary>
        public IntPtr szInJsonBuffer;
        /// <summary>
        /// Json请求数据长度
        /// json lenth
        /// </summary>
        public uint dwInJsonBufferSize;
        /// <summary>
        /// 二进制请求数据，用户申请空间
        /// in bin buffer
        /// </summary>
        public IntPtr szInBinBuffer;
        /// <summary>
        /// 二进制请求数据长度
        /// bin buffer size
        /// </summary>
        public uint dwInBinBufferSize;
        /// <summary>
        /// 加密类型
        /// encrypt type
        /// </summary>
        public EM_TRANSMIT_ENCRYPT_TYPE emEncryptType;
    }

    /// <summary>
    /// TransmitInfoForWebEx 输出参数
    /// TransmitInfoForWebEx output param
    /// </summary>
    public struct NET_OUT_TRANSMIT_INFO
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 应答数据缓冲空间, 用户申请空间
        /// Reply data buffer space
        /// </summary>
        public IntPtr szOutBuffer;
        /// <summary>
        /// 应答数据缓冲空间长度
        /// Reply data buffer lenth
        /// </summary>
        public uint dwOutBufferSize;
        /// <summary>
        /// Json应答数据长度
        /// json data buffer lenth
        /// </summary>
        public uint dwOutJsonLen;
        /// <summary>
        /// 二进制应答数据长度
        /// bin data buffer lenth
        /// </summary>
        public uint dwOutBinLen;
    }

    /// <summary>
    /// 某月的各天是否存在录像的状态信息
    /// recorde status in some month
    /// </summary>
    public struct NET_RECORD_STATUS
    {
        /// <summary>
        /// 某月内的各天是否存在录像的状态掩码,0表示没有,1表示有
        /// Whether there is a video status mask on each day in a month. 0 means no, 1 means yes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] flag;
        /// <summary>
        /// reserved
        /// 保留字节
        /// </summary>                      
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] Reserved;
    }

    /// <summary>
    /// 根据条件查询备份任务的查询方式
    /// find type of find task by condition
    /// </summary>
    public enum EM_RECORD_BACKUP_FIND_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_RECORD_BACKUP_FIND_TYPE_UNKNOWN,
        /// <summary>
        /// 按照任务号查询
        /// find task infos by taskID
        /// </summary>
        EM_RECORD_BACKUP_FIND_TYPE_BY_TASKID,
        /// <summary>
        /// 按照通道和录制时间段查询
        /// find task infos by local channel and record time
        /// </summary>
        EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME,
        /// <summary>
        /// 按照主动注册的设备ID查
        /// Check according to the actively registered device ID
        /// </summary>
        EM_RECORD_BACKUP_FIND_TYPE_BY_DEVICE_ID,
    }


    /// <summary>
    /// CLIENT_FindRecordBackupRestoreTaskInfos接口输入参数
    /// CLIENT_FindRecordBackupRestoreTaskInfos in param
    /// </summary>
    public struct NET_IN_FIND_REC_BAK_RST_TASK
    {
        public uint dwSize;
        /// <summary>
        /// 根据条件查询备份任务的查询方式
        /// find type of find task by condition
        /// </summary>
        public EM_RECORD_BACKUP_FIND_TYPE emFindType;
        /// <summary>
        /// 任务ID,emFindType为 EM_RECORD_BACKUP_FIND_TYPE_BY_TASKID 时有效,否则无效
        /// task ID,valid when emFindType equal EM_RECORD_BACKUP_FIND_TYPE_BY_TASKID
        /// </summary>
        public uint dwTaskID;
        /// <summary>
        /// 设备端本地通道号,emFindType为 EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME 时有效,否则无效
        /// local channel of device,valid when emFindType equal EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME
        /// </summary>
        public int nLocalChannelID;
        /// <summary>
        /// 备份录像的开始时间,emFindType为 EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME 时有效,否则无效
        /// start time of record,valid when emFindType equal EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 备份录像的结束时间,emFindType为 EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME 时有效,否则无效
        /// end time of record,valid when emFindType equal EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 主动注册的设备ID, emFindType为EM_RECORD_BACKUP_FIND_TYPE_BY_DEVICE_ID时必选有效，否则无效
        /// Actively registered device ID, Required when emFindType is EM_RECORD_BACKUP_FIND_TYPE_BY_DEVICE_ID, otherwise invalid
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
    }

    /// <summary>
    /// 最后传递成功的数据包类型
    /// The type of data packet that was successfully delivered at the end
    /// </summary>
    public enum EM_A_ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        ENUM_RECORDBACKUP_FILE_PROGRESS_UNKNOWN,
        /// <summary>
        /// 文件头包
        /// file header package
        /// </summary>
        ENUM_RECORDBACKUP_FILE_PROGRESS_HEADER_PACKAGE,
        /// <summary>
        /// 索引包
        /// index package
        /// </summary>
        ENUM_RECORDBACKUP_FILE_PROGRESS_INDEX_PACKAGE,
        /// <summary>
        /// 码流包
        /// stream package
        /// </summary>
        ENUM_RECORDBACKUP_FILE_PROGRESS_STREAM_PACKET,
        /// <summary>
        /// 文件尾空包
        /// empty package at the end of the file
        /// </summary>
        ENUM_RECORDBACKUP_FILE_PROGRESS_EMPTY_PACKET,
    }

    /// <summary>
    /// 录像备份进度
    /// Recording backup progress
    /// </summary>
    public struct NET_RECORD_BACKUP_PROGRESS
    {
        /// <summary>
        /// 当前备份文件名
        /// current backup file name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFilePath;
        /// <summary>
        /// 最后传递成功的数据包类型
        /// The type of the last successful packet
        /// </summary>
        public EM_A_ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE emType;
        /// <summary>
        /// 最后传递成功的数据包位置
        /// The position of the last successful data packet
        /// </summary>
        public int nPosition;
        /// <summary>
        /// 任务进度百分比,0-100
        /// Task progress percentage, 0-100
        /// </summary>
        public uint nPercent;
        /// <summary>
        /// 任务预计剩余时长,单位秒。-1  – 未知； 0  – 完成；
        /// The estimated remaining time of the task, in seconds. -1-unknown; 0-completed
        /// </summary>
        public int nRemainingTime;
        /// <summary>
        /// 保留字节
        /// reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 失败的原因
    /// The reason for the failure
    /// </summary>
    public enum EM_RECORD_BACKUP_FAIL_REASON
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_RECORD_BACKUP_FAIL_REASON_UNKNOW,
        /// <summary>
        /// 登入失败
        /// Login Fail
        /// </summary>
        EM_RECORD_BACKUP_FAIL_REASON_LOGIN_FAIL,
        /// <summary>
        /// 没有查询到录像
        /// No recording found
        /// </summary>
        EM_RECORD_BACKUP_FAIL_REASON_NO_FILES,
        /// <summary>
        /// 下载过程中网络断开
        /// The network is disconnected during the download process
        /// </summary>
        EM_RECORD_BACKUP_FAIL_REASON_DOWNLOAD_NET_ERROR,
        /// <summary>
        /// 未知错误
        /// Unknown Error
        /// </summary>
        EM_RECORD_BACKUP_FAIL_REASON_UNKNOW_ERROR,
    }

    /// <summary>
    /// 录像备份恢复任务信息
    /// task of record backup to restore
    /// </summary>
    public struct NET_A_REC_BAK_RST_TASK
    {
        public uint dwSize;
        /// <summary>
        /// 任务ID
        /// task ID
        /// </summary>
        public uint nTaskID;
        /// <summary>
        /// 设备ID
        /// device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// 通道号
        /// channek ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 录像开始时间
        /// record start time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 录像结束时间
        /// record end time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 当前备份状态, 0-等待, 1-进行中, 2-完成, 3-失败, 4-暂停
        /// state of backup, 0-wait, 1-working, 2-finish, 3-failed, 4-pause
        /// </summary>
        public int nState;
        /// <summary>
        /// 当前备份进度
        /// current backup progress
        /// </summary>
        public NET_RECORD_BACKUP_PROGRESS stuProgress;
        /// <summary>
        /// 失败的原因, 当nState字段为3的情况下有效；
        /// The reason for the failure, valid when the emState field is 3
        /// </summary>
        public EM_RECORD_BACKUP_FAIL_REASON emFailReason;
        /// <summary>
        /// 任务开始时间, nState为"进行中"、"已完成"、"失败"的情况下该时间点有效;
        /// execute task start time, valid when nState equal 1(working) or 2(finish) or 3(failed)
        /// </summary>
        public NET_TIME stuTaskStartTime;
        /// <summary>
        /// 任务结束时间, nState为"已完成"、"失败"的情况下该时间点有效;
        /// execute task end time, valid when nState equal 2(finish) or 3(failed)
        /// </summary>
        public NET_TIME stuTaskEndTime;
        /// <summary>
        /// 备份源通道
        /// backup channel
        /// </summary>
        public int nRemoteChannel;
        /// <summary>
        /// / 该任务的总长度,单位字节, -1表示未知
        /// / The total length of the task, in bytes, where -1 indicates unknown
        /// </summary>
        public double dbLength;
    }

    /// <summary>
    /// CLIENT_FindRecordBackupRestoreTaskInfos接口输出参数
    /// CLIENT_FindRecordBackupRestoreTaskInfos out param
    /// </summary>
    public struct NET_OUT_FIND_REC_BAK_RST_TASK
    {
        public uint dwSize;
        /// <summary>
        /// 任务数组,由用户申请内存，大小为sizeof(REC_BAK_RST_TASK)*nMaxCount
        /// task array, the user applies for memory, the size is sizeof(REC_BAK_RST_TASK)*nMaxCount
        /// </summary>
        public IntPtr pTasks;
        /// <summary>
        /// 数组大小
        /// size of array
        /// </summary>
        public int nMaxCount;
        /// <summary>
        /// 返回的任务数量
        /// return count
        /// </summary>
        public int nRetCount;
    }

    /// <summary>
    /// 摄像头IP
    /// camera IP
    /// </summary>
    public struct NET_EXAM_RECORDING_PLAN_INFO_CAMERA_IP
    {
        /// <summary>
        /// 摄像头IP
        /// camera IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCameraIP;
    }

    /// <summary>
    /// 考试计划
    /// Exam plan
    /// </summary>
    public struct NET_EXAM_RECORDING_PLAN_INFO
    {
        /// <summary>
        /// 考生姓名，采用UTF8编码
        /// Candidate's name, encoded in UTF8
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 考号
        /// Candidate number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNumber;
        /// <summary>
        /// 摄像头IP个数
        /// Number of camera IPs
        /// </summary>
        public int nCameraIPNum;
        /// <summary>
        /// 摄像头IP数组
        /// Camera IP array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_EXAM_RECORDING_PLAN_INFO_CAMERA_IP[] szCameraIP;
        /// <summary>
        /// 开始时间
        /// Starting time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 结束时间
        /// End Time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szResvered;
    }

    /// <summary>
    /// CLIENT_SetExamRecordingPlans 接口入参
    /// input struct of CLIENT_SetExamRecordingPlans
    /// </summary>
    public struct NET_IN_SET_EXAM_RECORDING_PLANS
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 考试计划个数
        /// plans number
        /// </summary>
        public int nPlansNum;
        /// <summary>
        /// 考试计划, 由用户申请和释放, 最大为1024个 <NET_EXAM_RECORDING_PLAN_INFO>
        /// The examination plan is applied and released by users, with a maximum of 1024 <NET_EXAM_RECORDING_PLAN_INFO>
        /// </summary>
        public IntPtr pstuPlans;
    }

    /// <summary>
    /// CLIENT_SetExamRecordingPlans 接口出参
    /// CLIENT_SetExamRecordingPlans interface output parameters
    /// </summary>
    public struct NET_OUT_SET_EXAM_RECORDING_PLANS
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 考场录像查询 ( CLIENT_FindFileEx + FILE_QUERY_EXAM )
    /// Exam video query ( CLIENT_FindFileEx + FILE_QUERY_EXAM )
    /// </summary>
    public struct NET_MEDIAFILE_EXAM_PARAM
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号从0开始,-1表示查询所有通道
        /// The channel number starts from 0, -1 means query all channels
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 开始时间
        /// Starting time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 结束时间
        /// End Time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 考生姓名
        /// Candidate name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 考生考号
        /// Candidate test number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNumber;
        /// <summary>
        /// 摄像头IP
        /// Camera IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCameraIP;
    }

    /// <summary>
    /// 考场录像查询结果 ( CLIENT_FindNextFileEx + FILE_QUERY_EXAM )
    /// Examination room video query results ( CLIENT_FindNextFileEx + FILE_QUERY_EXAM )
    /// </summary>
    public struct NET_MEDIAFILE_EXAM_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号从0开始,-1表示查询所有通道
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 开始时间
        /// Starting time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 结束时间
        /// End Time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 考生姓名
        /// Candidate name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 考生考号
        /// Candidate test number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNumber;
        /// <summary>
        /// 摄像头IP
        /// Camera IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCameraIP;
    }

    /// <summary>
    /// CLIENT_GetDevCaps接口 NET_COAXIAL_CONTROL_IO_CAPS 命令入参
    /// CLIENT_GetDevCaps NET_COAXIAL_CONTROL_IO_CAPS input param
    /// </summary>
    public struct NET_IN_GET_COAXIAL_CONTROL_IO_CAPS
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// channel
        /// </summary>
        public int nChannel;
    }

    /// <summary>
    /// CLIENT_GetDevCaps接口 NET_COAXIAL_CONTROL_IO_CAPS 命令出参
    /// CLIENT_GetDevCaps NET_COAXIAL_CONTROL_IO_CAPS output param
    /// </summary>
    public struct NET_OUT_GET_COAXIAL_CONTROL_IO_CAPS
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否支持白光灯
        /// whether support control light
        /// </summary>
        public bool bSupportControlLight;
        /// <summary>
        /// 是否支持speaker音频外放
        /// whether support control specker audio
        /// </summary>
        public bool bSupportControlSpeaker;
        /// <summary>
        /// 是否支持全彩白光灯
        /// Does it support full-color white light
        /// </summary>
        public bool bSupportControlFullcolorLight;
        /// <summary>
        /// 是否支持超级补光
        /// Does it support super fill lighting
        /// </summary>
        public bool bSupportControlSuperLight;
        /// <summary>
        /// 是否支持智能双光全彩白光灯
        /// Whether intelligent dual light full-color white light is supported
        /// </summary>
        public bool bSupportControlIntelliLight;
        /// <summary>
        /// 是否支持智能音频警戒
        /// Whether intelligent audio warning is supported
        /// </summary>
        public bool bSupportControlIntelliSpeaker;
        /// <summary>
        /// 是否支持卡宴白蓝灯
        /// Does it support Cayenne white and blue lights
        /// </summary>
        public bool bSupportControlWhiteBlueLight;
    }

    /// <summary>
    /// 同轴IO控制类型
    /// coaxial IO control type
    /// </summary>
    public enum EM_COAXIAL_CONTROL_IO_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_COAXIAL_CONTROL_IO_TYPE_UNKNOWN,
        /// <summary>
        /// 白光灯
        /// white light
        /// </summary>
        EM_COAXIAL_CONTROL_IO_TYPE_LIGHT,
        /// <summary>
        /// speak音频
        /// speak audio
        /// </summary>
        EM_COAXIAL_CONTROL_IO_TYPE_SPEAKER,
    }

    /// <summary>
    /// 同轴IO控制开关
    /// coaxial IO control switch
    /// </summary>
    public enum EM_COAXIAL_CONTROL_IO_SWITCH
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_COAXIAL_CONTROL_IO_SWITCH_UNKNOWN,
        /// <summary>
        /// 开
        /// open
        /// </summary>
        EM_COAXIAL_CONTROL_IO_SWITCH_OPEN,
        /// <summary>
        /// 关
        /// close
        /// </summary>
        EM_COAXIAL_CONTROL_IO_SWITCH_CLOSE,
    }

    /// <summary>
    /// 同轴IO触发方式
    /// coaxial IO control tragger mode
    /// </summary>
    public enum EM_COAXIAL_CONTROL_IO_TRIGGER_MODE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_COAXIAL_CONTROL_IO_TRIGGER_MODE_UNKNOWN,
        /// <summary>
        /// 联动触发
        /// lingage tragger
        /// </summary>
        EM_COAXIAL_CONTROL_IO_TRIGGER_MODE_LINKAGE_TRIGGER,
        /// <summary>
        /// 手动触发
        /// manual tragger
        /// </summary>
        EM_COAXIAL_CONTROL_IO_TRIGGER_MODE_MANUAL_TRIGGER,
    }

    /// <summary>
    /// 白光灯模式
    /// light mode
    /// </summary> 
    public enum EM_COAXIAL_CONTROL_IO_LIGHT_MODE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_COAXIAL_CONTROL_IO_LIGHT_MODE_UNKNOWN,
        /// <summary>
        /// 常亮
        /// brght
        /// </summary>
        EM_COAXIAL_CONTROL_IO_LIGHT_MODE_BRIGHT,
        /// <summary>
        /// 闪烁
        /// twinkle
        /// </summary>
        EM_COAXIAL_CONTROL_IO_LIGHT_MODE_TWINKLE,
    }

    /// <summary>
    /// 同轴IO信息结构体
    /// coaxial IO info
    /// </summary>
    public struct NET_COAXIAL_CONTROL_IO_INFO
    {
        /// <summary>
        /// 同轴IO控制类型
        /// coaxial IO type
        /// </summary>
        public EM_COAXIAL_CONTROL_IO_TYPE emType;
        /// <summary>
        /// 同轴IO控制开关
        /// coaxial IO switch
        /// </summary>
        public EM_COAXIAL_CONTROL_IO_SWITCH emSwicth;
        /// <summary>
        /// 同轴IO触发方式
        /// coaxial IO tragger mode
        /// </summary>
        public EM_COAXIAL_CONTROL_IO_TRIGGER_MODE emMode;
        /// <summary>
        /// 白光灯模式
        /// Light mode
        /// </summary>
        public EM_COAXIAL_CONTROL_IO_LIGHT_MODE emLightMode;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 124)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 发送同轴IO控制命令, CLIENT_ControlDeviceEx 入参 对应 CTRL_COAXIAL_CONTROL_IO
    /// control coaxial control IO input , CTRL_COAXIAL_CONTROL_IO control type of CLIENT_ControlDeviceEx
    /// </summary>
    public struct NET_IN_CONTROL_COAXIAL_CONTROL_IO
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 同轴IO信息个数
        /// count of coaxial IO control info
        /// </summary>
        public int nInfoCount;
        /// <summary>
        /// 同轴IO信息
        /// coaxial IO control info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_COAXIAL_CONTROL_IO_INFO[] stInfo;
    }

    /// <summary>
    /// 发送同轴IO控制命令, CLIENT_ControlDeviceEx 出参 对应 CTRL_COAXIAL_CONTROL_IO
    /// control coaxial control IO output , CTRL_COAXIAL_CONTROL_IO control type of CLIENT_ControlDeviceEx
    /// </summary>
    public struct NET_OUT_CONTROL_COAXIAL_CONTROL_IO
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_MonitorWallGetScene接口输入参数(获取电视墙场景)
    /// CLIENT_MonitorWallGetScene's interface input param(get monitor wall scene)
    /// </summary>
    public struct NET_A_IN_MONITORWALL_GET_SCENE
    {
        public uint dwSize;
        /// <summary>
        /// 电视墙序号
        /// monitor wall ID
        /// </summary>
        public int nMonitorWallID;
    }

    /// <summary>
    /// 窗口显示源信息
    /// source of window display info
    /// </summary>
    public struct NET_A_SPLIT_WND_SOURCE
    {
        public uint dwSize;
        /// <summary>
        /// 显示源是否有效
        /// enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 设备ID
        /// device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// 控制ID
        /// control ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szControlID;
        /// <summary>
        /// 视频通道号
        /// video channel ID
        /// </summary>
        public int nVideoChannel;
        /// <summary>
        /// 视频码流类型
        /// video stream type
        /// </summary>
        public int nVideoStream;
        /// <summary>
        /// 音频通道
        /// audio channel ID
        /// </summary>
        public int nAudioChannel;
        /// <summary>
        /// 音频码流类型
        /// audio stream type
        /// </summary>
        public int nAudioStream;
        /// <summary>
        /// 设备内统一编号的唯一通道号, 只读
        /// unique channel,read only
        /// </summary>
        public int nUniqueChannel;
        /// <summary>
        /// 是否远程设备
        /// support remote device
        /// </summary>
        public bool bRemoteDevice;
        /// <summary>
        /// 远程设备信息
        /// info of remote device
        /// </summary>
        public NET_REMOTE_DEVICE stuRemoteDevice;
        /// <summary>
        /// 视频源区域,若区域为(0,0,0,0)表示数据无效，设备使用默认值(0,0,8192,8192)
        /// video source region,if rect is (0,0,0,0),it means valid data,device use default value(0,0,8192,8192)
        /// </summary>
        public NET_RECT stuSRect;
        /// <summary>
        /// 轮巡时间间隔,单位：秒
        /// interval time, unit: second
        /// </summary>
        public int nInterval;
    }

    /// <summary>
    /// 分割窗口信息
    /// info of split window
    /// </summary>
    public struct NET_A_SPLIT_WINDOW
    {
        public uint dwSize;
        /// <summary>
        /// 窗口是否有视频源
        /// enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 窗口ID
        /// window ID
        /// </summary>
        public int nWindowID;
        /// <summary>
        /// 控制ID
        /// control ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szControlID;
        /// <summary>
        /// 窗口区域, 自由分割模式下有效
        /// rect of window, effective when free split
        /// </summary>
        public NET_A_RECT_EX stuRect;
        /// <summary>
        /// 坐标是否满足直通条件
        /// coordinate whether meet the conditions
        /// </summary>
        public bool bDirectable;
        /// <summary>
        /// 窗口Z次序
        /// Z order
        /// </summary>
        public int nZOrder;
        /// <summary>
        /// 显示信息
        /// source info
        /// </summary>
        public NET_A_SPLIT_WND_SOURCE stuSource;
        /// <summary>
        /// OSD个数
        /// OSD number
        /// </summary>
        public uint nOSDNum;
        /// <summary>
        /// OSD信息
        /// OSD information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_SPLIT_OSD[] stuOSD;
        /// <summary>
        /// 窗口是否被锁定位置
        /// Is the window locked
        /// </summary>
        public bool bLock;
        /// <summary>
        /// 窗口是否具有粘附效果
        /// Does the window have adhesion effect?
        /// </summary>
        public bool bDock;
        /// <summary>
        /// 窗口是否为会议模式状态
        /// Is the window in conference mode
        /// </summary>
        public bool bMeetingMode;
        /// <summary>
        /// 窗口是否开启音频使能
        /// Does the window turn on audio enable
        /// </summary>
        public bool bAudioEnable;
        /// <summary>
        /// 窗口是否开启轮询
        /// Does the window turn on polling
        /// </summary>
        public bool bTourEnable;
    }

    /// <summary>
    /// 拼接屏场景
    /// split scene
    /// </summary>
    public struct NET_A_SPLIT_SCENE
    {
        public uint dwSize;
        /// <summary>
        /// 拼接屏ID
        /// composite ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCompositeID;
        /// <summary>
        /// 控制ID
        /// control ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szControlID;
        /// <summary>
        /// 分割模式
        /// split mode
        /// </summary>
        public EM_SPLIT_MODE emSplitMode;
        /// <summary>
        /// 窗口信息数组, 用户分配内存,大小为sizeof(SPLIT_WINDOW)*nMaxWndCount
        /// info of array,the space application by the user,apply to sizeof(SPLIT_WINDOW)*nMaxWndCount
        /// </summary>
        public IntPtr pstuWnds;
        /// <summary>
        /// 窗口信息数组大小, 用户填写
        /// size of array
        /// </summary>
        public int nMaxWndCount;
        /// <summary>
        /// 返回的窗口数量
        /// return count
        /// </summary>
        public int nRetWndCount;
        /// <summary>
        /// 窗口信息数组-扩展, 用户分配内存,大小为sizeof(SPLIT_WINDOW_EX)*nMaxWndCount
        /// pstuWndsEx 与 pstuWnds选一个使用即可
        /// Window information array - extended, user allocated memory, size is sizeof (SPLITWINDOW-EX) * nMaxWndCount
        /// use one of pstuWndsEx and pstuWnds
        /// </summary>
        public IntPtr pstuWndsEx;
        /// <summary>
        /// 窗口信息数组大小-扩展, 用户填写
        /// Window information array size - extended, user filled in
        /// </summary>
        public int nMaxWndCountEx;
        /// <summary>
        /// 返回的窗口数量-扩展
        /// Number of returned windows - extended
        /// </summary>
        public int nRetWndCountEx;
    }

    /// <summary>
    /// 电视墙场景
    /// monitor wall scene
    /// </summary>
    public struct NET_A_MONITORWALL_SCENE
    {
        public uint dwSize;
        /// <summary>
        /// 当前预案名称
        /// name of plan
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 控制ID
        /// control ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szControlID;
        /// <summary>
        /// 电视墙配置
        /// monitor wall configuration
        /// </summary>
        public NET_MONITORWALL stuMonitorWall;
        /// <summary>
        /// 拼接屏场景信息数组, 用户分配内存,大小为sizeof(NET_A_SPLIT_SCENE)*nMaxSplitSceneCount
        /// array of split scene,the space application by the user,apply to sizeof(NET_A_SPLIT_SCENE)*nMaxSplitSceneCount
        /// </summary>
        public IntPtr pstuSplitScene;
        /// <summary>
        /// 拼接屏场景数组大小, 用户填写
        /// size of array
        /// </summary>
        public int nMaxSplitSceneCount;
        /// <summary>
        /// 返回的拼接屏场景数量
        /// return count
        /// </summary>
        public int nRetSplitSceneCount;
    }

    /// <summary>
    /// CLIENT_MonitorWallGetScene接口输出参数(获取电视墙场景)
    /// CLIENT_MonitorWallGetScene's interface output param(get monitor wall scene)
    /// </summary>
    public struct NET_A_OUT_MONITORWALL_GET_SCENE
    {
        public uint dwSize;
        /// <summary>
        /// 当前预案名称, 可以为空
        /// name of plan, can be null
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 电视墙场景
        /// minotor wall scene
        /// </summary>
        public NET_A_MONITORWALL_SCENE stuScene;
    }

    /// <summary>
    /// CLIENT_ManualSnap 接口输入参数
    /// Input param of CLIENT_ManualSnap
    /// </summary>
    public struct NET_IN_MANUAL_SNAP
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 抓图通道号
        /// Capture channel number
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// 请求序列号
        /// Serial number
        /// </summary>
        public uint nCmdSerial;
        /// <summary>
        /// 抓图保存路径
        /// Capture save path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;
    }

    /// <summary>
    /// 抓图图片编码格式
    /// Picture encoding format
    /// </summary>
    public enum EM_SNAP_ENCODE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknwon
        /// </summary>
        EM_SNAP_ENCODE_TYPE_UNKNOWN,
        /// <summary>
        /// jpeg图片
        /// Jpeg
        /// </summary>
        EM_SNAP_ENCODE_TYPE_JPEG,
        /// <summary>
        /// mpeg4的i 帧
        /// I frame of MPEG4
        /// </summary>
        EM_SNAP_ENCODE_TYPE_MPEG4_I,
    }

    /// <summary>
    /// CLIENT_ManualSnap 接口输出参数
    /// Output param of CLIENT_ManualSnap
    /// </summary>
    public struct NET_OUT_MANUAL_SNAP
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// pRcvBuf的长度,由用户指定
        /// The length of pRcvBuf. Its value is specified by the user
        /// </summary>
        public uint nMaxBufLen;
        /// <summary>
        /// 接收图片缓冲, 用于存放抓图数据, 空间由用户申请和释放, 申请大小为nMaxBufLen
        /// Buffer of capture, It is Used to store snapshot data.The space is applied and released by the user, and the application size is nmaxbuflen.
        /// </summary>
        public IntPtr pRcvBuf;
        /// <summary>
        /// 实际接收到的图片大小
        /// Actual received picture size
        /// </summary>
        public uint nRetBufLen;
        /// <summary>
        /// 图片编码格式
        /// Picture encoding format
        /// </summary>
        public EM_SNAP_ENCODE_TYPE emEncodeType;
        /// <summary>
        /// 请求序列号
        /// Serial number
        /// </summary>
        public uint nCmdSerial;
        /// <summary>
        /// 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 允许名单权限列表
    /// authority list of WL
    /// </summary>
    public struct NET_WHITE_LIST_AUTHORITY_LIST
    {
        /// <summary>
        /// 是否有开闸权限
        /// true:having open gate authority,false:no having open gate authority
        /// </summary>
        public bool bOpenGate;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 允许名单信息
    /// WL information
    /// </summary>
    public struct NET_TRAFFICCAR_WHITE_LIST
    {
        /// <summary>
        /// 车牌是否属于允许名单
        /// true: the car is trust car,false:the car is not trust car
        /// </summary>
        public bool bTrustCar;
        /// <summary>
        /// 允许名单起始时间
        /// begin time of WL
        /// </summary>
        public NET_TIME stuBeginTime;
        /// <summary>
        /// 允许名单过期时间
        /// cancel time of WL
        /// </summary>
        public NET_TIME stuCancelTime;
        /// <summary>
        /// 允许名单权限列表
        /// authority list of WL
        /// </summary>
        public NET_WHITE_LIST_AUTHORITY_LIST stuAuthorityList;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 车辆类型
    /// car type
    /// </summary>
    public enum EM_TRAFFICCAR_CAR_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_TRAFFICCAR_CAR_TYPE_UNKNOWN,
        /// <summary>
        /// 允许名单车辆
        /// trust car
        /// </summary>
        EM_TRAFFICCAR_CAR_TYPE_TRUST_CAR,
        /// <summary>
        /// 禁止名单车辆
        /// suspicious car
        /// </summary>
        EM_TRAFFICCAR_CAR_TYPE_SUSPICIOUS_CAR,
        /// <summary>
        /// 非允许名单且非禁止名单车辆
        /// normal car
        /// </summary>
        EM_TRAFFICCAR_CAR_TYPE_NORMAL_CAR,
    }

    /// <summary>
    /// 车道类型
    /// Lane type
    /// </summary>
    public enum EM_TRAFFICCAR_LANE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_TRAFFICCAR_LANE_TYPE_UNKNOWN,
        /// <summary>
        /// 普通车道
        /// Normal
        /// </summary>
        EM_TRAFFICCAR_LANE_TYPE_NORMAL,
        /// <summary>
        /// 非机动车车道
        /// Non-motor
        /// </summary>
        EM_TRAFFICCAR_LANE_TYPE_NONMOTOR,
        /// <summary>
        /// 小型车车道
        /// Light-Duty
        /// </summary>
        EM_TRAFFICCAR_LANE_TYPE_LIGHT_DUTY,
        /// <summary>
        /// 公交车车道
        /// Bus
        /// </summary>
        EM_TRAFFICCAR_LANE_TYPE_BUS,
        /// <summary>
        /// 应急车道
        /// Emergency
        /// </summary>
        EM_TRAFFICCAR_LANE_TYPE_EMERGENCY,
        /// <summary>
        /// 危险品车道
        /// Dangerous
        /// </summary>
        EM_TRAFFICCAR_LANE_TYPE_DANGEROUS,
        /// <summary>
        /// 潮汐车道
        /// Tidal
        /// </summary>
        EM_TRAFFICCAR_LANE_TYPE_TIDAL,
    }


    /// <summary>
    /// 禁止名单信息
    /// prohibit information
    /// </summary>
    public struct NET_TRAFFICCAR_BLACK_LIST
    {
        /// <summary>
        /// 是否已启用禁止名单
        /// Enable prohibit
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 车牌是否属于禁止名单
        /// Is the plate on the prohibit
        /// </summary>
        public bool bIsBlackCar;
        /// <summary>
        /// 禁止名单起始时间
        /// Begin time
        /// </summary>
        public NET_TIME stuBeginTime;
        /// <summary>
        /// 禁止名单过期时间
        /// Cancel time
        /// </summary>
        public NET_TIME stuCancelTime;
        /// <summary>
        /// 布控类型
        /// Control type
        /// </summary>
        public EM_NET_TRAFFIC_CAR_CONTROL_TYPE emControlType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 28)]
        public byte[] bReserved;
    }



    /// <summary>
    /// 收费公路车辆通行费车型分类
    /// Classification of toll road vehicle types
    /// </summary>
    public enum EM_TOLLS_VEHICLE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_UNKNOWN,
        /// <summary>
        /// 一型客车
        /// Passenger car 1
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_PASSENGER_CAR1,
        /// <summary>
        /// 二型客车
        /// Passenger car 2
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_PASSENGER_CAR2,
        /// <summary>
        /// 三型客车
        /// Passenger car 3
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_PASSENGER_CAR3,
        /// <summary>
        /// 四型客车
        /// Passenger car 4
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_PASSENGER_CAR4,
        /// <summary>
        /// 一型货车
        /// truck 1
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_TRUCK1 = 11,
        /// <summary>
        /// 二型货车
        /// truck 2
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_TRUCK2,
        /// <summary>
        /// 三型货车
        /// truck 3
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_TRUCK3,
        /// <summary>
        /// 四型货车
        /// truck 4
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_TRUCK4,
        /// <summary>
        /// 五型货车
        /// truck 5
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_TRUCK5,
        /// <summary>
        /// 六型货车
        /// truck 6
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_TRUCK6 = 16,
        /// <summary>
        /// 一型专项作业车
        /// Operation vehicle 1
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE1 = 21,
        /// <summary>
        /// 二型专项作业车
        /// Operation vehicle 2
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE2,
        /// <summary>
        /// 三型专项作业车
        /// Operation vehicle 3
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE3,
        /// <summary>
        /// 四型专项作业车
        /// Operation vehicle 4
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE4,
        /// <summary>
        /// 五型专项作业车
        /// Operation vehicle 5
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE5,
        /// <summary>
        /// 六型专项作业车
        /// Operation vehicle 6
        /// </summary>
        EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE6 = 26,
    }

    /// <summary>
    /// 车身抠图
    /// Body matting
    /// </summary>
    public struct NET_TRAFFICCAR_ORIGINAL_VEHICLE
    {
        /// <summary>
        /// 在二进制数据块中的偏移
        /// Offset in binary data block
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 数据大小,单位：字节
        /// Data size in bytes
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 在上传图片数据中的图片序号
        /// Picture serial number in uploaded picture data
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 60)]
        public string szReserved;
    }

    /// <summary>
    /// 车牌属性
    /// Plate Attribute
    /// </summary>
    public enum EM_PLATE_ATTRIBUTE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_PLATE_ATTRIBUTE_UNKNOWN,
        /// <summary>
        /// 正常
        /// Normal
        /// </summary>
        EM_PLATE_ATTRIBUTE_NORMAL,
        /// <summary>
        /// 无牌
        /// NoPlate
        /// </summary>
        EM_PLATE_ATTRIBUTE_NO_PLATE,
        /// <summary>
        /// 部分遮挡/污损
        /// PartialOcclusion
        /// </summary>
        EM_PLATE_ATTRIBUTE_PARTIAL_OCCLUSION,
        /// <summary>
        /// 完全遮挡/污损
        /// FullOcclusion
        /// </summary>
        EM_PLATE_ATTRIBUTE_FULL_OCCLUSION,
    }

    /// <summary>
    /// TrafficCar 交通车辆信息
    /// TrafficCar information
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO
    {
        /// <summary>
        /// 车牌号码
        /// plate number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateNumber;
        /// <summary>
        /// 号牌类型 "Unknown" 未知; "Normal" 蓝牌黑牌; "Yellow" 黄牌; "DoubleYellow" 双层黄尾牌
        /// "Police" 警牌;"SAR" 港澳特区号牌; "Trainning" 教练车号牌; "Personal" 个性号牌; "Agri" 农用牌
        /// "Embassy" 使馆号牌; "Moto" 摩托车号牌; "Tractor" 拖拉机号牌; "Other" 其他号牌
        /// Plate type: "Unknown" =Unknown; "Normal"=Blue and black plate. "Yellow"=Yellow plate. "DoubleYellow"=Double-layer yellow plate
        /// "Police"=Police plate ; "Trainning" =rehearsal plate; "Personal"=Personal plate; "Agri"=Agricultural plate
        /// "Embassy"=Embassy plate; "Moto"=Moto plate ; "Tractor"=Tractor plate; "Other"=Other plate
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateType;
        /// <summary>
        /// 车牌颜色 "Blue","Yellow", "White","Black","YellowbottomBlackText","BluebottomWhiteText","BlackBottomWhiteText","ShadowGreen","YellowGreen"
        /// plate color, "Blue","Yellow", "White","Black","YellowbottomBlackText","BluebottomWhiteText","BlackBottomWhiteText","ShadowGreen","YellowGreen"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateColor;
        /// <summary>
        /// 车身颜色 "White", "Black", "Red", "Yellow", "Gray", "Blue","Green"
        /// vehicle color, "White", "Black", "Red", "Yellow", "Gray", "Blue","Green"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVehicleColor;
        /// <summary>
        /// 速度 单位Km/H
        /// speed, Km/H
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// 触发的相关事件 参见事件列表Event List,只包含交通相关事件。
        /// trigger event type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szEvent;
        /// <summary>
        /// 违章代码 详见TrafficGlobal.ViolationCode
        /// violation code, see TrafficGlobal.ViolationCode
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szViolationCode;
        /// <summary>
        /// 违章描述
        /// violation describe
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szViolationDesc;
        /// <summary>
        /// 速度下限
        /// lower speed limit
        /// </summary>
        public int nLowerSpeedLimit;
        /// <summary>
        /// 速度上限
        /// upper speed limit
        /// </summary>
        public int nUpperSpeedLimit;
        /// <summary>
        /// 限高速宽限值 单位：km/h
        /// over speed margin, km/h
        /// </summary>
        public int nOverSpeedMargin;
        /// <summary>
        /// 限低速宽限值 单位：km/h
        /// under speed margin, km/h
        /// </summary>
        public int nUnderSpeedMargin;
        /// <summary>
        /// 车道 参见事件列表Event List中卡口和路口事件。
        /// lane
        /// </summary>
        public int nLane;
        /// <summary>
        /// 车辆大小,-1表示未知,否则按位
        /// 第0位:"Light-duty", 小型车
        /// 第1位:"Medium", 中型车
        /// 第2位:"Oversize", 大型车
        /// 第3位:"Minisize", 微型车
        /// 第4位:"Largesize", 长车
        /// vehicle size, see VideoAnalyseRule's describe
        /// Bit 0:"Light-duty", small car
        /// Bit 1:"Medium", medium car
        /// Bit 2:"Oversize", large car
        /// Bit 3:"Minisize", mini car
        /// Bit 4:"Largesize", long car
        /// </summary>
        public int nVehicleSize;
        /// <summary>
        /// 车辆长度 单位米
        /// vehicle length, m
        /// </summary>
        public float fVehicleLength;
        /// <summary>
        /// 抓拍方式 0-未分类,1-全景,2-近景,4-同向抓拍,8-反向抓拍,16-号牌图像
        /// snap mode 0-normal,1-globle,2-near,4-snap on the same side,8-snap on the reverse side,16-plant picture
        /// </summary>
        public int nSnapshotMode;
        /// <summary>
        /// 本地或远程的通道名称,可以是地点信息 来源于通道标题配置ChannelTitle.Name
        /// channel name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szChannelName;
        /// <summary>
        /// 本地或远程设备名称 来源于普通配置General.MachineName
        /// Machine name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMachineName;
        /// <summary>
        /// 机器分组或叫设备所属单位 默认为空,用户可以将不同的设备编为一组,便于管理,可重复。
        /// machine group
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMachineGroup;
        /// <summary>
        /// 道路编号
        /// road way number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRoadwayNo;
        /// <summary>
        /// 行驶方向 , "DrivingDirection" : ["Approach", "上海", "杭州"],
        /// "Approach"-上行,即车辆离设备部署点越来越近；"Leave"-下行,
        /// 即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和
        /// 下行的两个地点
        /// DrivingDirection: for example ["Approach", "Shanghai", "Hangzhou"]
        /// "Approach" means driving direction,where the car is more near;"Leave"-means where if mor far to the car
        /// the second and third param means the location of the driving direction
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3 * 256)]
        public string szDrivingDirection;
        /// <summary>
        /// 设备地址,OSD叠加到图片上的,来源于配置TrafficSnapshot.DeviceAddress,'\0'结束
        /// device address,OSD superimposed onto the image,from TrafficSnapshot.DeviceAddress,'\0'means end.
        /// </summary>
        public IntPtr szDeviceAddress;
        /// <summary>
        /// 车辆标识, 例如 "Unknown"-未知, "Audi"-奥迪, "Honda"-本田 ...
        /// Vehicle identification, such as "Unknown" - unknown "Audi" - Audi, "Honda" - Honda ...
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVehicleSign;
        /// <summary>
        /// 由车检器产生抓拍信号冗余信息
        /// Generated by the vehicle inspection device to capture the signal redundancy
        /// </summary>
        public NET_SIG_CARWAY_INFO_EX stuSigInfo;
        /// <summary>
        /// 设备部署地点
        /// Equipment deployment locations
        /// </summary>
        public IntPtr szMachineAddr;
        /// <summary>
        /// 当前图片曝光时间,单位为毫秒
        /// Current picture exposure time, in milliseconds
        /// </summary>
        public float fActualShutter;
        /// <summary>
        /// 当前图片增益,范围为0~100
        /// Current picture gain, ranging from 0 to 100
        /// </summary>
        public byte byActualGain;
        /// <summary>
        /// 车道方向,0-南向北 1-西南向东北 2-西向东 3-西北向东南 4-北向南 5-东北向西南 6-东向西 7-东南向西北 8-未知 9-自定义
        /// Lane Direction,0 - south to north 1- Southwest to northeast 2 - West to east, 3 - Northwest to southeast 4 - north to south 5 - northeast to southwest 6 - East to West 7 - Southeast to northwest 8 - Unknown 9-customized
        /// </summary>
        public byte byDirection;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// 详细地址, 作为szDeviceAddress的补充
        /// Address, as szDeviceAddress supplement,
        /// </summary>
        public IntPtr szDetailedAddress;
        /// <summary>
        /// 图片防伪码
        /// waterproof
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDefendCode;
        /// <summary>
        /// 关联禁止名单数据库记录默认主键ID, 0,无效；> 0,禁止名单数据记录
        /// Link BL data recorddefualt main keyID, 0, invalid, > 0, BL data record
        /// </summary>
        public int nTrafficBlackListID;
        /// <summary>
        /// 车身颜色RGBA
        /// bofy color RGBA
        /// </summary>
        public NET_COLOR_RGBA stuRGBA;
        /// <summary>
        /// 抓拍时间
        /// snap time
        /// </summary>
        public NET_TIME stSnapTime;
        /// <summary>
        /// 记录编号
        /// Rec No
        /// </summary>
        public int nRecNo;
        /// <summary>
        /// 自定义车位号（停车场用）
        /// self defined parking space number, for parking,
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]
        public string szCustomParkNo;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved1;
        /// <summary>
        /// 车板位号
        /// Metal plate No.
        /// </summary>
        public int nDeckNo;
        /// <summary>
        /// 空闲车板数量
        /// Free metal plate No.
        /// </summary>
        public int nFreeDeckCount;
        /// <summary>
        /// 占用车板数量
        /// Occupized metal plate No.
        /// </summary>
        public int nFullDeckCount;
        /// <summary>
        /// 总共车板数量
        /// Total metal plate No.
        /// </summary>
        public int nTotalDeckCount;
        /// <summary>
        /// 违章名称
        /// violation name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szViolationName;
        /// <summary>
        /// 车重(单位 Kg)
        /// Weight of car(kg)
        /// </summary>
        public uint nWeight;
        /// <summary>
        /// 自定义车道方向,byDirection为9时有效
        /// custom road way, valid when byDirection is 9
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCustomRoadwayDirection;
        /// <summary>
        /// 物理车道号,取值0到5
        /// the physical lane number,value form 0 to 5
        /// </summary>
        public byte byPhysicalLane;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved2;
        /// <summary>
        /// 车辆行驶方向
        /// moving direction
        /// </summary>
        public EM_TRAFFICCAR_MOVE_DIRECTION emMovingDirection;
        /// <summary>
        /// 对应电子车牌标签信息中的过车时间(ThroughTime)
        /// corresponding to throughTime
        /// </summary>
        public NET_TIME stuEleTagInfoUTC;
        /// <summary>
        /// 车窗包围盒，0~8191
        /// The BoundingBox of car window , range: [0,8191]
        /// </summary>
        public NET_RECT stuCarWindowBoundingBox;
        /// <summary>
        /// 允许名单信息
        /// WL information
        /// </summary>
        public NET_TRAFFICCAR_WHITE_LIST stuWhiteList;
        /// <summary>
        /// 车辆类型
        /// car type
        /// </summary>
        public EM_TRAFFICCAR_CAR_TYPE emCarType;
        /// <summary>
        /// 车道类型
        /// Lane type
        /// </summary>
        public EM_TRAFFICCAR_LANE_TYPE emLaneType;
        /// <summary>
        /// 车系年款翻译后文本内容
        /// Translated year of vehicle
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVehicleBrandYearText;
        /// <summary>
        /// 车辆子类型
        /// category
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCategory;
        /// <summary>
        /// 禁止名单信息
        /// prohibit information
        /// </summary>
        public NET_TRAFFICCAR_BLACK_LIST stuBlackList;
        /// <summary>
        /// 车流量方向
        /// Traffic flow direction
        /// </summary>
        public EM_VEHICLE_DIRECTION emFlowDirection;
        /// <summary>
        /// 收费公路车辆通行费车型分类
        /// Classification of toll road vehicle types
        /// </summary>
        public EM_TOLLS_VEHICLE_TYPE emTollsVehicleType;
        /// <summary>
        /// 轴型代码,参考轴型国标 0代表其他
        /// Shaft type code, refer to the national standard of shaft type, and 0 represents others
        /// </summary>
        public uint nAxleType;
        /// <summary>
        /// 车轴数量
        /// Number of axles
        /// </summary>
        public uint nAxleCount;
        /// <summary>
        /// 车轮数量
        /// Number of wheels
        /// </summary>
        public uint nWheelNum;
        /// <summary>
        /// 车身抠图
        /// Body matting
        /// </summary>
        public NET_TRAFFICCAR_ORIGINAL_VEHICLE stuOriginalVehicle;
        /// <summary>
        /// 按功能划分的车辆类型
        /// Vehicle type by function
        /// </summary>
        public EM_VEHICLE_TYPE_BY_FUNC emVehicleTypeByFunc;
        /// <summary>
        /// 车辆子品牌
        /// Sun Brand
        /// </summary>
        public ushort nSunBrand;
        /// <summary>
        /// 车辆年款
        /// Brand Year
        /// </summary>
        public ushort nBrandYear;
        /// <summary>
        /// 交通灯类型,仅在EVENT_IVS_TRAFFIC_RUNREDLIGHT中有效, 0;未知, 1:箭头灯, 2:圆形灯
        /// Traffic light type, valid only in EVENT_IVS_TRAFFIC_RUNREDLIGHT, 0; Unknown, 1: Head lamp, 2: Round lamp
        /// </summary>
        public int nTrafficLightType;
        /// <summary>
        /// 车牌属性
        /// Plate Attribute
        /// </summary>
        public EM_PLATE_ATTRIBUTE emPlateAttribute;
        /// <summary>
        /// / 交通车辆信息扩展, 对应NET_TRAFFICCAR_INFO_EXTERN
        /// Expansion of Traffic Vehicle Information, corresponding to NET_TRAFFICCAR_INFO_EXTERN
        /// </summary>
        public IntPtr pTrafficInfoExtern;
        /// <summary>
        /// / 分组类别,出租车、网约车、私家车等等
        /// / Group category, taxi, online car, private car, etc
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCarNoGroupType;
        /// <summary>
        /// / 保留字节,留待扩展.
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 68 - 8)]
        public byte[] bReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 68 - 4)]
        public byte[] bReserved;
#endif
    }

    /// <summary>
    /// 视频分析物体信息扩展结构体
    /// Video analysis object info expansion structure
    /// </summary>
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]
    public struct NET_MSG_OBJECT_EX
    {
        public uint dwSize;
        /// <summary>
        /// 物体ID,每个ID表示一个唯一的物体
        /// object ID, each ID means a exclusive object
        /// </summary>
        public int nObjectID;
        /// <summary>
        /// 物体类型
        /// object type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szObjectType;
        /// <summary>
        /// 置信度(0~255),值越大表示置信度越高
        /// confidence coefficient (0~255), value the bigger means confidence coefficient the higher
        /// </summary>
        public int nConfidence;
        /// <summary>
        /// 物体动作:1:Appear 2:Move 3:Stay 4:Remove 5:Disappear 6:Split 7:Merge 8:Rename
        /// object motion :1:Appear 2:Move 3:Stay 4:Remove 5:Disappear 6:Split 7:Merge 8:Rename
        /// </summary>
        public int nAction;
        /// <summary>
        /// 包围盒
        /// box
        /// </summary>
        public NET_A_RECT_EX BoundingBox;
        /// <summary>
        /// 物体型心
        /// object model center
        /// </summary>
        public NET_POINT Center;
        /// <summary>
        /// 多边形顶点个数
        /// polygon vertex number
        /// </summary>
        public int nPolygonNum;
        /// <summary>
        /// 较精确的轮廓多边形
        /// relatively accurate outline the polygon
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_POINT[] Contour;
        /// <summary>
        /// 表示车牌、车身等物体主要颜色；按字节表示,分别为红、绿、蓝和透明度,例如:RGB值为(0,255,0),透明度为0时, 其值为0x00ff0000.
        /// means plate, vehicle body and etc. object major color, by byte means , are red, green, blue and transparency , such as:RGB value is (0,255,0), transparency is 0, its value is 0x00ff0000.
        /// </summary>
        public uint rgbaMainColor;
        /// <summary>
        /// 同MSG_OBJECT相应字段
        /// same as MSG_OBJECT corresponding field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szText;
        /// <summary>
        /// 物体子类别,根据不同的物体类型,可以取以下子类型：
        /// 同MSG_OBJECT相应字段
        /// object sub type , according to different object types , may use the following sub type :
        /// same as MSG_OBJECT field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szObjectSubType;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved1;
        /// <summary>
        /// 是否有物体对应图片文件信息
        /// object corresponding to picture file info or not
        /// </summary>
        public byte bPicEnble;
        /// <summary>
        /// 物体对应图片信息
        /// object corresponding to picture info
        /// </summary>
        public NET_PIC_INFO stPicInfo;
        /// <summary>
        /// 是否是抓拍张的识别结果
        /// snapshot recognition result or not
        /// </summary>
        public byte bShotFrame;
        /// <summary>
        /// 物体颜色(rgbaMainColor)是否可用
        /// object color (rgbaMainColor) usable or not
        /// </summary>
        public byte bColor;
        /// <summary>
        /// 下半身颜色(rgbaLowerBodyColor)是否可用
        /// lower color (rgbaLowerBodyColor) usable or not
        /// </summary>
        public byte bLowerBodyColor;
        /// <summary>
        /// 时间表示类型,详见EM_TIME_TYPE说明
        /// time means type , see EM_TIME_TYPE note
        /// </summary>
        public byte byTimeType;
        /// <summary>
        /// 针对视频浓缩,当前时间戳（物体抓拍或识别时,会将此识别智能帧附在一个视频帧或jpeg图片中,此帧所在原始视频中的出现时间）
        /// for video compression, current time stamp, object snapshot or recognition, attach this recognition frame in one vire frame or jpegpicture, this frame appearance time in original video,
        /// </summary>
        public NET_TIME_EX stuCurrentTime;
        /// <summary>
        /// 开始时间戳（物体开始出现时）
        /// start time stamp, object start appearance,
        /// </summary>
        public NET_TIME_EX stuStartTime;
        /// <summary>
        /// 结束时间戳（物体最后出现时）
        /// end time stamp, object last aapearance,
        /// </summary>
        public NET_TIME_EX stuEndTime;
        /// <summary>
        /// 包围盒(绝对坐标)
        /// box(absolute coordinate)
        /// </summary>
        public NET_A_RECT_EX stuOriginalBoundingBox;
        /// <summary>
        /// 车标坐标包围盒
        /// LGO coordinate box
        /// </summary>
        public NET_A_RECT_EX stuSignBoundingBox;
        /// <summary>
        /// 当前帧序号（抓下这个物体时的帧）
        /// current frame no., snapshot this object frame,
        /// </summary>
        public uint dwCurrentSequence;
        /// <summary>
        /// 开始帧序号（物体开始出现时的帧序号）
        /// start frame no., object start appearance frame no.,
        /// </summary>
        public uint dwBeginSequence;
        /// <summary>
        /// 结束帧序号（物体消逝时的帧序号）
        /// end frame no., object disappearance frame no.,
        /// </summary>
        public uint dwEndSequence;
        /// <summary>
        /// 开始时文件偏移, 单位: 字节（物体开始出现时,视频帧在原始视频文件中相对于文件起始处的偏移）
        /// start file shift, unit: byte, object start appearance, video in original video file moves toward file origin,
        /// </summary>
        public long nBeginFileOffset;
        /// <summary>
        /// 结束时文件偏移, 单位: 字节（物体消逝时,视频帧在原始视频文件中相对于文件起始处的偏移）
        /// End file shift, unit: byte, object disappearance, video in original video file moves toward file origin,
        /// </summary>
        public long nEndFileOffset;
        /// <summary>
        /// 物体颜色相似度,取值范围：0-100,数组下标值代表某种颜色,详见EM_COLOR_TYPE
        /// object color similarity, take value range :0-100, group subscript value represents certain color , see EM_COLOR_TYPE
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] byColorSimilar;
        /// <summary>
        /// 上半身物体颜色相似度(物体类型为人时有效)
        /// upper object color similarity (object type as human is valid )
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] byUpperBodyColorSimilar;
        /// <summary>
        /// 下半身物体颜色相似度(物体类型为人时有效)
        /// lower object color similarity (object type as human is valid )
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] byLowerBodyColorSimilar;
        /// <summary>
        /// 相关物体ID
        /// related object ID
        /// </summary>
        public int nRelativeID;
        /// <summary>
        /// "ObjectType"为"Vehicle"或者"Logo"时,表示车标下的某一车系,比如奥迪A6L,由于车系较多,SDK实现时透传此字段,设备如实填写。
        /// "ObjectType"is "Vehicle"or "Logo", means LOGO lower brand, such as Audi A6L, since there are many brands, SDK shows this field in real-time,device filled as real.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szSubText;
        /// <summary>
        /// 入侵人员身高,单位cm
        /// Intrusion staff height, unit cm
        /// </summary>
        public int nPersonStature;
        /// <summary>
        /// 人员入侵方向
        /// Staff intrusion direction
        /// </summary>
        public EM_MSG_OBJ_PERSON_DIRECTION emPersonDirection;
        /// <summary>
        /// 使用方法同rgbaMainColor,物体类型为人时有效
        /// Use direction same as rgbaMainColor,object type as human is valid
        /// </summary>
        public uint rgbaLowerBodyColor;
        /// <summary>
        /// / Text文本内容对应的区域编号
        /// / The area number corresponding to the text content
        /// </summary>
        public uint nTextRegionID;
    }

    /// <summary>
    /// 安全带状态
    /// safe belt state
    /// </summary>
    public enum EM_NET_SAFEBELT_STATE
    {
        /// <summary>
        /// 未知
        /// Unknow
        /// </summary>
        SS_NUKNOW = 0,
        /// <summary>
        /// 已系安全带
        /// WithSafeBelt
        /// </summary>
        SS_WITH_SAFE_BELT,
        /// <summary>
        /// 未系安全带
        /// WithoutSafeBelt
        /// </summary>
        SS_WITHOUT_SAFE_BELT,
    }

    /// <summary>
    /// 打电话的动作类型
    /// Call action type
    /// </summary>
    public enum EM_CALL_ACTION_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_CALL_ACTION_TYPE_UNKNOWN,
        /// <summary>
        /// 贴耳
        /// Call by ear
        /// </summary>
        EM_CALL_ACTION_TYPE_CALL_BY_EAR,
        /// <summary>
        /// 手持
        /// Hold
        /// </summary>
        EM_CALL_ACTION_TYPE_CALL_HAND_HOLD,
    }

    /// <summary>
    /// 驾驶位违规信息
    /// driver's illegal info
    /// </summary>
    public struct NET_EVENT_COMM_SEAT
    {
        /// <summary>
        /// 是否检测到座驾信息
        /// whether seat info detected
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 座驾类型, 0:未识别; 1:主驾驶; 2:副驾驶
        /// seat type
        /// </summary>
        public EM_COMMON_SEAT_TYPE emSeatType;
        /// <summary>
        /// 违规状态
        /// illegal state
        /// </summary>
        public NET_EVENT_COMM_STATUS stStatus;
        /// <summary>
        /// 安全带状态
        /// safe belt state
        /// </summary>
        public EM_NET_SAFEBELT_STATE emSafeBeltStatus;
        /// <summary>
        /// 遮阳板状态
        /// sun shade state
        /// </summary>
        public EM_NET_SUNSHADE_STATE emSunShadeStatus;
        /// <summary>
        /// 打电话动作
        /// Call action
        /// </summary>
        public EM_CALL_ACTION_TYPE emCallAction;
        /// <summary>
        /// 安全带确信度
        /// Safety belt confidence
        /// </summary>
        public uint nSafeBeltConf;
        /// <summary>
        /// 打电话置信度
        /// Call confidence
        /// </summary>
        public uint nPhoneConf;
        /// <summary>
        /// 抽烟置信度
        /// Smoking confidence
        /// </summary>
        public uint nSmokeConf;
        /// <summary>
        /// 预留字节
        /// reversed
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szReserved;
    }

    /// <summary>
    /// 车辆物件
    /// car attachment
    /// </summary>
    public struct NET_EVENT_COMM_ATTACHMENT
    {
        /// <summary>
        /// 物件类型
        /// type
        /// </summary>
        public EM_COMM_ATTACHMENT_TYPE emAttachmentType;
        /// <summary>
        /// 坐标
        /// coordinate
        /// </summary>
        public NET_RECT stuRect;
        /// <summary>
        /// 置信度
        /// Confidence
        /// </summary>
        public uint nConf;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 收费站车型分类
    /// Vehicle type inToll station
    /// </summary>
    public enum EM_VEHICLE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_VEHICLE_TYPE_UNKNOWN,
        /// <summary>
        /// 客1
        /// PassengerCar1
        /// </summary>
        EM_VEHICLE_TYPE_PASSENGERCAR1,
        /// <summary>
        /// 货1
        /// Truck1
        /// </summary>
        EM_VEHICLE_TYPE_TRUCK1,
        /// <summary>
        /// 客2
        /// PassengerCar2
        /// </summary>
        EM_VEHICLE_TYPE_PASSENGERCAR2,
        /// <summary>
        /// 货2
        /// Truck2
        /// </summary>
        EM_VEHICLE_TYPE_TRUCK2,
        /// <summary>
        /// 客3
        /// PassengerCar3
        /// </summary>
        EM_VEHICLE_TYPE_PASSENGERCAR3,
        /// <summary>
        /// 货3
        /// Truck3
        /// </summary>
        EM_VEHICLE_TYPE_TRUCK3,
        /// <summary>
        /// 客4
        /// PassengerCar4
        /// </summary>
        EM_VEHICLE_TYPE_PASSENGERCAR4,
        /// <summary>
        /// 货4
        /// Truck4
        /// </summary>
        EM_VEHICLE_TYPE_TRUCK4,
        /// <summary>
        /// 客5
        /// PassengerCar5
        /// </summary>
        EM_VEHICLE_TYPE_PASSENGERCAR5,
        /// <summary>
        /// 货5
        /// Truck5
        /// </summary>
        EM_VEHICLE_TYPE_TRUCK5,
    }

    /// <summary>
    /// 抓拍的类型
    /// snap category
    /// </summary>
    public enum EM_SNAPCATEGORY
    {
        /// <summary>
        /// 机动车
        /// motor
        /// </summary>
        EM_SNAPCATEGORY_MOTOR,
        /// <summary>
        /// 非机动车
        /// nonmotor
        /// </summary>
        EM_SNAPCATEGORY_NONMOTOR,
    }

    /// <summary>
    /// 按功能划分的车辆类型
    /// vehicle type by function
    /// </summary>
    public enum EM_VEHICLE_TYPE_BY_FUNC
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_UNKNOWN,
        /// <summary>
        /// 危化品车辆
        /// tank car
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_TANK_CAR,
        /// <summary>
        /// 槽罐车
        /// slot tank car
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_SLOT_TANK_CAR,
        /// <summary>
        /// 渣土车
        /// dregs car
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_DREGS_CAR,
        /// <summary>
        /// 混凝土搅拌车
        /// concrete mixer truck
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_CONCRETE_MIXER_TRUCK,
        /// <summary>
        /// 出租车
        /// taxi
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_TAXI,
        /// <summary>
        /// 警车
        /// police car
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_POLICE,
        /// <summary>
        /// 救护车
        /// ambulance
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_AMBULANCE,
        /// <summary>
        /// 普通车
        /// general car
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_GENERAL,
        /// <summary>
        /// 洒水车
        /// watering car
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_WATERING_CAR,
        /// <summary>
        /// 消防车
        /// fire engine
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_FIRE_ENGINE,
        /// <summary>
        /// 工程车
        /// machineshop truck
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_MACHINESHOP_TRUCK,
        /// <summary>
        /// 粉粒物料车
        /// power lot vehicle
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_POWER_LOT_VEHICLE,
        /// <summary>
        /// 吸污车
        /// suction sewage truck
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_SUCTION_SEWAGE_TRUCK,
        /// <summary>
        /// 普通罐车
        /// normal tank truck
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_NORMAL_TANK_TRUCK,
        /// <summary>
        /// 校车
        /// school bus
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_SCHOOL_BUS,
        /// <summary>
        /// 挖掘机
        /// exvavator
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_EXCAVATOR,
        /// <summary>
        /// 推土车
        /// bulldozer
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_BULLDOZER,
        /// <summary>
        /// 吊车
        /// crane
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_CRANE,
        /// <summary>
        /// 泵车
        /// pump truck
        /// </summary>
        EM_VEHICLE_TYPE_BY_FUNC_PUMP_TRUCK,
    }

    /// <summary>
    /// 标准车辆类型
    /// standard vehicle type
    /// </summary>
    public enum EM_STANDARD_VEHICLE_TYPE
    {
        /// <summary>
        /// 未知
        /// unkonwon
        /// </summary>
        EM_STANDARD_VEHICLE_UNKNOWN,
        /// <summary>
        /// 机动车
        /// motor
        /// </summary>
        EM_STANDARD_VEHICLE_MOTOR,
        /// <summary>
        /// 公交车
        /// bus
        /// </summary>
        EM_STANDARD_VEHICLE_BUS,
        /// <summary>
        /// 无牌机动车
        /// unlicensed motor
        /// </summary>
        EM_STANDARD_VEHICLE_UNLICENSED_MOTOR,
        /// <summary>
        /// 大型汽车
        /// large car
        /// </summary>
        EM_STANDARD_VEHICLE_LARGE_CAR,
        /// <summary>
        /// 小型汽车
        /// micro car
        /// </summary>
        EM_STANDARD_VEHICLE_MICRO_CAR,
        /// <summary>
        /// 使馆汽车
        /// embassy car
        /// </summary>
        EM_STANDARD_VEHICLE_EMBASSY_CAR,
        /// <summary>
        /// 领馆汽车
        /// marginal car
        /// </summary>
        EM_STANDARD_VEHICLE_MARGINAL_CAR,
        /// <summary>
        /// 境外汽车
        /// areaout car
        /// </summary>
        EM_STANDARD_VEHICLE_AREAOUT_CAR,
        /// <summary>
        /// 外籍汽车
        /// foreign car
        /// </summary>
        EM_STANDARD_VEHICLE_FOREIGN_CAR,
        /// <summary>
        /// 农用运输车
        /// farm trans car
        /// </summary>
        EM_STANDARD_VEHICLE_FARM_TRANS_CAR,
        /// <summary>
        /// 拖拉机
        /// tractor
        /// </summary>
        EM_STANDARD_VEHICLE_TRACTOR,
        /// <summary>
        /// 挂车
        /// trailer
        /// </summary>
        EM_STANDARD_VEHICLE_TRAILER,
        /// <summary>
        /// 教练汽车
        /// coach car
        /// </summary>
        EM_STANDARD_VEHICLE_COACH_CAR,
        /// <summary>
        /// 试验汽车
        /// trial car
        /// </summary>
        EM_STANDARD_VEHICLE_TRIAL_CAR,
        /// <summary>
        /// 临时入境汽车
        /// temporary entry car
        /// </summary>
        EM_STANDARD_VEHICLE_TEMPORARYENTRY_CAR,
        /// <summary>
        /// 临时入境摩托
        /// temporary entry motorcycle
        /// </summary>
        EM_STANDARD_VEHICLE_TEMPORARYENTRY_MOTORCYCLE,
        /// <summary>
        /// 临时行驶车
        /// temporary steer car
        /// </summary>
        EM_STANDARD_VEHICLE_TEMPORARY_STEER_CAR,
        /// <summary>
        /// 大货车
        /// large truck
        /// </summary>
        EM_STANDARD_VEHICLE_LARGE_TRUCK,
        /// <summary>
        /// 中货车
        /// mid truck
        /// </summary>
        EM_STANDARD_VEHICLE_MID_TRUCK,
        /// <summary>
        /// 小货车
        /// micro truck
        /// </summary>
        EM_STANDARD_VEHICLE_MICRO_TRUCK,
        /// <summary>
        /// 面包车
        /// microbus
        /// </summary>
        EM_STANDARD_VEHICLE_MICROBUS,
        /// <summary>
        /// 轿车
        /// saloon car
        /// </summary>
        EM_STANDARD_VEHICLE_SALOON_CAR,
        /// <summary>
        /// 小轿车
        /// carriage
        /// </summary>
        EM_STANDARD_VEHICLE_CARRIAGE,
        /// <summary>
        /// 微型轿车
        /// mini carriage
        /// </summary>
        EM_STANDARD_VEHICLE_MINI_CARRIAGE,
        /// <summary>
        /// SUV或者MPV
        /// SUV or MPV
        /// </summary>
        EM_STANDARD_VEHICLE_SUV_MPV,
        /// <summary>
        /// SUV
        /// SUV
        /// </summary>
        EM_STANDARD_VEHICLE_SUV,
        /// <summary>
        /// MPV
        /// MPV
        /// </summary>
        EM_STANDARD_VEHICLE_MPV,
        /// <summary>
        /// 客车
        /// passenger car
        /// </summary>
        EM_STANDARD_VEHICLE_PASSENGER_CAR,
        /// <summary>
        /// 大客车
        /// motor bus
        /// </summary>
        EM_STANDARD_VEHICLE_MOTOR_BUS,
        /// <summary>
        /// 中客车
        /// mid passenger car
        /// </summary>
        EM_STANDARD_VEHICLE_MID_PASSENGER_CAR,
        /// <summary>
        /// 小客车
        /// mini bus
        /// </summary>
        EM_STANDARD_VEHICLE_MINI_BUS,
        /// <summary>
        /// 皮卡车
        /// pickup
        /// </summary>
        EM_STANDARD_VEHICLE_PICKUP,
        /// <summary>
        /// 油罐车
        /// oiltank truck
        /// </summary>
        EM_STANDARD_VEHICLE_OILTANK_TRUCK,
    }

    /// <summary>
    /// 海外车辆类型中的子类别，一个车辆只能是子类型的某一种。（海外专用
    /// subcategories of oversea vehicle types
    /// </summary>
    public enum EM_OVERSEA_VEHICLE_CATEGORY_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_OVERSEA_VEHICLE_CATEGORY_UNKNOWN,
        /// <summary>
        /// 摩托车
        /// motorcycle
        /// </summary>
        EM_OVERSEA_VEHICLE_CATEGORY_MOTORCYCLE,
        /// <summary>
        /// 轻型货车
        /// light goods vehicle
        /// </summary>
        EM_OVERSEA_VEHICLE_CATEGORY_LIGHT_GOODS_VEHICLE,
        /// <summary>
        /// 公司用私家车
        /// company vehicle
        /// </summary>
        EM_OVERSEA_VEHICLE_CATEGORY_COMPANY_VEHICLE,
        /// <summary>
        /// 个人用私家车
        /// private vehicle
        /// </summary>
        EM_OVERSEA_VEHICLE_CATEGORY_PRIVATE_VEHICLE,
        /// <summary>
        /// TAXI或者快线车
        /// taxi
        /// </summary>
        EM_OVERSEA_VEHICLE_CATEGORY_TAXI,
        /// <summary>
        /// 拖车
        /// trailer
        /// </summary>
        EM_OVERSEA_VEHICLE_CATEGORY_TRAILER,
        /// <summary>
        /// 工程车
        /// engineering plant vehicle
        /// </summary>
        EM_OVERSEA_VEHICLE_CATEGORY_ENGINEERING_PLANT_VEHICLE,
        /// <summary>
        /// 超大货车
        /// very heavy goods vehicle
        /// </summary>
        EM_OVERSEA_VEHICLE_CATEGORY_VERY_HEAVY_GOODS_VEHICLE,
        /// <summary>
        /// 大货车
        /// heavy goods vehicle
        /// </summary>
        EM_OVERSEA_VEHICLE_CATEGORY_HEAVY_GOODS_VEHICLE,
        /// <summary>
        /// 公共BUS
        /// public bus
        /// </summary>
        EM_OVERSEA_VEHICLE_CATEGORY_PUBLIC_BUS,
        /// <summary>
        /// 私营BUS
        /// private bus
        /// </summary>
        EM_OVERSEA_VEHICLE_CATEGORY_PRIVATE_BUS,
        /// <summary>
        /// 特殊车辆
        /// special vehicle
        /// </summary>
        EM_OVERSEA_VEHICLE_CATEGORY_SPECIAL_VEHICLE,
    }

    /// <summary>
    /// 物体在雷达坐标系中的信息
    /// Radar Info
    /// </summary>
    public struct NET_EVENT_RADAR_INFO
    {
        /// <summary>
        /// X轴坐标(横向距离)，单位：米
        /// X, unit: metre
        /// </summary>
        public float fCoordinateX;
        /// <summary>
        /// Y轴坐标（纵向距离），单位：米
        /// Y, unit: metre
        /// </summary>
        public float fCoordinateY;
        /// <summary>
        /// 雷达目标横向加速度ax, 横向指设备视角的右手方向; 数据为正表示车辆加速, 数据为负表示车辆减速; 单位为m/s2
        /// Radar target transverse acceleration ax, The unit is m/s2
        /// </summary>
        public float fAccelerationX;
        /// <summary>
        /// 雷达目标纵向加速度ay，纵向指设备视角的正前方向；数据为正表示车辆加速，数据为负表示车辆减速；单位为m/s2
        /// Radar target longitudinal acceleration ay, The unit is m/s2
        /// </summary>
        public float fAccelerationY;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 触发事件时物体的GPS信息
    /// Event Gps Info
    /// </summary>
    public struct NET_EVENT_GPS_INFO
    {
        /// <summary>
        /// 经度，单位：度,正为东经，负为西经，取值范围[-180,180]
        /// longitude,[-180, 180],unit:degree,negative:west longitude
        /// </summary>
        public double dLongitude;
        /// <summary>
        /// 纬度，单位：度,正为北纬，负为南纬，取值范围[-90,90]
        /// latitude,[-90, 90],unit:degree,negative:south latitude
        /// </summary>
        public double dLatitude;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public byte[] bReserved;
    }


    /// <summary>
    /// 辅车牌信息
    /// Auxiliary license plate information
    /// </summary>
    public struct NET_EXTRA_PLATES
    {
        /// <summary>
        /// 车牌图片在二进制数据内偏移，单位字节
        /// The license plate picture is offset in binary data, in bytes
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 车牌图片长度，单位字节
        /// License plate picture length, in bytes
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 辅车牌号码，UTF8格式
        /// Auxiliary license plate number,UTF8
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szText;
        /// <summary>
        /// 车牌类型
        /// License plate type
        /// </summary>
        public EM_NET_PLATE_TYPE emCategory;
        /// <summary>
        /// 车牌颜色
        /// License plate color
        /// </summary>
        public EM_NET_PLATE_COLOR_TYPE emColor;
        /// <summary>
        /// 辅车牌的包围盒，坐标已算上黑边高度车牌矩形框，绝对坐标，即真正的像素点坐标
        /// The coordinates of the bounding box of the auxiliary license plate have been calculated into the height of the black edge, the rectangular box of the license plate, and the absolute coordinates, that is, the real pixel coordinates
        /// </summary>
        public NET_RECT stuArea;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string bReserved;
    }

    /// <summary>
    /// 公共信息
    /// public info
    /// </summary>
    public struct NET_EVENT_COMM_INFO
    {
        /// <summary>
        /// NTP校时状态
        /// NTP time sync status
        /// </summary>
        public EM_NTP_STATUS emNTPStatus;
        /// <summary>
        /// 驾驶员信息数
        /// driver info number
        /// </summary>
        public int nDriversNum;
        /// <summary>
        /// 驾驶员信息数据
        /// driver info data
        /// </summary>
        public IntPtr pstDriversInfo;
        /// <summary>
        /// 本地硬盘或者sd卡成功写入路径,为NULL时,路径不存在
        /// writing path for local disk or sd card, or write to default path if NULL
        /// </summary>
        public IntPtr pszFilePath;
        /// <summary>
        /// 设备成功写到ftp服务器的路径
        /// ftp path
        /// </summary>
        public IntPtr pszFTPPath;
        /// <summary>
        /// 当前接入需要获取当前违章的关联视频的FTP上传路径
        /// ftp path for assocated video
        /// </summary>
        public IntPtr pszVideoPath;
        /// <summary>
        /// 驾驶位信息
        /// Seat info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_EVENT_COMM_SEAT[] stCommSeat;
        /// <summary>
        /// 车辆物件个数
        /// Car Attachment number
        /// </summary>
        public int nAttachmentNum;
        /// <summary>
        /// 车辆物件信息
        /// Car Attachment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_EVENT_COMM_ATTACHMENT[] stuAttachment;
        /// <summary>
        /// 年检标志个数
        /// Annual Inspection number
        /// </summary>
        public int nAnnualInspectionNum;
        /// <summary>
        /// 年检标志
        /// Annual Inspection
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_RECT[] stuAnnualInspection;
        /// <summary>
        /// HC所占比例，单位：%/1000000
        /// The ratio of HC,unit,%/1000000
        /// </summary>
        public float fHCRatio;
        /// <summary>
        /// NO所占比例，单位：%/1000000
        /// The ratio of NO,unit,%/1000000
        /// </summary>
        public float fNORatio;
        /// <summary>
        /// CO所占百分比，单位：% 取值0~100
        /// The percent of CO,unit,% ,range from 0 to 100
        /// </summary>
        public float fCOPercent;
        /// <summary>
        /// CO2所占百分比，单位：% 取值0~100
        /// The percent of CO2,unit: % ,range from 0 to 100
        /// </summary>
        public float fCO2Percent;
        /// <summary>
        /// 不透光度，单位：% 取值0~100
        /// The obscuration of light,unit,% ,range from 0 to 100
        /// </summary>
        public float fLightObscuration;
        /// <summary>
        /// 原始图片张数
        /// Original pictures info number
        /// </summary>
        public int nPictureNum;
        /// <summary>
        /// 原始图片信息
        /// Original pictures info data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_EVENT_PIC_INFO[] stuPicInfos;
        /// <summary>
        /// 温度值,单位摄氏度
        /// ,unit: centigrade
        /// </summary>
        public float fTemperature;
        /// <summary>
        /// 相对湿度百分比值
        /// Humidity,unit: %
        /// </summary>
        public uint nHumidity;
        /// <summary>
        /// 气压值,单位Kpa
        /// Pressure,unit: Kpa
        /// </summary>
        public float fPressure;
        /// <summary>
        /// 风力值,单位m/s
        /// Wind force,unit: m/s
        /// </summary>
        public float fWindForce;
        /// <summary>
        /// 风向,单位度,范围:[0,360]
        /// Wind direction,unit: degree,range:[0,360]
        /// </summary>
        public uint nWindDirection;
        /// <summary>
        /// 道路坡度值,单位度
        /// Road gradient,unit: degree
        /// </summary>
        public float fRoadGradient;
        /// <summary>
        /// 加速度值,单位:m/s2
        /// Acceleration,unit: m/s2
        /// </summary>
        public float fAcceleration;
        /// <summary>
        /// RFID 电子车牌标签信息
        /// RFID electronics tag info
        /// </summary>
        public NET_RFIDELETAG_INFO stuRFIDEleTagInfo;
        /// <summary>
        /// 二值化车牌抠图
        /// Binarized plate matting
        /// </summary>
        public NET_EVENT_PIC_INFO stuBinarizedPlateInfo;
        /// <summary>
        /// 车身特写抠图
        /// Vehicle body close-up matting
        /// </summary>
        public NET_EVENT_PIC_INFO stuVehicleBodyInfo;
        /// <summary>
        /// 收费站车型分类
        /// Vehicle type inToll station
        /// </summary>
        public EM_VEHICLE_TYPE emVehicleTypeInTollStation;
        /// <summary>
        /// 抓拍的类型，默认为机动车
        /// Snap Category
        /// </summary>
        public EM_SNAPCATEGORY emSnapCategory;
        /// <summary>
        /// 车牌所属地区代码,(孟加拉海外车牌识别项目),默认-1表示未识别
        /// Location code of license plate,(Bangladesh Project),default -1 indicates unrecognized
        /// </summary>
        public int nRegionCode;
        /// <summary>
        /// 按功能划分的车辆类型
        /// Vehicle type by function
        /// </summary>
        public EM_VEHICLE_TYPE_BY_FUNC emVehicleTypeByFunc;
        /// <summary>
        /// 标准车辆类型
        /// Standard vehicle type
        /// </summary>
        public EM_STANDARD_VEHICLE_TYPE emStandardVehicleType;
        /// <summary>
        /// 额外车牌数量
        /// Count of extra plates
        /// </summary>
        public uint nExtraPlateCount;
        /// <summary>
        /// 额外车牌信息
        /// Extra plate number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3 * 32)]
        public string szExtraPlateNumber;
        /// <summary>
        /// 海外车辆类型中的子类别
        /// oversea vehicle category
        /// </summary>
        public EM_OVERSEA_VEHICLE_CATEGORY_TYPE emOverseaVehicleCategory;
        /// <summary>
        /// 车牌所属国家的省、州等地区名
        /// Province
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProvince;
        /// <summary>
        /// 物体在雷达坐标系中的信息,单位：米，设备视角：右手方向为X轴正向，正前方为Y轴正向
        /// Radar Info
        /// </summary>
        public NET_EVENT_RADAR_INFO stuRadarInfo;
        /// <summary>
        /// 触发事件时物体的GPS信息
        /// gps info
        /// </summary>
        public NET_EVENT_GPS_INFO stuGPSInfo;
        /// <summary>
        /// 辅车牌信息，某些国家或地区一车多牌
        /// Auxiliary license plate information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_EXTRA_PLATES[] stuExtraPlates;
        /// <summary>
        /// 辅车牌有效个数
        /// Auxiliary license plate number
        /// </summary>
        public int nExtraPlatesCount;
        /// <summary>
        /// 车牌识别置信度
        /// License plate recognition confidence
        /// </summary>
        public uint nPlateRecogniseConf;
        /// <summary>
        /// 车辆姿态置信度
        /// Vehicle attitude confidence
        /// </summary>
        public uint nVecPostureConf;
        /// <summary>
        /// 车身颜色置信度
        /// Vehicle Body color confidence
        /// </summary>
        public uint nVecColorConf;
        /// <summary>
        /// 特殊车辆识别结果置信度
        /// special vehicle recognition results confidence
        /// </summary>
        public uint nSpecialVehConf;
        /// <summary>
        /// 机动车是否为大角度
        /// Is the motor vehicle at a large angle
        /// </summary>
        public uint nIsLargeAngle;
        /// <summary>
        /// 当前机动车车身是否曾经关联车牌
        /// Has the current vehicle body ever been associated with a license plate
        /// </summary>
        public uint nIsRelatedPlate;
        /// <summary>
        /// 机动车检测置信度
        /// Vehicle detection confidence
        /// </summary>
        public uint nDetectConf;
        /// <summary>
        /// 机动车清晰度分值
        /// Motor vehicle definition score
        /// </summary>
        public uint nClarity;
        /// <summary>
        /// 机动车完整度评分
        /// Motor vehicle integrity score
        /// </summary>
        public uint nCompleteScore;
        /// <summary>
        /// 机动车优选分数
        /// Motor vehicle preference score
        /// </summary>
        public uint nQeScore;
        /// <summary>
        /// 浮点型速度值，单位km/h
        /// Floating point speed value in km/h
        /// </summary>
        public float fSpeedFloat;
        /// <summary>
        /// 航向角, 以正北方向为基准输出车辆运动方向同正北方向的角度; 范围 0~360，顺时针正,单位为度；
        /// Heading angle: output the angle of vehicle movement direction with due north direction as the reference; Range: 0~360, clockwise needle alignment, unit: degree;
        /// </summary>
        public double dbHeadingAngle;
        /// <summary>
        /// 车辆前排驾驶室人员数量
        /// Driver num
        /// </summary>
        public uint nDriverNum;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 112)]
        public byte[] bReserved;
        /// <summary>
        /// 国家
        /// Country
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szCountry;
    }

    /// <summary>
    /// 骑车人脸图片信息
    /// face image information
    /// </summary>
    public struct NET_RIDER_FACE_IMAGE_INFO
    {
        /// <summary>
        /// 在二进制数据块中的偏移
        /// image offset in the data
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// 图片大小,单位字节
        /// Image size, Unit : Byte
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 图片宽度(像素)
        /// Image width(pixel)
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// 图片高度(像素)
        /// Image height(pixel)
        /// </summary>
        public uint nHeight;
        /// <summary>
        /// 图片的序号
        /// index in data
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 44)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 目标特征值数据在二进制数据中的位置信息
    /// Location information of face characteristic value data in binary data
    /// </summary>
    public struct NET_FACE_FEATURE_VECTOR_INFO
    {
        /// <summary>
        /// 目标特征值在二进制数据中的偏移, 单位:字节
        /// Offset of face characteristic value data in binary data, unit: byte
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 目标特征值数据长度, 单位:字节
        /// Length of face characteristic value data, unit: byte
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 用于标识特征值是否加密
        /// Identifies whether the characteristic value data is encrypted
        /// </summary>
        public bool bFeatureEnc;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 28)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 人体特征值数据在二进制数据中的位置信息
    /// Position info of human feature data in binary data
    /// </summary>
    public struct NET_HUMAN_FEATURE_VECTOR_INFO
    {
        /// <summary>
        /// 人体特征值在二进制数据中的偏移, 单位:字节
        /// The offset of human feature data in binary data, unit:bytes
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 人体特征值数据长度, 单位:字节
        /// The length of human feature data, unit:bytes
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 用于标识特征值是否加密
        /// Identifies whether the characteristic value data is encrypted
        /// </summary>
        public bool bFeatureEnc;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 28)]
        public byte[] byReserved;
    }
    /// <summary>
    /// 年龄段
    /// Age segmentation
    /// </summary>
    public enum EM_AGE_SEG
    {
        /// <summary>
        /// 未知
        /// unknow
        /// </summary>
        EM_AGE_SEG_UNKOWN = 0,
        /// <summary>
        /// 婴儿
        /// baby
        /// </summary>
        EM_AGE_SEG_BABY = 2,
        /// <summary>
        /// 幼儿
        /// child
        /// </summary>
        EM_AGE_SEG_CHILD = 10,
        /// <summary>
        /// 青年
        /// youth
        /// </summary>
        EM_AGE_SEG_YOUTH = 28,
        /// <summary>
        /// 中年
        /// middle age
        /// </summary>
        EM_AGE_SEG_MIDDLE = 50,
        /// <summary>
        /// 老年
        /// old age
        /// </summary>
        EM_AGE_SEG_OLD = 60,
    }


    /// <summary>
    /// 非机动车的角度
    /// Non Motor vehicle angle
    /// </summary>
    public enum EM_OBJECT_NONMOTORANGLE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_OBJECT_NONMOTORANGLE_TYPE_UNKNOWN,
        /// <summary>
        /// 正面
        /// front
        /// </summary>
        EM_OBJECT_NONMOTORANGLE_TYPE_FRONT,
        /// <summary>
        /// 侧面
        /// side
        /// </summary>
        EM_OBJECT_NONMOTORANGLE_TYPE_SIDE,
        /// <summary>
        /// 后面
        /// behind
        /// </summary>
        EM_OBJECT_NONMOTORANGLE_TYPE_BEHIND,
    }

    /// <summary>
    /// 非机动车车篮
    /// Non Motor vehicle basket
    /// </summary>
    public enum EM_OBJECT_BASKET_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_OBJECT_BASKET_UNKNOWN,
        /// <summary>
        /// 无
        /// no
        /// </summary>
        EM_OBJECT_BASKET_NO,
        /// <summary>
        /// 有
        /// yes
        /// </summary>
        EM_OBJECT_BASKET_YES,
    }

    /// <summary>
    /// 非机动车后备箱
    /// Non Motor vehicle StorageBox
    /// </summary>
    public enum EM_OBJECT_STORAGEBOX_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_OBJECT_STORAGEBOX_UNKNOWN,
        /// <summary>
        /// 无后备箱
        /// no
        /// </summary>
        EM_OBJECT_STORAGEBOX_NO,
        /// <summary>
        /// 自带箱
        /// own Box
        /// </summary>
        EM_OBJECT_STORAGEBOX_OWNBOX,
        /// <summary>
        /// 自装箱
        /// self Packing Box
        /// </summary>
        EM_OBJECT_STORAGEBOX_SELFPACK,
        /// <summary>
        /// 自装箱和自带箱都有
        /// both ownBox and self Packing Box
        /// </summary>
        EM_OBJECT_STORAGEBOX_ALL,
    }

    /// <summary>
    /// 雨棚（伞）类型
    /// Canopy (umbrella) type
    /// </summary>
    public enum EM_RAIN_SHED_TYPE
    {
        /// <summary>
        /// 无
        /// none
        /// </summary>
        EM_RAIN_SHED_TYPE_NONE = -1,
        /// <summary>
        /// 不撑伞
        /// no umbrella
        /// </summary>
        EM_RAIN_SHED_TYPE_NO_UMBRELLA,
        /// <summary>
        /// 人非手撑伞
        /// People don't hold umbrellas
        /// </summary>
        EM_RAIN_SHED_TYPE_NOT_PEOPLE_HOLD,
        /// <summary>
        /// 未知
        /// unknow
        /// </summary>
        EM_RAIN_SHED_TYPE_UNKOWN,
        /// <summary>
        /// 非机动车装载雨伞
        /// Non motor vehicle loading umbrella
        /// </summary>
        EM_RAIN_SHED_TYPE_NO_MOTOR_UMBRELLA,
        /// <summary>
        /// 非机动车装载雨棚
        /// Non motor vehicle loading canopy
        /// </summary>
        EM_RAIN_SHED_TYPE_NO_MOTOR_CANOPY,
    }

    /// <summary>
    /// 非机动车对象
    /// Nonmotor
    /// </summary>
    public struct NET_VA_OBJECT_NONMOTOR
    {
        /// <summary>
        /// 物体ID,每个ID表示一个唯一的物体
        /// Object id
        /// </summary>
        public int nObjectID;
        /// <summary>
        /// 非机动车子类型
        /// Non-motor type
        /// </summary>
        public EM_CATEGORY_NONMOTOR_TYPE emCategory;
        /// <summary>
        /// 包围盒， 非机动车矩形框，0~8191相对坐标
        /// BoundingBox Rect, range: [0,8191]
        /// </summary>
        public NET_A_RECT_EX stuBoundingBox;
        /// <summary>
        /// 包围盒， 非机动车矩形框，绝对坐标
        /// BoundingBox Rect, absolute coordinates
        /// </summary>
        public NET_A_RECT_EX stuOriginalBoundingBox;
        /// <summary>
        /// 非机动车颜色, RGBA
        /// Non-motor color (RGBA value)
        /// </summary>
        public NET_COLOR_RGBA stuMainColor;
        /// <summary>
        /// 非机动车颜色, 枚举
        /// Non-motor color enumeration
        /// </summary>
        public EM_OBJECT_COLOR_TYPE emColor;
        /// <summary>
        /// 是否有抠图
        /// Has image?
        /// </summary>
        public bool bHasImage;
        /// <summary>
        /// 物体截图
        /// Image information
        /// </summary>
        public NET_NONMOTOR_PIC_INFO stuImage;
        /// <summary>
        /// 骑车人数量
        /// The number of rider
        /// </summary>
        public int nNumOfCycling;
        /// <summary>
        /// 骑车人特征,个数和nNumOfCycling关联
        /// The information of rider
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_RIDER_INFO[] stuRiderList;
        /// <summary>
        /// 全景广角图
        /// SceneImage
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 人脸全景广角图
        /// Face SceneImage
        /// </summary>
        public NET_FACE_SCENE_IMAGE stuFaceSceneImage;
        /// <summary>
        /// 检测到的人脸数量
        /// The number of face
        /// </summary>
        public int nNumOfFace;
        /// <summary>
        /// 物体速度，单位为km/h
        /// Object speed, Unit:km/h
        /// </summary>
        public float fSpeed;
        /// <summary>
        /// 非机动车特征值数据在二进制数据中的位置信息
        /// Position info of non-motor feature data in binary data
        /// </summary>
        public NET_NONMOTOR_FEATURE_VECTOR_INFO stuNonMotorFeatureVectorInfo;
        /// <summary>
        /// 非机动车特征值版本号
        /// Non-motor feature data version
        /// </summary>
        public EM_FEATURE_VERSION emNonMotorFeatureVersion;
        /// <summary>
        /// 非机动车牌信息
        /// Plate info of nomotor
        /// </summary>
        public NET_NONMOTOR_PLATE_INFO stuNomotorPlateInfo;
        /// <summary>
        /// 物体型心(不是包围盒中心), 0-8191相对坐标, 相对于大图
        /// Center of object(not center of bounding box), 0-8191 relative coordinates, relative to large graph
        /// </summary>
        public NET_POINT stuObjCenter;
        /// <summary>
        /// 目标特征值数据在二进制数据中的位置信息, 废弃
        /// (Discard)Location information of face characteristic value data in binary data
        /// </summary>
        public NET_FACE_FEATURE_VECTOR_INFO stuFaceFeatureVectorInfo;
        /// <summary>
        /// 目标特征值版本号, 废弃
        /// (Discard)face feature version
        /// </summary>
        public EM_FEATURE_VERSION emFaceFeatureVersion;
        /// <summary>
        /// 非机动车类型置信度
        /// Non motor vehicle type confidence
        /// </summary>
        public int nCategoryConf;
        /// <summary>
        /// 非机动车特征值版本号-字符串
        /// Non-motor feature data version-string
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szNonMotorFeatureVersion;
        /// <summary>
        /// 非机动车的角度
        /// Non Motor vehicle angle
        /// </summary>
        public EM_OBJECT_NONMOTORANGLE_TYPE emNonMotorAngle;
        /// <summary>
        /// 非机动车车篮
        /// Non Motor vehicle basket
        /// </summary>
        public EM_OBJECT_BASKET_TYPE emBasket;
        /// <summary>
        /// 非机动车后备箱
        /// Non Motor vehicle StorageBox
        /// </summary>
        public EM_OBJECT_STORAGEBOX_TYPE emStorageBox;
        /// <summary>
        /// 非机动车完整度评分，范围[0,100]，越大越完整
        /// Non motor vehicle integrity score, range [0,100]
        /// </summary>
        public uint nCompleteScore;
        /// <summary>
        /// 非机动车清晰度分值 取值范围为[1,100], 越大越清晰, 0为无效值
        /// The value range of non motor vehicle definition score is [1,100]
        /// </summary>
        public uint nClarityScore;
        /// <summary>
        /// 目标出现的帧号
        /// The frame number of the target start
        /// </summary>
        public uint nStartSequence;
        /// <summary>
        /// 目标消失的帧号
        /// The frame number of the target end
        /// </summary>
        public uint nEndSequence;
        /// <summary>
        /// 非机动车车身及骑手整体，是否虚检，0: 否，1: 是
        /// Whether the whole non motor vehicle body and rider are falsely inspected, 0: No, 1: Yes
        /// </summary>
        public bool bIsErrorDetect;
        /// <summary>
        /// 图像成像光源类型, 0:未知, 1:可见光成像, 2:近红外成像(灰度图), 3:热红外成像(伪彩色)
        /// Image imaging light source type,0:unknown, 1:visible imaging, 2:near infrared imaging(gray image), 3:thermal infrared imaging (pseudo color)
        /// </summary>
        public uint nImageLightType;
        /// <summary>
        /// 非机动车综合质量评分，范围[0,100]，越大质量越好
        /// Non motor vehicle comprehensive quality score, range [0,100], the larger the score, the better the quality
        /// </summary>
        public uint nAbsScore;
        /// <summary>
        /// 雨棚（伞）类型
        /// Canopy (umbrella) type
        /// </summary>
        public EM_RAIN_SHED_TYPE emRainShedType;
        /// <summary>
        /// 智能物体全局唯一物体标识
        /// 有效数据位21位，包含’\0’
        /// 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
        /// 中间14位YYYYMMDDhhmmss:年月日时分秒
        /// 后5位%u%u%u%u%u：物体ID，如00001
        /// Intelligent object global unique object identification
        /// Valid data bits are 21 bits, including '\0'
        /// Top 2 bits %d%d: 01-video clip, 02-picture, 03-file, 99-other
        /// Middle 14 bit yyyymmddhhmmss
        /// Last 5 bits %U%U%U%U%U: object ID, such as 00001
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 22)]
        public string szSerialUUID;
        /// <summary>
        /// 对齐
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2)]
        public string szReserved;
        /// <summary>
        /// 非机动车的骑手和车身是否单独提取, 0:否, 1:是
        /// Whether the rider and body of non-motor vehicle are extracted separately, 0: No, 1: Yes
        /// </summary>
        public uint nHumanFeatureExtractSingle;
        /// <summary>
        /// 保留
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2920)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 视频分析物体信息补充字段，与 MSG_OBJECT 的合集表示视频分析物体信息
    /// Supplementary field of video analysis object information
    /// </summary>
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]
    public struct NET_A_MSG_OBJECT_SUPPLEMENT
    {
        /// <summary>
        /// 智能物体全局唯一物体标识
        /// Global unique object identification of intelligent object
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szObjectUUID;
        /// <summary>
        /// 渣土车是否遮盖识别,0:渣土车是否遮盖未知,1:渣土车遮盖,2:渣土车无遮盖空载,3:渣土车无遮盖满载.
        /// Whether the muck truck is covered and identified, 0: whether the muck truck is covered is unknown, 1: the muck truck is covered, 2: the muck truck is not covered and unloaded, 3: the muck truck is not covered and fully loaded
        /// </summary>
        public uint nMuckHide;
        /// <summary>
        /// 货车载货类型,0:货车是否载货未知,1:沙子,2:泥浆,3:石头,4:石渣. char szReserved[256];  预留字节
        /// Truck loading type, 0: unknown whether the truck is loaded, 1: sand, 2: mud, 3: stone, 4: stone slag
        /// </summary>
        public uint nCarryType;
        /// <summary>
        /// 物体类型
        /// Category type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCategory;
        /// <summary>
        /// Reserved
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 216)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_TRAFFICJUNCTION(交通路口老规则事件/视频电警上的交通卡口老规则事件)对应的数据块描述信息
    /// 由于历史原因,如果要处理卡口事件,NET_DEV_EVENT_TRAFFICJUNCTION_INFO 和 EVENT_IVS_TRAFFICGATE要一起处理,以防止有视频电警和线圈电警同时接入平台的情况发生
    /// 另外EVENT_IVS_TRAFFIC_TOLLGATE只支持新卡口事件的配置
    /// Event Type EVENT_IVS_TRAFFICJUNCTION (transportation card traffic junctions old rule event / video port on the old electric alarm event rules) corresponding to the description of the data block,
    /// Due to historical reasons, if you want to deal with bayonet event, NET_DEV_EVENT_TRAFFICJUNCTION_INFO and EVENT_IVS_TRAFFICGATE be processed together to prevent police and video electrical coil electric alarm occurred while the case access platform,
    /// Also EVENT_IVS_TRAFFIC_TOLLGATE only support the new bayonet events,
    /// </summary>
    public struct NET_DEV_EVENT_TRAFFICJUNCTION_INFO
    {
        /// <summary>
        /// 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 主驾驶座,系安全带状态,1-系安全带,2-未系安全带
        /// main driver, seat, safety belt , 1-fastened, 2-unfastened
        /// </summary>
        public byte byMainSeatBelt;
        /// <summary>
        /// 副驾驶座,系安全带状态,1-系安全带,2-未系安全带
        /// co-drvier, seat, safety belt, 1-fastened, 2-unfastened
        /// </summary>
        public byte bySlaveSeatBelt;
        /// <summary>
        /// 当前被抓拍到的车辆是车头还是车尾,具体请见 EM_VEHICLE_DIRECTION
        /// Current snapshot is head or rear, see EM_VEHICLE_DIRECTION
        /// </summary>
        public byte byVehicleDirection;
        /// <summary>
        /// 开闸状态,具体请见 EM_OPEN_STROBE_STATE
        /// Open status, see EM_OPEN_STROBE_STATE
        /// </summary>
        public byte byOpenStrobeState;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 对应车道号
        /// road number
        /// </summary>
        public int nLane;
        /// <summary>
        /// 违反规则掩码,第一位:闯红灯;
        /// 第二位:不按规定车道行驶;
        /// 第三位:逆行; 第四位：违章掉头;
        /// 第五位:交通堵塞; 第六位:交通异常空闲
        /// 第七位:压线行驶; 否则默认为:交通路口事件
        /// BreakingRule's mask,first byte: crash red light;
        /// secend byte:break the rule of driving road number;
        /// the third byte:converse; the forth byte:break rule to turn around;
        /// the five byte:traffic jam; the six byte:traffic vacancy;
        /// the seven byte: Overline; defalt:trafficJunction
        /// </summary>
        public uint dwBreakingRule;
        /// <summary>
        /// 红灯开始UTC时间
        /// the begin time of red light
        /// </summary>
        public NET_TIME_EX RedLightUTC;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// snap index,such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// </summary>
        public int nSequence;
        /// <summary>
        /// 车辆实际速度Km/h
        /// car's speed (km/h)
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 路口方向,1-表示正向,2-表示反向
        /// Intersection direction 1 - denotes the forward 2 - indicates the opposite
        /// </summary>
        public byte byDirection;
        /// <summary>
        /// LightState表示红绿灯状态:0 未知,1 绿灯,2 红灯,3 黄灯
        /// LightState means red light status:0 unknown,1 green,2 red,3 yellow
        /// </summary>
        public byte byLightState;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        public byte byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 车身信息
        /// vehicle info
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 对应图片的分辨率
        /// picture resolution
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// 报警对应的原始录像文件信息
        /// Alarm corresponding original video file information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRecordFile;
        /// <summary>
        /// 自定义信息
        /// custom info
        /// </summary>
        public NET_EVENT_JUNCTION_CUSTOM_INFO stuCustomInfo;
        /// <summary>
        /// 车牌识别来源, 0:本地算法识别,1:后端服务器算法识别
        /// the source of plate text, 0:Local,1:Server
        /// </summary>
        public byte byPlateTextSource;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved bytes, leave extended_
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved1;
        /// <summary>
        /// GPS信息 
        /// GPS info ,
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// 0-无非机动车人员信息信息,1-有非机动车人员信息信息
        /// 此字段为1时下面11个字段生效
        /// specified the person info of none motor
        /// 1 means 11 fields followed is valid
        /// </summary>
        public byte byNoneMotorInfo;
        /// <summary>
        /// 是否背包, 0-未知 1-不背包 2-背包
        /// 0-unknown 1-no bag 2-bag
        /// </summary>
        public byte byBag;
        /// <summary>
        /// 是否打伞, 0-未知 1-不打伞 2-打伞
        /// 0-unknown 1-no umbrella 2-Umbrella
        /// </summary>
        public byte byUmbrella;
        /// <summary>
        /// 手提包状态,0-未知 1-没有 2-有
        /// 0-unknown 1-no carrierBag 2-carrierBag
        /// </summary>
        public byte byCarrierBag;
        /// <summary>
        /// 是否戴帽子, 0-未知 1-不戴帽子 2-戴帽子
        /// 0-unknown 1-no helmet 2-helmet
        /// </summary>
        public byte byHat;
        /// <summary>
        /// 头盔状态,0-未知 1-没有 2-有
        /// 0-unknown 1-no hat 2-hat
        /// </summary>
        public byte byHelmet;
        /// <summary>
        /// 性别,0-未知 1-男性 2-女性
        /// 0-unknown 1-man 2-woman
        /// </summary>
        public byte bySex;
        /// <summary>
        /// 年龄
        /// age
        /// </summary>
        public byte byAge;
        /// <summary>
        /// 上身颜色
        /// upper body color
        /// </summary>
        public NET_COLOR_RGBA stuUpperBodyColor;
        /// <summary>
        /// 下身颜色
        /// lower body color
        /// </summary>
        public NET_COLOR_RGBA stuLowerBodyColor;
        /// <summary>
        /// 上身衣服类型 0:未知 1:长袖 2:短袖 3:长裤 4:短裤 5:裙子 6:背心 7:超短裤 8:超短裙
        /// upper clothes 0:unknown 1:long sleeve 2:short sleeve 3:trousers 4:breeches 5:skirt 6:vest 7:minipants 8:miniskirt
        /// </summary>
        public byte byUpClothes;
        /// <summary>
        /// 下身衣服类型 0:未知 1:长袖 2:短袖 3:长裤 4:短裤 5:裙子 6:背心 7:超短裤 8:超短裙
        /// lower clothes 0:unknown 1:long sleeve 2:short sleeve 3:trousers 4:breeches 5:skirt 6:vest 7:minipants 8:miniskirt
        /// </summary>
        public byte byDownClothes;
        /// <summary>
        /// 扩展信息
        /// Extension info
        /// </summary>
        public NET_EXTENSION_INFO stuExtensionInfo;
        /// <summary>
        /// 保留字节,留待扩展
        /// Reserved bytes, leave extended
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 22)]
        public byte[] bReserved;
        /// <summary>
        /// TriggerType:触发类型,0车检器,1雷达,2视频,3RSU
        /// Trigger Type:0 vehicle inspection device, 1 radar, 2 video, 3 RSU
        /// </summary>
        public int nTriggerType;
        /// <summary>
        /// 交通车辆信息
        /// Traffic vehicle info
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// 卡片个数
        /// Card Number
        /// </summary>
        public uint dwRetCardNumber;
        /// <summary>
        /// 卡片信息
        /// Card information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_EVENT_CARD_INFO[] stuCardInfo;
        /// <summary>
        /// 公共信息
        /// public info
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 是否有非机动车信息
        /// Non-motor info enable
        /// </summary>
        public bool bNonMotorInfoEx;
        /// <summary>
        /// 非机动车信息
        /// Non-motor information
        /// </summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 车辆信息，记录了车头、车尾车牌号和车牌颜色
        /// Plate info, Record the plate number and color of the front and back of the car
        /// </summary>
        public NET_EVENT_PLATE_INFO stuPlateInfo;
        /// <summary>
        /// 全景图是否有效
        /// Scene Image valid or invalid
        /// </summary>
        public bool bSceneImage;
        /// <summary>
        /// 全景图
        /// Scene Image
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 检测到的多个车牌信息
        /// detected objects
        /// </summary>
        public IntPtr pstObjects;
        /// <summary>
        /// 检测到的多个车牌个数
        /// detected objects numbers
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// 车辆姿势
        /// vehicle posture
        /// </summary>
        public EM_VEHICLE_POSTURE_TYPE emVehiclePosture;
        /// <summary>
        /// 车标置信度（范围：0~100）
        /// vehicle sign confidence(range:0~100)
        /// </summary>
        public uint nVehicleSignConfidence;
        /// <summary>
        /// 车型置信度（范围：0~100）
        /// vehicle category confidence(range:0~100)
        /// </summary>
        public uint nVehicleCategoryConfidence;
        /// <summary>
        /// 规则区内车辆行驶方向
        /// Driving direction of vehicles in the regular area
        /// </summary>
        public EM_CAR_DRIVING_DIRECTION emCarDrivingDirection;
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// the number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 和客户端请求的抓图序列号对应
        /// Corresponds to the snapshot serial number requested by the client
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSerialNo;
        /// <summary>
        /// 报警合规, 0:未知, 1:不合规, 2:合规
        /// Alarm Compliance, 0:Unknown, 1:Not Compliant, 2:Compliant
        /// </summary>
        public uint nAlarmCompliance;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 视频分析物体信息补充字段，与 MSG_OBJECT 的合集表示视频分析物体信息
        /// Supplementary field of video analysis object information
        /// </summary>
        public NET_A_MSG_OBJECT_SUPPLEMENT stObjectInfoEx;
        /// <summary>
        /// 检测到的物体扩展 < NET_A_MSG_OBJECT_EX2 >
        /// have being detected object expansion < NET_A_MSG_OBJECT_EX2 >
        /// </summary>
        public IntPtr pstuObjectEx2;
        /// <summary>
        /// 车身信息扩展 < NET_A_MSG_OBJECT_EX2 >
        /// vehicle info expansion < NET_A_MSG_OBJECT_EX2 >
        /// </summary>
        public IntPtr pstuVehicleEx2;
        /// <summary>
        /// 检测到的多个车牌信息扩展，数量为nObjectNum < NET_A_MSG_OBJECT_EX2 >
        /// detected objects,The number is nObjectNum < NET_A_MSG_OBJECT_EX2 >
        /// </summary>
        public IntPtr pstuObjectsEx2;
        /// <summary>
        /// 事件触发的预置点号，从1开始, 0表示未知
        /// The preset point number triggered by the event, starting from 1, and 0 means unknown
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 文件传输状态, -1: 未知, 0-实时数据下载，1-离线数据下载, 2-离线数据传输完成, 3-离线数据传输中断
        /// File transfer status, - 1: unknown, 0 - real-time data download, 1 - offline data download, 2 - offline data transfer completed, 3 - offline data transfer interrupted
        /// </summary>
        public int nTransfer;
        /// <summary>
        /// 特征值的版本号
        /// Version of the Feature
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFeatureVersion;
        /// <summary>
        /// 检测物体具体包含的信息类型: 0: 只包含属性 1: 只包含特征值 2: 属性、特征值都包含 3:属性和特征值都不包含
        /// The specific type of information contained in the detected object: 0: Only contains attributes 1: Only contains feature values 2: Both attributes and feature values contain 3: Neither attributes nor feature values contain
        /// </summary>
        public uint nDetectMode;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 544 - 3 * 8)]
        public sbyte[] byReserved2;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 544 - 3 * 4)]
        public sbyte[] byReserved2;
#endif
    }

    /// <summary>
    /// 返回的图片存储路径模式
    /// image storage path mode
    /// </summary>
    public enum EM_PATH_MODE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_PATH_MODE_UNKNOWN = -1,
        /// <summary>
        /// 异步
        /// async
        /// </summary>
        EM_PATH_MODE_ASYNC,
        /// <summary>
        /// 同步
        /// sync
        /// </summary>
        EM_PATH_MODE_SYNC,
    }

    ///@brief 设备给客户端传离线图片需要按照的顺序
    public enum EM_EVENT_ORDER
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_EVENT_ORDER_UNKNOWN,
        /// <summary>
        /// 正序上传
        /// ascent
        /// </summary>
        EM_EVENT_ORDER_ASCENT,
        /// <summary>
        /// 倒序上传
        /// descent
        /// </summary>
        EM_EVENT_ORDER_DESCENT,
    }

    /// <summary>
    /// 抓图标志
    /// snapshot mark
    /// </summary>
    public struct NET_RESERVED_COMMON
    {
        public uint dwStructSize;
        /// <summary>
        /// 兼容RESERVED_TYPE_FOR_INTEL_BOX
        /// include RESERVED_TYPE_FOR_INTEL_BOX
        /// </summary>
        public IntPtr pIntelBox;
        /// <summary>
        /// 抓图标志(按位),0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout", 7位:"Task"(当Flags为"Task"时,channel需要填-1)
        /// snap flags(by bit),0bit:"*",1bit:"Timing",2bit:"Manual",3bit:"Marked",4bit:"Event",5bit:"Mosaic",6bit:"Cutout"
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 离线传输参数
        /// Offline parameter
        /// </summary>
        public IntPtr pstuOfflineParam;
        /// <summary>
        /// 兼容RESERVED_TYPE_FOR_PATH
        /// include RESERVED_TYPE_FOR_PATH
        /// </summary>
        public IntPtr pstuPath;
        /// <summary>
        /// 返回的图片存储路径模式
        /// image storage path mode
        /// </summary>
        public EM_PATH_MODE emPathMode;
        /// <summary>
        /// 返回的图片类型, 由用户申请释放
        /// image data type
        /// </summary>
        public IntPtr pImageType;
        /// <summary>
        /// pImageType 有效个数
        /// pImageType valid num
        /// </summary>
        public int nImageTypeNum;
        /// <summary>
        /// szCustomInfo 标志位 TRUE时 使用szCustomInfo字段
        /// Szcustominfo field is used when szcustominfo flag bit is TRUE
        /// </summary>
        public bool bFlagCustomInfo;
        /// <summary>
        /// 客户自定义信息 customInfo是getFiltercaps中能力对应的订阅参数的格式化字符串表示,字符串格式为：订阅参数以&分隔，订阅参数的名字和值用=连接
        /// Custominfo is the formatted string representation of the subscription parameters corresponding to the capabilities in getfiltercaps.
        /// The string format is: the subscription parameters are separated by &amp;, and the name and value of the subscription parameters are connected by =
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szCustomInfo;
        /// <summary>
        /// 是否设置事件类型
        /// Specifies whether to set the event type
        /// </summary>
        public bool bSetEventsType;
        /// <summary>
        /// 视频输出口图层, 0:未知 1:视频层 2:GUI层 3:动态跑马显示
        /// Video output port layer, 0: Unknown 1: Video layer 2: GUI layer 3: Dynamic running display
        /// </summary>
        public uint nVOLayer;
        /// <summary>
        /// 设备给客户端传离线图片需要按照的顺序，如果是倒序上传:越晚产生的优先上传，越早产生的后传
        /// The order in which the device transmits offline images to the client. If it is uploaded in reverse order, the later the image is generated, the priority will be given to upload, and the earlier the image is generated, the later the image will be uploaded
        /// </summary>
        public EM_EVENT_ORDER emOrder;
        /// <summary>
        /// 输出口抓屏图片格式  0:未知 1:NV12 2:YUV422层 3:RGB565 4:XRGB8888 5:JPEG
        /// Output port screenshot image format 0: Unknown 1: NV12 2: YUV422 layer 3: RGB565 4: XRGB8888 5: JPEG
        /// </summary>
        public int nVOImageType;
        /// <summary>
        /// / bNeedFeatureVector字段是否有效
        /// / Is the bNeedFeatureVector field valid
        /// </summary>
        public bool bNeedFeatureVectorVaild;
        /// <summary>
        /// / 是否需要上传特征向量，只有在NeedData为false时有效
        /// / Is it necessary to upload feature vectors, only valid when NeedData is false
        /// </summary>
        public bool bNeedFeatureVector;
    }

    /// <summary>
    /// 行人信息
    /// Pedestrain info
    /// </summary>
    public struct NET_A_EVENT_VEHICLE_INFO
    {
        /// <summary>
        /// 物体类型，Passerby表示行人
        /// Object type,Passerby mean pedestrain
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCategory;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_PEDESTRAIN(交通行人事件)对应数据块描述信息
    /// Event type  EVENT_IVS_TRAFFIC_PEDESTRAIN(pedestrain)corresponding data block description info
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO
    {
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Time stamp(ms)
        /// </summary>
        public uint PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occurred time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// The corresponding file info of the event
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 对应图片的分辨率
        /// picture resolution
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// 抓图标志(按位),0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
        /// Snap flag(by bit)0 bit:"*",1 bit:"Timing",2 bit:"Manual",3 bit:"Marked",4 bit:"Event",5 bit:"Mosaic",6 bit:"Cutout"
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event;
        /// </summary>
        public byte bEventAction;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved2;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 对应车道号
        /// Corresponding lane No.
        /// </summary>
        public int nLane;
        /// <summary>
        /// 检测到的物体
        /// Detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 交通车辆部分信息
        /// part of traffic car info
        /// </summary>
        public NET_EVENT_TRAFFIC_CAR_PART_INFO stuTrafficCarPartInfo;
        /// <summary>
        /// 行人信息
        /// pedestrain info
        /// </summary>
        public NET_A_EVENT_VEHICLE_INFO stuVehicle;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] bReserved;
        /// <summary>
        /// 公共信息
        /// public info
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR (交通非机动车事件检测)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_TRAFFIC_NONMOTOR
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_NONMOTOR_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action 0:pulse 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位:毫秒)
        /// Time stamp(unit:ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occur time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 智能事件规则编号
        /// Event RuleID
        /// </summary>
        public uint nRuleId;
        /// <summary>
        /// 事件对应文件信息
        /// FileInfo
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 检测到的车牌信息
        /// Plate number info
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 触发类型
        /// TriggerType
        /// </summary>
        public EM_TRIGGER_TYPE emTriggerType;
        /// <summary>
        /// 公共信息
        /// Common Info
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// 是否有非机动车信息
        /// stuNonMotor if valid
        /// </summary>
        public bool bNonMotorInfo;
        /// <summary>
        /// 非机动车信息
        /// NonMotor info
        /// </summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_TRAFFICJAM(交通拥堵事件)对应的数据块描述信息
    /// the describe of EVENT_IVS_TRAFFICJAM's data
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFICJAM_INFO
    {
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 对应车道号
        /// Corresponding Lane number
        /// </summary>
        public int nLane;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 表示拥堵长度(总车道长度百分比）0-100
        /// Mean congestion length (percentage of total lane length) 0-100
        /// </summary>
        public byte bJamLenght;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        public byte reserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 开始停车时间
        /// the time of starting jam
        /// </summary>
        public NET_TIME_EX stuStartJamTime;
        /// <summary>
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束(bEventAction=2时此参数有效)
        /// snap index: such as 3,2,1,1 means the last one,0 means there has some exception and snap stop(this param work when bEventAction=2)
        /// </summary>
        public int nSequence;
        /// <summary>
        /// 报警时间间隔,单位:秒。(此事件为连续性事件,在收到第一个此事件之后,若在超过间隔时间后未收到此事件的后续事件,则认为此事件异常结束了)
        /// interval time of alarm(s).(this is a continuous event,if the interval time of recieving next event go beyond this param, we can judge that this event is over with exception)
        /// </summary>
        public int nAlarmIntervalTime;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 对应图片的分辨率
        /// picture resolution
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// 表实际的拥堵长度,单位米
        /// means actual jam length, unit is meter
        /// </summary>
        public int nJamRealLength;
        /// <summary>
        /// 扩展信息
        /// Extension info
        /// </summary>
        public NET_EXTENSION_INFO stuExtensionInfo;
        /// <summary>
        /// / 区域拥堵标志是否有效
        /// Whether the zone congestion sign is effective
        /// </summary>
        public bool bJamRegionFlagValid;
        /// <summary>
        /// / 区域拥堵标志 0-车道拥堵 1-区域拥堵
        /// Zone congestion sign 0- Lane congestion 1- Zone congestion
        /// </summary>
        public uint nJamRegionFlag;
        /// <summary>
        /// 图片信息数组
        /// Picture information
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Picture number
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// / 全景图
        /// / Panoramic view
        /// </summary>
        public IntPtr pstuSceneImage;
        /// <summary>
        /// / 保留字节,留待扩展.
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 864 - 2 * 8)]
        public byte[] bReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 864 - 2 * 4)]
        public byte[] bReserved;
#endif
        /// <summary>
        /// 交通车辆信息
        /// Traffic vehicle info
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// 公共信息
        /// public info
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION (交通道路施工检测事件) 对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION (traffic road block construction)
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作, 0表示脉冲事件, 1表示持续性事件开始, 2表示持续性事件结束
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// Event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 物体包围盒
        /// Bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 车道号
        /// Lane number
        /// </summary>
        public uint nLane;
        /// <summary>
        /// 公共信息
        /// Common info
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4092)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_ROAD_BLOCK (交通路障检测事件) 对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_TRAFFIC_ROAD_BLOCK (traffic road block detection)
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作, 0表示脉冲事件, 1表示持续性事件开始, 2表示持续性事件结束
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// Event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 物体包围盒
        /// Bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 车道号
        /// Lane number
        /// </summary>
        public uint nLane;
        /// <summary>
        /// 公共信息
        /// Common info
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4092)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_TRAFFICACCIDENT(交通事故事件)对应的数据块描述信息
    /// the describe of EVENT_IVS_TRAFFICACCIDENT's data
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFICACCIDENT_INFO
    {
        /// <summary>
        /// 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体个数
        /// have being detected object number
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// 检测到的物体列表
        /// have being detected object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_MSG_OBJECT[] stuObjectIDs;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 交通车辆部分信息
        /// part of traffic car info
        /// </summary>
        public NET_EVENT_TRAFFIC_CAR_PART_INFO stuTrafficCarPartInfo;
        /// <summary>
        /// 车道号
        /// Lane num
        /// </summary>
        public uint nLane;
        /// <summary>
        /// 保留字节,留待扩展.
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 460)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_VISIBILITY (交通能见度事件检测)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_TRAFFIC_VISIBILITY
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_VISIBILITY_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action 0:pulse 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位:毫秒)
        /// Time stamp(unit:ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occur time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 智能事件规则编号
        /// Event RuleID
        /// </summary>
        public uint nRuleId;
        /// <summary>
        /// 事件对应文件信息
        /// FileInfo
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 检测到的车牌信息
        /// Plate number info
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 触发类型
        /// Trigger Type
        /// </summary>
        public EM_TRIGGER_TYPE emTriggerType;
        /// <summary>
        /// 公共信息
        /// Common Info
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// 能见程度（表示距离范围）单位：米
        /// Visibility distance unit:m
        /// </summary>
        public uint nVisibility;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 车辆信息
    /// Vehicle info
    /// </summary>
    public struct NET_A_DREGS_UNCOVERED_VEHICLE_INFO
    {
        /// <summary>
        /// 车牌号码
        /// Plate number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPlateNumber;
        /// <summary>
        /// 包围盒
        /// Bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_DREGS_UNCOVERED(渣土车未遮盖载货检测事件)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_DREGS_UNCOVERED(Loading test event not covered by muck truck)
    /// </summary>
    public struct NET_A_DEV_EVENT_DREGS_UNCOVERED_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲
        /// Event action,0 pause
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 智能事件所属大类
        /// Event class
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 检测区域顶点数
        /// The number of stuDetectRegion
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 检测区域,[0,8191]
        /// The region of alarm occur, [0,8191]
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 车辆信息
        /// Vehicle info
        /// </summary>
        public NET_A_DREGS_UNCOVERED_VEHICLE_INFO stuVehicleInfo;
        /// <summary>
        /// 全景广角图
        /// Panoramic wide-angle map
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 952)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_BOARD (交通违章上下客事件检测)对应的数据块描述信息
    /// Corresponding to data block description of event type  EVENT_IVS_TRAFFIC_BOARD
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_BOARD_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action 0:pulse 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位:毫秒)
        /// Time stamp(unit:ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occur time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 智能事件规则编号
        /// Event RuleID
        /// </summary>
        public uint nRuleId;
        /// <summary>
        /// 事件对应文件信息
        /// FileInfo
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 检测到的车牌信息
        /// Plate number info
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 检测到的车辆信息
        /// Detected vehicle info
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// 触发类型
        /// TriggerType
        /// </summary>
        public EM_TRIGGER_TYPE emTriggerType;
        /// <summary>
        /// 公共信息
        /// Common Info
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_VEHICLE_CLEANLINESS (交通车辆清洁度检测事件检测)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_TRAFFIC_VEHICLE_CLEANLINESS
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action 0:pulse 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位:毫秒)
        /// Time stamp(unit:ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occur time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 智能事件规则编号
        /// Event RuleID
        /// </summary>
        public uint nRuleId;
        /// <summary>
        /// 事件对应文件信息
        /// FileInfo
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 检测到的车牌信息
        /// Plate number info
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 检测到的车辆信息
        /// Detected vehicle info
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// 触发类型
        /// Trigger Type
        /// </summary>
        public EM_TRIGGER_TYPE emTriggerType;
        /// <summary>
        /// 公共信息
        /// Common Info
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// 清洁度阀值
        /// clean value
        /// </summary>
        public int nCleanValue;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_SPEED_CHANGE_DETECTION 变速检测事件 对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_TRAFFIC_SPEED_CHANGE_DETECTION
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_SPEED_CHANGE_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action 0:pulse 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位:毫秒)
        /// Time stamp(unit:ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occur time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 智能事件规则编号
        /// Rule ID
        /// </summary>
        public uint nRuleId;
        /// <summary>
        /// 事件对应文件信息
        /// Event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 检测到的车牌信息
        /// Plate number info
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 检测到的车辆信息
        /// Detected vehicle info
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// 触发类型
        /// Trigger Type
        /// </summary>
        public EM_TRIGGER_TYPE emTriggerType;
        /// <summary>
        /// 对应车道号
        /// Lane
        /// </summary>
        public int nLane;
        /// <summary>
        /// 当前车速, 单位: km/h
        /// Current speed, unit: km/h
        /// </summary>
        public int nSpeedNew;
        /// <summary>
        /// 变化前车速, 单位: km/h
        /// Vehicle speed before change, unit: km/h
        /// </summary>
        public int nSpeedOld;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_AUDIO_ABNORMALDETECTION(声音异常检测)对应数据块描述信息
    /// Event type EVENT_IVS_AUDIO_ABNORMALDETECTION(audio abnormal detection)corresponding data block description info
    /// </summary>
    public struct NET_A_DEV_EVENT_IVS_AUDIO_ABNORMALDETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Time stamp(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occurred time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// The corresponding file info of the event
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 声音强度
        /// decubel
        /// </summary>
        public int nDecibel;
        /// <summary>
        /// 声音频率
        /// frequency
        /// </summary>
        public int nFrequency;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event operation.0=pulse event,1=begin of the durative event,2=end of the durative event;
        /// </summary>
        public byte bEventAction;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// Snap flag(by bit),please refer to NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 对应图片的分辨率
        /// picture resolution
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// 保留字节,留待扩展.
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_MOVEDETECTION(移动事件)对应的数据块描述信息
    /// the describe of EVENT_IVS_MOVEDETECTION's data
    /// </summary>
    public struct NET_A_DEV_EVENT_MOVE_INFO
    {
        /// <summary>
        /// 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 规则检测区域顶点数
        /// detect region point
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件源设备上的index,-1表示数据无效
        /// the source device's index,-1 means data in invalid
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// the source device's sign(exclusive),field said local device does not exist or is empty
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// 物体运动轨迹顶点数
        /// Object trajectories vertices
        /// </summary>
        public int nTrackLineNum;
        /// <summary>
        /// 物体运动轨迹
        /// Object trajectories
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuTrackLine;
        /// <summary>
        /// 事件触发累计次数
        /// event trigger accumilated times
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 扩展信息
        /// Extension info
        /// </summary>
        public NET_EXTENSION_INFO stuExtensionInfo;
        /// <summary>
        /// 动物个数
        /// Animal numbers
        /// </summary>
        public int nAnimalNum;
        /// <summary>
        /// 动物信息
        /// Animal info
        /// </summary>
        public IntPtr pstuAnimals;
        /// <summary>
        /// 检测到的物体信息个数
        /// Number of detected object information
        /// </summary>
        public int nMsgObjArrayCount;
        /// <summary>
        /// 检测到的物体信息数组指针
        /// Detected object information array pointer
        /// </summary>
        public IntPtr pMsgObjArray;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageNum;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pImageArray;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved bytes, leave extended
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 236)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_SLEEP_DETECT(睡觉检测事件)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_SLEEP_DETECT(Sleep detect)
    /// </summary>
    public struct NET_A_DEV_EVENT_SLEEP_DETECT_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 1:开始 2:停止
        /// Event action, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Rule ID,used to indicate which rule triggers
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 智能事件所属大类
        /// Event class
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 事件对应文件信息
        /// Event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件触发的预置点号,从1开始
        /// PresetID, Starting from 1
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 检测区域顶点数
        /// The number of stuDetectRegion
        /// </summary>
        public uint nDetectRegionNum;
        /// <summary>
        /// 检测区域,[0,8191]
        /// The region of alarm occur, [0,8191]
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 检测到的物体个数
        /// The number of object
        /// </summary>
        public uint nObjectNum;
        /// <summary>
        /// 检测到的物体
        /// The list of objects which was detected
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// stuSceneImage 是否有效
        /// Whether stuSceneImage is valid
        /// </summary>
        public bool bSceneImage;
        /// <summary>
        /// 全景广角图
        /// Global scene iamge
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 规则个数
        /// Number of rules
        /// </summary>
        public int nRuleCount;
        /// <summary>
        /// 规则类型："Common":普通睡觉检测,默认值, "HeadCoveredSleep":蒙头睡觉检测
        /// Rule type: "Common": normal sleep detection, default value, "HeadCoveredSleep": head covered sleep detection
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 32)]
        public string szRuleType;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 224)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 检测到的物体信息
    /// Detected object information
    /// </summary>
    public struct NET_GENERAL_ATTITUDE_DETECTION_OBJECT
    {
        /// <summary>
        /// 目标ID
        /// Object ID
        /// </summary>
        public int nObjectID;
        /// <summary>
        /// 物体类型
        /// Object Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szObjectType;
        /// <summary>
        /// 动作类型
        /// Attitude Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szAttitudeType;
        /// <summary>
        /// 包围盒
        /// Bounding Box
        /// </summary>
        public NET_A_RECT_EX BoundingBox;
        /// <summary>
        /// 智能物体全局唯一物体标识
        /// Serial UUID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 22)]
        public string szSerialUUID;
        /// <summary>
        /// 保留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1022)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_GENERAL_ATTITUDE_DETECTION (姿态检测事件)对应的数据块描述信息
    /// The description of the data block corresponding to the event type  EVENT_IVS_GENERAL_ATTITUDE_DETECTION
    /// </summary>
    public struct NET_A_DEV_EVENT_GENERAL_ATTITUDE_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// Action, 0:pulse,1:start, 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// UTC
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件ID
        /// EventID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体
        /// Object
        /// </summary>
        public NET_GENERAL_ATTITUDE_DETECTION_OBJECT stuObject;
        /// <summary>
        /// 全景广角图
        /// Scene Image
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX2 stuSceneImage;
        /// <summary>
        /// 保留字节,留待扩展
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 动作类型
    /// Stereo action type
    /// </summary>
    public enum EM_STEREO_ACTION_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_STEREO_ACTION_TYPE_UNKNOWN,
        /// <summary>
        /// 剧烈运动
        /// Drastic motion
        /// </summary>
        EM_STEREO_ACTION_TYPE_DRASTIC_MOTION,
        /// <summary>
        /// 单人打砸
        /// Single fight
        /// </summary>
        EM_STEREO_ACTION_TYPE_SINGLE_FIGHT,
        /// <summary>
        /// 多人打架
        /// Multi fight
        /// </summary>
        EM_STEREO_ACTION_TYPE_MULTI_FIGHT,
    }

    /// <summary>
    /// 事件类型EVENT_IVS_FIGHTDETECTION(斗殴事件)对应的数据块描述信息
    /// the describe of EVENT_IVS_FIGHTDETECTION's data
    /// </summary>
    public struct NET_DEV_EVENT_FIGHT_INFO
    {
        //// <summary>
        /// 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体个数
        /// have being detected object number
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// 检测到的物体列表
        /// have being detected object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_MSG_OBJECT[] stuObjectIDs;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 规则检测区域顶点数
        /// detect region point
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件源设备上的index,-1表示数据无效
        /// the source device's index,-1 means data in invalid
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// the source device's sign(exclusive),field said local device does not exist or is empty
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// 事件触发累计次数
        /// event trigger accumilated times
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 扩展信息
        /// Extension info
        /// </summary>
        public NET_EXTENSION_INFO stuExtensionInfo;
        /// <summary>
        /// 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析，产生的多个事件的SourceID相同
        /// 缺省时为空字符串，表示无此信息
        /// 格式：类型+时间+序列号，其中类型2位，时间14位，序列号5位
        /// Event source ID. The application scenario is different analysis of the same object or the same picture, resulting in the same sourceid of multiple events
        /// The default is an empty string, indicating no such information
        /// Format: type + time + serial number, in which type 2 digits, time 14 digits and serial number 5 digits
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSourceID;
        /// <summary>
        /// 动作类型
        /// Action Type
        /// </summary>
        public EM_STEREO_ACTION_TYPE emActionType;
        /// <summary>
        /// 全景广角图
        /// Panoramic wide-angle map
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 240)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 物体进入还是离开
    /// Move State
    /// </summary>
    public enum EM_FIRE_LANE_MOVE_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_FIRE_LANE_MOVE_STATE_UNKNOWN,
        /// <summary>
        /// 进入
        /// enter
        /// </summary>
        EM_FIRE_LANE_MOVE_STATE_ENTER,
        /// <summary>
        /// 离开
        /// leave
        /// </summary>
        EM_FIRE_LANE_MOVE_STATE_LEAVE,
    }

    /// <summary>
    /// 加油口盖标示牌状态
    /// Oil Cap State
    /// </summary>
    public enum EM_FIRE_LANE_OILCAP_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_FIRE_LANE_OILCAP_STATE_UNKNOWN,
        /// <summary>
        /// 打开
        /// open
        /// </summary>
        EM_FIRE_LANE_OILCAP_STATE_OPEN,
        /// <summary>
        /// 关闭
        /// close
        /// </summary>
        EM_FIRE_LANE_OILCAP_STATE_CLOSE,
    }

    /// <summary>
    /// 事件类型EVENT_IVS_FIRE_LANE_DETECTION(消防占道检测事件)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_FIRE_LANE_DETECTION
    /// </summary>
    public struct NET_A_DEV_EVENT_FIRE_LANE_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 1:开始，2:停止
        /// 1:start,2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Time stamp(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occur time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 帧序号
        /// Sequence
        /// </summary>
        public int nSequence;
        /// <summary>
        /// 规则编号
        /// Rule id
        /// </summary>
        public int nRuleID;
        /// <summary>
        /// 检测到的物体个数
        /// stuObjects's count
        /// </summary>
        public uint nObjectNum;
        /// <summary>
        /// 检测到的物体
        /// Detected objects
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 事件对应文件信息
        /// File info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// stuSceneImage 是否有效
        /// Whether stuSceneImage is valid
        /// </summary>
        public bool bSceneImage;
        /// <summary>
        /// 全景广角图
        /// Global scene image
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 表示物体进入还是离开
        /// Move State
        /// </summary>
        public EM_FIRE_LANE_MOVE_STATE emMoveState;
        /// <summary>
        /// 表示加油口盖标示牌状态
        /// Oil Cap State
        /// </summary>
        public EM_FIRE_LANE_OILCAP_STATE emOilCapState;
        /// <summary>
        /// 检测到的车辆信息
        /// Detected vehicle information
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 是否有非机动车信息
        /// Whether there is non-motor vehicle information
        /// </summary>
        public bool bNonMotorInfo;
        /// <summary>
        /// 非机动车信息
        /// non-motor vehicle information
        /// </summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_DISTRESS_DETECTION 求救检测事件 对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_DISTRESS_DETECTION
    /// </summary>
    public struct NET_A_DEV_EVENT_DISTRESS_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 1:开始 2:停止
        /// Event action, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp in milliseconds
        /// </summary>
        public double PTS;
        /// <summary>
        /// 智能事件所属大类
        /// Class type
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 事件对应文件信息
        /// File info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 帧序号
        /// Sequence
        /// </summary>
        public uint nSequence;
        /// <summary>
        /// 规则编号
        /// Rule ID
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 检测到的物体
        /// Detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 规则检测区域
        /// Detected region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 规则检测区域顶点数
        /// Valid point numbers
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 事件触发的预置点名称
        /// Preset ID
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 规则类型
    /// Rule type
    /// </summary>
    public enum EM_CFG_RULE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_CFG_RULE_UNKNOWN,
        /// <summary>
        /// 人数统计
        /// NumberStat
        /// </summary>
        EM_CFG_RULE_NUMBER_STAT,
        /// <summary>
        /// 区域内人数统计
        /// ManNumDetection
        /// </summary>
        EM_CFG_RULE_MAN_NUM_DETECTION,
    }

    /// <summary>
    /// 时间
    /// time
    /// </summary>
    public struct NET_A_CFG_NET_TIME_EX
    {
        /// <summary>
        /// 年
        /// YEAR
        /// </summary>
        public uint dwYear;
        /// <summary>
        /// 月
        /// month
        /// </summary>
        public uint dwMonth;
        /// <summary>
        /// 日
        /// day
        /// </summary>
        public uint dwDay;
        /// <summary>
        /// 时
        /// hour
        /// </summary>
        public uint dwHour;
        /// <summary>
        /// 分
        /// minute
        /// </summary>
        public uint dwMinute;
        /// <summary>
        /// 秒
        /// second
        /// </summary>
        public uint dwSecond;
        /// <summary>
        /// 毫秒
        /// millisecond
        /// </summary>
        public uint dwMillisecond;
        /// <summary>
        /// 保留字段
        /// reserved field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public uint[] dwReserved;
    }

    /// <summary>
    /// 离开人员的滞留时间信息
    /// The stay time of the peoples left
    /// </summary>
    public struct NET_A_CFG_EXITMAN_STAY_STAT
    {
        /// <summary>
        /// 人员进入区域时间
        /// Time to enter the region
        /// </summary>
        public NET_A_CFG_NET_TIME_EX stuEnterTime;
        /// <summary>
        /// 人员离开区域时间
        /// Time to exit the region
        /// </summary>
        public NET_A_CFG_NET_TIME_EX stuExitTime;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 104)]
        public byte[] reserved;
    }

    /// <summary>
    /// 猪只离开滞留时间信息
    /// Pig stay stat info
    /// </summary>
    public struct NET_A_CFG_PIG_STAY_STAT
    {
        /// <summary>
        /// 猪只进入区域的时间
        /// Enter Time
        /// </summary>
        public NET_CFG_NET_TIME stuEnterTime;
        /// <summary>
        /// 猪只离开区域的时间
        /// Exit Time
        /// </summary>
        public NET_CFG_NET_TIME stuExitTime;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
        public string szReserved;
    }

    /// <summary>
    /// 获取视频统计摘要信息结构体
    /// Get video statistic summary info structure
    /// </summary>
    public struct NET_A_CFG_VIDEOSATA_SUMMARY_INFO
    {
        public int nStructSize;
        /// <summary>
        /// 统计通道号
        /// Statistics Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 规则名称
        /// rule name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 统计时间，转换到UTC
        /// statistic time, converse to UTC
        /// </summary>
        public NET_A_CFG_NET_TIME_EX stuStatTime;
        /// <summary>
        /// 进入总计
        /// Go to total
        /// </summary>
        public int nEnteredTotal;
        /// <summary>
        /// 今天进入总计
        /// Entered in current today
        /// </summary>
        public int nEnteredToday;
        /// <summary>
        /// 本月进入总计
        /// Entered in current month
        /// </summary>
        public int nEnteredMonth;
        /// <summary>
        /// 今年进入总计
        /// Entered in current year
        /// </summary>
        public int nEnteredYear;
        /// <summary>
        /// 每日最大进入总计
        /// Max Entered daily
        /// </summary>
        public int nEnteredDaily;
        /// <summary>
        /// 出去总计
        /// Exited total
        /// </summary>
        public int nExitedTotal;
        /// <summary>
        /// 今天出去总计
        /// Exited in today
        /// </summary>
        public int nExitedToday;
        /// <summary>
        /// 本月出去总计
        /// Exited in current month
        /// </summary>
        public int nExitedMonth;
        /// <summary>
        /// 今年出去总计
        /// Exited in current year
        /// </summary>
        public int nExitedYear;
        /// <summary>
        /// 每日最大出去总计
        /// Max exited daily
        /// </summary>
        public int nExitedDaily;
        /// <summary>
        /// 平均所有保有统计(除去零值)
        /// Average total(excluding 0)
        /// </summary>
        public int nAvgTotal;
        /// <summary>
        /// 平均今天保有统计
        /// Average in current today
        /// </summary>
        public int nAvgToday;
        /// <summary>
        /// 平均本月保有统计
        /// Average in current month
        /// </summary>
        public int nAvgMonth;
        /// <summary>
        /// 平均今年保有统计
        /// Average in current year
        /// </summary>
        public int nAvgYear;
        /// <summary>
        /// 最大所有保有统计(除去零值)
        /// Max in total(excluding 0)
        /// </summary>
        public int nMaxTotal;
        /// <summary>
        /// 最大今天保有统计
        /// Max in today
        /// </summary>
        public int nMaxToday;
        /// <summary>
        /// 最大本月保有统计
        /// Max in current month
        /// </summary>
        public int nMaxMonth;
        /// <summary>
        /// 最大今年保有统计
        /// Max in current year
        /// </summary>
        public int nMaxYear;
        /// <summary>
        /// 区域内人数
        /// Inside sub total
        /// </summary>
        public int nInsideSubTotal;
        /// <summary>
        /// 规则类型
        /// Rule type
        /// </summary>
        public EM_CFG_RULE_TYPE emRuleType;
        /// <summary>
        /// 离开人员的数量
        /// The count of peoples left
        /// </summary>
        public int nRetExitManNum;
        /// <summary>
        /// 离开人员的滞留时间信息
        /// The stay time of the peoples left
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_A_CFG_EXITMAN_STAY_STAT[] stuExitManStayInfo;
        /// <summary>
        /// 设备运行后猪只统计总数,重启后从上次总数开始继续累加
        /// Entered Total Pig Number
        /// </summary>
        public uint nEnteredTotalPig;
        /// <summary>
        /// 小时内的总猪只数量
        /// Entered Hour Pig Number
        /// </summary>
        public uint nEnteredHourPig;
        /// <summary>
        /// 当天的总猪只数(自然天)
        /// Entered Today Pig Number
        /// </summary>
        public uint nEnteredTodayPig;
        /// <summary>
        /// IPC专用，如果不执行clearSectionStat操作，等同于TodayPig猪只数
        /// Entered Total Pig In TimeSection Number
        /// </summary>
        public uint nEnteredTotalPigInTimeSection;
        /// <summary>
        /// 设备运行后猪只统计总数,重启后从上次总数开始继续累加
        /// Exited Total Pig Number
        /// </summary>
        public uint nExitedTotalPig;
        /// <summary>
        /// 小时内的总猪只数量
        /// Exited Hour Pig Number
        /// </summary>
        public uint nExitedHourPig;
        /// <summary>
        /// 当天的总猪只数(自然天)
        /// Exited Today Pig Number
        /// </summary>
        public uint nExitedTodayPig;
        /// <summary>
        /// IPC专用，如果不执行clearSectionStat操作，等同于TodayPig猪只数
        /// Exited Total Pig In TimeSection Number
        /// </summary>
        public uint nExitedTotalPigInTimeSection;
        /// <summary>
        /// 区域内猪只数
        /// Inside Total Pig Number
        /// </summary>
        public uint nInsideTotalPig;
        /// <summary>
        /// 猪只离开滞留时间信息个数
        /// Inside Pig Stay Stat Count
        /// </summary>
        public int nInsidePigStayStatCount;
        /// <summary>
        /// 猪只离开滞留时间信息
        /// Inside Pig Stay Stat Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_A_CFG_PIG_STAY_STAT[] stuInsidePigStayStatInfo;
        /// <summary>
        /// 当天的猪只数
        /// Inside Today Pig Number
        /// </summary>
        public uint nInsideTodayPig;
        /// <summary>
        /// 自动清零时间段内的人数（IPC专用，如果不执行clearSectionStat操作，等同于Today人数）
        /// Automatically reset the number of people during the time period (IPC only, if clearSectionStat operation is not performed, it is equivalent to the number of people on Today)
        /// </summary>
        public uint nEnteredTotalInTimeSection;
        /// <summary>
        /// 自动清零时间段内的人数（IPC专用，如果不执行clearSectionStat操作，等同于Today人数）
        /// Automatically reset the number of people during the time period (IPC only, if clearSectionStat operation is not performed, it is equivalent to the number of people on Today)
        /// </summary>
        public uint nExitedTotalInTimeSection;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_PLAY_MOBILEPHONE(玩手机事件)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_PLAY_MOBILEPHONE((Paly mobilephone)
    /// </summary>
    public struct NET_A_DEV_EVENT_PLAY_MOBILEPHONE_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 1:开始 2:停止
        /// Event action, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Rule ID,used to indicate which rule triggers
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 智能事件所属大类
        /// Event class
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 事件对应文件信息
        /// Event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件触发的预置点号,从1开始
        /// PresetID, Starting from 1
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 检测区域顶点数
        /// The number of stuDetectRegion
        /// </summary>
        public uint nDetectRegionNum;
        /// <summary>
        /// 检测区域,[0,8191]
        /// The region of alarm occur, [0,8191]
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 检测到的物体个数
        /// The number of object
        /// </summary>
        public uint nObjectNum;
        /// <summary>
        /// 检测到的物体
        /// The list of objects which was detected
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// stuSceneImage 是否有效
        /// Whether stuSceneImage is valid
        /// </summary>
        public bool bSceneImage;
        /// <summary>
        /// 全景广角图
        /// Global scene iamge
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// GPS信息
        /// GPS information
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// 违章关联视频FTP上传路径
        /// FTP upload path of violation related video
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szVideoPath;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 违章关联的多个视频信息个数
        /// Number of multiple video information associated with violation
        /// </summary>
        public int nRelatingVideoInfoNum;
        /// <summary>
        /// 违章关联的多个视频信息数组，最多支持16个视频
        /// Multiple video information arrays associated with violations, supporting up to 16 videos
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_RELATING_VIDEO_INFO[] stuRelatingVideoInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1012)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 屏保状态
    /// Screen saver status
    /// </summary>
    public enum EM_VIDEO_ABNORMAL_DETECT_TYPE
    {
        /// <summary>
        /// 未知状态
        /// Unknown
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_UNKNOWN,
        /// <summary>
        /// 视频丢失
        /// Video loss
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_LOSS,
        /// <summary>
        /// 视频遮挡
        /// Video occlusion
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_COVER,
        /// <summary>
        /// 画面冻结
        /// Picture freezing
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_FROZEN,
        /// <summary>
        /// 过亮
        /// Too bright
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_LIGHT,
        /// <summary>
        /// 过暗
        /// Too dark
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_DARK,
        /// <summary>
        /// 场景变化
        /// Scene change
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_SCENECHANGE,
        /// <summary>
        /// 条纹检测
        /// Fringe detection
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_STRIATION,
        /// <summary>
        /// 噪声检测
        /// Noise detection
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_NOISE,
        /// <summary>
        /// 偏色检测
        /// Color deviation detection
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_UNBALANCE,
        /// <summary>
        /// 视频模糊检测
        /// Video blur detection
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_BLUR,
        /// <summary>
        /// 对比度异常检测
        /// Abnormal contrast detection
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_CONTRAST,
        /// <summary>
        /// 视频运动
        /// Video sport
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_MOTION,
        /// <summary>
        /// 视频闪烁
        /// Video flicker
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_FILCKERING,
        /// <summary>
        /// 视频颜色-13
        /// Video color-13
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_COLOR,
        /// <summary>
        /// 虚焦检测
        /// Virtual focus detection
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_UNFOCUS,
        /// <summary>
        /// 过曝检测
        /// Over exposure detection
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_OVEREXPOSURE,
        /// <summary>
        /// 场景剧变
        /// Dramatic changes in the scene
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_DRAMATICCHANGE,
        /// <summary>
        /// 黑白图像
        /// Black and white image
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_BLACKWHITE,
        /// <summary>
        /// 雪花噪声
        /// Snowflake noise
        /// </summary>
        EM_VIDEO_ABNORMAL_DETECT_SNOWNOISE,
    }

    /// <summary>
    /// 视频正常事件,在视频诊断检测周期结束时,将未报错的诊断项上报正常事件
    /// Event type EM_ANALYSE_EVENT_VIDEO_NORMAL_DETECTION,At the end of the video diagnostic detection cycle, the diagnostic items that have not reported errors are reported to the normal events
    /// </summary>
    public struct NET_A_DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲
        /// 0: pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件编号，用来唯一标志一个事件
        /// Event number, used to uniquely identify an event
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 事件发生的时间,单位秒
        /// The time of the event, in seconds
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Time stamp (in milliseconds)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 视频检测类型
        /// Video detect type
        /// </summary>
        public EM_VIDEO_ABNORMAL_DETECT_TYPE emDetectType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 作业行为状态信息
    /// Work action state of work state detection
    /// </summary>
    public enum EM_WORKACTION_STATE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_WORKACTION_STATE_UNKNOWN,
        /// <summary>
        /// 无人作业
        /// No worker
        /// </summary>
        EM_WORKACTION_STATE_NO_WORKER,
        /// <summary>
        /// 单人作业
        /// Single worker
        /// </summary>
        EEM_WORKACTION_STATE_SINGLE_WORKER,
        /// <summary>
        /// 无红马甲作业
        /// No red vest
        /// </summary>
        EM_WORKACTION_STATE_NORED_VEST,
    }

    /// <summary>
    /// 作业统计检测类型
    /// Rule type of work state detection
    /// </summary>
    public enum EM_WORKSTATDETECTION_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknwon
        /// </summary>
        EM_WORKSTATDETECTION_UNKNOWN,
        /// <summary>
        /// 脱岗检测
        /// No worker
        /// </summary>
        EM_WORKSTATDETECTION_NO_WORKER,
        /// <summary>
        /// 单人作业
        /// Single worker
        /// </summary>
        EM_WORKSTATDETECTION_SINGLE_WORKER,
        /// <summary>
        /// 工作负责人脱岗检测
        /// No leader worker
        /// </summary>
        EM_WORKSTATDETECTION_NO_WORKER_LEADER,
        /// <summary>
        /// 手部消毒检测
        /// Hand Disinfection
        /// </summary>
        EM_WORKSTATDETECTION_HAND_DISINFECTION,
        /// <summary>
        /// 蘸脚动作检测
        /// Foot Dip
        /// </summary>
        EM_WORKSTATDETECTION_FOOT_DIP,
        /// <summary>
        /// 换鞋动作检测
        /// Shoes Change
        /// </summary>
        EM_WORKSTATDETECTION_SHOES_CHANGE,
    }

    /// <summary>
    /// 事件类型EVENT_IVS_WORKSTATDETECTION(作业统计事件)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_WORKCLOTHES_DETECT (work state detection)
    /// </summary>
    public struct NET_A_DEV_EVENT_WORKSTATDETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 智能事件所属大类
        /// Class type
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Rule ID
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 物体ID
        /// Object ID
        /// </summary>
        public uint nObjectID;
        /// <summary>
        /// 作业行为状态个数
        /// Count of work action state
        /// </summary>
        public uint nWorkActionNum;
        /// <summary>
        /// 作业行为状态信息
        /// Info of work action
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_WORKACTION_STATE[] emWorkAction;
        /// <summary>
        /// 全景大图信息
        /// Scene image info
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 报警规则类型
        /// Rule type of work state detection
        /// </summary>
        public EM_WORKSTATDETECTION_TYPE emRuleType;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 电力安全带类型
    /// Type of electric belt
    /// </summary>
    public enum EM_ELECTRIC_BELT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_ELECTRIC_BELT_TYPE_UNKNOWN,
        /// <summary>
        /// 普通电力安全带
        /// General
        /// </summary>
        EM_ELECTRIC_BELT_TYPE_GENERAL,
    }

    /// <summary>
    /// 电力安全带穿戴方式
    /// Ware type of electric belt
    /// </summary>
    public enum EM_BELT_WARE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_BELT_WARE_TYPE_UNKNOWN,
        /// <summary>
        /// 正常穿戴
        /// Normal
        /// </summary>
        EM_BELT_WARE_TYPE_NORMAL,
        /// <summary>
        /// 主保护绳缺失
        /// Main protection rope missing
        /// </summary>
        EM_BELT_WARE_TYPE_MISS_MAIN,
        /// <summary>
        /// 备用保护绳缺失
        /// Backup protection rope missing
        /// </summary>
        EM_BELT_WARE_TYPE_MISS_BACKUP,
        /// <summary>
        /// 作业低挂高用
        /// Low hanging and high utilization
        /// </summary>
        EM_BELT_WARE_TYPE_LOW_HANGING,
    }

    /// <summary>
    /// 物体截图
    /// Object image info
    /// </summary>
    public struct NET_OBJECT_IMAGE_INFO
    {
        /// <summary>
        /// 在二进制数据块中的偏移
        /// Offset in binary data
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// 图片大小,单位字节
        /// Image size, unit:bytes
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 图片宽度(像素)
        /// Image width (pixels)
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// 图片高度(像素)
        /// Image height (pixels)
        /// </summary>
        public uint nHeight;
        /// <summary>
        /// 全景图片路径
        /// Scene image path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;
        /// <summary>
        /// 图片序号
        /// picture index
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 504)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 安全带对象信息
    /// Info of electric belt object
    /// </summary>
    public struct NET_ELECTRIC_BELT_OBJECT
    {
        /// <summary>
        /// 物体ID
        /// Object ID
        /// </summary>
        public uint nObjectID;
        /// <summary>
        /// 电力安全带类型
        /// Type of electric belt
        /// </summary>
        public EM_ELECTRIC_BELT_TYPE emBeltType;
        /// <summary>
        /// 电力安全带穿戴方式
        /// Ware type of electric belt
        /// </summary>
        public EM_BELT_WARE_TYPE emBeltWareType;
        /// <summary>
        /// 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;
        /// <summary>
        /// 包围盒
        /// Bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 物体截图
        /// Object image
        /// </summary>
        public NET_OBJECT_IMAGE_INFO stuImageData;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_ELECTRIC_BELT_DETECT(电力检测安全带检测事件)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_ELECTRIC_BELT_DETECT(Electric belt detection)
    /// </summary>
    public struct NET_A_DEV_EVENT_ELECTRIC_BELT_DETECT_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Rule ID,used to indicate which rule triggers
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 帧序号
        /// Sequence
        /// </summary>
        public uint nSequence;
        /// <summary>
        /// 智能事件所属大类
        /// Class of intelligent event
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 安全带对象个数
        /// Number of belt objects
        /// </summary>
        public uint nBeltObjNum;
        /// <summary>
        /// 安全带对象信息
        /// Info of belt objects
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_ELECTRIC_BELT_OBJECT[] stuBeltObjs;
        /// <summary>
        /// 全景广角图
        /// Scene image
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1028)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_WATER_LEVEL_DETECTION(水位检测事件)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_WATER_LEVEL_DETECTION (WaterLevelDetection)
    /// </summary>
    public struct NET_A_DEV_EVENT_WATER_LEVEL_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Evnet name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// Event corresponding to file information
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 智能事件公共信息
        /// Intelligent common information
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 预置点名称
        /// Preset name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 智能物体全局唯一物体标识
        /// Object ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szObjectUUID;
        /// <summary>
        /// 事件数据类型
        /// Event type
        /// </summary>
        public NET_EM_EVENT_DATA_TYPE emEventType;
        /// <summary>
        /// 水位状态
        /// Water level status
        /// </summary>
        public NET_EM_WATER_LEVEL_STATUS emStatus;
        /// <summary>
        /// 水位尺
        /// Ruler of water level
        /// </summary>
        public NET_WATER_RULER stuWaterRuler;
        /// <summary>
        /// 原始图
        /// Original image
        /// </summary>
        public NET_INTELLIGENCE_IMAGE_INFO stuOriginalImage;
        /// <summary>
        /// 球机变到最小倍下的抓图
        /// Snap picture of snapped by camera in minimum of focal length
        /// </summary>
        public NET_INTELLIGENCE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 主动查询水位功能，用于区分是否为手动触发的上报事件
        /// query the water level，Used to distinguish whether it is a manually triggered escalation event
        /// </summary>
        public bool bManual;
        /// <summary>
        /// / 图片信息个数
        /// Picture number
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// / 图片信息数组
        /// Picture information
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016 - 8)]
        public byte[] byReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016 - 4)]
        public byte[] byReserved;
#endif
    }

    /// <summary>
    /// 事件类型EVENT_IVS_RETROGRADEDETECTION(人员逆行事件)对应的数据块描述信息
    /// the describe of EVENT_IVS_RETROGRADEDETECTION's data
    /// </summary>
    public struct NET_A_DEV_EVENT_RETROGRADEDETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 物体运动轨迹顶点数
        /// track line point number
        /// </summary>
        public int nTrackLineNum;
        /// <summary>
        /// 物体运动轨迹
        /// track line info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] TrackLine;
        /// <summary>
        /// 规则里规定的方向顶点数
        /// direction point number
        /// </summary>
        public int nDirectionPointNum;
        /// <summary>
        /// 规则里规定的方向
        /// direction info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDirections;
        /// <summary>
        /// 规则检测区域顶点数
        /// detect region's point number
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// detect region info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件源设备上的index,-1表示数据无效
        /// the source device's index,-1 means data in invalid
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// the source device's sign(exclusive),field said local device does not exist or is empty
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// 事件触发累计次数
        /// event trigger accumilated times
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 604)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_ELEVATOR_ABNORMAL(电动扶梯运行异常事件)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_ELEVATOR_ABNORMAL(elevator abnormal)
    /// </summary>
    public struct NET_A_DEV_EVENT_ELEVATOR_ABNORMAL_INFO
    {
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件名称
        /// evnet name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 1:开始 2:停止
        /// 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 智能事件所属大类
        /// class type
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 扶梯检测区顶点数
        /// Number of points in elevator detection area
        /// </summary>
        public int nDetectRegionPointNum;
        /// <summary>
        /// 扶梯检测区多边形类型，多边形中每个顶点的坐标归一化到[0,8191]区间。
        /// Polygon area of elevator detection area.The coordinates are normalized to [08192] interval.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 扶梯的运动方向，第一个点是起点，第二个点是终点。坐标归一化到[0,8191]区间。
        /// The movement direction of the elevator. The first point is the starting point and the second is the end point. The coordinates are normalized to [08192] interval.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_POINT[] stuDirection;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 908)]
        public byte[] byReserved1;
    }

    /// <summary>
    /// 查询要求返回的统计信息粒度
    /// Granularity of statistics returned by query request
    /// </summary>
    public enum EM_GRANULARITY_STARTFIND_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_GRANULARITY_TYPE_UNKNOWN,
        /// <summary>
        /// 按5分钟(时报表)
        /// Press 5 minutes (time table)
        /// </summary>
        EM_GRANULARITY_TYPE_MINUTE,
        /// <summary>
        /// 按小时(日报表)
        /// By hour (daily report)
        /// </summary>
        EM_GRANULARITY_TYPE_HOUR,
        /// <summary>
        /// 按天(月报表)
        /// By day (monthly report)
        /// </summary>
        EM_GRANULARITY_TYPE_DAY,
        /// <summary>
        /// 按月(年报表)
        /// Monthly (annual report)
        /// </summary>
        EM_GRANULARITY_TYPE_MONTH,
    }

    /// <summary>
    /// 统计方向查询条件
    /// Statistics direction query criteria
    /// </summary>
    public enum EM_STARTFIND_DIRECTION
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_STARTFIND_DIRECTION_UNKNOWN,
        /// <summary>
        /// 全部
        /// All
        /// </summary>
        EM_STARTFIND_DIRECTION_BOTH,
        /// <summary>
        /// 左到右
        /// Left to right
        /// </summary>
        EM_STARTFIND_DIRECTION_LEFTTORIGHT,
        /// <summary>
        /// 右到左
        /// Right to left
        /// </summary>
        EM_STARTFIND_DIRECTION_RIGHTTOLEFT,
    }

    /// <summary>
    /// 接口(CLIENT_StartFindFluxStat)输入参数
    /// CLIENT_StartFindFluxStat's input param
    /// </summary>
    public struct NET_IN_TRAFFICSTARTFINDSTAT
    {
        /// <summary>
        /// 此结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 开始时间 暂时精确到小时
        /// start time, temporarily
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// 结束时间 暂时精确到小时
        /// end time, temporarily
        /// </summary>
        public NET_TIME stEndTime;
        /// <summary>
        /// 等待接收数据的超时时间
        /// the time to wait result
        /// </summary>
        public int nWaittime;
        /// <summary>
        /// 查询的通道号个数
        /// Query the number of channel numbers
        /// </summary>
        public int nChannelCount;
        /// <summary>
        /// 查询的通道号
        /// Query channel number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nChannels;
        /// <summary>
        /// 查询的车道号个数
        /// Query the number of lane numbers
        /// </summary>
        public int nLaneCount;
        /// <summary>
        /// 查询的车道号
        /// Query lane number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public int[] nLanes;
        /// <summary>
        /// 数据库表类型 0表示视频结构化,1表示道路监控
        /// Database table type 0 indicates video structure, and 1 indicates road monitoring
        /// </summary>
        public int nClassType;
        /// <summary>
        /// 查询要求返回的统计信息粒度 默认按小时
        /// Granularity of statistics returned by query request
        /// </summary>
        public EM_GRANULARITY_STARTFIND_TYPE emGranularity;
        /// <summary>
        /// 统计方向查询条件
        /// Statistics direction query criteria
        /// </summary>
        public EM_STARTFIND_DIRECTION emDirection;
    }

    /// <summary>
    /// 接口(CLIENT_StartFindFluxStat)输出参数
    /// CLIENT_StartFindFluxStat's output param
    /// </summary>
    public struct NET_OUT_TRAFFICSTARTFINDSTAT
    {
        /// <summary>
        /// 此结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 符合此次查询条件的结果总条数
        /// The total amount that matched current search criteria
        /// </summary>
        public uint dwTotalCount;
    }

    /// <summary>
    /// 接口(CLIENT_DoFindFluxStat)输入参数
    /// CLIENT_DoFindFluxStat's input param
    /// </summary>
    public struct NET_IN_TRAFFICDOFINDSTAT
    {
        /// <summary>
        /// 此结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 每次查询的流量统计条数
        /// the number of flow Statistic for query
        /// </summary>
        public uint nCount;
        /// <summary>
        /// 等待接收数据的超时时间
        /// the time to wait result
        /// </summary>
        public int nWaittime;
    }

    /// <summary>
    /// 流量统计记录
    /// traffic flow state info
    /// </summary>
    public struct NET_A_TRAFFICFLOWSTAT
    {
        /// <summary>
        /// 同DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.MachineGroup
        /// same as DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.MachineGroup
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMachineAddress;
        /// <summary>
        /// 同DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.MachineName
        /// same as DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.MachineName
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMachineName;
        /// <summary>
        /// 行驶方向"Approach"-上行,即车辆离设备部署点越来越近；"Leave"-下行,即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和下行的两个地点,UTF-8编码
        /// DrivingDirection "Approach" means driving direction,where the car is more near;"Leave"-means where if mor far to the car,the scend and third param means the location of the driving direction
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3 * 32)]
        public string szDrivingDirection;
        /// <summary>
        /// 车道号 使用用户配置的车道编号
        /// lane number
        /// </summary>
        public int nLane;
        /// <summary>
        /// 统计时间,转换到UTC
        /// Statistic time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 统计周期,单位分钟
        /// Statistic period, m
        /// </summary>
        public int nPeriod;
        /// <summary>
        /// 通过车辆总数
        /// passed vehicle number
        /// </summary>
        public int nVehicles;
        /// <summary>
        /// 平均车速,单位km/h
        /// average speed, km/h
        /// </summary>
        public float fAverageSpeed;
        /// <summary>
        /// 平均车长,单位米
        /// average length, m
        /// </summary>
        public float fAverageLength;
        /// <summary>
        /// 时间占有率,即单位时间内通过断面的车辆所用时间的总和占单位时间的比例
        /// time occupy ratio,
        /// </summary>
        public float fTimeOccupyRatio;
        /// <summary>
        /// 空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离
        /// space occupy ratio,
        /// </summary>
        public float fSpaceOccupyRatio;
        /// <summary>
        /// 车头间距,相邻车辆之间的距离,单位米/辆
        /// space between two cars,m
        /// </summary>
        public float fSpaceHeadway;
        /// <summary>
        /// 车头时距,单位秒/辆
        /// time between two cars, s
        /// </summary>
        public float fTimeHeadway;
        /// <summary>
        /// 车辆密度,每公里的车辆数,单位辆/km
        /// car density, every km
        /// </summary>
        public float fDensity;
        /// <summary>
        /// 超速车辆数
        /// over speed vehicle number
        /// </summary>
        public int nOverSpeedVehicles;
        /// <summary>
        /// 低速车辆数
        /// under speed vehicle number
        /// </summary>
        public int nUnderSpeedVehicles;
        /// <summary>
        /// 大车数量 车辆类型判断标准参见TrafficSnapshot配置表
        /// big car number
        /// </summary>
        public int nLargeVehicles;
        /// <summary>
        /// 中型车数量
        /// mid car number
        /// </summary>
        public int nMediumVehicles;
        /// <summary>
        /// 小车数量
        /// small car number
        /// </summary>
        public int nSmallVehicles;
        /// <summary>
        /// 摩托车数量
        /// moto car number
        /// </summary>
        public int nMotoVehicles;
        /// <summary>
        /// 超长车数量
        /// long vehicle number
        /// </summary>
        public int nLongVehicles;
        /// <summary>
        /// 流量数据所属通道号
        /// The channel number to which the traffic data belongs
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szChannel;
        /// <summary>
        /// / 客车交通量(辆/单位时间)
        /// Passenger vehicle statistics amount (amount/hour)
        /// </summary>
        public int nPassengerCarVehicles;
        /// <summary>
        /// / 大货车交通量(辆/单位时间)
        /// Large truck statistics amount
        /// </summary>
        public int nLargeTruckVehicles;
        /// <summary>
        /// / 流量状态
        /// / 1-流量过大(拥堵)
        /// / 2-流量过大恢复(略堵)
        /// / 3-正常
        /// / 4-流量过小(通畅)
        /// / 5-流量过小恢复(良好)
        /// / -1-未知
        /// / traffic state
        /// / 1-traffic too high (congested)
        /// / 2-traffic too high recovery (slightly congested)
        /// / 3-normal
        /// / 4-traffic too low (smooth)
        /// / 5-traffic too low recovery (good)
        /// / -1-unknown
        /// </summary>
        public int nState;
        /// <summary>
        /// / 保留字段
        /// Reserved text
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1012)]
        public string szResvered;
    }

    /// <summary>
    /// 统计信息指针
    /// the statistic pointer
    /// </summary>
    public struct NET_A_TRAFFICFLOWSTAT_OUT
    {
        /// <summary>
        /// 此结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 统计信息个数
        /// the number of statistic info
        /// </summary>
        public int nStatInfo;
        /// <summary>
        /// 统计信息指针,由用户申请内存，大小为sizeof(NET_A_TRAFFICFLOWSTAT)*nStatInfo
        /// the statistic pointer, the space application by the user, length is sizeof(NET_A_TRAFFICFLOWSTAT)*nStatInfo
        /// </summary>
        public IntPtr pStatInfo;
    }

    /// <summary>
    /// 接口(CLIENT_DoFindFluxStat)输出参数
    /// CLIENT_DoFindFluxStat's out param
    /// </summary>
    public struct NET_OUT_TRAFFICDOFINDSTAT
    {
        /// <summary>
        /// 此结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 统计信息指针
        /// the statistic pointer
        /// </summary>
        public NET_A_TRAFFICFLOWSTAT_OUT stStatInfo;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_SPECIAL_VEHICLE_DETECT (特殊车辆检测)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_TRAFFIC_SPECIAL_VEHICLE_DETECT
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action 0:pulse 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位:毫秒)
        /// Time stamp(unit:ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occur time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 智能事件规则编号
        /// Event RuleID
        /// </summary>
        public uint nRuleId;
        /// <summary>
        /// 事件对应文件信息
        /// FileInfo
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 检测到的车牌信息
        /// Plate number info
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 检测到的车辆信息
        /// Detected vehicle info
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// 触发类型
        /// Trigger Type
        /// </summary>
        public EM_TRIGGER_TYPE emTriggerType;
        /// <summary>
        /// 公共信息
        /// Common Info
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_TRUCK_OCCUPIED (大车占道事件)对应的数据块描述信息
    /// The description information of the data block corresponding to the event type EVENT_IVS_TRAFFIC_TRUCK_OCCUPIED (Truck occupation event)
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_TRUCK_OCCUPIED_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// Action, 0:pulse,1:start, 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// Category of intelligent events
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// GroupID事件组ID，同一物体抓拍过程内GroupID相同
        /// group ID, which is the same in the process of capturing the same object
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// CountInGroup一个事件组内的抓拍张数
        /// CountInGroup Number of snapshots in an event group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// IndexInGroup一个事件组内的抓拍序号，从1开始
        /// IndexInGroup Capture sequence number in an event group,Start with 1
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// 事件时间毫秒数
        /// Time of occurrence in milliseconds
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// 相对事件时间戳,(单位是毫秒)
        /// Relative event timestamp in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// Time of occurrence
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 对应车道号
        /// Corresponding lane number
        /// </summary>
        public int nLane;
        /// <summary>
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// Indicates the capture sequence number. For example, 3,2,1,1 indicates the end of capture, and 0 indicates the abnormal end
        /// </summary>
        public int nSequence;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// 车牌信息
        /// License plate information
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 车身信息
        /// Body information
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// 交通车辆信息
        /// Traffic vehicle information
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;
        /// <summary>
        /// 公共信息
        /// Public information
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// 事件对应文件信息
        /// Event corresponding file information
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// Capture flag (bitwise), see NET_RESERVED_COMMON for details
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 视频流协议类型
    /// protocol type of video stream
    /// </summary>
    public enum EM_STREAM_PROTOCOL_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_STREAM_PROTOCOL_UNKNOWN,
        /// <summary>
        /// 私有二代
        /// private v2
        /// </summary>
        EM_STREAM_PROTOCOL_PRIVATE_V2,
        /// <summary>
        /// 私有三代
        /// private v3
        /// </summary>
        EM_STREAM_PROTOCOL_PRIVATE_V3,
        /// <summary>
        /// rtsp
        /// rtsp
        /// </summary>
        EM_STREAM_PROTOCOL_RTSP,
        /// <summary>
        /// Onvif
        /// Onvif
        /// </summary>
        EM_STREAM_PROTOCOL_ONVIF,
        /// <summary>
        /// GB28181
        /// GB28181
        /// </summary>
        EM_STREAM_PROTOCOL_GB28181,
        /// <summary>
        /// 
        /// 
        /// </summary>
        EM_STREAM_PROTOCOL_HIKVISION,
        /// <summary>
        /// 蓝星
        /// BSCP
        /// </summary>
        EM_STREAM_PROTOCOL_BSCP,
    }

    /// <summary>
    /// 远程实时视频源信息("analyseTaskManager.analysePushPictureFileByRule"协议使用)
    /// Remote real-time video source information (used in protocol "analyseTaskManager.analysePushPictureFileByRule")
    /// </summary>
    public struct NET_REMOTE_STREAM_INFO
    {
        /// <summary>
        /// 视频流协议类型
        /// Stream protocol type
        /// </summary>
        public EM_STREAM_PROTOCOL_TYPE emStreamProtocolType;
        /// <summary>
        /// 用于字节对齐
        /// Used for byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;
        /// <summary>
        /// 视频流地址
        /// Video streaming path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
        /// <summary>
        /// IP 地址
        /// IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szIp;
        /// <summary>
        /// 端口号
        /// port
        /// </summary>
        public ushort wPort;
        /// <summary>
        /// 用户名
        /// user
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUser;
        /// <summary>
        /// 密码
        /// password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPwd;
        /// <summary>
        /// 通道号
        /// ChannelID;
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 码流类型, 0:主码流; 1:辅1码流; 2:辅2码流;
        /// Stream type, 0-main stream, 1-extra stream 1, 2-extra stream 2
        /// </summary>
        public uint nStreamType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved;
    }

    /// <summary>
    /// 智能分析图片信息
    /// Intelligent analysis of picture information
    /// </summary>
    public struct NET_PUSH_PICTURE_BYRULE_INFO
    {
        /// <summary>
        /// 文件ID
        /// File ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFileID;
        /// <summary>
        /// 文件数据在二进制数据中的偏移, 单位:字节 (URL和Offset/Length应该是两者有且只有一个)
        /// The Offset of the file data in binary data, in bytes (RemoteStreamInfo and Offset/Length should be both and only one).
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 文件数据长度, 单位:字节 (URL和Offset/Length应该是两者有且只有一个)
        /// Length of file data, in bytes
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 分析规则信息
        /// Analyze rule information
        /// </summary>
        public NET_ANALYSE_RULE stuRuleInfo;
        /// <summary>
        /// 用户定义数据，通过client.notifyTaskResult回调中”UserDefineData”字段带回
        /// User-defined data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szUserDefineData;
        /// <summary>
        /// 模型远程文件url地址，目前支持http方式下载
        /// Model remote file URL address, currently support HTTP download
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szModelUrl;
        /// <summary>
        /// 远程实时视频流信息
        /// Remote real-time video streaming information
        /// </summary>
        public NET_REMOTE_STREAM_INFO stuRemoteStreamInfo;
        /// <summary>
        /// 能源SDT仪器仪表使用;0：深度学习 1：建模方式 2:图片比较方式,通过PicUr下载图片下发给算法,进行对应检测
        /// Energy SDT instrument use; 0: Deep learning 1: modeling approach 2: Image comparison method: download the image through picur and send it to the algorithm for corresponding detection
        /// </summary>
        public uint nDetectType;
        /// <summary>
        /// 图片远程文件url地址个数
        /// Number of URL addresses of remote image files
        /// </summary>
        public int nPicUrlNum;
        /// <summary>
        /// 图片远程文件url地址,目前支持http方式下载
        /// The URL address of the remote image file. At present, it supports HTTP download
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64 * 512)]
        public string szPicUrl;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_PushAnalysePictureFileByRule 接口输入参数
    /// CLIENT_PushAnalysePictureFileByRule input parameter
    /// </summary>
    public struct NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 任务ID
        /// TaskID
        /// </summary>
        public uint nTaskID;
        /// <summary>
        /// 推送图片信息，文件列表支持url路径和二进制数据两种方式，但是每次只能选择一种方式，即URL和Offset/Length应该是两者有且只有一个
        /// 用户自定义空间 < NET_PUSH_PICTURE_BYRULE_INFO >
        /// Push picture information, file list support URL path and binary data two ways, but can only choose one way at a time
        /// Users apply for their own memory < NET_PUSH_PICTURE_BYRULE_INFO >
        /// </summary>
        public IntPtr pstuPushPicByRuleInfos;
        /// <summary>
        /// 推送图片数量,用户定义
        /// Number of images to push, user-defined
        /// </summary>
        public uint nPicNum;
        /// <summary>
        /// 数据缓冲区长度, 单位:字节
        /// BufLen
        /// </summary>
        public uint nBinBufLen;
        /// <summary>
        /// 数据缓冲区, 由用户申请和释放,选择nOffset/nLength方式，需要传送图片数据
        /// Data buffers, applied and released by the user
        /// </summary>
        public IntPtr pBinBuf;
    }

    /// <summary>
    /// CLIENT_PushAnalysePictureFileByRule 接口输出参数
    /// CLIENT_PushAnalysePictureFileByRule output parameter
    /// </summary>
    public struct NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 推送远程图片文件，添加任务时无规则和图片信息，通过推送图片接口，每张图片中带有不同的规则信息（目前能源场景中使用）
    /// Push remote picture file, add task without rules and picture information, through the push picture interface, each picture has different rule information (currently used in the energy scene)
    /// </summary>
    public struct NET_PUSH_PICFILE_BYRULE_INFO
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 智能任务启动规则
        /// Analyse tesk start rule
        /// </summary>
        public EM_ANALYSE_TASK_START_RULE emStartRule;
        /// <summary>
        /// 任务数据
        /// Task user data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szTaskUserData;
		/// <summary>
        /// / Analysis type, 0: ordinary intelligent analysis, 1: secondary analysis and judgment
        /// </summary>
        public int nAnalysisType;
    }

    /// <summary>
    /// 仪表类型
    /// Instrument type
    /// </summary>
    public enum EM_INSTRUMENT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_INSTRUMENT_TYPE_UNKNOWN,
        /// <summary>
        /// 状态识别类型
        /// State type
        /// </summary>
        EM_INSTRUMENT_TYPE_STATE,
        /// <summary>
        /// 状态匹配类型
        /// State match type
        /// </summary>
        EM_INSTRUMENT_TYPE_STATEMATCH,
        /// <summary>
        /// 指针式表计类型
        /// Meter type
        /// </summary>
        EM_INSTRUMENT_TYPE_METER,
        /// <summary>
        /// 数字识别类型
        /// Digital recognition type
        /// </summary>
        EM_INSTRUMENT_TYPE_CHAR,
        /// <summary>
        /// 油表类型
        /// Oil type
        /// </summary>
        EM_INSTRUMENT_TYPE_OIL,
        /// <summary>
        /// 开关标识
        /// Switch identification type
        /// </summary>
        EM_INSTRUMENT_TYPE_SWIIDEN,
        /// <summary>
        /// 指示灯类型
        /// Light type
        /// </summary>
        EM_INSTRUMENT_TYPE_LIGHT,
        /// <summary>
        /// 室内开关类型
        /// Switch type
        /// </summary>
        EM_INSTRUMENT_TYPE_SWITCH,
        /// <summary>
        /// 外观检测类型
        /// Appearance type
        /// </summary>
        EM_INSTRUMENT_TYPE_APPEARANCE,
        /// <summary>
        /// 液位计
        /// levelgauge type
        /// </summary>
        EM_INSTRUMENT_TYPE_LEVELGAUGE,
    }

    /// <summary>
    /// 图片类型
    /// Picture type
    /// </summary>
    public enum EM_PIC_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_PIC_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 算法处理后的图片
        /// Algorithmically processed picture
        /// </summary>
        EM_PIC_TYPE_ALGORITHMICALLY_PROCESSED,
    }

    /// <summary>
    /// 图片类型
    /// Picture type
    /// </summary>
    public enum EM_IMAGE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_IMAGE_UNKNOWN = -1,
        /// <summary>
        /// 安检员图片
        /// Picture of security inspector
        /// </summary>
        EM_IMAGE_INSPECTOR,
        /// <summary>
        /// 包裹图片
        /// Package picture
        /// </summary>
        EM_IMAGE_PACKAGE,
    }

    /// <summary>
    /// 图片信息
    /// Image info
    /// </summary>
    public struct NET_IMAGE_INFO_EX
    {
        /// <summary>
        /// 图片类型
        /// Picture type
        /// </summary>
        public EM_PIC_TYPE emPicType;
        /// <summary>
        /// 在二进制数据块中的偏移
        /// Offset in binary data
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 图片大小,单位:字节
        /// Length,Unit:Byte
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 图片路径
        /// File path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFilePath;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 仪表检测事件, 对应事件类型 EVENT_IVS_DIALRECOGNITION
    /// Instrument detection event, corresponding event type EVENT_IVS_DIALRECOGNITION
    /// </summary>
    public struct NET_A_DEV_EVENT_DIALRECOGNITION_INFO
    {
        /// <summary>
        /// 视频通道号,从0开始
        /// ChannelID
        /// </summary>
        public uint nChannelID;
        /// <summary>
        /// 预置点ID,如果普通IPC则为0
        /// PresetID,If normal IPC is 0
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 任务ID.添加时设备端生成
        /// Task ID. Device generated
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szTaskID;
        /// <summary>
        /// 仪表类型
        /// The instrument type
        /// </summary>
        public EM_INSTRUMENT_TYPE emType;
        /// <summary>
        /// 返回的图片信息个数
        /// Number of image Info returned
        /// </summary>
        public int nRetImageInfoNum;
        /// <summary>
        /// 图片信息
        /// Image info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_IMAGE_INFO_EX[] stuImgaeInfo;
        /// <summary>
        /// 检测结果，根据Type的不同，格式也不同
        /// Dial result
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2048)]
        public string szDialResult;
        /// <summary>
        /// 原始图片在二进制数据块中的偏移
        /// The offset of the original image in the binary data block
        /// </summary>
        public int nOriginalImageOffset;
        /// <summary>
        /// 原始图片大小,单位：字节
        /// Original image size, unit: bytes
        /// </summary>
        public int nOriginalImageLength;
        /// <summary>
        /// 告警类型：0-该字段无效;1-数值异常;2-定时上报; 3-高阀值报警; 4-低阀值报警
        /// Alarm type: 0-this field is invalid; 1-value is abnormal; 2-periodic report; 3-High threshold alarm; 4-Low threshold alarm
        /// </summary>
        public uint nAlarmType;
        /// <summary>
        /// 仪表检测具体子类型
        /// Dial Detection Subtype
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDialSubType;
        /// <summary>
        /// 报警上限阈值
        /// Upper alarm threshold
        /// </summary>
        public float fUpperThreshold;
        /// <summary>
        /// 报警下限阈值
        /// Lower alarm threshold
        /// </summary>
        public float fLowerThreshold;
        /// <summary>
        /// 包围盒
        /// bounding box
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_RECT[] stuBoundingBox;
        /// <summary>
        /// 包围盒个数
        /// bounding box count
        /// </summary>
        public int nRetBoundingBoxNum;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 968)]
        public string szReserved;
    }

    /// <summary>
    /// 仪表类型
    /// Dial detect type
    /// </summary>
    public enum EM_DIALDETECT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_DIALDETECT_TYPE_UNKNOWN,
        /// <summary>
        /// 压板检测
        /// Pressure plate detection
        /// </summary>
        EM_DIALDETECT_TYPE_PLATEN,
        /// <summary>
        /// 刀闸检测
        /// Knife detection
        /// </summary>
        EM_DIALDETECT_TYPE_KNIFE,
        /// <summary>
        /// 指针表计检测
        /// Pointer meter detection
        /// </summary>
        EM_DIALDETECT_TYPE_POINTERMETER,
        /// <summary>
        /// 油位表计
        /// Oil level meter detection
        /// </summary>
        EM_DIALDETECT_TYPE_OILMETER,
        /// <summary>
        /// 数码管字符检测
        /// LED detection
        /// </summary>
        EM_DIALDETECT_TYPE_LED,
        /// <summary>
        /// 液晶屏字符检测
        /// LCD detection
        /// </summary>
        EM_DIALDETECT_TYPE_LCD,
        /// <summary>
        /// 指示灯检测
        /// Indicator light detection
        /// </summary>
        EM_DIALDETECT_TYPE_LIGHT,
        /// <summary>
        /// 旋转开关检测
        /// Rotary switch detection
        /// </summary>
        EM_DIALDETECT_TYPE_SWITCH,
        /// <summary>
        /// 呼吸器检测
        /// Pespirator detection
        /// </summary>
        EM_DIALDETECT_TYPE_PESPIRATOR,
        /// <summary>
        /// 字符指示器检测
        /// CharIndictor detection
        /// </summary>
        EM_DIALDETECT_TYPE_CHARLNDICTOR,
        /// <summary>
        /// 指针指示器检测
        /// PointerIndictor detection
        /// </summary>
        EM_DIALDETECT_TYPE_POINTERLNDICTOR,
        /// <summary>
        /// 液位计检测
        /// OilLevel detection
        /// </summary>
        EM_DIALDETECT_TYPE_OILLEVEL,
        /// <summary>
        /// 拨码盘字符检测
        /// DialSwtich detection
        /// </summary>
        EM_DIALDETECT_TYPE_DIALSWTICH,
    }

    /// <summary>
    /// EVENT_IVS_DIALRECOGNITION(仪表检测事件)对应的规则配置
    /// Rule type : EVENT_IVS_DIALRECOGNITION(Dial recogntion) configuration
    /// </summary>
    public struct NET_IVS_DIALRECOGNITION_RULE_INFO
    {
        /// <summary>
        /// 仪表类型
        /// Instrument type
        /// </summary>
        public EM_DIALDETECT_TYPE emType;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// Whether the stuSizeFileter is valid
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// Rule-specific size filter
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO stuSizeFileter;
        /// <summary>
        /// 检测区域
        /// Detect Region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;
        /// <summary>
        /// 检测区域顶点数
        /// Num of Detect Region
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 敞开式隔离开关有效,分夹角阈值, 单位度,取值范围0~90, 建议20
        /// The open-type isolating switch is valid, the sub-angle threshold value, unit degree, the value range is 0~90, 20 is recommended
        /// </summary>
        public int nKinfeOpenAngleThreshold;
        /// <summary>
        /// 敞开式隔离开关有效,合夹角阈值, 单位度,取值范围0~90, 建议10
        /// Open-type isolating switch is valid, closing angle threshold, unit degree, value range 0~90, recommended 10
        /// </summary>
        public int nKinfeClossAngleThreshold;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2044)]
        public string bReserved;
    }

    /// <summary>
    /// EVENT_IVS_ELECTRICFAULT_DETECT(仪表类缺陷检测事件)对应的规则配置
    /// Rule type : EVENT_IVS_ELECTRICFAULT_DETECT(Electric fault detect)configuration
    /// </summary>
    public struct NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO
    {
        /// <summary>
        /// 挂空悬浮物检测使能
        /// AirborneDetect enable
        /// </summary>
        public bool bAirborneDetectEnable;
        /// <summary>
        /// 鸟巢检测使能
        /// Nest detect enable
        /// </summary>
        public bool bNestDetectEnable;
        /// <summary>
        /// 表盘检测(表盘模糊)使能
        /// Dial detect enable
        /// </summary>
        public bool bDialDetectEnable;
        /// <summary>
        /// 渗漏检测使能
        /// Leakage detect enable
        /// </summary>
        public bool bLeakageDetectEnable;
        /// <summary>
        /// 箱门检测使能
        /// Door detect enable
        /// </summary>
        public bool bDoorDetectEnable;
        /// <summary>
        /// 呼吸器检测使能
        /// Respirator detect enable
        /// </summary>
        public bool bRespiratorDetectEnable;
        /// <summary>
        /// 吸烟检测使能
        /// Smoking detect enable
        /// </summary>
        public bool bSmokingDetectEnable;
        /// <summary>
        /// 绝缘子检测使能
        /// Insulator detect enable
        /// </summary>
        public bool bInsulatorDetectEnable;
        /// <summary>
        /// 盖板检测使能
        /// Cover plate detect enable
        /// </summary>
        public bool bCoverPlateDetectEnable;
        /// <summary>
        /// 压板开合检测使能
        /// Pressing plate detect enable
        /// </summary>
        public bool bPressingPlateDetectEnable;
        /// <summary>
        /// 金属锈蚀检测使能
        /// Metal corrosion enable
        /// </summary>
        public bool bMetalCorrosionEnable;
        /// <summary>
        /// 规则特定的尺寸过滤器是否有效
        /// Whether the stuSizeFileter is valid
        /// </summary>
        public bool bSizeFileter;
        /// <summary>
        /// 规则特定的尺寸过滤器
        /// Rule-specific size filter
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO stuSizeFileter;
        /// <summary>
        /// 检测区域
        /// Detect Region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINTCOORDINATE[] stuDetectRegion;
        /// <summary>
        /// 检测区域顶点数
        /// Num of Detect Region
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2048)]
        public string bReserved;
    }

    /// <summary>
    /// 对应设备所使能的检测规则
    /// enable rules
    /// </summary>
    public enum EM_A_ELECTRIC_FAULT_ENABLE_RULES
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        ELECTRIC_FAULT_ENABLE_RULES_UNKNOWN,
        /// <summary>
        /// 挂空悬浮物检测
        /// Airborne Detect
        /// </summary>
        ELECTRIC_FAULT_ENABLE_RULES_AIRBORNEDETECT,
        /// <summary>
        /// 鸟巢检测
        /// Nest Detect
        /// </summary>
        ELECTRIC_FAULT_ENABLE_RULES_NESTDETECT,
        /// <summary>
        /// 表盘检测
        /// Dial Detect
        /// </summary>
        ELECTRIC_FAULT_ENABLE_RULES_DIALDETECT,
        /// <summary>
        /// 渗漏检测
        /// Leakage Detect
        /// </summary>
        ELECTRIC_FAULT_ENABLE_RULES_LEAKAGEDETECT,
        /// <summary>
        /// 箱门检测
        /// Door Detect
        /// </summary>
        ELECTRIC_FAULT_ENABLE_RULES_DOORDETECT,
        /// <summary>
        /// 呼吸器检测
        /// Respirator Detect
        /// </summary>
        ELECTRIC_FAULT_ENABLE_RULES_RESPIRATORDETECT,
        /// <summary>
        /// 吸烟检测
        /// Smoking detect
        /// </summary>
        ELECTRIC_FAULT_ENABLE_RULES_SMOKINGDETECT,
        /// <summary>
        /// 绝缘子检测
        /// Insulator detect
        /// </summary>
        ELECTRIC_FAULT_ENABLE_RULES_INSULATORDETECT,
        /// <summary>
        /// 盖板检测
        /// Cover plate detect
        /// </summary>
        ELECTRIC_FAULT_ENABLE_RULES_COVERPLATEDETECT,
        /// <summary>
        /// 压板检测
        /// Pressing plate detect
        /// </summary>
        ELECTRIC_FAULT_ENABLE_RULES_PRESSINGPLATEDETECT,
        /// <summary>
        /// 锈蚀检测
        /// Corrosion detect
        /// </summary>
        ELECTRIC_FAULT_ENABLE_RULES_CORROSIONDETECT,
    }

    /// <summary>
    /// 挂空悬浮物具体类型
    /// Airborne type
    /// </summary>
    public enum EM_AIRBORNE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_AIRBORNE_TYPE_UNKNOWN,
        /// <summary>
        /// 塑料袋
        /// plastic bag
        /// </summary>
        EM_AIRBORNE_TYPE_PLASTICBAG,
        /// <summary>
        /// 织物
        /// textile
        /// </summary>
        EM_AIRBORNE_TYPE_TEXTILE,
        /// <summary>
        /// 风筝
        /// kete
        /// </summary>
        EM_AIRBORNE_TYPE_KITE,
    }

    /// <summary>
    /// 挂空悬浮物检测异常输出结果
    /// Airborne Detect info
    /// </summary>
    public struct NET_AIRBORNE_DETECT
    {
        /// <summary>
        /// 挂空悬浮物具体类型
        /// Airborne type
        /// </summary>
        public EM_AIRBORNE_TYPE emAirborneType;
        /// <summary>
        /// 包围盒
        /// bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
    }

    /// <summary>
    /// 鸟巢检测结果
    /// Nest Detect info
    /// </summary>
    public struct NET_NEST_DETECT
    {
        /// <summary>
        /// 包围盒
        /// bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
    }

    /// <summary>
    /// 表盘状态
    /// dial state
    /// </summary>
    public enum EM_DIAL_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_DIAL_STATE_UNKNOWN,
        /// <summary>
        /// 正常
        /// normal
        /// </summary>
        EM_DIAL_STATE_NORMAL,
        /// <summary>
        /// 模糊
        /// dim
        /// </summary>
        EM_DIAL_STATE_DIM,
        /// <summary>
        /// 表盘破损
        /// dial broken
        /// </summary>
        EM_DIAL_STATE_DIAL_BROKEN,
        /// <summary>
        /// 外壳破裂
        /// shell broken
        /// </summary>
        EM_DIAL_STATE_SHELL_BROKEN,
        /// <summary>
        /// 读数异常
        /// abnormal reading
        /// </summary>
        EM_DIAL_STATE_ABNORMAL_READING,
    }

    /// <summary>
    /// 表盘检测结果
    /// Dial Detect info
    /// </summary>
    public struct NET_DIAL_DETECT
    {
        /// <summary>
        /// 表盘状态
        /// dial state
        /// </summary>
        public EM_DIAL_STATE emDialState;
        /// <summary>
        /// 包围盒
        /// bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
    }

    /// <summary>
    /// 渗漏检测结果
    /// Nest Detect info
    /// </summary>
    public struct NET_LEAKAGE_DETECT
    {
        /// <summary>
        /// 包围盒
        /// bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
    }

    /// <summary>
    /// 箱门状态
    /// door state
    /// </summary>
    public enum EM_DOOR_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_DOOR_STATE_UNKNOWN,
        /// <summary>
        /// 打开
        /// open
        /// </summary>
        EM_DOOR_STATE_OPEN,
        /// <summary>
        /// 关闭
        /// close
        /// </summary>
        EM_DOOR_STATE_CLOSE,
    }

    /// <summary>
    /// 箱门检测结果
    /// Door Detect info
    /// </summary>
    public struct NET_DOOR_DETECT
    {
        /// <summary>
        /// 箱门状态
        /// door state
        /// </summary>
        public EM_DOOR_STATE emDoorState;
        /// <summary>
        /// 包围盒
        /// bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
    }

    /// <summary>
    /// 呼吸器状态
    /// Respirator state
    /// </summary>
    public enum EM_RESPIRATOR_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_RESPIRATOR_STATE_UNKNOWN,
        /// <summary>
        /// 正常
        /// normal
        /// </summary>
        EM_RESPIRATOR_STATE_NORMAL,
        /// <summary>
        /// 硅胶变色
        /// silica gel color change
        /// </summary>
        EM_RESPIRATOR_STATE_SILICA_GEL_COLOR_CHANGE,
        /// <summary>
        /// 硅胶桶破损
        /// silica gel barrel broken
        /// </summary>
        EM_RESPIRATOR_STATE_SILICA_GEL_BARREL_BROKEN,
        /// <summary>
        /// 油位异常
        /// oil level
        /// </summary>
        EM_RESPIRATOR_STATE_ABNORMAL_OIL_LEVEL,
    }

    /// <summary>
    /// 呼吸器检测结果
    /// Respirator Detect info
    /// </summary>
    public struct NET_RESPIRATOR_DETECT
    {
        /// <summary>
        /// 呼吸器状态
        /// Respirator state
        /// </summary>
        public EM_RESPIRATOR_STATE emRespiratorState;
        /// <summary>
        /// 包围盒
        /// bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
    }

    /// <summary>
    /// 吸烟检测结果
    /// Smoking detect info
    /// </summary>
    public struct NET_SMOKING_DETECT
    {
        /// <summary>
        /// 包围盒
        /// bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
    }

    /// <summary>
    /// 绝缘子状态
    /// insulator state
    /// </summary>
    public enum EM_INSULATOR_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_INSULATOR_STATE_UNKNOWN,
        /// <summary>
        /// 正常
        /// normal
        /// </summary>
        EM_INSULATOR_STATE_NORMAL,
        /// <summary>
        /// 破裂
        /// broken
        /// </summary>
        EM_INSULATOR_STATE_BROKEN,
    }

    /// <summary>
    /// 绝缘子检测结果
    /// Insulator detect info
    /// </summary>
    public struct NET_INSULATOR_DETECT
    {
        /// <summary>
        /// 绝缘子状态
        /// insulator state
        /// </summary>
        public EM_INSULATOR_STATE emInsulatorState;
        /// <summary>
        /// 包围盒
        /// bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
    }

    /// <summary>
    /// 盖板状态
    /// cover plate state
    /// </summary>
    public enum EM_COVER_PLATE_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_COVER_PLATE_STATE_UNKNOWN,
        /// <summary>
        /// 正常
        /// normal
        /// </summary>
        EM_COVER_PLATE_STATE_NORMAL,
        /// <summary>
        /// 破裂
        /// broken
        /// </summary>
        EM_COVER_PLATE_STATE_BROKEN,
    }

    /// <summary>
    /// 盖板检测结果
    /// Cover plate detect info
    /// </summary>
    public struct NET_COVER_PLATE_DETECT
    {
        /// <summary>
        /// 盖板状态
        /// cover plate state
        /// </summary>
        public EM_COVER_PLATE_STATE emCoverPlateState;
        /// <summary>
        /// 包围盒
        /// bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
    }

    /// <summary>
    /// 压板状态
    /// pressing plate state
    /// </summary>
    public enum EM_PRESSING_PLATE_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_PRESSING_PLATE_STATE_UNKNOWN,
        /// <summary>
        /// 断开
        /// disconnect
        /// </summary>
        EM_PRESSING_PLATE_STATE_DISCONNECT,
        /// <summary>
        /// 闭合
        /// close
        /// </summary>
        EM_PRESSING_PLATE_STATE_CLOSE,
    }

    /// <summary>
    /// 压板检测结果
    /// Pressing plate detect info
    /// </summary>
    public struct NET_PRESSING_PLATE_DETECT
    {
        /// <summary>
        /// 压板状态
        /// pressing plate state
        /// </summary>
        public EM_PRESSING_PLATE_STATE emPressingPlateState;
        /// <summary>
        /// 包围盒
        /// bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
    }

    /// <summary>
    /// 金属锈蚀结果
    /// The result of metal corrosion
    /// </summary>
    public struct NET_METAL_CORROSION
    {
        /// <summary>
        /// 包围盒
        /// Bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string bReserved;
    }

    /// <summary>
    /// 仪表类缺陷检测事件
    /// Electric fault detection
    /// </summary>
    public struct NET_A_DEV_EVENT_ELECTRICFAULTDETECT_INFO
    {
        /// <summary>
        /// 智能事件所属大类
        /// class type
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 视频通道号
        /// channel id
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Rule id
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// PTS
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 预置点ID
        /// preset ID
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 事件时间毫秒数
        /// UTCMS
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// 对应设备所使能的检测规则
        /// enable rules
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_A_ELECTRIC_FAULT_ENABLE_RULES[] emEnableRules;
        /// <summary>
        /// 设备所使能的检测规则个数
        /// enable rules number
        /// </summary>
        public int nEnableRulesNum;
        /// <summary>
        /// 挂空悬浮物检测异常输出结果个数
        /// Airborne Detect number
        /// </summary>
        public int nAirborneDetectNum;
        /// <summary>
        /// 挂空悬浮物检测异常输出结果
        /// Airborne Detect info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_AIRBORNE_DETECT[] stuAirborneDetectInfo;
        /// <summary>
        /// 鸟巢检测结果
        /// Nest Detect info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_NEST_DETECT[] stuNestDetectInfo;
        /// <summary>
        /// 鸟巢检测结果个数
        /// Nest Detect number
        /// </summary>
        public int nNestDetectNum;
        /// <summary>
        /// 表盘检测结果个数
        /// Dial Detect number
        /// </summary>
        public int nDialDetectNum;
        /// <summary>
        /// 表盘检测结果
        /// Dial Detect info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_DIAL_DETECT[] stuDialDetectInfo;
        /// <summary>
        /// 渗漏检测结果
        /// Leakage Detect info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_LEAKAGE_DETECT[] stuLeakageDetectInfo;
        /// <summary>
        /// 渗漏检测结果个数
        /// Leakage Detect number
        /// </summary>
        public int nLeakageDetectNum;
        /// <summary>
        /// 箱门检测结果个数
        /// Door Detect number
        /// </summary>
        public int nDoorDetectNum;
        /// <summary>
        /// 箱门检测结果
        /// Door Detect info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_DOOR_DETECT[] stuDoorDetectInfo;
        /// <summary>
        /// 呼吸器检测结果
        /// Respirator Detect info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_RESPIRATOR_DETECT[] stuRespiratorDetectInfo;
        /// <summary>
        /// 呼吸器检测个数
        /// Respirator Detect number
        /// </summary>
        public int nRespiratorDetectNum;
        /// <summary>
        /// 吸烟检测结果个数
        /// Smoking detect number
        /// </summary>
        public int nSmokingDetectNum;
        /// <summary>
        /// 吸烟检测结果
        /// Smoking detect info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_SMOKING_DETECT[] stuSmokingDetectInfo;
        /// <summary>
        /// 大图
        /// Scene image info
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImageInfo;
        /// <summary>
        /// 绝缘子检测结果
        /// Insulator detect info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_INSULATOR_DETECT[] stuInsulatorDetectInfo;
        /// <summary>
        /// 绝缘子检测结果个数
        /// Insulator detect number
        /// </summary>
        public int nInsulatorDetectNum;
        /// <summary>
        /// 盖板检测结果个数
        /// Cover plate detect number
        /// </summary>
        public int nCoverPlateDetectNum;
        /// <summary>
        /// 盖板检测结果
        /// Cover plate detect info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_COVER_PLATE_DETECT[] stuCoverPlateDetectInfo;
        /// <summary>
        /// 压板检测结果
        /// Pressing plate detect info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_PRESSING_PLATE_DETECT[] stuPressingPlateDetectInfo;
        /// <summary>
        /// 压板检测结果个数
        /// Pressing plate detect number
        /// </summary>
        public int nPressingPlateDetectNum;
        /// <summary>
        /// 金属锈蚀结果个数
        /// Metal corrosion detect number
        /// </summary>
        public int nMetalCorrosionNum;
        /// <summary>
        /// 金属锈蚀结果
        /// Metal Corrosion detect Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_METAL_CORROSION[] stuMetalCorrosionInfo;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 人脸库下载任务信息
    /// Task info of downloading face data base
    /// </summary>
    public struct NET_FACEDB_DOWNLOAD_TASK_INFO
    {
        /// <summary>
        /// 图片URL个数
        /// Count of image URL
        /// </summary>
        public uint nURLNum;
        /// <summary>
        /// 图片URL地址列表, 一张人脸图片的地址可能存放在多个ftp服务器上
        /// Image URL list, A face image may be stored on multiple FTP servers.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4 * 256)]
        public string szURLList;
        /// <summary>
        /// ID
        /// ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szID;
        /// <summary>
        /// 人脸唯一码，每次平台更新人脸图片都需要更新该字段，用于设备端比较是否重新下载人脸图片
        /// Face unique code, each time the platform updates the face image, it needs to update the field for device-side comparison whether to re-download the face image or not
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFaceUUID;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2048)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_AddFaceDbDownLoadTask 接口输入参数
    /// Input param of CLIENT_AddFaceDbDownLoadTask
    /// </summary>
    public struct NET_IN_ADD_FACEDB_DOWNLOAD_TASK
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否为最后一包(此字段废弃)
        /// Is last packet(not used)
        /// </summary>
        public bool bIsEnd;
        /// <summary>
        /// 人脸库版本号
        /// Face data base version
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFaceDbVersion;
        /// <summary>
        /// 字节对齐
        /// Alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// 人脸库下载任务个数, 由用户指定个数, 最多支持100个
        /// The number of download tasks of face data base, specified by users, can support up to 100 tasks
        /// </summary>
        public uint nTaskNum;
        /// <summary>
        /// 人脸库下载任务信息, 由用户申请空间, 大小为nTaskNum*sizeof(NET_FACEDB_DOWNLOAD_TASK_INFO)
        /// Task info of download face data base, IT is specified by users, and the size is nTaskNum*sizeof(NET_FACEDB_DOWNLOAD_TASK_INFO)
        /// </summary>
        public IntPtr pstTaskInfo;
        /// <summary>
        /// 表示当前任务总共有几个包
        /// Total number of packet
        /// </summary>
        public uint nPacketTotal;
        /// <summary>
        /// 表示当前是第几个包，下标从1开始
        /// Index of packet
        /// </summary>
        public uint nPacketIndex;
        /// <summary>
        /// 人员组ID, 表示下载到指定的人员组ID的人脸库中
        /// Group ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupID;
    }

    /// <summary>
    /// CLIENT_AddFaceDbDownLoadTask 接口输出参数
    /// Output param of CLIENT_AddFaceDbDownLoadTask
    /// </summary>
    public struct NET_OUT_ADD_FACEDB_DOWNLOAD_TASK
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 人脸下载失败错误码
    /// Error code of downloading remote facelib
    /// </summary>
    public enum EM_FACEDB_ERRCODE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_FACEDB_ERRCODE_UNKNOWN = -1,
        /// <summary>
        /// 成功
        /// Success
        /// </summary>
        EM_FACEDB_ERRCODE_SUCCESS,
        /// <summary>
        /// 连接失败
        /// Connect fail
        /// </summary>
        EM_FACEDB_ERRCODE_CONNECT_FAIL = 2,
        /// <summary>
        /// 登陆失败
        /// Login fail
        /// </summary>
        EM_FACEDB_ERRCODE_LOGIN_FAIL,
        /// <summary>
        /// 接收数据超时
        /// Receive timeout
        /// </summary>
        EM_FACEDB_ERRCODE_RECV_TIMEOUT,
        /// <summary>
        /// 目标字符串为空
        /// The target string is empty
        /// </summary>
        EM_FACEDB_ERRCODE_STRING_NULL,
        /// <summary>
        /// 目录或文件不存在
        /// No directory or file exists
        /// </summary>
        EM_FACEDB_ERRCODE_FILE_DIRECTORY_NOT_EXIST,
        /// <summary>
        /// 文件存储失败
        /// Storage fail
        /// </summary>
        EM_FACEDB_ERRCODE_STORAGE_FAIL,
    }

    /// <summary>
    /// 人脸库下载进度回调信息
    /// Callback info of downloading remote face data base
    /// </summary>
    public struct NET_CB_FACEDB_DOWNLOAD_RESULT
    {
        /// <summary>
        /// 人脸库版本号
        /// Face data base version
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFaceDbVersion;
        /// <summary>
        /// 总下载文件个数
        /// Total download count
        /// </summary>
        public uint nTotalDownloadCount;
        /// <summary>
        /// 已下载文件个数
        /// Success download count
        /// </summary>
        public uint nSuccessDownloadCount;
        /// <summary>
        /// 人脸下载失败错误码
        /// Error code of downloading remote face data base
        /// </summary>
        public EM_FACEDB_ERRCODE emFaceDbErrCode;
        /// <summary>
        /// 人员组ID
        /// Group ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupID;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 960)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_AttachFaceDbDownLoadResult 接口输入参数
    /// Input param of CLIENT_AttachFaceDbDownLoadResult
    /// </summary>
    public struct NET_IN_ATTACH_FACEDB_DOWNLOAD_RESULT
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 字节对齐
        /// Alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// 人脸库下载进度回调函数
        /// Callback function of downloading remote face data base
        /// </summary>
        public fFaceDbDownLoadResult cbFaceDbDownLoadResult;
        /// <summary>
        /// 用户数据
        /// User data
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// CLIENT_AttachFaceDbDownLoadResult 接口输出参数
    /// Output param of CLIENT_AttachFaceDbDownLoadResult
    /// </summary>
    public struct NET_OUT_ATTACH_FACEDB_DOWNLOAD_RESULT
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 撤防白光灯报警联动项配置， 对应枚举NET_EM_CFG_DISABLE_LIGHTING_LINKAGE
    /// unable Lighting Linkage configuration, corresponding to NET_EM_CFG_DISABLE_LIGHTING_LINKAGE
    /// </summary>
    public struct NET_CFG_DISABLE_LIGHTING_LINKAGE_INFO
    {
        /// <summary>
        /// 结构体大小, 必须赋值
        /// The size of the structure, must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否撤防白光报警联动项
        /// Whether to disarm the white light alarm linkage item
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 联动项配置名
        /// Link item configuration name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
    }

    /// <summary>
    /// 撤防语音报警联动项配置， 对应枚举NET_EM_CFG_DISABLE_VOICE_LINKAGE
    /// unable Video Linkage configuration, corresponding to NET_EM_CFG_DISABLE_VOICE_LINKAGE
    /// </summary>
    public struct NET_CFG_DISABLE_VOICE_LINKAGE_INFO
    {
        /// <summary>
        /// 结构体大小, 必须赋值
        /// The size of the structure, must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否撤防语音报警联动项
        /// Whether to disarm the voice alarm linkage item
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 联动项配置名
        /// Link item configuration name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
    }

    /// <summary>
    /// CLIENT_SetSplitOSDEx接口输入参数(设置解码窗口输出OSD信息)
    /// CLIENT_SetSplitOSDEx's interface input param(setting split window input OSD info)
    /// </summary>
    public struct NET_IN_SPLIT_SET_OSD_EX
    {
        /// <summary>
        /// the size of this struct
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// channel no.
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 窗口号
        /// window no.
        /// </summary>
        public int nWindow;
        /// <summary>
        /// OSD数量
        /// OSD number
        /// </summary>
        public int nOSDNum;
        /// <summary>
        /// OSD信息
        /// OSD information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_SPLIT_OSD[] stuOSD;
    }

    /// <summary>
    /// CLIENT_SetSplitOSDEx 接口输出参数(设置解码窗口输出OSD信息)
    /// CLIENT_SetSplitOSDEx's interface input param(setting split window output OSD info)
    /// </summary>
    public struct NET_OUT_SPLIT_SET_OSD_EX
    {
        /// <summary>
        /// the size of this struct
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_GetSplitOSDEx 接口输入参数(获取解码窗口输出OSD信息)
    /// CLIENT_GetSplitOSDEx's interface input param(get split window input OSD info)
    /// </summary>
    public struct NET_IN_SPLIT_GET_OSD_EX
    {
        /// <summary>
        /// the size of this struct
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// channel no.
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 窗口号
        /// window no.
        /// </summary>
        public int nWindow;
    }

    /// <summary>
    /// CLIENT_GetSplitOSDEx 接口输出参数(获取解码窗口输出OSD信息)
    /// CLIENT_GetSplitOSDEx's interface input param(get split window output OSD info)
    /// </summary>
    public struct NET_OUT_SPLIT_GET_OSD_EX
    {
        /// <summary>
        /// the size of this struct
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// OSD数量
        /// OSD number
        /// </summary>
        public int nOSDNum;
        /// <summary>
        /// OSD信息
        /// OSD information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_SPLIT_OSD[] stuOSD;
    }

    /// <summary>
    /// 动检支持的视频窗口
    /// Video windows supported by motion detection
    /// </summary>
    public struct NET_MOTION_DETECT_WINDOW
    {
        /// <summary>
        /// 面积阀值，取值[0, 100]
        /// Area threshold, value [0, 100]
        /// </summary>
        public uint nThreshold;
        /// <summary>
        /// 灵敏度，取值[0, 100]
        /// Sensitivity, value [0, 100]
        /// </summary>
        public uint nSensitive;
        /// <summary>
        /// 动态检测区域的行数
        /// Number of rows in dynamic detection area
        /// </summary>
        public int nMotionRow;
        /// <summary>
        /// 动态检测区域的列数
        /// Number of columns in the dynamic detection area
        /// </summary>
        public int nMotionCol;
        /// <summary>
        /// 动检检测区域块
        /// Motion detection area block
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32 * 32)]
        public byte[] nRegion;
        /// <summary>
        /// 动态窗口ID号
        /// Dynamic window ID number
        /// </summary>
        public int nId;
        /// <summary>
        /// 动态窗口名称
        /// Dynamic window name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szName;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szResvered;
    }

    /// <summary>
    /// 动态检测报警配置配置, 对应枚举 NET_EM_CFG_MOTION_DETECT
    /// Motion Detect configuration, corresponding to NET_EM_CFG_MOTION_DETECT
    /// </summary>
    public struct NET_CFG_MOTION_DETECT_INFO
    {
        /// <summary>
        /// 结构体大小, 必须赋值
        /// The size of the structure, must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 动态检测开启使能
        /// Dynamic detection enable enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 手动控制云台时，动检是否开启
        /// When manually controlling the gimbal, whether the motion detection is enabled
        /// </summary>
        public bool bPtzManualEnable;
        /// <summary>
        /// 动检提示OSD闪烁使能
        /// Motion detection prompts OSD flashing enable
        /// </summary>
        public bool bOsdTwinkleEnable;
        /// <summary>
        /// 面积占用比, 1-100, 0 表示此配置无效
        /// Area occupation ratio, 1-100, 0 means this configuration is invalid
        /// </summary>
        public uint nVolumeRatio;
        /// <summary>
        /// 动检的残差阈值, 1-100, 0 表示此配置无效
        /// Residual threshold for motion detection, 1-100, 0 means this configuration is invalid
        /// </summary>
        public uint nSubRatio;
        /// <summary>
        /// 动态检测联动
        /// Dynamic detection linkage
        /// </summary>
        public NET_ALARM_MSG_HANDLE stuEventHandler;
        /// <summary>
        /// 三代动检支持的视频窗口个数
        /// The number of video windows supported by the third-generation motion detection
        /// </summary>
        public int nMotionDetectWindowCount;
        /// <summary>
        /// 三代动检支持的视频窗口
        /// Video windows supported by the third-generation motion detection
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_MOTION_DETECT_WINDOW[] stuMotionDetectWindow;
    }

    /// <summary>
    /// 代理服务器地址
    /// Proxy Server Info
    /// </summary>
    public struct NET_PROXY_SERVER_INFO
    {
        /// <summary>
        /// IP地址
        /// IP Address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szIP;
        /// <summary>
        /// 端口
        /// port
        /// </summary>
        public uint nPort;
        /// <summary>
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 84)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_CheckCloudUpgrader 入参
    /// CLIENT_CheckCloudUpgrader input param
    /// </summary>
    public struct NET_IN_CHECK_CLOUD_UPGRADER
    {
        /// <summary>
        /// 结构体大小
        /// Struct Size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 检测路径, 0-直连升级服务器检测, 1-通过代理服务器检测, 2-获取缓存的检测结果
        /// Check Way, 0-Direct connect server, 1-Through proxy server, 2-Get the results of cache detection
        /// </summary>
        public uint nWay;
        /// <summary>
        /// 代理服务器地址, way==1时有意义
        /// Proxy server, when way==1 proxy is valid
        /// </summary>
        public NET_PROXY_SERVER_INFO stProxy;
    }

    /// <summary>
    /// 云升级状态
    /// Cloud Upgrader Check State
    /// </summary>
    public enum EM_CLOUD_UPGRADER_CHECK_STATE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_CLOUD_UPGRADER_CHECK_STATE_UNKNOWN,
        /// <summary>
        /// 没有检测到更新
        /// None
        /// </summary>
        EM_CLOUD_UPGRADER_CHECK_STATE_NONE,
        /// <summary>
        /// 一般升级 (需要用户确认, 只能向高版本)
        /// Regular (User confirmation is required, only to high version)
        /// </summary>
        EM_CLOUD_UPGRADER_CHECK_STATE_REGULAR,
        /// <summary>
        /// 强制升级 (设备自动检测执行, 可以向低版本)
        /// Emergency (Automatic device detection and execution, can be to low version)
        /// </summary>
        EM_CLOUD_UPGRADER_CHECK_STATE_EMERGENCY,
        /// <summary>
        /// 自动升级 (有新升级包, 自动升级, 需使能页面自动升级选项)
        /// Automatic (New upgrader package, automatic upgrade)
        /// </summary>
        EM_CLOUD_UPGRADER_CHECK_STATE_AUTOMATIC,
    }

    /// <summary>
    /// 云升级新版本升级包类型
    /// Cloud Upgrader Package Type
    /// </summary>
    public enum EM_CLOUD_UPGRADER_PACKAGE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_CLOUD_UPGRADER_PACKAGE_TYPE_UNKNOWN,
        /// <summary>
        /// 整包
        /// All
        /// </summary>
        EM_CLOUD_UPGRADER_PACKAGE_TYPE_ALL,
        /// <summary>
        /// 云台主控包
        /// Ptz
        /// </summary>
        EM_CLOUD_UPGRADER_PACKAGE_TYPE_PTZ,
        /// <summary>
        /// Web
        /// Web
        /// </summary>
        EM_CLOUD_UPGRADER_PACKAGE_TYPE_WEB,
        /// <summary>
        /// Logo
        /// Logo
        /// </summary>
        EM_CLOUD_UPGRADER_PACKAGE_TYPE_LOGO,
        /// <summary>
        /// Custom
        /// Custom
        /// </summary>
        EM_CLOUD_UPGRADER_PACKAGE_TYPE_CUSTOM,
        /// <summary>
        /// Gui
        /// Gui
        /// </summary>
        EM_CLOUD_UPGRADER_PACKAGE_TYPE_GUI,
        /// <summary>
        /// PD
        /// PD
        /// </summary>
        EM_CLOUD_UPGRADER_PACKAGE_TYPE_PD,
        /// <summary>
        /// Data
        /// Data
        /// </summary>
        EM_CLOUD_UPGRADER_PACKAGE_TYPE_DATA,
        /// <summary>
        /// 云台电源
        /// Ptz_power
        /// </summary>
        EM_CLOUD_UPGRADER_PACKAGE_TYPE_PTZ_POWER,
        /// <summary>
        /// 云台灯光
        /// Ptz_light
        /// </summary>
        EM_CLOUD_UPGRADER_PACKAGE_TYPE_PTZ_LIGHT,
        /// <summary>
        /// 云台加热器
        /// Ptz_heater
        /// </summary>
        EM_CLOUD_UPGRADER_PACKAGE_TYPE_PTZ_HEATER,
    }

    /// <summary>
    /// CLIENT_CheckCloudUpgrader 出参
    /// CLIENT_CheckCloudUpgrader output param
    /// </summary>
    public struct NET_OUT_CHECK_CLOUD_UPGRADER
    {
        /// <summary>
        /// 结构体大小
        /// Struct Size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 升级状态
        /// State
        /// </summary>
        public EM_CLOUD_UPGRADER_CHECK_STATE emState;
        /// <summary>
        /// 新版本升级包类型, State不为None需要返回
        /// Package Type
        /// </summary>
        public EM_CLOUD_UPGRADER_PACKAGE_TYPE emPackageType;
        /// <summary>
        /// 旧版本号, State不为None需要返回
        /// Old Version
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szOldVersion;
        /// <summary>
        /// 新版本号,State不为None需要返回
        /// New Version
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNewVersion;
        /// <summary>
        /// 新的升级包更新内容
        /// Attention
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2048)]
        public string szAttention;
        /// <summary>
        /// 升级包下载地址(代理升级需要)
        /// Package URL
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPackageURL;
        /// <summary>
        /// 升级包ID
        /// Package ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPackageID;
        /// <summary>
        /// 升级包的SHA-256校验和
        /// Check Sum
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCheckSum;
        /// <summary>
        /// 升级包构建时间
        /// Build Time
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szBuildTime;
    }

    /// <summary>
    /// 升级包信息
    /// Cloud Upgrader Info
    /// </summary>
    public struct NET_CLOUD_UPGRADER_INFO
    {
        /// <summary>
        /// 升级包下载地址(代理升级需要)
        /// Package URL
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPackageURL;
        /// <summary>
        /// 升级包ID
        /// Package ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPackageID;
        /// <summary>
        /// 升级包的SHA-256校验和
        /// Check Sum
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCheckSum;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_ExecuteCloudUpgrader 入参
    /// CLIENT_ExecuteCloudUpgrader input param
    /// </summary>
    public struct NET_IN_EXECUTE_CLOUD_UPGRADER
    {
        /// <summary>
        /// 结构体大小
        /// Struct Size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 上一次check得到的新版本号
        /// New Version
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNewVersion;
        /// <summary>
        /// 检测路径, 0-直连升级服务器检测, 1-通过代理服务器检测
        /// Check Way, 0-Direct connect server, 1-Through proxy server
        /// </summary>
        public uint nWay;
        /// <summary>
        /// 代理服务器地址, nWay==1时有意义
        /// Proxy server, when way==1 proxy is valid
        /// </summary>
        public NET_PROXY_SERVER_INFO stProxy;
        /// <summary>
        /// 升级包信息
        /// Cloud Upgrader Info
        /// </summary>
        public NET_CLOUD_UPGRADER_INFO stInfo;
    }

    /// <summary>
    /// CLIENT_ExecuteCloudUpgrader 出参
    /// CLIENT_ExecuteCloudUpgrader output param
    /// </summary>
    public struct NET_OUT_EXECUTE_CLOUD_UPGRADER
    {
        /// <summary>
        /// 结构体大小
        /// Struct Size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_GetCloudUpgraderState 入参
    /// CLIENT_GetCloudUpgraderState input param
    /// </summary>
    public struct NET_IN_GET_CLOUD_UPGRADER_STATE
    {
        /// <summary>
        /// 结构体大小
        /// Struct Size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 在线升级状态
    /// Cloud Upgrader Stat
    /// </summary>
    public enum EM_CLOUD_UPGRADER_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_CLOUD_UPGRADER_STATE_UNKNOWN,
        /// <summary>
        /// "Noupgrade"-未进行升级
        /// "Noupgrade"
        /// </summary>
        EM_CLOUD_UPGRADER_STATE_NOUPGRADE,
        /// <summary>
        /// "Preparing"-准备升级
        /// "Preparing"
        /// </summary>
        EM_CLOUD_UPGRADER_STATE_PREPARING,
        /// <summary>
        /// "Downloading"-正在下载数据
        /// "Downloading"
        /// </summary>
        EM_CLOUD_UPGRADER_STATE_DOWNLOADING,
        /// <summary>
        /// "DownloadFailed"-下载失败
        /// "DownloadFailed"
        /// </summary>
        EM_CLOUD_UPGRADER_STATE_DOWNLOADFAILED,
        /// <summary>
        /// "Upgrading"-正在升级
        /// "Upgrading"
        /// </summary>
        EM_CLOUD_UPGRADER_STATE_UPGRADING,
        /// <summary>
        /// "Invalid"-升级包不正确
        /// "Invalid"
        /// </summary>
        EM_CLOUD_UPGRADER_STATE_INVALID,
        /// <summary>
        /// "Failed"-升级包写入Flash失败
        /// "Failed"
        /// </summary>
        EM_CLOUD_UPGRADER_STATE_FAILED,
        /// <summary>
        /// "Succeeded"-升级包写入Flash成功
        /// "Succeeded"
        /// </summary>
        EM_CLOUD_UPGRADER_STATE_SUCCEEDED,
    }

    /// <summary>
    /// CLIENT_GetCloudUpgraderState 出参
    /// CLIENT_GetCloudUpgraderState output param
    /// </summary>
    public struct NET_OUT_GET_CLOUD_UPGRADER_STATE
    {
        /// <summary>
        /// 结构体大小
        /// Struct Size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 升级状态
        /// State
        /// </summary>
        public EM_CLOUD_UPGRADER_STATE emState;
        /// <summary>
        /// 升级进度, 状态是Downloading/Upgrading时有意义
        /// Progress, nProgress is valid When State is Downloading/Upgrading
        /// </summary>
        public uint nProgress;
    }

    /// <summary>
    /// 大图信息(大图抠小图功能)
    /// large image info (the function of detect small image from large image)
    /// </summary>
    public struct NET_DETECT_BIG_PIC_INFO
    {
        /// <summary>
        /// 大图ID
        /// large image ID
        /// </summary>
        public int nPicID;
        /// <summary>
        /// 文件在二进制数据块中的偏移位置, 单位:字节
        /// the offset position of the large image in the binary data, unit:bytes
        /// </summary>
        public uint dwOffSet;
        /// <summary>
        /// 文件大小, 单位:字节
        /// the length of the file, unit:bytes
        /// </summary>
        public uint dwFileLenth;
        /// <summary>
        /// 图片宽度, 单位:像素
        /// the width of this image, unit:pixel
        /// </summary>
        public uint dwWidth;
        /// <summary>
        /// 图片高度, 单位:像素
        /// the height of this image, unit:pixel
        /// </summary>
        public uint dwHeight;
        /// <summary>
        /// 规则检测区域顶点数
        /// Points number of detect region
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 44)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 坐标系类型
    /// Coordinate type
    /// </summary>
    public enum EM_COORDINATE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_COORDINATE_TYPE_UNKNOWN = 0,
        /// <summary>
        /// 绝对坐标
        /// Absolute coordinates
        /// </summary>
        EM_COORDINATE_TYPE_ABSOLUTE,
        /// <summary>
        /// 8192坐标
        /// 8192 coordinate system
        /// </summary>
        EM_COORDINATE_TYPE_8192,
    }

    /// <summary>
    /// 目标类型
    /// Detect object type
    /// </summary>
    public enum EM_DETECT_OBJECT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_DETECT_OBJECT_TYPE_UNKNOWN = 0,
        /// <summary>
        /// 人脸
        /// Face
        /// </summary>
        EM_DETECT_OBJECT_TYPE_FACE,
        /// <summary>
        /// 车辆
        /// Vehicle
        /// </summary>
        EM_DETECT_OBJECT_TYPE_VEHICLE,
        /// <summary>
        /// 结构化
        /// Struct Lize
        /// </summary>
        EM_DETECT_OBJECT_TYPE_STRUCTLIZE,
    }

    /// <summary>
    /// 处理类型
    /// Detect process type
    /// </summary>
    public enum EM_DETECT_PROCESS_TYPE
    {
        /// <summary>
        /// 当此值为0或者不存在，就做检测，与EM_DETECT_PROCESS_TYPE_DETECT一致
        /// Unknwon
        /// </summary>
        EM_DETECT_PROCESS_TYPE_UNKNOWN = 0,
        /// <summary>
        /// 提取特征
        /// Extract feature
        /// </summary>
        EM_DETECT_PROCESS_TYPE_FEATURE,
        /// <summary>
        /// 提取属性
        /// Extract attribute
        /// </summary>
        EM_DETECT_PROCESS_TYPE_ATTRIBUTE,
        /// <summary>
        /// 检测
        /// Detection
        /// </summary>
        EM_DETECT_PROCESS_TYPE_DETECT,
    }

    /// <summary>
    /// 大图信息(大图抠小图功能)
    /// Large image info (the function of detect small image from large image)
    /// </summary>
    public struct NET_DETECT_BIG_PIC_INFO_EX
    {
        /// <summary>
        /// 大图ID
        /// Large image ID
        /// </summary>
        public int nPicID;
        /// <summary>
        /// 文件在二进制数据块中的偏移位置, 单位:字节
        /// The offset position of the large image in the binary data, unit:bytes
        /// </summary>
        public uint dwOffSet;
        /// <summary>
        /// 文件大小, 单位:字节
        /// The length of the file, unit:bytes
        /// </summary>
        public uint dwFileLenth;
        /// <summary>
        /// 图片宽度, 单位:像素
        /// The width of this image, unit:pixel
        /// </summary>
        public uint dwWidth;
        /// <summary>
        /// 图片高度, 单位:像素
        /// The height of this image, unit:pixel
        /// </summary>
        public uint dwHeight;
        /// <summary>
        /// 规则检测区域顶点数
        /// Points number of detect region
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 请求图片ID
        /// Request ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRequestID;
        /// <summary>
        /// 通过URL下载图片
        /// URL address about image
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
        /// <summary>
        /// 坐标系类型
        /// Coordinate type
        /// </summary>
        public EM_COORDINATE_TYPE emCoordinateType;
        /// <summary>
        /// 目标类型
        /// Detect object type
        /// </summary>
        public EM_DETECT_OBJECT_TYPE emObjectType;
        /// <summary>
        /// 按位组合，全1表示全检测,1表示人脸，2表示人体，4表示机动车，8表示非机动整体, 16表示非机动车
        /// By bit combination, all 1 means full detection, 1 means face, 2 means human body, 4 means motor vehicle, 8 means non motor vehicle, 16 means non motor vehicle
        /// </summary>
        public uint nTargetType;
        /// <summary>
        /// 处理类型个数
        /// Count of process type
        /// </summary>
        public int nProcessTypeNum;
        /// <summary>
        /// 处理类型
        /// Process type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public EM_DETECT_PROCESS_TYPE[] emProcessType;
        /// <summary>
        /// 全景大图数据，经过Base64后的字符串 无该字段或该字段为空则使用二进制图片数据
        /// Scene image data, if the string after Base64 does not have this field or the field is empty, binary image data will be used
        /// </summary>
        public IntPtr szData;
        /// <summary>
        /// 全景大图数据长度
        /// Scene image length
        /// </summary>
        public int nDataLen;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016)]
        public byte[] bReserved;
    }

    /// <summary>
    /// CLIENT_FaceRecognitionDetectMultiFace 接口输入参数
    /// the input parameter of interface CLIENT_FaceRecognitionDetectMultiFace
    /// </summary>
    public struct NET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO
    {
        /// <summary>
        /// 此结构体的大小
        /// the size of this struct
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 大图张数
        /// the number of large image
        /// </summary>
        public int nBigPicNum;
        /// <summary>
        /// 大图信息（推荐使用stuBigPicInfoEx）
        /// the info of large image(stuBigPicInfoEx is recommended)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_DETECT_BIG_PIC_INFO[] stuBigPicInfo;
        /// <summary>
        /// 缓冲地址
        /// the buffer of the image
        /// </summary>
        public IntPtr pBuffer;
        /// <summary>
        /// 缓冲数据长度
        /// the length of th buffer
        /// </summary>
        public int nBufferLen;
        /// <summary>
        /// 目标类型
        /// Object type
        /// </summary>
        public EM_OBJECT_TYPE emDetectObjType;
        /// <summary>
        /// stuBigPicInfoEx是否有效
        /// Whether stuBigPicInfoEx is valid
        /// </summary>
        public bool bBigPicInfoExEnable;
        /// <summary>
        /// 大图张数
        /// Number of big picture
        /// </summary>
        public int nBigPicNumEx;
        /// <summary>
        /// 大图信息(扩展)
        /// Big picture information (Extended)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_DETECT_BIG_PIC_INFO_EX[] stuBigPicInfoEx;
        /// <summary>
        /// 查询令牌,没有则为0
        /// Token(If no, it is 0)
        /// </summary>
        public uint nToken;
    }

    /// <summary>
    /// CLIENT_FaceRecognitionDetectMultiFace 接口输出参数
    /// the output parameter of interface CLIENT_FaceRecognitionDetectMultiFace
    /// </summary>
    public struct NET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO
    {
        /// <summary>
        /// 此结构体的大小
        /// the size of this struct
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_AttachDetectMultiFaceState 接口输入参数
    /// the input parameter of interface CLIENT_AttachDetectMultiFaceState
    /// </summary>
    public struct NET_IN_MULTIFACE_DETECT_STATE
    {
        /// <summary>
        /// 此结构体大小
        /// the size of this struct
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 用于字节对齐
        /// for byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved;
        /// <summary>
        /// 回调函数
        /// callback function
        /// </summary>
        public fMultiFaceDetectState cbMultiFaceDetectState;
        /// <summary>
        /// 用户数据
        /// user data
        /// </summary>
        public IntPtr dwUser;
        /// <summary>
        /// 回调函数扩展（推荐使用）
        /// Callback function extension (recommended)
        /// </summary>
        public fMultiFaceDetectStateEx cbMultiFaceDetectStateEx;
        /// <summary>
        /// 查询令牌
        /// Tokens
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public uint[] nTokens;
        /// <summary>
        /// 查询令牌个数, 若为0，则默认订阅token为0的检测, 若为-1表示订阅全部token
        /// Number of tokens, 0 means subscribe to all
        /// </summary>
        public int nTokensNum;
    }

    /// <summary>
    /// CLIENT_AttachDetectMultiFaceState 接口输出参数
    /// the output parameter of interface CLIENT_AttachDetectMultiFaceState
    /// </summary>
    public struct NET_OUT_MULTIFACE_DETECT_STATE
    {
        /// <summary>
        /// 此结构体大小
        /// the size of this struct
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 是否有反光背心
    /// Is there a reflective vest
    /// </summary>
    public enum EM_HAS_VEST
    {
        /// <summary>
        /// 未知
        /// UNKNOWN
        /// </summary>
        EM_HAS_VEST_UNKNOWN = 0,
        /// <summary>
        /// 无
        /// NO
        /// </summary>
        EM_HAS_VEST_NO,
        /// <summary>
        /// 有
        /// YES
        /// </summary>
        EM_HAS_VEST_YES,
    }

    /// <summary>
    /// 是否佩戴工牌
    /// Whether to wear a badge
    /// </summary>
    public enum EM_HAS_BADGE
    {
        /// <summary>
        /// 未知
        /// UNKNOWN
        /// </summary>
        EM_HAS_BADGE_UNKNOWN = 0,
        /// <summary>
        /// 无
        /// NO
        /// </summary>
        EM_HAS_BADGE_NO,
        /// <summary>
        /// 有
        /// YES
        /// </summary>
        EM_HAS_BADGE_YES,
    }

    /// <summary>
    /// 是否推婴儿车
    /// Whether to push a baby carriage
    /// </summary>
    public enum EM_HAS_BABYCARRIAGE
    {
        /// <summary>
        /// 未知
        /// UNKNOWN
        /// </summary>
        EM_HAS_BABYCARRIAGE_UNKNOWN = 0,
        /// <summary>
        /// 无
        /// NO
        /// </summary>
        EM_HAS_BABYCARRIAGE_NO,
        /// <summary>
        /// 有
        /// YES
        /// </summary>
        EM_HAS_BABYCARRIAGE_YES,
    }

    /// <summary>
    /// 是否虚检
    /// Whether is error detect or not
    /// </summary>
    public enum EM_IS_ERRORDETECT
    {
        /// <summary>
        /// 未知
        /// UNKNOWN
        /// </summary>
        EM_IS_ERRORDETECT_UNKNOWN = -1,
        /// <summary>
        /// 无
        /// NO
        /// </summary>
        EM_IS_ERRORDETECT_NO,
        /// <summary>
        /// 有
        /// YES
        /// </summary>
        EM_IS_ERRORDETECT_YES,
    }

    /// <summary>
    /// 人体部位是否有头
    /// Whether has head
    /// </summary>
    public enum EM_HAS_HEAD
    {
        /// <summary>
        /// 未知
        /// UNKNOWN
        /// </summary>
        EM_HAS_HEAD_UNKNOWN = -1,
        /// <summary>
        /// 无
        /// NO
        /// </summary>
        EM_HAS_HEAD_NO,
        /// <summary>
        /// 有
        /// YES
        /// </summary>
        EM_HAS_HEAD_YES,
    }

    /// <summary>
    /// 人体部位是否有下半身
    /// Whether has down body
    /// </summary>
    public enum EM_HAS_DOWNBODY
    {
        /// <summary>
        /// 未知
        /// UNKNOWN
        /// </summary>
        EM_HAS_DOWNBODY_UNKNOWN = -1,
        /// <summary>
        /// 无
        /// NO
        /// </summary>
        EM_HAS_DOWNBODY_NO,
        /// <summary>
        /// 有
        /// YES
        /// </summary>
        EM_HAS_DOWNBODY_YES,
    }

    /// <summary>
    /// 图片信息(目前仅用于机动车和非机动车)
    /// Image information (currently only for motor vehicles and non-motor vehicles)
    /// </summary>
    public struct NET_PIC_INFO_EX2
    {
        /// <summary>
        /// 图片大小,单位:字节
        /// Image size, unit: bytes
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 图片宽度
        /// Image width
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// 图片高度
        /// Image height
        /// </summary>
        public uint nHeight;
        /// <summary>
        /// 用于字节对齐
        /// for byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string byReserverd;
        /// <summary>
        /// 图片路径
        /// image path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFilePath;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserverd;
    }

    /// <summary>
    /// 机动车信息
    /// Vehicle Information
    /// </summary>
    public struct NET_HISTORY_TRAFFIC_CAR_INFO
    {
        /// <summary>
        /// 非机动车唯一标识符
        /// non-motor vehicle unique identifier
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUID;
        /// <summary>
        /// 包围盒(8192坐标系)
        /// Bounding box (8192 coordinate system)
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 车牌号码
        /// license plate number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateNumber;
        /// <summary>
        /// 车牌类型
        /// license plate type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateType;
        /// <summary>
        /// 车牌颜色
        /// license plate color
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateColor;
        /// <summary>
        /// 车身颜色
        /// body color
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVehicleColor;
        /// <summary>
        /// 车辆类型
        /// vehicle type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCategory;
        /// <summary>
        /// 特种车辆
        /// special vehicle
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSpecialCar;
        /// <summary>
        /// 车辆标识
        /// vehicle sign
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVehicleSign;
        /// <summary>
        /// 车辆子品牌
        /// vehicle sub-brand
        /// </summary>
        public uint nSubBrand;
        /// <summary>
        /// 车辆年款
        /// Vehicle year
        /// </summary>
        public uint nBrandYear;
        /// <summary>
        /// 摆件数量
        /// number of ornaments
        /// </summary>
        public uint nFurnitureCount;
        /// <summary>
        /// 挂件数量
        /// number of pendants
        /// </summary>
        public uint nPendantCount;
        /// <summary>
        /// 年检标数量
        /// Number of annual inspections
        /// </summary>
        public uint nAnnualInspectionCount;
        /// <summary>
        /// 年检标顺序, 0: 未知 1: 乱排 2: 横排 3: 竖排
        /// annual inspection order, 0: unknown 1: random 2: horizontal 3: vertical
        /// </summary>
        public int nAnnualInspectionShape;
        /// <summary>
        /// 主驾驶遮阳板状态
        /// main driver sunshade state
        /// </summary>
        public EM_NET_SUNSHADE_STATE emSunShade;
        /// <summary>
        /// 副驾驶遮阳板状态
        /// copilot sunshade state
        /// </summary>
        public EM_NET_SUNSHADE_STATE emSubSeatSunShade;
        /// <summary>
        /// 卡片数量
        /// number of cards
        /// </summary>
        public uint nCardCount;
        /// <summary>
        /// 主驾驶安全带
        /// main driver's seat belt
        /// </summary>
        public EM_NET_SAFEBELT_STATE emSafeBelt;
        /// <summary>
        /// 是否在打电话, 0: 未知 1: 否 2: 是
        /// is calling, 0: unknown 1: no 2: yes
        /// </summary>
        public int nCalling;
        /// <summary>
        /// 是否在玩手机, 0: 未知 1: 否 2: 是
        /// Whether the phone is playing, 0: unknown 1: no 2: yes
        /// </summary>
        public int nPlayPhone;
        /// <summary>
        /// 是否在抽烟, 0: 未知 1: 否 2: 是
        /// smoking, 0: unknown 1: no 2: yes
        /// </summary>
        public int nSmoking;
        /// <summary>
        /// 副驾驶是否有人, 0: 未知 1: 否 2: 是
        /// Is there anyone in the co-pilot, 0: unknown 1: no 2: yes
        /// </summary>
        public int nSubSeatPeople;
        /// <summary>
        /// 副驾驶安全带
        /// passenger seat belt
        /// </summary>
        public EM_NET_SAFEBELT_STATE emSubSeatSafeBelt;
        /// <summary>
        /// 是否抱小孩, 0: 未知 1: 否 2: 是
        /// whether to hold the baby, 0: unknown 1: no 2: yes
        /// </summary>
        public int nHoldBaby;
        /// <summary>
        /// 是否有天窗, 0: 未知 1: 否 2: 是
        /// whether there is a sunroof, 0: unknown 1: no 2: yes
        /// </summary>
        public int nSunroof;
        /// <summary>
        /// 是否有行李架, 0: 未知 1: 否 2: 是
        /// whether there is a luggage rack, 0: unknown 1: no 2: yes
        /// </summary>
        public int nLuggageRack;
        /// <summary>
        /// 是否有车辆撞损, 0: 未知 1: 否 2: 是
        /// whether there is a vehicle crash, 0: unknown 1: no 2: yes
        /// </summary>
        public int nVehicleCollision;
        /// <summary>
        /// 是否有喷绘, 0: 未知 1: 否 2: 是
        /// whether there is a print, 0: unknown 1: no 2: yes
        /// </summary>
        public int nVehiclePrint;
        /// <summary>
        /// 是否有备胎, 0: 未知 1: 否 2: 是
        /// whether there is a spare tire, 0: unknown 1: no 2: yes
        /// </summary>
        public int nBackupTire;
        /// <summary>
        /// 后备箱状态, 0: 未知 1: 关闭 2: 打开
        /// trunk status, 0: unknown 1: closed 2: open
        /// </summary>
        public int nTrunk;
        /// <summary>
        /// 车牌污损状态, 0: 未知 1: 正常 2: 无牌 3: 部分遮挡/污损 4: 完全遮挡/污损
        /// license plate defacement status, 0: unknown 1: normal 2: no plate 3: partially occluded/defaced 4: fully occluded/defaced
        /// </summary>
        public int nPlateAttribute;
        /// <summary>
        /// 渣土车遮盖状态, 0: 未知 1: 有遮盖 2: 无遮盖空载 3: 无遮盖满载
        /// Muck cover status, 0: Unknown 1: Covered 2: Uncovered empty 3: Uncovered full
        /// </summary>
        public int nMuskHide;
        /// <summary>
        /// 机动车图片信息
        /// Motor vehicle picture information
        /// </summary>
        public NET_PIC_INFO_EX2 stuImage;
        /// <summary>
        /// 车辆停车是否压线, 0: 未知 1: 未压线停车 2: 压线停车
        /// Whether the vehicle is parked and pressed, 0: Unknown 1: Parking without pressing the wire 2: Parking when the wire is pressed
        /// </summary>
        public int nPressParkingStatus;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 一张大图检测结果列表
    /// A list of test results for a large image
    /// </summary>
    public struct NET_IMAGE_RELATION_LIST
    {
        /// <summary>
        /// base64特征值
        /// base64 feature data
        /// </summary>
        public IntPtr pszFeature;
        /// <summary>
        /// base64特征值长度
        /// base64 feature data length
        /// </summary>
        public int nFeatureLen;
        /// <summary>
        /// 特征ID
        /// Feature ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szFeatureID;
        /// <summary>
        /// 人脸数据
        /// Face data
        /// </summary>
        public NET_FACE_DATA stuFaceData;
        /// <summary>
        /// 人体属性
        /// Human attribute
        /// </summary>
        public NET_HUMAN_ATTRIBUTES_INFO stuHumanAttributes;
        /// <summary>
        /// 非机动车信息
        /// Nonmotor info
        /// </summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// 特征版本号
        /// The version of algorithm
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAlgorithmVersion;
        /// <summary>
        /// 长商
        /// Vendor
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVendor;
        /// <summary>
        /// 目标类型
        /// Object type
        /// </summary>
        public EM_OBJECT_TYPE emObjectType;
        /// <summary>
        /// 矩形区域
        /// Rectangular area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_POINT[] stuRectPoint;
        /// <summary>
        /// 机动车属性
        /// History Traffic Car
        /// </summary>
        public NET_HISTORY_TRAFFIC_CAR_INFO stuHistoryTrafficCar;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 大图中小图的信息
    /// the small image info in the large image
    /// </summary>
    public struct NET_SMALL_PIC_INFO
    {
        /// <summary>
        /// 小图ID
        /// small image ID
        /// </summary>
        public int nSmallPicId;
        /// <summary>
        /// 小图在大图中的位置
        /// the postion of the small image in the large image
        /// </summary>
        public NET_RECT stuRect;
        /// <summary>
        /// 目标类型
        /// bject type
        /// </summary>
        public EM_OBJECT_TYPE emDetectObjType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 124)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 大图检测小图结果错误码
    /// Error code of multi detect in scene image
    /// </summary>
    public enum EM_MULTIFACE_DETECT_ERRCODE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_MULTIFACE_DETECT_UNKNOWN = -1,
        /// <summary>
        /// 成功
        /// Success
        /// </summary>
        EM_MULTIFACE_DETECT_SUCCESS,
        /// <summary>
        /// 解码失败
        /// Decode fail
        /// </summary>
        EM_MULTIFACE_DETECT_DECODE_FAIL,
        /// <summary>
        /// 未检测到有效目标
        /// No effect object
        /// </summary>
        EM_MULTIFACE_DETECT_NO_OBJECT,
    }

    /// <summary>
    /// 一张大图检测到小图的结果
    /// the result of detection small image from the large image
    /// </summary>
    public struct NET_IMAGE_RELATION
    {
        /// <summary>
        /// 大图ID
        /// large image ID
        /// </summary>
        public int nBigPicId;
        /// <summary>
        /// 大图中小图张数
        /// the number of small image in the large image
        /// </summary>
        public int nSmallPicNum;
        /// <summary>
        /// 大图中小图的信息
        /// the info of small image in the large image
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_SMALL_PIC_INFO[] stuSmallPicInfo;
        /// <summary>
        /// 大图检测小图结果错误码
        /// Error code of multi detect in scene image
        /// </summary>
        public EM_MULTIFACE_DETECT_ERRCODE emDetectErrCode;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 124)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 订阅大图检测小图进度回调结构体
    /// the callback struct of detection small image from the large image
    /// </summary>
    public struct NET_CB_MULTIFACE_DETECT_STATE
    {
        /// <summary>
        /// 检测进度
        /// the progress of detection
        /// </summary>
        public int nProgress;
        /// <summary>
        /// 大图检测小图的检测结果
        /// the result of detection small image from the large image
        /// </summary>
        public NET_IMAGE_RELATION stuImageRelation;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 小图信息
    /// Thumbnail information
    /// </summary>
    public struct NET_IMAGE_RELATION_EX_IMAGEINFO
    {
        /// <summary>
        /// 在二进制数据块中的偏移
        /// Offset in binary data block
        /// </summary>
        public int nOffset;
        /// <summary>
        /// 图片大小,单位字节
        /// Picture size,Unit byte
        /// </summary>
        public int nLength;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szReserved;
    }

    /// <summary>
    /// 一张大图检测到小图的结果
    /// A small image is detected in a large image
    /// </summary>
    public struct NET_IMAGE_RELATION_EX
    {
        /// <summary>
        /// 图片的请求ID
        /// Request ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRequestID;
        /// <summary>
        /// 大图ID
        /// Large image ID
        /// </summary>
        public int nBigPicId;
        /// <summary>
        /// 大图中小图张数
        /// Number of small pictures in large picture
        /// </summary>
        public int nSmallPicNum;
        /// <summary>
        /// 大图中小图的信息
        /// Info of small pictures in large picture
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_SMALL_PIC_INFO[] stuSmallPicInfo;
        /// <summary>
        /// 大图检测小图结果错误码
        /// Error code of small image result detected by large image
        /// </summary>
        public EM_MULTIFACE_DETECT_ERRCODE emDetectErrCode;
        /// <summary>
        /// 大图检测结果列表
        /// List of test results for a large image
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_RELATION_LIST[] stuImageRelation;
        /// <summary>
        /// 大图检测结果列表个数
        /// Number of test results for a large image
        /// </summary>
        public int nstuImageRelationNum;
        /// <summary>
        /// 查询令牌
        /// Token
        /// </summary>
        public uint nToken;
        /// <summary>
        /// 小图信息
        /// Thumbnail information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_RELATION_EX_IMAGEINFO[] stuImageInfo;
        /// <summary>
        /// 小图信息个数
        /// Thumbnail information number
        /// </summary>
        public int nImageNum;
        /// <summary>
        /// 小图图片数据
        /// Picture data
        /// </summary>
        public IntPtr pData;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 248)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 订阅大图检测小图进度回调结构体
    /// Attach to large image to detect small image progress callback info
    /// </summary>
    public struct NET_CB_MULTIFACE_DETECT_STATE_EX
    {
        /// <summary>
        /// 检测进度
        /// Inspection progress
        /// </summary>
        public int nProgress;
        /// <summary>
        /// 大图检测小图的检测结果
        /// Test results of large image and small image
        /// </summary>
        public NET_IMAGE_RELATION_EX stuImageRelation;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }


    /// <summary>
    /// CLIENT_StartMultiPersonFindFaceR 接口输入参数
    /// CLIENT_StartMultiPersonFindFaceR input parameters
    /// </summary>
    public struct NET_IN_STARTMULTIPERSONFIND_FACER
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 查询过滤条件
        /// Query filter criteria
        /// </summary>
        public NET_FACE_FILTER_CONDTION stFilterInfo;
        /// <summary>
        /// 通道号，过滤条件szRange为NET_FACE_DB_TYPE_HISTORY有效
        /// Channel number, Channel number, valid when the filter condition is NET_FACE_DB_TYPE_HISTORY
        /// </summary>
        public IntPtr pChannelID;
        /// <summary>
        /// 通道申请个数
        /// Number of channel
        /// </summary>
        public int nChannelCount;
        /// <summary>
        /// 任务ID数量
        /// TaskId Count
        /// </summary>
        public int nTaskIdCount;
        /// <summary>
        /// 任务ID，过滤条件szRange为NET_FACE_DB_TYPE_HISTORY有效，和channel字段二选一
        /// TaskId, valid when the filter condition is NET_FACE_DB_TYPE_HISTORY,Cannot exist with channel at the same time
        /// </summary>
        public IntPtr pTaskId;
        /// <summary>
        /// 人员信息查询条件，和smallID二选一
        /// Personnel information query criteria, smallid cannot exist at the same time
        /// </summary>
        public NET_FACERECOGNITION_PERSON_INFOEX stPerson;
        /// <summary>
        /// 人脸匹配选项
        /// Match Options
        /// </summary>
        public NET_FACE_MATCH_OPTIONS stMatchOptions;
        /// <summary>
        /// 小图ID数量
        /// Number of Small Piciture ID
        /// </summary>
        public int nSmallPicIDNum;
        /// <summary>
        /// 小图ID
        /// Small Piciture ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nSmallPicID;
        /// <summary>
        /// 搜索的目标类型
        /// Object Type
        /// </summary>
        public EM_OBJECT_TYPE emObjectType;
        /// <summary>
        /// 缓冲数据长度
        /// Buffer data length
        /// </summary>
        public int nBufferLen;
        /// <summary>
        /// 缓冲地址
        /// Buffer address
        /// </summary>
        public IntPtr pBuffer;
    }

    /// <summary>
    /// CLIENT_StartMultiPersonFindFaceR 接口输出参数
    /// CLIENT_StartMultiPersonFindFaceR output parameters
    /// </summary>
    public struct NET_OUT_STARTMULTIPERSONFIND_FACER
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 返回的符合查询条件的记录个数
        /// -1表示总条数未生成,要推迟获取
        /// 使用CLIENT_AttachFaceFindState接口状态
        /// Record number of returns that match the query criteria
        /// </summary>
        public int nTotalCount;
        /// <summary>
        /// 查询句柄
        /// Query handle
        /// </summary>
        public IntPtr lFindHandle;
        /// <summary>
        /// 获取到的查询令牌
        /// The search token received
        /// </summary>
        public uint nToken;
    }

    /// <summary>
    /// CLIENT_FaceRServerGetDetectToken 接口输入参数
    /// CLIENT_FaceRServerGetDetectToken input parameters
    /// </summary>
    public struct NET_IN_FACERSERVER_GETDETEVTTOKEN
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_FaceRServerGetDetectToken 接口输出参数
    /// CLIENT_FaceRServerGetDetectToken output parameters
    /// </summary>
    public struct NET_OUT_FACERSERVER_GETDETEVTTOKEN
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 获取到的查询令牌
        /// token
        /// </summary>
        public uint nToken;
    }

    /// <summary>
    /// CLIENT_SetFileAlias 输入参数
    /// CLIENT_SetFileAlias input parameters
    /// </summary>
    public struct NET_IN_SET_FILE_ALIAS_INFO
    {
        /// <summary>
        /// 结构体大小
        /// The size of the structure, must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 目标文件对应的视频通道号
        /// Video channel number corresponding to the target file
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 开始时间
        /// Start time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 结束时间
        /// End time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 视频码流 0-主码流 1-辅码流1 2-辅码流2 3-辅码流3
        /// video stream type,0:main,1:extra1,2:extra2,3:extra3
        /// </summary>
        public int nVideoStream;
        /// <summary>
        /// 文件标志总个数；
        /// Number of Flags
        /// </summary>
        public int nFlagCount;
        /// <summary>
        /// 文件标志
        /// Flags
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public EM_RECORD_SNAP_FLAG_TYPE[] emFlagsList;
        /// <summary>
        /// 文件类型 0:dav, 1:jpg
        /// Media Type 0:dav 1:jpg
        /// </summary>
        public int nMediaType;
        /// <summary>
        /// 要关联的文件名称
        /// File name to associate
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szRecordAlias;
    }

    /// <summary>
    /// CLIENT_SetFileAlias 输出参数
    /// CLIENT_SetFileAlias Output parameters
    /// </summary>
    public struct NET_OUT_SET_FILE_ALIAS_INFO
    {
        /// <summary>
        /// 结构体大小
        /// The size of the structure, must be assigned
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_SearchFileByAlias 输入参数
    /// CLIENT_SearchFileByAlias input parameters
    /// </summary>
    public struct NET_IN_SEARCH_FILE_BYALIAS_INFO
    {
        /// <summary>
        /// 结构体大小
        /// The size of the structure, must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 要查询的文件名称
        /// File name to query
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szRecordAlias;
        /// <summary>
        /// 最大查询数量
        /// Maximum number of queries
        /// </summary>
        public uint nMaxCount;
    }

    /// <summary>
    /// 根据录像的命名搜索录像文件 查询到的录像信息
    /// Video information
    /// </summary>
    public struct NET_RECORS_BYALIAS_INFO
    {
        /// <summary>
        /// 视频通道号
        /// Video channel number
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 视频码流 0 未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3
        /// video stream type,0:Unknow,1:main,2:extra1,3:extra2,4:extra3
        /// </summary>
        public int nVideoStream;
        /// <summary>
        /// 开始时间
        /// Start time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 结束时间
        /// End time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 文件标志总个数；
        /// Number of Flags
        /// </summary>
        public int nFlagCount;
        /// <summary>
        /// 文件标志
        /// Flags
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public EM_RECORD_SNAP_FLAG_TYPE[] emFlagsList;
        /// <summary>
        /// 磁盘号
        /// DriveNo
        /// </summary>
        public uint nDriveNo;
        /// <summary>
        /// 簇号
        /// Cluster number
        /// </summary>
        public uint nCluster;
        /// <summary>
        /// 文件类型 0:未知, 1:dav, 2:jpg
        /// Media Type 0:Unknow 1:dav 2:jpg
        /// </summary>
        public int nMediaType;
        /// <summary>
        /// 分区号
        /// Partition number
        /// </summary>
        public int nPartition;
        /// <summary>
        /// 整个文件长度 单位：字节
        /// Entire file length unit: bytes
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 按查询时间段截取过的文件长度
        /// Length of file intercepted by query period
        /// </summary>
        public uint nCutLength;
        /// <summary>
        /// 图片路径，录像类型无此字段
        /// image path, This field is not available for recording type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;
        /// <summary>
        /// 保留字节
        /// Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szResvered;
    }

    /// <summary>
    /// CLIENT_SearchFileByAlias 输出参数
    /// CLIENT_SearchFileByAlias output parameters
    /// </summary>
    public struct NET_OUT_SEARCH_FILE_BYALIAS_INFO
    {
        /// <summary>
        /// 结构体大小
        /// The size of the structure, must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// 最大查询数量,用户填写
        /// Maximum number of queries, must be assigned
        /// </summary>
        public uint nMaxCount;
        /// <summary>
        /// 实际查到的录像条数
        /// Number of videos actually found
        /// </summary>
        public uint nRetCount;
        /// <summary>
        /// 查询到的录像信息< NET_RECORS_BYALIAS_INFO >，用户申请内存，数组大小为nMaxCount
        /// Video information queried, the user applies for memory, and the array size is nmaxcount < NET_RECORS_BYALIAS_INFO >
        /// </summary>
        public IntPtr pstuRecordInfo;
    }

    /// <summary>
    /// 道闸控制方式枚举
    /// gateway control method enumeration
    /// </summary>
    public enum EM_CFG_TRAFFICSTROBE_CTRTYPE
    {
        /// <summary>
        /// 未定义
        /// undefined
        /// </summary>
        EM_CFG_CTRTYPE_UNKNOWN = 0,
        /// <summary>
        /// 通过允许名单控制是否开闸；只有允许名单内车辆才开闸
        /// via WL control gateway, only WL vehicle open gateway
        /// </summary>
        EM_CFG_CTRTYPE_TRAFFICTRUSTLIST,
        /// <summary>
        /// 针对所有抓拍车辆都开闸
        /// vehicle open gateway for all snapshots
        /// </summary>
        EM_CFG_CTRTYPE_ALLSNAPCAR,
        /// <summary>
        /// 通过上层下发的命令开闸
        /// open gateway commend sent from upper level
        /// </summary>
        EM_CFG_CTRTYPE_ORDER,
    }

    /// <summary>
    /// 所有车开闸种类
    /// All snap car class
    /// </summary>
    public enum EM_CFG_ALL_SNAP_CAR
    {
        /// <summary>
        /// 未知开闸种类
        /// Unknown
        /// </summary>
        EM_CFG_ALL_SNAP_CAR_UNKNOWN,
        /// <summary>
        /// 所有有牌车车辆
        /// Plate
        /// </summary>
        EM_CFG_ALL_SNAP_CAR_PLATE,
        /// <summary>
        /// 所有无牌车车辆
        /// No plate
        /// </summary>
        EM_CFG_ALL_SNAP_CAR_NOPLATE,
    }

    /// <summary>
    /// 道闸栏状态
    /// Traffic Strobe State
    /// </summary>
    public enum EM_TRAFFICSTROBE_STATUS
    {
        NET_TRAFFICSTROBE_STATUS_UNKNOWN,
        /// <summary>
        /// 道闸栏关闭
        /// Traffic Strobe closed
        /// </summary>
        NET_TRAFFICSTROBE_STATUS_CLOSE_COMPLETE,
        /// <summary>
        /// 道闸栏打开
        /// Traffic Strobe opened
        /// </summary>
        NET_TRAFFICSTROBE_STATUS_OPEN_COMPLETE,
        /// <summary>
        /// 道闸栏未完全关闭
        /// Traffic Strobe not complete closed
        /// </summary>
        NET_TRAFFICSTROBE_STATUS_NOT_CLOSE_COMPLETE,
        /// <summary>
        /// 道闸栏未完全打开
        /// Traffic Strobe not complete opened
        /// </summary>
        NET_TRAFFICSTROBE_STATUS_NOT_OPEN_COMPLETE,
        /// <summary>
        /// 道闸停止
        /// Traffic Strobe stop
        /// </summary>
        NET_TRAFFICSTROBE_STATUS_NOT_STROBE_STOP,
    }

    /// <summary>
    /// 道闸栏状态事件 ( ALARM_TRAFFICSTROBESTATE )
    /// Traffic Strobe State info ( ALARM_TRAFFICSTROBESTATE )
    /// </summary>
    public struct NET_A_ALARM_TRAFFICSTROBESTATE_INFO
    {
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
        /// Event Action,0=Impluse Event,1=Continued Event Start,2=Continued Event End;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 事件发生时间
        /// Alarm event time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 视频通道号
        /// Channel No.
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 道闸栏状态
        /// Traffic Strobe State
        /// </summary>
        public EM_TRAFFICSTROBE_STATUS emStatus;
        /// <summary>
        /// 道闸开关闸原因
        /// Reasons for gate opening and closing
        /// </summary>
        public EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE emStrobeActionReason;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 道闸常开配置
    /// Gateway stationary open config
    /// </summary>
    public struct NET_CFG_STATIONARY_OPEN
    {
        /// <summary>
        /// 使能
        /// enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 常开模式执行时间段
        /// stationary open time schedule
        /// </summary>
        public NET_CFG_TIME_SCHEDULE stTimeShecule;
        /// <summary>
        /// / 预留字段
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 禁开提醒
    /// Forbidden opening reminder
    /// </summary>
    public struct NET_FORBID_NOTICE_INFO
    {
        /// <summary>
        /// / 使能
        /// / Enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 提醒内容
        /// / Reminder content
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szNoticeString;
        /// <summary>
        /// / 预留字段
        /// / Reserved field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 124)]
        public string szReserved;
    }

    /// <summary>
    /// 道闸禁开配置
    /// Barrier gate forbidden opening configuration
    /// </summary>
    public struct NET_CFG_FORBID_OPEN
    {
        /// <summary>
        /// / 禁开功能使能，为true时还需要继续判断TimeSchedule内的使能位
        /// / Forbidden opening function enable; if true, it still needs to check the enable bits in TimeSchedule
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 禁开模式执行时间段
        /// / Time period for executing the forbidden opening mode
        /// </summary>
        public NET_CFG_TIME_SCHEDULE stuTimeShecule;
        /// <summary>
        /// / 禁开提醒
        /// / Forbidden opening reminder
        /// </summary>
        public NET_FORBID_NOTICE_INFO stuForbidNotice;
        /// <summary>
        /// / 预留字段
        /// / Reserved field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 道闸配置信息(对应 NET_EM_CFG_TRAFFICSTROBE 命令)
    /// Gateway config info(corresponding NET_EM_CFG_TRAFFICSTROBE command)
    /// </summary>
    public struct NET_CFG_TRAFFICSTROBE_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 使能
        /// enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 道闸控制方式个数
        /// gateway control method number
        /// </summary>
        public int nCtrlTypeCount;
        /// <summary>
        /// 道闸控制方式
        /// gateway control method
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_CFG_TRAFFICSTROBE_CTRTYPE[] emCtrlType;
        /// <summary>
        /// 所有车开闸种类个数
        /// All Snap Car class number
        /// </summary>
        public int nAllSnapCarCount;
        /// <summary>
        /// 所有车开闸种类
        /// All Snap Car class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_CFG_ALL_SNAP_CAR[] emAllSnapCar;
        /// <summary>
        /// 开启道闸联动参数
        /// enable gateway link parameter
        /// </summary>
        public NET_ALARM_MSG_HANDLE stuEventHandler;
        /// <summary>
        /// 关闭道闸联动参数
        /// unable gateway link parameter
        /// </summary>
        public NET_ALARM_MSG_HANDLE stuEventHandlerClose;
        /// <summary>
        /// 负责命令开闸的平台IP
        /// platform ip of order open gateway
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szOrderIP;
        /// <summary>
        /// 平台IP与设备断开连接后，设备采用的开闸方式
        /// gateway control method when platform ip disconnect with device
        /// </summary>
        public EM_CFG_TRAFFICSTROBE_CTRTYPE emCtrlTypeOnDisconnect;
        /// <summary>
        /// 道闸常开配置
        /// Gateway stationary open config
        /// </summary>
        public NET_CFG_STATIONARY_OPEN stuStationaryOpen;
        /// <summary>
        /// / 道闸禁开配置
        /// / Barrier gate forbidden opening configuration
        /// </summary>
        public NET_CFG_FORBID_OPEN stuForbidOpen;
    }

    /// <summary>
    /// 三态布尔类型
    /// Three Status BOOL
    /// </summary>
    public enum EM_A_NET_THREE_STATUS_BOOL
    {
        BOOL_STATUS_FALSE = 0,
        BOOL_STATUS_TRUE,
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        BOOL_STATUS_UNKNOWN,
    }

    /// <summary>
    /// 无线设备类型
    /// wirelesstype
    /// </summary>
    public enum EM_A_NET_WIRELESSDEV_LOWPOWER_TYPE
    {
        /// <summary>
        /// 未知设备
        /// unknowndevice
        /// </summary>
        NET_WIRELESSDEV_UNKNOWN = 0,
        /// <summary>
        /// 无线遥控器
        /// wirelesscontrol
        /// </summary>
        NET_WIRELESSDEV_CONTROL = 1,
        /// <summary>
        /// 无线防区
        /// wirelessdefence
        /// </summary>
        NET_WIRELESSDEV_DEFENCE = 2,
        /// <summary>
        /// 无线键盘
        /// wirelessKeyBoard
        /// </summary>
        NET_WIRELESSDEV_KEYBOARD = 3,
        /// <summary>
        /// 无线门磁 此字段协议上已废弃
        /// Wireless door sensor This field is obsolete on the protocol
        /// </summary>
        NET_WIRELESSDEV_MAGNETOMER = 4,
        /// <summary>
        /// 无线警号
        /// wirelessAlarmBell
        /// </summary>
        NET_WIRELESSDEV_ALARMBELL = 5,
        /// <summary>
        /// 智能锁
        /// smartlock
        /// </summary>
        NET_WIRELESSDEV_SMARTLOCK = 6,
    }

    /// <summary>
    /// 无线设备低电量报警事件结构体
    /// report event of lowpower wireless
    /// </summary>
    public struct NET_A_ALARM_WIRELESSDEV_LOWPOWER_INFO
    {
        /// <summary>
        /// 是否为低电量true低电量,false 电量正常,unknown未知
        /// lowpower event:true lowpower,false narmal, unknown Unknown
        /// </summary>
        public EM_A_NET_THREE_STATUS_BOOL emResult;
        /// <summary>
        /// 事件发生的时间
        /// event time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 无线设备ID 此字段协议上已废弃
        /// Wireless device ID This field is obsolete on the protocol
        /// </summary>
        public int nId;
        /// <summary>
        /// 无线设备类型
        /// wirelessdevice type
        /// </summary>
        public EM_A_NET_WIRELESSDEV_LOWPOWER_TYPE emType;
        /// <summary>
        /// 无线配件序列号
        /// wirelessdevice Serial Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 电量百分比
        /// battery percentage
        /// </summary>
        public float fPercent;
        /// <summary>
        /// 通道号或探测器地址
        /// channel
        /// </summary>
        public int nIndex;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 预留
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 984)]
        public byte[] reserved;
    }

    /// <summary>
    /// 总线类型
    /// BUS type
    /// </summary>
    public enum EM_A_NET_BUS_TYPE
    {
        NET_BUS_TYPE_UNKNOWN = 0,
        /// <summary>
        /// M-BUS总线
        /// M-BUS
        /// </summary>
        NET_BUS_TYPE_MBUS,
        /// <summary>
        /// RS-485总线
        /// RS-485
        /// </summary>
        NET_BUS_TYPE_RS485,
        /// <summary>
        /// CAN总线
        /// CAN
        /// </summary>
        NET_BUS_TYPE_CAN,
        /// <summary>
        /// 网络设备
        /// internet device
        /// </summary>
        NET_BUS_TYPE_NET,
    }

    /// <summary>
    /// 扩展模块掉线事件 对应事件类型 ALARM_MODULE_LOST
    /// expansion module offline event corresponding to event type ALARM_MODULE_LOST
    /// </summary>
    public struct NET_A_ALARM_MODULE_LOST_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 事件上报时间
        /// event report time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 扩展模块接的总线的序号(从0开始)
        /// expansion module BUS no.(from 0)
        /// </summary>
        public int nSequence;
        /// <summary>
        /// 总线类型
        /// BUS type
        /// </summary>
        public EM_A_NET_BUS_TYPE emBusType;
        /// <summary>
        /// 掉线的扩展模块数目
        /// offline expansion module quantity
        /// </summary>
        public int nAddr;
        /// <summary>
        /// 掉线的扩展模块的序号(从0开始)
        /// offline expansionmodule no.(from 0)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] anAddr;
        /// <summary>
        /// 设备类型 "SmartLock",是级联设备;当设备类型"AlarmDefence"接口序号为报警序号
        /// "LiftController":梯控设备
        /// device type "SmartLock"when type of"AlarmDefence"Index address is Alarm number
        /// "LiftController":lift controller
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDevType;
        /// <summary>
        /// 在线情况,默认FALSE. false:不在线；true:在线
        /// Online status. The default setup is false. False=offline, true=online
        /// </summary>
        public bool bOnline;
        /// <summary>
        /// 无线配件序列号
        /// wirelessdevice Serial Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// 探测器状态
    /// sensor status
    /// </summary>
    public enum EM_SENSOR_ABNORMAL_STATUS
    {
        NET_SENSOR_ABNORMAL_STATUS_UNKNOWN,
        /// <summary>
        /// 短路
        /// short
        /// </summary>
        NET_SENSOR_ABNORMAL_STATUS_SHORT,
        /// <summary>
        /// 断路
        /// break
        /// </summary>
        NET_SENSOR_ABNORMAL_STATUS_BREAK,
        /// <summary>
        /// 被拆开
        /// intrided
        /// </summary>
        NET_SENSOR_ABNORMAL_STATUS_INTRIDED,
        /// <summary>
        /// 防遮挡
        /// Mask
        /// </summary>
        NET_SENSOR_ABNORMAL_STATUS_MASK,
        /// <summary>
        /// 正常
        /// Normal
        /// </summary>
        NET_SENSOR_ABNORMAL_STATUS_NORMAL,
        /// <summary>
        /// 离线
        /// Offline
        /// </summary>
        NET_SENSOR_ABNORMAL_STATUS_OFFLINE,
        /// <summary>
        /// 报警
        /// Alarm
        /// </summary>
        NET_SENSOR_ABNORMAL_STATUS_ALARM,
        /// <summary>
        /// 故障
        /// Fault
        /// </summary>
        NET_SENSOR_ABNORMAL_STATUS_FAULT,
    }

    /// <summary>
    /// 事件类型(ALARM_SENSOR_ABNORMAL) 探测器状态异常报警
    /// event type (ALARM_SENSOR_ABNORMAL)
    /// </summary>
    public struct NET_A_ALARM_SENSOR_ABNORMAL_INFO
    {
        /// <summary>
        /// 0:开始 1:停止
        /// 0:start 1:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 视频通道号
        /// channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件发生的时间
        /// UTC time
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// 探测器状态
        /// sensor status
        /// </summary>
        public EM_SENSOR_ABNORMAL_STATUS emStatus;
        /// <summary>
        /// SenseMethod, 感应方式,参见具体枚举定义
        /// SenseMethod, refer to the specific enumeration definition.
        /// </summary>
        public EM_SENSE_METHOD emSenseMethod;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 124)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 紧急救助事件类型
    /// Emergency Help Event Type
    /// </summary>
    public enum EM_RCEMERGENCY_CALL_TYPE
    {
        EM_RCEMERGENCY_CALL_UNKNOWN = 0,
        /// <summary>
        /// 火警
        /// Fire
        /// </summary>
        EM_RCEMERGENCY_CALL_FIRE,
        /// <summary>
        /// 胁迫
        /// Forced
        /// </summary>
        EM_RCEMERGENCY_CALL_DURESS,
        /// <summary>
        /// 匪警
        /// Robber
        /// </summary>
        EM_RCEMERGENCY_CALL_ROBBER,
        /// <summary>
        /// 医疗
        /// Medical
        /// </summary>
        EM_RCEMERGENCY_CALL_MEDICAL,
        /// <summary>
        /// 紧急
        /// Emergency
        /// </summary>
        EM_RCEMERGENCY_CALL_EMERGENCY,
        /// <summary>
        /// 恐慌
        /// Panic
        /// </summary>
        EM_RCEMERGENCY_CALL_PANIC,
        /// <summary>
        /// / 燃气
        /// Gas
        /// </summary>
        EM_RCEMERGENCY_CALL_GAS,
        /// <summary>
        /// / 入侵
        /// Intrusion
        /// </summary>
        EM_RCEMERGENCY_CALL_INTRUSION,
        /// <summary>
        /// / 双按钮紧急按钮报警类型
        /// Double button emergency button alarm type
        /// </summary>
        EM_RCEMERGENCY_CALL_HOLDUP,
    }

    /// <summary>
    /// 报警方式
    /// alarm method
    /// </summary>
    public enum EM_RCEMERGENCY_MODE_TYPE
    {
        EM_RCEMERGENCY_MODE_UNKNOWN = 0,
        /// <summary>
        /// 键盘
        /// keyboard
        /// </summary>
        EM_RCEMERGENCY_MODE_KEYBOARD,
        /// <summary>
        /// 遥控器
        /// remote control
        /// </summary>
        EM_RCEMERGENCY_MODE_WIRELESS_CONTROL,
    }

    /// <summary>
    /// 紧急救助事件详情
    /// Emergency Help Event Details
    /// </summary>
    public struct NET_A_ALARM_RCEMERGENCY_CALL_INFO
    {
        public uint dwSize;
        /// <summary>
        /// -1:未知 0:开始 1:停止
        /// 0:start 1:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 紧急类型
        /// emergency type
        /// </summary>
        public EM_RCEMERGENCY_CALL_TYPE emType;
        /// <summary>
        /// 事件发生时间
        /// event time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 报警方式
        /// alarm method
        /// </summary>
        public EM_RCEMERGENCY_MODE_TYPE emMode;
        /// <summary>
        /// 用于标示不同的紧急事件(只有emMode是遥控器类型时有效, 表示遥控器的编号, 0表示无效ID)
        /// for different emergency events (only emMode is remote control type, it is valid , means remote control no. , 0 means invalid ID)
        /// </summary>
        public uint dwID;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 延时上传序号
        /// Delay Upload Seq
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDelayUploadSeq;
        /// <summary>
        /// 保留字节
        /// Reserved Byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szResvered;
    }

    /// <summary>
    /// 电池电压过低报警
    /// battery low power alarm info
    /// </summary>
    public struct NET_A_ALARM_BATTERYLOWPOWER_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 0:开始 1:停止
        /// 0:start 1:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 剩余电量百分比,单位%
        /// battery left, unit:%
        /// </summary>
        public int nBatteryLeft;
        /// <summary>
        /// 事件发生时间
        /// event happen time
        /// </summary>
        public NET_TIME stTime;
        /// <summary>
        /// 通道号, 标识子设备电池, 从0开始
        /// channel no. Mark sub-device battery. Begins with 0.
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// GPS信息
        /// GPS info
        /// </summary>
        public NET_GPS_STATUS_INFO stGPSStatus;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// 电源类型
    /// Power Type
    /// </summary>
    public enum EM_POWER_TYPE
    {
        /// <summary>
        /// 主电源
        /// Main Power
        /// </summary>
        EM_POWER_TYPE_MAIN = 0,
        /// <summary>
        /// 备用电源
        /// Spare Power
        /// </summary>
        EM_POWER_TYPE_BACKUP,
    }

    /// <summary>
    /// 电源故障事件类型
    /// the Type of Power Fault Event
    /// </summary>
    public enum EM_POWERFAULT_EVENT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_POWERFAULT_EVENT_UNKNOWN = -1,
        /// <summary>
        /// 掉电、电池不在位
        /// Power down, has no battery
        /// </summary>
        EM_POWERFAULT_EVENT_LOST = 0,
        /// <summary>
        /// 适配器不在位
        /// Has no adapter
        /// </summary>
        EM_POWERFAULT_EVENT_LOST_ADAPTER,
        /// <summary>
        /// 电池欠压
        /// Battery under voltage
        /// </summary>
        EM_POWERFAULT_EVENT_LOW_BATTERY,
        /// <summary>
        /// 适配器欠压
        /// Adapter under voltage
        /// </summary>
        EM_POWERFAULT_EVENT_LOW_ADAPTER,
        /// <summary>
        /// 适配器欠压,电池掉电
        /// Low Adapter Lost Battery
        /// </summary>
        EM_POWERFAULT_EVENT_LOW_ADAPTER_LOST_BATTERY,
        /// <summary>
        /// 适配器低压供电,电池欠压
        /// Less Adapter Low Battery
        /// </summary>
        EM_POWERFAULT_EVENT_LESS_ADAPTER_LOW_BATTERY,
        /// <summary>
        /// 适配器低压供电,电池掉电
        /// Less Adapter Lost Battery
        /// </summary>
        EM_POWERFAULT_EVENT_LESS_ADAPTER_LOST_BATTERY,
        /// <summary>
        /// 适配器与电池都掉电
        /// Lost Adapter Lost Battery
        /// </summary>
        EM_POWERFAULT_EVENT_LOST_ADAPTER_LOST_BATTERY,
        /// <summary>
        /// 适配器与电池都欠压
        /// Low Adapter Low Battery
        /// </summary>
        EM_POWERFAULT_EVENT_LOW_ADAPTER_LOW_BATTERY,
    }

    /// <summary>
    /// 电源故障事件
    /// Power Fault Event
    /// </summary>
    public struct NET_A_ALARM_POWERFAULT_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 电源类型
        /// Power Type
        /// </summary>
        public EM_POWER_TYPE emPowerType;
        /// <summary>
        /// 电源故障事件
        /// Power Fault Event
        /// </summary>
        public EM_POWERFAULT_EVENT_TYPE emPowerFaultEvent;
        /// <summary>
        /// 报警事件发生的时间
        /// Alarm Event Begin Time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 0:开始 1:停止
        /// 0=Start 1=Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// 防区类型
    /// defence area type
    /// </summary>
    public enum EM_DEFENCE_AREA_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown area
        /// </summary>
        EM_DEFENCE_AREA_TYPE_UNKNOWN,
        /// <summary>
        /// 立即防区
        /// Intime area
        /// </summary>
        EM_DEFENCE_AREA_TYPE_INTIME,
        /// <summary>
        /// 延时防区
        /// Delay area
        /// </summary>
        EM_DEFENCE_AREA_TYPE_DELAY,
        /// <summary>
        /// 延时防区2
        /// Delay2 area
        /// </summary>
        EM_DEFENCE_AREA_TYPE_DELAY2,
        /// <summary>
        /// 跟随防区
        /// Follow area
        /// </summary>
        EM_DEFENCE_AREA_TYPE_FOLLOW,
        /// <summary>
        /// 退出防区
        /// Exitend area
        /// </summary>
        EM_DEFENCE_AREA_TYPE_EXITEND,
        /// <summary>
        /// 24小时防区
        /// Fullday area
        /// </summary>
        EM_DEFENCE_AREA_TYPE_FULLDAY,
        /// <summary>
        /// 火警防区
        /// Fir area
        /// </summary>
        EM_DEFENCE_AREA_TYPE_FIRE,
        /// <summary>
        /// 恐慌防区
        /// Panic area
        /// </summary>
        EM_DEFENCE_AREA_TYPE_PANIC,
        /// <summary>
        /// 匪警防区
        /// Robbery area
        /// </summary>
        EM_DEFENCE_AREA_TYPE_ROBBERY,
        /// <summary>
        /// 医疗紧急防区
        /// Medical area
        /// </summary>
        EM_DEFENCE_AREA_TYPE_MEDICAL,
        /// <summary>
        /// key防区
        /// key area
        /// </summary>
        EM_DEFENCE_AREA_TYPE_KEY,
    }

    /// <summary>
    /// 区域报警触发类型
    /// area alarm trigger type
    /// </summary>
    public enum EM_AREAALARM_TRIGGER_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_AREAALARM_TRIGGER_TYPE_UNKNOWN,
        /// <summary>
        /// 通道打开
        /// Open
        /// </summary>
        EM_AREAALARM_TRIGGER_TYPE_ALARM,
        /// <summary>
        /// 通道防拆
        /// Tamper
        /// </summary>
        EM_AREAALARM_TRIGGER_TYPE_TAMPER,
        /// <summary>
        /// 通道遮挡
        /// Mask
        /// </summary>
        EM_AREAALARM_TRIGGER_TYPE_MASK,
        /// <summary>
        /// 通道防短
        /// Short
        /// </summary>
        EM_AREAALARM_TRIGGER_TYPE_SHORT,
    }

    /// <summary>
    /// 区域报警事件(对应事件 ALARM_AREAALARM)
    /// alarm of area alarm(Corresponding to ALARM_AREAALARM)
    /// </summary>
    public struct NET_A_ALARM_AREAALARM_INFO
    {
        /// <summary>
        /// 区域号
        /// Area ID
        /// </summary>
        public int nAreaIndex;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件发生的时间
        /// Event occurrence time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 名称
        /// Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 防区类型
        /// Defence area type
        /// </summary>
        public EM_DEFENCE_AREA_TYPE emDefenceAreaType;
        /// <summary>
        /// 触发的通道号
        /// Channel ID
        /// </summary>
        public int nIndex;
        /// <summary>
        /// 触发类型
        /// trigger type
        /// </summary>
        public EM_AREAALARM_TRIGGER_TYPE emTrigerType;
        /// <summary>
        /// 保留扩展字节
        /// Reserved Byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// RF干扰上报事件 (对应 ALARM_RF_JAMMING)
    /// RF interference alarm reporting event(corresponding to ALARM_RF_JAMMING)
    /// </summary>
    public struct NET_ALARM_RF_JAMMING_INFO
    {
        /// <summary>
        /// 事件动作 0:脉冲
        /// Event action 0: pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// 通道号
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 事件发生的时间,标准的（不带时区偏差的）UTC时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 设备名称
        /// device name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szDeviceName;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 布撤防类型
    /// arm type
    /// </summary>
    public enum EM_ARM_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ARM_TYPE_UNKNOWN,
        /// <summary>
        /// Total布防
        /// Total arming
        /// </summary>
        EM_ARM_TYPE_TOTAL_ARMING,
        /// <summary>
        /// partial1布防
        /// partial1 arming
        /// </summary>
        EM_ARM_TYPE_PARTIAL1_ARMING,
        /// <summary>
        /// partial2布防
        /// partial2 arming
        /// </summary>
        EM_ARM_TYPE_PARTIAL2_ARMING,
        /// <summary>
        /// partial1+2布防
        /// partial1+2 arming
        /// </summary>
        EM_ARM_TYPE_PARTIAL_ARMING,
        /// <summary>
        /// 强制布防
        /// Force arming
        /// </summary>
        EM_ARM_TYPE_DENFENCE_ARMING,
        /// <summary>
        /// 撤防
        /// disarming
        /// </summary>
        EM_ARM_TYPE_DISARMING,
    }

    /// <summary>
    /// 布防失败上报事件 (对应 ALARM_ARMING_FAILURE)
    /// reporting event of deployment failure (corresponding to ALARM_ARMING_FAILURE)
    /// </summary>
    public struct NET_ALARM_ARMING_FAILURE_INFO
    {
        /// <summary>
        /// 事件动作 0:脉冲
        /// Event action 0: pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// 通道号
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 事件发生的时间,标准的（不带时区偏差的）UTC时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 布撤防模式
        /// Deployment and removal mode
        /// </summary>
        public EM_ARM_TYPE emMode;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 操作类型枚举
    /// Operation type enumeration
    /// </summary>
    public enum EM_A_NET_EVENT_OPERATE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unkown
        /// </summary>
        NET_EVENT_OPERATE_TYPE_UNKOWN = 0,
        /// <summary>
        /// 增加
        /// add
        /// </summary>
        NET_EVENT_OPERATE_TYPE_ADD,
        /// <summary>
        /// 删除
        /// delete
        /// </summary>
        NET_EVENT_OPERATE_TYPE_DELETE,
        /// <summary>
        /// 修改
        /// modify
        /// </summary>
        NET_EVENT_OPERATE_TYPE_MODIFY,
    }

    /// <summary>
    /// 用户类型枚举
    /// user type enumeration
    /// </summary>
    public enum EM_A_NET_EVENT_USER_TYPE
    {
        /// <summary>
        /// 未知
        /// Unkown
        /// </summary>
        NET_EVENT_USER_TYPE_UNKOWN = 0,
        /// <summary>
        /// 键盘
        /// keypad
        /// </summary>
        NET_EVENT_USER_TYPE_KEYPAD,
    }

    /// <summary>
    /// 用户信息被修改(增加、删除、修改)上报事件 (对应 ALARM_USER_MODIFIED)
    /// reporting event when user information is modified (added, deleted, modified) (corresponding to ALARM_USER_MODIFIED)
    /// </summary>
    public struct NET_ALARM_USER_MODIFIED_INFO
    {
        /// <summary>
        /// 事件动作 0:脉冲
        /// Event action 0: pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// 通道号
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 用户名称
        /// username
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUser;
        /// <summary>
        /// 操作类型
        /// Operation type
        /// </summary>
        public EM_A_NET_EVENT_OPERATE_TYPE emOpType;
        /// <summary>
        /// 用户类型
        /// user type
        /// </summary>
        public EM_A_NET_EVENT_USER_TYPE emUserType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 手动测试上报事件 (对应 ALARM_MANUAL_TEST)
    /// Manually test alarm reporting events (corresponding to ALARM_MANUAL_TEST)
    /// </summary>
    public struct NET_ALARM_MANUAL_TEST_INFO
    {
        /// <summary>
        /// 事件动作 0:脉冲
        /// Event action 0: pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// 通道号
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 事件发生的时间,标准的（不带时区偏差的）UTC时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 配件序列号
        /// Accessory serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 配件名称
        /// Accessory name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
        /// <summary>
        /// 配件所属区域名称
        /// Name of the area to which the accessories belong
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAreaName;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 设备类型枚举
    /// device type enumeration
    /// </summary>
    public enum EM_A_NET_EVENT_DEVICE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unkown
        /// </summary>
        NET_EVENT_DEVICE_TYPE_UNKOWN = 0,
        /// <summary>
        /// 卡片
        /// card
        /// </summary>
        NET_EVENT_DEVICE_TYPE_CARD,
    }

    /// <summary>
    /// 设备设息修改(增加、删除、修改)上报事件 (对应 ALARM_DEVICE_MODIFIED)
    /// reporting events for equipment setting modification (addition, deletion, modification) (corresponding to ALARM_DEVICE_MODIFIED)
    /// </summary>
    public struct NET_ALARM_DEVICE_MODIFIED_INFO
    {
        /// <summary>
        /// 事件动作 0:脉冲
        /// Event action 0: pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// 通道号
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 事件发生的时间,标准的（不带时区偏差的）UTC时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 用户名称
        /// username
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUser;
        /// <summary>
        /// 操作类型
        /// Operation type
        /// </summary>
        public EM_A_NET_EVENT_OPERATE_TYPE emOpType;
        /// <summary>
        /// 设备类型
        /// device type
        /// </summary>
        public EM_A_NET_EVENT_DEVICE_TYPE emDeviceType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 报警传输系统故障上报事件 (对应 ALARM_ATS_FAULT)
    /// transmission system fault reporting event (corresponding to ALARM_ATS_FAULT)
    /// </summary>
    public struct NET_ALARM_ATS_FAULT_INFO
    {
        /// <summary>
        /// 事件动作, 1:开始 2:停止
        /// Event action 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 通道号
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 事件发生的时间,标准的（不带时区偏差的）UTC时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 报警接收中心离线上报事件 (对应 ALARM_ARC_OFFLINE)
    /// receiving center offline reporting event (corresponding to ALARM_ARC_OFFLINE)
    /// </summary>
    public struct NET_ALARM_ARC_OFFLINE_INFO
    {
        /// <summary>
        /// 事件动作, 1:开始 2:停止
        /// Event action 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 通道号
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 事件发生的时间,标准的（不带时区偏差的）UTC时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// ARC通讯异常描述信息
        /// ARC communication exception description information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDetail;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 所属区域信息结构体
    /// Region information struct
    /// </summary>
    public struct NET_EVENT_AREAR_INFO
    {
        /// <summary>
        /// 所属区域名称
        /// Area name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 所属区域编号
        /// Area number
        /// </summary>
        public int nIndex;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRsd;
    }

    /// <summary>
    /// wifi故障上报事件 (对应 ALARM_WIFI_FAILURE)
    /// WiFi fault reporting event (corresponding to ALARM_WIFI_FAILURE)
    /// </summary>
    public struct NET_ALARM_WIFI_FAILURE_INFO
    {
        /// <summary>
        /// 事件动作, 1:开始 2:停止
        /// Event action 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件发生的时间,标准的（不带时区偏差的）UTC时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 配件序列号
        /// Accessory serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 配件名称
        /// Accessory name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// wifi故障错误码 1:未知错误;2:无效的网络名称;3:无效的网络口令;4:网络故障
        /// WiFi fault error code 1: unknown error; 2: Invalid network name; 3: Invalid network password; 4: Network failure
        /// </summary>
        public int nErrorCode;
        /// <summary>
        /// 所属区域信息个数
        /// Region information number
        /// </summary>
        public int nAreaInfoNum;
        /// <summary>
        /// 所属区域信息
        /// Region information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_EVENT_AREAR_INFO[] stuAreaInfo;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 温过高上报事件 (对应 ALARM_OVER_TEMPERATURE)
    /// Over  reporting event (corresponding to ALARM_OVER_TEMPERATURE)
    /// </summary>
    public struct NET_ALARM_OVER_TEMPERATURE_INFO
    {
        /// <summary>
        /// 事件动作 0:脉冲
        /// Event action 0: pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// 通道号
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 事件发生的时间,标准的（不带时区偏差的）UTC时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 配件序列号
        /// Accessory serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 配件名称
        /// Accessory name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 类型 0:温度恢复正常;1:温度超过下限;2:温度超过上限
        ///  type 0: the  returns to normal;
        /// 1: The  exceeds the lower limit; 2:  exceeds upper limit
        /// </summary>
        public int nTemperatureType;
        /// <summary>
        /// 所属区域信息个数
        /// Region information number
        /// </summary>
        public int nAreaInfoNum;
        /// <summary>
        /// 所属区域信息
        /// Region information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_EVENT_AREAR_INFO[] stuAreaInfo;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 区域防区操作方式
    /// Trigger mode
    /// </summary>
    public enum EM_AREAARM_TRIGGERMODE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_AREAARM_TRIGGERMODE_UNKNOWN,
        /// <summary>
        /// 键盘
        /// Keypad
        /// </summary>
        EM_AREAARM_TRIGGERMODE_KEYPAD,
        /// <summary>
        /// 遥控器
        /// Remote control
        /// </summary>
        EM_AREAARM_TRIGGERMODE_REMOTECONTROL,
        /// <summary>
        /// 用户操作
        /// User
        /// </summary>
        EM_AREAARM_TRIGGERMODE_USER,
        /// <summary>
        /// 本地
        /// Local
        /// </summary>
        EM_AREAARM_TRIGGERMODE_LOCAL,
        /// <summary>
        /// 定时器
        /// timer
        /// </summary>
        EM_AREAARM_TRIGGERMODE_TIMER,
        /// <summary>
        /// Key类型防区
        /// Key type defense area
        /// </summary>
        EM_AREAARM_TRIGGERMODE_KEY,
        /// <summary>
        /// 远程操作(电话反控、短信反控、手机App、平台客户端等)
        /// Remote operation (telephone anti control, SMS anti control, mobile app, platform client, etc.)
        /// </summary>
        EM_AREAARM_TRIGGERMODE_REMOTE,
        /// <summary>
        /// DSS平台客户端
        /// DSS Platform client
        /// </summary>
        EM_AREAARM_TRIGGERMODE_DSS,
        /// <summary>
        /// DSSPro平台客户端
        /// DSSPro Platform client
        /// </summary>
        EM_AREAARM_TRIGGERMODE_DSSPRO,
        /// <summary>
        /// 手机客户端
        /// Mobile client
        /// </summary>
        EM_AREAARM_TRIGGERMODE_DMSS,
    }

    /// <summary>
    /// 区域防区操作用户
    /// User
    /// </summary>
    public enum EM_AREAARM_USER
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_AREAARM_USER_UNKNOWN,
        /// <summary>
        /// 
        /// 
        /// </summary>
        EM_AREAARM_USER_SUPERVISOR,
        /// <summary>
        /// 管理用户
        /// Manager
        /// </summary>
        EM_AREAARM_USER_MANAGER,
        /// <summary>
        /// 主用户
        /// ZYH
        /// </summary>
        EM_AREAARM_USER_MASTER,
        /// <summary>
        /// 普通用户
        /// User
        /// </summary>
        EM_AREAARM_USER_USER,
        /// <summary>
        /// 临时用户
        /// Temporary
        /// </summary>
        EM_AREAARM_USER_TEMPORARY,
        /// <summary>
        /// 胁迫用户
        /// Duress
        /// </summary>
        EM_AREAARM_USER_DURESS,
        /// <summary>
        /// 巡逻用户
        /// Patrol
        /// </summary>
        EM_AREAARM_USER_PATROL,
    }

    /// <summary>
    /// 布撤防状态
    /// Arm states
    /// </summary>
    public enum EM_ARM_STATE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_ARM_STATE_UNKNOWN,
        /// <summary>
        /// Total布防
        /// Total
        /// </summary>
        EM_ARM_STATE_TOTAL_ARMING,
        /// <summary>
        /// partial1布防
        /// partial1
        /// </summary>
        EM_ARM_STATE_PARTIAL1_ARMING,
        /// <summary>
        /// partial2布防
        /// partial2
        /// </summary>
        EM_ARM_STATE_PARTIAL2_ARMING,
        /// <summary>
        /// partial1+2布防
        /// partial1+2
        /// </summary>
        EM_ARM_STATE_PARTIAL1_PARTIAL2_ARMING,
        /// <summary>
        /// 强制布防
        /// force arming
        /// </summary>
        EM_ARM_STATE_FORCEARMING,
        /// <summary>
        /// 撤防
        /// disarming
        /// </summary>
        EM_ARM_STATE_DISARMING,
    }

    /// <summary>
    /// 区域防区模式改变事件(对应事件 ALARM_AREAARM_MODECHANGE)
    /// alarm of area arm mode change(Corresponding to ALARM_AREAARM_MODECHANGE)
    /// </summary>
    public struct NET_A_ALARM_AREAARM_MODECHANGE_INFO
    {
        /// <summary>
        /// 区域编号
        /// Area ID
        /// </summary>
        public int nAreaIndex;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件发生的时间
        /// Event occurrence time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 操作方式
        /// Trigger mode
        /// </summary>
        public EM_AREAARM_TRIGGERMODE emTriggerMode;
        /// <summary>
        /// 操作用户，仅emTriggerMode = EM_AREAARM_USER_USER时有效
        /// user,useful when emTriggerMode = EM_AREAARM_USER_USER
        /// </summary>
        public EM_AREAARM_USER emUser;
        /// <summary>
        /// ID号,emTriggerMode = EM_AREAARM_TRIGGERMODE_KEYPAD
        /// 表示键盘地址;emTriggerMode =EM_AREAARM_TRIGGERMODE_REMOTECONTROL时表示遥控器编号
        /// ID,emTriggerMode = EM_AREAARM_TRIGGERMODE_KEYPAD
        /// keypad address;emTriggerMode =EM_AREAARM_TRIGGERMODE_REMOTECONTROL remote control ID
        /// </summary>
        public uint nID;
        /// <summary>
        /// 布撤防状态
        /// arm state
        /// </summary>
        public EM_ARM_STATE emArmState;
        /// <summary>
        /// 保留扩展字节
        /// Reserved Byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_GetWaterDataStatServerCaps 输入参数
    /// CLIENT_GetWaterDataStatServerCaps input parameter
    /// </summary>
    public struct NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 当前是否具备水质检测功能
    /// Does it have water quality detection function at present
    /// </summary>
    public enum EM_WATERDATA_STAT_SERVER_SUPPORT
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_WATERDATA_STAT_SERVER_SUPPORT_UNKNOWN = -1,
        /// <summary>
        /// 不支持
        /// Not support
        /// </summary>
        EM_WATERDATA_STAT_SERVER_SUPPORT_NO,
        /// <summary>
        /// 支持
        /// support
        /// </summary>
        EM_WATERDATA_STAT_SERVER_SUPPORT_YES,
    }

    /// <summary>
    /// 是否支持本地存储
    /// Does it support local storage
    /// </summary>
    public enum EM_SUPPORT_LOCALDATA_STORE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_SUPPORT_LOCALDATA_STORE_UNKNOWN = -1,
        /// <summary>
        /// 不支持
        /// Not support
        /// </summary>
        EM_SUPPORT_LOCALDATA_STORE_NO,
        /// <summary>
        /// 支持
        /// support
        /// </summary>
        EM_SUPPORT_LOCALDATA_STORE_YES,
    }

    /// <summary>
    /// CLIENT_GetWaterDataStatServerCaps 输出参数
    /// CLIENT_GetWaterDataStatServerCaps Output parameters
    /// </summary>
    public struct NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 当前是否具备水质检测功能
        /// Does it have water quality detection function at present
        /// </summary>
        public EM_WATERDATA_STAT_SERVER_SUPPORT emSupport;
        /// <summary>
        /// 是否支持本地存储
        /// Does it support local storage
        /// </summary>
        public EM_SUPPORT_LOCALDATA_STORE emSupportLocalDataStore;
    }

    /// <summary>
    /// 事件报警类型
    /// Event alarm type
    /// </summary>
    public enum EM_WATER_DETECTION_ALARM_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_UNKNOWN,
        /// <summary>
        /// 水质类别
        /// Water quality category
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_QUALITY,
        /// <summary>
        /// PH
        /// PH
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_PH,
        /// <summary>
        /// 浊度值
        /// Turbidity value
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_NTU,
        /// <summary>
        /// 氨氮值
        /// Ammonia nitrogen value
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_NH3_N,
        /// <summary>
        /// 总氮值
        /// Total nitrogen value
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_TN,
        /// <summary>
        /// 透明度值
        /// Transparency value
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_SD,
        /// <summary>
        /// 化学需氧量
        /// Chemical oxygen demand
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_COD,
        /// <summary>
        /// 亚硝酸盐氮
        /// Nitrite nitrogen
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_NN,
        /// <summary>
        /// 溶解氧
        /// dissolved oxygen
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_DO,
        /// <summary>
        /// 叶绿素a
        /// Chlorophyll a
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_CHL_A,
        /// <summary>
        /// 总磷
        /// Total phosphorus
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_TP,
        /// <summary>
        /// 高锰酸盐指数范围
        /// Permanganate index range
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_CODMN,
        /// <summary>
        /// 悬浮物
        /// Suspended solids
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_SS,
        /// <summary>
        /// 五日生化需氧量
        /// Five day biochemical oxygen demand
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_BOD_5,
        /// <summary>
        /// 硝酸盐
        /// Nitrate
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_NO3_N,
        /// <summary>
        /// 富营养状况指数
        /// Eutrophication index
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_TSI,
        /// <summary>
        /// 黑臭等级
        /// Smelly level
        /// </summary>
        EM_WATER_DETECTION_ALARM_TYPE_SMELLY_LEVEL,
    }

    /// <summary>
    /// 水质检测数据查询条件
    /// Query conditions of water quality test data
    /// </summary>
    public struct NET_START_FIND_WATERDATA_CONDITION
    {
        /// <summary>
        /// 开始时间
        /// Start time
        /// </summary>
        public NET_TIME_EX stuStartTime;
        /// <summary>
        /// 检测类型
        /// Detection type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_WATER_DETECTION_ALARM_TYPE[] emType;
        /// <summary>
        /// 检测类型个数
        /// Number of detection types
        /// </summary>
        public int nTypeNum;
        /// <summary>
        /// 预置点个数
        /// Number of preset points
        /// </summary>
        public int nPresetIDNum;
        /// <summary>
        /// 预置点
        /// Preset
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nPresetID;
        /// <summary>
        /// 结束时间
        /// End time
        /// </summary>
        public NET_TIME_EX stuEndTime;
        /// <summary>
        /// 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_StartFindWaterDataStatServer 输入参数
    /// CLIENT_StartFindWaterDataStatServer input parameter
    /// </summary>
    public struct NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 水质检测数据查询条件
        /// Query conditions of water quality test data
        /// </summary>
        public NET_START_FIND_WATERDATA_CONDITION stuCondition;
    }

    /// <summary>
    /// CLIENT_StartFindWaterDataStatServer 输出参数
    /// CLIENT_StartFindWaterDataStatServer Output parameters
    /// </summary>
    public struct NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 取到的查询令牌
        /// Retrieved query token
        /// </summary>
        public uint nToken;
        /// <summary>
        /// 符合此次查询条件的结果总条数
        /// Total number of results that meet the query criteria
        /// </summary>
        public uint nTotalCount;
    }

    /// <summary>
    /// CLIENT_DoFindWaterDataStatServer 输入参数
    /// CLIENT_DoFindWaterDataStatServer input parameter
    /// </summary>
    public struct NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 查询令牌
        /// Query token
        /// </summary>
        public uint nToken;
        /// <summary>
        /// 查询起始序号, 表示从beginNumber条记录开始,取count条记录返回
        /// Query the start sequence number, which means that it starts from beginnumber records and returns count records
        /// </summary>
        public uint nBeginNumber;
        /// <summary>
        /// 每次查询的流量统计条数
        /// Number of traffic statistics per query
        /// </summary>
        public int nCount;
    }

    /// <summary>
    /// 流量统计信息
    /// Traffic statistics
    /// </summary>
    public struct NET_WATERDATA_STAT_SERVER_INFO
    {
        /// <summary>
        /// 开始时间
        /// Start time
        /// </summary>
        public NET_TIME_EX stuStartTime;
        /// <summary>
        /// 水质类别
        /// Water quality category
        /// </summary>
        public EM_WATER_QUALITY emQuality;
        /// <summary>
        /// 水质检测上报数据信息
        /// Water quality test report data information
        /// </summary>
        public NET_WATER_DETECTION_UPLOAD_INFO stuUploadInfo;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_DoFindWaterDataStatServer 输出参数
    /// CLIENT_DoFindWaterDataStatServer Output parameters
    /// </summary>
    public struct NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 查询到的条数
        /// Number of queries
        /// </summary>
        public uint nFound;
        /// <summary>
        /// 流量统计信息个数
        /// Number of traffic statistics
        /// </summary>
        public int nInfoNum;
        /// <summary>
        /// 流量统计信息
        /// Traffic statistics
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_WATERDATA_STAT_SERVER_INFO[] stuInfo;
    }

    /// <summary>
    /// CLIENT_StopFindWaterDataStatServer 输入参数
    /// CLIENT_StopFindWaterDataStatServer input parameter
    /// </summary>
    public struct NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 查询令牌
        /// Query token
        /// </summary>
        public uint nToken;
    }

    /// <summary>
    /// CLIENT_StopFindWaterDataStatServer 输出参数
    /// CLIENT_StopFindWaterDataStatServer Output parameters
    /// </summary>
    public struct NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_GetWaterDataStatServerWaterData 输入参数
    /// CLIENT_GetWaterDataStatServerWaterData input parameter
    /// </summary>
    public struct NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 检测类型个数
        /// Number of detection types
        /// </summary>
        public int nTypeNum;
        /// <summary>
        /// 检测类型
        /// Detection type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_WATER_DETECTION_ALARM_TYPE[] emType;
    }

    /// <summary>
    /// 黑臭等级
    /// Black odor grade
    /// </summary>
    public enum EM_SMELLY_LEVEL
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_SMELLY_LEVEL_UNKNOWN,
        /// <summary>
        /// 正常
        /// normal
        /// </summary>
        EM_SMELLY_LEVEL_NORMAL,
        /// <summary>
        /// 轻度污染
        /// Light pollution
        /// </summary>
        EM_SMELLY_LEVEL_LIGHT,
        /// <summary>
        /// 重度污染
        /// Severe pollution
        /// </summary>
        EM_SMELLY_LEVEL_HEAVY,
    }

    /// <summary>
    /// 水质检测上报数据信息
    /// Water quality test report data information
    /// </summary>
    public struct NET_WATER_DETECTION_UPLOAD_INFO
    {
        /// <summary>
        /// PH值 范围(1-14)
        /// PH value range (1-14)
        /// </summary>
        public float fPH;
        /// <summary>
        /// 浊度值 范围(0-500NTU)
        /// Turbidity value range (0-500ntu)
        /// </summary>
        public float fNTU;
        /// <summary>
        /// 氨氮值 范围(0-50mg/l)
        /// Ammonia nitrogen value range (0-50mg / L)
        /// </summary>
        public float fNH3_N;
        /// <summary>
        /// 总氮值 范围(0-50mg/l)
        /// Total nitrogen value range (0-50mg / L)
        /// </summary>
        public float fTN;
        /// <summary>
        /// 透明度值 范围(0-30 m)
        /// Transparency value range (0-30 m)
        /// </summary>
        public float fSD;
        /// <summary>
        /// 化学需氧量 范围(0-100mg/l)
        /// Cod range (0-100mg / L)
        /// </summary>
        public float fCOD;
        /// <summary>
        /// 亚硝酸盐氮 范围(0-500mg/l)
        /// Nitrite nitrogen range (0-500mg / L)
        /// </summary>
        public float fNN;
        /// <summary>
        /// 溶解氧 范围(0-10 mg/l)
        /// Dissolved oxygen range (0-10 mg / L)
        /// </summary>
        public float fDO;
        /// <summary>
        /// 叶绿素a 范围(0-300 ug/l)
        /// Chlorophyll a range (0-300 UG / L)
        /// </summary>
        public float fChl_a;
        /// <summary>
        /// 总磷 范围0-5mg/L
        /// Total phosphorus range: 0-5mg / L
        /// </summary>
        public float fTP;
        /// <summary>
        /// 高锰酸盐指数范围(0-100mg/l)
        /// Permanganate index range (0-100mg / L)
        /// </summary>
        public float fCODMn;
        /// <summary>
        /// 悬浮物 范围(0-1000mg/l)
        /// Suspended solids range (0-1000mg / L)
        /// </summary>
        public float fSS;
        /// <summary>
        /// 五日生化需氧量 范围(0-50mg/l)
        /// Five day biochemical oxygen demand range (0-50mg / L)
        /// </summary>
        public float fBOD_5;
        /// <summary>
        /// 硝酸盐 范围(0-500mg/l)
        /// Nitrate range (0-500mg / L)
        /// </summary>
        public float fNO3_N;
        /// <summary>
        /// 富营养状况指数 范围无
        /// Range of eutrophication index: None
        /// </summary>
        public float fTSI;
        /// <summary>
        /// 黑臭等级
        /// Black odor grade
        /// </summary>
        public EM_SMELLY_LEVEL emSmellyLevel;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 水质类别，越小越好
    /// Water quality category, the smaller the better
    /// </summary>
    public enum EM_WATER_QUALITY
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_WATER_QUALITY_UNKNOWN,
        /// <summary>
        /// 1类
        /// Class 1
        /// </summary>
        EM_WATER_QUALITY_1,
        /// <summary>
        /// 2类
        /// Class 2
        /// </summary>
        EM_WATER_QUALITY_2,
        /// <summary>
        /// 3类
        /// Class 3
        /// </summary>
        EM_WATER_QUALITY_3,
        /// <summary>
        /// 4类
        /// Class 4
        /// </summary>
        EM_WATER_QUALITY_4,
        /// <summary>
        /// 5类
        /// Class 5
        /// </summary>
        EM_WATER_QUALITY_5,
    }

    /// <summary>
    /// CLIENT_GetWaterDataStatServerWaterData 输出参数
    /// CLIENT_GetWaterDataStatServerWaterData Output parameters
    /// </summary>
    public struct NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 水质类别，越小越好
        /// Water quality category, the smaller the better
        /// </summary>
        public EM_WATER_QUALITY emQuality;
        /// <summary>
        /// 水质检测上报数据信息
        /// Water quality test report data information
        /// </summary>
        public NET_WATER_DETECTION_UPLOAD_INFO stuUploadInfo;
        /// <summary>
        /// 参数超过阈值类型个数
        /// Number of parameter types exceeding threshold
        /// </summary>
        public int nFlunkTypeNum;
        /// <summary>
        /// 参数超过阈值类型
        /// Parameter exceeds threshold type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_WATER_DETECTION_ALARM_TYPE[] emFlunkType;
    }

    /// <summary>
    /// 存储点类型
    /// storage point type
    /// </summary>
    public enum EM_STORAGEPOINT_TYPE
    {
        /// <summary>
        /// 定时录像存储点类型
        /// Schedule record storage point type
        /// </summary>
        EM_STORAGE_TIMINGRECORD,
        /// <summary>
        /// 手动录像存储点类型
        /// Manual record storage point type
        /// </summary>
        EM_STORAGE_MANUALRECORD,
        /// <summary>
        /// 视频检测录像存储点类型
        /// Video detection record storage point type
        /// </summary>
        EM_STORAGE_VIDEODETECTRECORD,
        /// <summary>
        /// 报警录像存储点类型
        /// Alarm record storage point type
        /// </summary>
        EM_STORAGE_ALARMRECORD,
        /// <summary>
        /// 卡号录像存储点类型
        /// Card record storage point type
        /// </summary>
        EM_STORAGE_CARDRECORD,
        /// <summary>
        /// 其他事件录像存储点类型
        /// Other event record storage point type
        /// </summary>
        EM_STORAGE_EVENTRECORD,
        /// <summary>
        /// 定时抓图存储点类型
        /// Schedule snapshot storage point type
        /// </summary>
        EM_STORAGE_TIMINGSNAPSHOT,
        /// <summary>
        /// 手动抓图存储点类型
        /// Manual snapshot storage point type
        /// </summary>
        EM_STORAGE_MANUALSNAPSHOT,
        /// <summary>
        /// 视频检测抓图存储点类型
        /// Video detection snapshot storage point type
        /// </summary>
        EM_STORAGE_VIDEODETECTSNAPSHOT,
        /// <summary>
        /// 报警抓图存储点类型
        /// Alarm snapshot storage point type
        /// </summary>
        EM_STORAGE_ALARMSNAPSHOT,
        /// <summary>
        /// 卡号抓图存储点类型
        /// Card snapshot storage point type
        /// </summary>
        EM_STORAGE_CARDSNAPSHOT,
        /// <summary>
        /// 其他事件抓图存储点类型
        /// Other vent snapshot storage point type
        /// </summary>
        EM_STORAGE_EVENTSNAPSHOT,
        /// <summary>
        /// 辅码流1录像存储点类型
        /// Schedule extra1 record storage point type
        /// </summary>
        EM_STORAGE_TIMINGEXTRA1RECORD,
    }

    /// <summary>
    /// 存储点配置信息
    /// Storage point info
    /// </summary>
    public struct NET_A_CFG_STORAGEPOINT_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 存储点类型
        /// storage point type
        /// </summary>
        public EM_STORAGEPOINT_TYPE emStoragePointType;
        /// <summary>
        /// 本地工作目录组名称, 空表示不录到本地
        /// local work directory name, vacancy means does not login the local-end.
        /// </summary>
        public sbyte nLocalDir;
        /// <summary>
        /// 实时压缩存储目录组，空表示不使用实时压缩存储。
        /// real compress directory, vacancy means do not use real-time compression.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szCompressDir;
        /// <summary>
        /// 冗余工作目录组名称,空表示没有冗余录像。
        /// redundant work directory name, vacancy means there is no redundancy record.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szRedundantDir;
        /// <summary>
        /// 远程工作目录组名称,空表示不录到远程。
        /// remote work directory name, vacancy means do not login the remote path.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szRemoteDir;
        /// <summary>
        /// 远程存储网络故障恢复后，是否自动将本地存储的数据同步到远程存储。
        /// After remote storage net failure resumed, automatically synchronize local data to remote storage or not
        /// </summary>
        public bool bAutoSync;
        /// <summary>
        /// 从网络恢复的时刻开始，需要往前同步的数据时间范围，小时为单位，0表示同步所有数据。
        /// Starting when net resumed, it is the data synchronization period forward. 0 represents synchronize all data
        /// </summary>
        public uint nAutoSyncRange;
        /// <summary>
        /// 远程目录无法访问时，是否保存到本地目录。
        /// When remote directory cannot be accessed, save to local directory or not
        /// </summary>
        public bool bLocalEmergency;
        /// <summary>
        /// 设置将多少天之前的录像文件进行压缩。
        /// Set to compress file before which date.
        /// </summary>
        public uint nCompressBefore;
    }

    /// <summary>
    /// 录像存储点映射配置信息
    /// Video storage point mapping info
    /// </summary>
    public struct NET_A_CFG_RECORDTOSTORAGEPOINT_INFO
    {
        /// <summary>
        /// 存储点数目
        /// storage point number
        /// </summary>
        public int nStoragePointNum;
        /// <summary>
        /// 存储点配置信息
        /// storage point info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_A_CFG_STORAGEPOINT_INFO[] stStoragePoints;
    }

    /// <summary>
    /// 录像存储点映射配置扩展信息
    /// Video storage point extend mapping info
    /// </summary>
    public struct NET_A_CFG_RECORDTOSTORAGEPOINT_EX_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 最大录像通道配置个数
        /// max channel record
        /// </summary>
        public int nMaxChannelRecord;
        /// <summary>
        /// 实际返回通道配置个数
        /// real channel record
        /// </summary>
        public int nRetChannelRecord;
        /// <summary>
        /// 通道存储点配置信息, 由用户申请内存, 大小为sizeof(NET_A_CFG_RECORDTOSTORAGEPOINT_INFO)*nMaxChannelRecord
        /// channel record storage info , the space alloc by user, size is sizeof(NET_A_CFG_RECORDTOSTORAGEPOINT_INFO)*nMaxChannelRecord
        /// </summary>
        public IntPtr pstRecordStorage;
    }

    /// <summary>
    /// 起雾检测事件数据类型
    /// event type of fog detection
    /// </summary>
    public enum EM_FOG_DETECTION_EVENT_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_FOG_DETECTION_EVENT_TYPE_UNKNOWN,
        /// <summary>
        /// 实时数据
        /// real data
        /// </summary>
        EM_FOG_DETECTION_EVENT_TYPE_REAL,
        /// <summary>
        /// 报警数据
        /// alarm data
        /// </summary>
        EM_FOG_DETECTION_EVENT_TYPE_ALARM,
    }

    /// <summary>
    /// 雾值
    /// fog level
    /// </summary>
    public enum EM_FOG_LEVEL
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_FOG_LEVEL_UNKNOWN,
        /// <summary>
        /// 无
        /// no
        /// </summary>
        EM_FOG_LEVEL_NO,
        /// <summary>
        /// 蓝色预警
        /// blue
        /// </summary>
        EM_FOG_LEVEL_BLUE,
        /// <summary>
        /// 黄色预警
        /// yellow
        /// </summary>
        EM_FOG_LEVEL_YELLOW,
        /// <summary>
        /// 橙色预警
        /// orange
        /// </summary>
        EM_FOG_LEVEL_ORANGE,
        /// <summary>
        /// 红色预警
        /// red
        /// </summary>
        EM_FOG_LEVEL_RED,
    }

    /// <summary>
    /// 起雾检测事件雾信息
    /// fog info
    /// </summary>
    public struct NET_A_FOG_DETECTION_FOG_INFO
    {
        /// <summary>
        /// 雾等级
        /// fog level
        /// </summary>
        public EM_FOG_LEVEL emFogLevel;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_FOG_DETECTION(起雾检测事件)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_FOG_DETECTION(fog detection event)
    /// </summary>
    public struct NET_A_DEV_EVENT_FOG_DETECTION
    {
        /// <summary>
        /// 通道号
        /// channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 1:开始 2:停止
        /// 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Time stamp(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occurred time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 智能事件所属大类
        /// class type
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 事件组ID，同一辆车抓拍过程内GroupID相同
        /// Event group ID
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// 一个事件组内的抓拍张数
        /// snap amount of one event group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// 一个事件组内的抓拍序号
        /// snap index of one event group
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// 预置点号，从1开始有效
        /// preset id, start from 1
        /// </summary>
        public int nPresetID;
        /// <summary>
        /// 阈值点名称
        /// preset name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPresetName;
        /// <summary>
        /// 事件数据类型
        /// event type
        /// </summary>
        public EM_FOG_DETECTION_EVENT_TYPE emEventType;
        /// <summary>
        /// 雾信息
        /// fog info
        /// </summary>
        public NET_A_FOG_DETECTION_FOG_INFO stuFogInfo;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stFileInfo;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 目标属性数组
    /// target property array
    /// </summary>
    public struct NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO
    {
        /// <summary>
        /// 属性类型名称
        /// attribute type name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAttrTypeName;
        /// <summary>
        /// 属性值名称
        /// attribute value name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAttrValueName;
    }

    /// <summary>
    /// 检测到的目标属性信息列表
    /// List of detected target attribute information
    /// </summary>
    public struct NET_OPEN_INTELLI_OBJECT_INFO
    {
        /// <summary>
        /// 目标id
        /// target id
        /// </summary>
        public int nObjectId;
        /// <summary>
        /// 包围盒 矩形类型,8192坐标系
        /// Bounding box rectangle type, 8192 coordinate system
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 目标类型名称
        /// target type name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szObjectTypeName;
        /// <summary>
        /// 目标属性数组中的有效个数
        /// valid number in the target attribute array
        /// </summary>
        public int nObjectAttributeNums;
        /// <summary>
        /// 目标属性数组
        /// Array of target attributes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO[] stuObjectAttributes;
    }

    /// <summary>
    /// 用户数据
    /// User data
    /// </summary>
    public struct NET_OPEN_INTELLI_USER_DATA_INFO
    {
        /// <summary>
        /// 自定义报警id
        /// custom alarm id
        /// </summary>
        public int nAlarmId;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_OPEN_INTELLI (开放智能事件)对应的数据块描述信息
    /// The description information of the data block corresponding to the event type EVENT_IVS_OPEN_INTELLI (open intelligent event)
    /// </summary>
    public struct NET_A_DEV_EVENT_OPEN_INTELLI_INFO
    {
        /// <summary>
        /// 通道号
        /// channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// 0: pulse, 1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 所属开放算法的Id
        /// Id of the open algorithm it belongs to
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szOpenCode;
        /// <summary>
        /// 所属开放算法的名称
        /// The name of the open algorithm to which it belongs
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szOpenName;
        /// <summary>
        /// 所属开放算法的规则类型, 仅支持: 拌线入侵CrossLineDetection(EVENT_IVS_CROSSLINEDETECTION)、区域入侵CrossRegionDetection(EVENT_IVS_CROSSREGIONDETECTION)、滞留检测StayDetection(EVENT_IVS_STAYDETECTION)、数量统计ObjectNumDetection(EVENT_IVS_OBJECT_NUM_DETECTION)
        /// Rule type of the open algorithm, only supported: CrossLineDetection(EVENT_IVS_CROSSLINEDETECTION), CrossRegionDetection(EVENT_IVS_CROSSREGIONDETECTION), StayDetection(EVENT_IVS_STAYDETECTION), ObjectNumDetection(EVENT_IVS_OBJECT_NUM_DETECTION)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRuleType;
        /// <summary>
        /// 与开放算法的规则类型支持的带图事件类型对应的结构体对应(只解析Event Data中的字段)
        /// 拌线入侵CrossLineDetection(EVENT_IVS_CROSSLINEDETECTION) - DEV_EVENT_CROSSLINE_INFO
        /// 区域入侵CrossRegionDetection(EVENT_IVS_CROSSREGIONDETECTION) - DEV_EVENT_CROSSREGION_INFO
        /// 滞留检测StayDetection(EVENT_IVS_STAYDETECTION) - DEV_EVENT_STAY_INFO
        /// 数量统计ObjectNumDetection(EVENT_IVS_OBJECT_NUM_DETECTION) - DEV_EVENT_OBJECT_NUM_DETECTION_INFO
        /// Corresponds to the structure corresponding to the event type with graph supported by the rule type of the open algorithm (only parses the fields in Event Data)
        /// CrossLineDetection(EVENT_IVS_CROSSLINEDETECTION) - DEV_EVENT_CROSSLINE_INFO
        /// CrossRegionDetection(EVENT_IVS_CROSSREGIONDETECTION) - DEV_EVENT_CROSSREGION_INFO
        /// StayDetection(EVENT_IVS_STAYDETECTION) - DEV_EVENT_STAY_INFO
        /// ObjectNumDetection(EVENT_IVS_OBJECT_NUM_DETECTION) - DEV_EVENT_OBJECT_NUM_DETECTION_INFO
        /// </summary>
        public IntPtr pstuOpenData;
        /// <summary>
        /// 检测到的目标属性信息列表的个数
        /// number of detected target attribute information lists
        /// </summary>
        public int nObjectNums;
        /// <summary>
        /// 检测到的目标属性信息列表
        /// List of detected object attribute information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_OPEN_INTELLI_OBJECT_INFO[] stuObjects;
        /// <summary>
        /// 用户数据
        /// User data
        /// </summary>
        public NET_OPEN_INTELLI_USER_DATA_INFO stuUserData;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 探测器状态类型
    /// Detector status type
    /// </summary>
    public enum EM_DETECTOR_STATUS_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_DETECTOR_STATUS_UNKNOWN = -1,
        /// <summary>
        /// 启用所有功能
        /// enable all functions
        /// </summary>
        EM_DETECTOR_STATUS_ALLFUNCT_ENABLE,
        /// <summary>
        /// 禁用防拆功能
        /// unable anti disassembly function
        /// </summary>
        EM_DETECTOR_STATUS_ANTITAMPER_DISABLE,
        /// <summary>
        /// 禁用所有功能
        /// unable all functions
        /// </summary>
        EM_DETECTOR_STATUS_ALLFUNCT_DISABLE,
    }

    /// <summary>
    /// 设备布撤防时音量
    /// Volume of equipment during arming and disarming
    /// </summary>
    public enum EM_ACCESSORY_VOLUME
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ACCESSORY_VOLUME_UNKNOWN,
        /// <summary>
        /// 低音量
        /// low volume
        /// </summary>
        EM_ACCESSORY_VOLUME_LOW,
        /// <summary>
        /// 中音量
        /// medium volume
        /// </summary>
        EM_ACCESSORY_VOLUME_MEDIUM,
        /// <summary>
        /// 高音量
        /// high volume
        /// </summary>
        EM_ACCESSORY_VOLUME_HIGH,
    }

    /// <summary>
    /// 灵敏度
    /// Sensitivity
    /// </summary>
    public enum EM_ACCESSORY_SENSITIVITY
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ACCESSORY_SENSITIVITY_UNKNOWN,
        /// <summary>
        /// 低灵敏度
        /// low sensitivity
        /// </summary>
        EM_ACCESSORY_SENSITIVITY_LOW,
        /// <summary>
        /// 中灵敏度
        /// medium sensitivity
        /// </summary>
        EM_ACCESSORY_SENSITIVITY_MEDIUM,
        /// <summary>
        /// 高灵敏度
        /// high sensitivity
        /// </summary>
        EM_ACCESSORY_SENSITIVITY_HIGH,
    }

    /// <summary>
    /// 功率调节类型
    /// Power regulation type
    /// </summary>
    public enum EM_POWER_REGULATION_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_POWER_REGULATION_UNKNOWN = -1,
        /// <summary>
        /// 自动
        /// auto
        /// </summary>
        EM_POWER_REGULATION_AUTO,
        /// <summary>
        /// 低
        /// low
        /// </summary>
        EM_POWER_REGULATION_LOW,
        /// <summary>
        /// 中
        /// medium
        /// </summary>
        EM_POWER_REGULATION_MEDIUM,
        /// <summary>
        /// 高
        /// high
        /// </summary>
        EM_POWER_REGULATION_HIGH,
    }

    /// <summary>
    /// 在线状态
    /// Online status
    /// </summary>
    public enum EM_ONLINE_STATUS
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ONLINE_UNKNOWN,
        /// <summary>
        /// 离线
        /// offline
        /// </summary>
        EM_ONLINE_OFF,
        /// <summary>
        /// 在线
        /// online
        /// </summary>
        EM_ONLINE_ON,
    }

    /// <summary>
    /// 报警类型
    /// Alarm type
    /// </summary>
    public enum EM_ACCESSORY_ALARM_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ACCESSORY_ALARM_UNKNOWN = -1,
        /// <summary>
        /// 入侵
        /// intrusion
        /// </summary>
        EM_ACCESSORY_ALARM_INTRUSION,
        /// <summary>
        /// 火警
        /// fire alarm
        /// </summary>
        EM_ACCESSORY_ALARM_FIRE,
        /// <summary>
        /// 医疗
        /// medical care
        /// </summary>
        EM_ACCESSORY_ALARM_MEDICAL,
        /// <summary>
        /// 紧急
        /// panic
        /// </summary>
        EM_ACCESSORY_ALARM_PANIC,
        /// <summary>
        /// 燃气
        /// gas
        /// </summary>
        EM_ACCESSORY_ALARM_GAS,
        /// <summary>
        /// 双按钮紧急按钮报警类型
        /// emergency button
        /// </summary>
        EM_ACCESSORY_ALARM_HOLDUP,
    }

    /// <summary>
    /// 输入类型
    /// Input type
    /// </summary>
    public enum EM_ACCESSORY_INPUT_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ACCESSORY_INPUT_UNKNOWN = -1,
        /// <summary>
        /// 防拆
        /// anti disassembly
        /// </summary>
        EM_ACCESSORY_INPUT_TAMPER,
        /// <summary>
        /// 报警输入
        /// alarm input
        /// </summary>
        EM_ACCESSORY_INPUT_SENSOR,
    }

    /// <summary>
    /// led灯亮度
    /// LED brightness
    /// </summary>
    public enum EM_LED_BRIGHTNESS_LEVEL
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_LED_BRIGHTNESS_UNKNOWN = -1,
        /// <summary>
        /// 关闭
        /// close
        /// </summary>
        EM_LED_BRIGHTNESS_CLOSED,
        /// <summary>
        /// 亮度最低
        /// low brightness
        /// </summary>
        EM_LED_BRIGHTNESS_LOW,
        /// <summary>
        /// 亮度适中
        /// medium brightness
        /// </summary>
        EM_LED_BRIGHTNESS_MEDIUM,
        /// <summary>
        /// 亮度最高
        /// high brightness
        /// </summary>
        EM_LED_BRIGHTNESS_HIGH,
    }

    /// <summary>
    /// 操作模式
    /// Operating mode
    /// </summary>
    public enum EM_OPERATION_MODE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_OPERATION_UNKNOWN = -1,
        /// <summary>
        /// 紧急操作
        /// Emergency operation
        /// </summary>
        EM_OPERATION_PANIC,
        /// <summary>
        /// 控制操作
        /// Control operation
        /// </summary>
        EM_OPERATION_CONTROL,
        /// <summary>
        /// 静音火灾报警操作
        /// Silent fire alarm operation
        /// </summary>
        EM_OPERATION_MUTE_FIRE_ALARM,
    }

    /// <summary>
    /// 防误按模式
    /// Anti mispress mode
    /// </summary>
    public enum EM_ANTI_MISPRESS_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ANTI_MISPRESS_UNKNOWN,
        /// <summary>
        /// 按下0.1s生效
        /// press 0.1s to take effect
        /// </summary>
        EM_ANTI_MISPRESS_OFF,
        /// <summary>
        /// 长按3s有效
        /// long press for 3s
        /// </summary>
        EM_ANTI_MISPRESS_LONG,
        /// <summary>
        /// 间断1s内连续按2次
        /// press twice continuously within 1s
        /// </summary>
        EM_ANTI_MISPRESS_DOUBLE,
    }

    /// <summary>
    /// 外接电源状态
    /// External power status
    /// </summary>
    public enum EM_EXPOWER_STATE
    {
        /// <summary>
        /// 未连接
        /// disconnect
        /// </summary>
        EM_EXPOWER_DISCONNECT = 0,
        /// <summary>
        /// 连接
        /// connect
        /// </summary>
        EM_EXPOWER_CONNECT = 1,
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_EXPOWER_UNKNOWN = 2,
    }

    /// <summary>
    /// 是否启用中继转发
    /// Enable relay forwarding
    /// </summary>
    public enum EM_RELAY_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_RELAY_UNKNOWN = -1,
        /// <summary>
        /// 关闭
        /// closed
        /// </summary>
        EM_RELAY_CLOSED,
        /// <summary>
        /// 手动
        /// manual
        /// </summary>
        EM_RELAY_MANUAL,
        /// <summary>
        /// 自动
        /// auto
        /// </summary>
        EM_RELAY_AUTO,
    }

    /// <summary>
    /// 中继状态
    /// Relay status
    /// </summary>
    public struct NET_WPAN_RELAY_INFO
    {
        /// <summary>
        /// 是否启用中继转发
        /// enable relay
        /// </summary>
        public EM_RELAY_TYPE emEnable;
        /// <summary>
        /// 使用中继地址
        /// index of relay
        /// </summary>
        public int nRelayIndex;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 心跳信息
    /// Heartbeat infomation
    /// </summary>
    public struct NET_WPAN_HEARTBEAT_INFO
    {
        /// <summary>
        /// 心跳间隔，单位：秒
        /// heartbeat interval, unit: s
        /// </summary>
        public uint nInterval;
        /// <summary>
        /// 离线次数
        /// offline times
        /// </summary>
        public uint nOfflineTimes;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 配件能力集
    /// Accessory capability set
    /// </summary>
    public struct NET_WPAN_ACCESSORY_CAPS_INFO
    {
        /// <summary>
        /// 是否支持报警声音设置
        /// whether alarm sound setting is supported
        /// </summary>
        public bool bSupportAlarmTone;
        /// <summary>
        /// 是否支持读卡器
        /// whether the card reader is supported
        /// </summary>
        public bool bSupportCardReader;
        /// <summary>
        /// 是否支持门铃模式
        /// whether the doorbell mode is supported
        /// </summary>
        public bool bSupportChime;
        /// <summary>
        /// 是否支持报警
        /// whether over  alarm is supported
        /// </summary>
        public bool bSupportOverTemperatureAlarm;
        /// <summary>
        /// 是否支持外部wifi设置
        /// whether external WiFi settings are supported
        /// </summary>
        public bool bSupportExternalWifi;
        /// <summary>
        /// 是否支持wifi信息设置
        /// whether WiFi information setting is supported
        /// </summary>
        public bool bSupportWifiInfo;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byreserve;
    }

    /// <summary>
    /// 登录失败的锁定信息
    /// Lock information of login failure
    /// </summary>
    public struct NET_WPAN_ACCESSORY_LOCK_INFO
    {
        /// <summary>
        /// 登录锁定使能
        /// login lock enable
        /// </summary>
        public bool bLockLoginEnable;
        /// <summary>
        /// 登录失败锁定时间，单位：秒
        /// login failure locking time, unit: s
        /// </summary>
        public uint nLoginFailLockTime;
        /// <summary>
        /// 登录失败可尝试次数
        /// number of attempts after login failure
        /// </summary>
        public byte byLockLoginTimes;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 31)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 读卡器配置
    /// Card reader configuration
    /// </summary>
    public struct NET_WPAN_CARD_READER_INFO
    {
        /// <summary>
        /// 读卡器使能
        /// card reader enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 发卡时是否加密卡片，1：加密(软加密)；2：不加密
        /// whether to encrypt the card when issuing, 1: encryption (soft encryption); 2: do not encrypt
        /// </summary>
        public byte byEncryption;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 31)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 分辨率枚举,供DSP_ENCODECAP使用
    /// Resolution enumeration. For DSP_ENCODECAP to use
    /// </summary>
    public enum EM_A_CAPTURE_SIZE
    {
        /// <summary>
        /// 704*576(PAL) 704*480(NTSC),兼容WWxHH,下同
        /// 704*576(PAL) 704*480(NTSC),compatible WWxHH,the same below
        /// </summary>
        CAPTURE_SIZE_D1,
        /// <summary>
        /// 352*576(PAL) 352*480(NTSC)
        /// 352*576(PAL) 352*480(NTSC)
        /// </summary>
        CAPTURE_SIZE_HD1,
        /// <summary>
        /// 704*288(PAL) 704*240(NTSC)
        /// 704*288(PAL) 704*240(NTSC)
        /// </summary>
        CAPTURE_SIZE_BCIF,
        /// <summary>
        /// 352*288(PAL) 352*240(NTSC)
        /// 352*288(PAL) 352*240(NTSC)
        /// </summary>
        CAPTURE_SIZE_CIF,
        /// <summary>
        /// 176*144(PAL) 176*120(NTSC)
        /// 176*144(PAL) 176*120(NTSC)
        /// </summary>
        CAPTURE_SIZE_QCIF,
        /// <summary>
        /// 640*480
        /// 640*480
        /// </summary>
        CAPTURE_SIZE_VGA,
        /// <summary>
        /// 320*240
        /// 320*240
        /// </summary>
        CAPTURE_SIZE_QVGA,
        /// <summary>
        /// 480*480
        /// 480*480
        /// </summary>
        CAPTURE_SIZE_SVCD,
        /// <summary>
        /// 160*128
        /// 160*128
        /// </summary>
        CAPTURE_SIZE_QQVGA,
        /// <summary>
        /// 800*592
        /// 800*592
        /// </summary>
        CAPTURE_SIZE_SVGA,
        /// <summary>
        /// 1024*768
        /// 1024*768
        /// </summary>
        CAPTURE_SIZE_XVGA,
        /// <summary>
        /// 1280*800
        /// 1280*800
        /// </summary>
        CAPTURE_SIZE_WXGA,
        /// <summary>
        /// 1280*1024
        /// 1280*1024
        /// </summary>
        CAPTURE_SIZE_SXGA,
        /// <summary>
        /// 1600*1024
        /// 1600*1024
        /// </summary>
        CAPTURE_SIZE_WSXGA,
        /// <summary>
        /// 1600*1200
        /// 1600*1200
        /// </summary>
        CAPTURE_SIZE_UXGA,
        /// <summary>
        /// 1920*1200
        /// 1920*1200
        /// </summary>
        CAPTURE_SIZE_WUXGA,
        /// <summary>
        /// 240*192,ND1
        /// 240*192
        /// </summary>
        CAPTURE_SIZE_LTF,
        /// <summary>
        /// 1280*720
        /// 1280*720
        /// </summary>
        CAPTURE_SIZE_720,
        /// <summary>
        /// 1920*1080
        /// 1920*1080
        /// </summary>
        CAPTURE_SIZE_1080,
        /// <summary>
        /// 1280*960
        /// 1280*960
        /// </summary>
        CAPTURE_SIZE_1_3M,
        /// <summary>
        /// 1872*1408,2_5M
        /// 1872*1408
        /// </summary>
        CAPTURE_SIZE_2M,
        /// <summary>
        /// 3744*1408
        /// 3744*1408
        /// </summary>
        CAPTURE_SIZE_5M,
        /// <summary>
        /// 2048*1536
        /// 2048*1536
        /// </summary>
        CAPTURE_SIZE_3M,
        /// <summary>
        /// 2432*2050
        /// 2432*2050
        /// </summary>
        CAPTURE_SIZE_5_0M,
        /// <summary>
        /// 1216*1024
        /// 1216*1024
        /// </summary>
        CPTRUTE_SIZE_1_2M,
        /// <summary>
        /// 1408*1024
        /// 1408*1024
        /// </summary>
        CPTRUTE_SIZE_1408_1024,
        /// <summary>
        /// 3296*2472
        /// 3296*2472
        /// </summary>
        CPTRUTE_SIZE_8M,
        /// <summary>
        /// 2560*1920(5_1M)
        /// 2560*1920(5M)
        /// </summary>
        CPTRUTE_SIZE_2560_1920,
        /// <summary>
        /// 960*576(PAL) 960*480(NTSC)
        /// 960*576(PAL) 960*480(NTSC)
        /// </summary>
        CAPTURE_SIZE_960H,
        /// <summary>
        /// 960*720
        /// 960*720
        /// </summary>
        CAPTURE_SIZE_960_720,
        /// <summary>
        /// 640*360
        /// 640*360
        /// </summary>
        CAPTURE_SIZE_NHD,
        /// <summary>
        /// 320*180
        /// 320*180
        /// </summary>
        CAPTURE_SIZE_QNHD,
        /// <summary>
        /// 160*90
        /// 160*90
        /// </summary>
        CAPTURE_SIZE_QQNHD,
        /// <summary>
        /// 960*540
        /// 960*540
        /// </summary>
        CAPTURE_SIZE_960_540,
        /// <summary>
        /// 640*352
        /// 640*352
        /// </summary>
        CAPTURE_SIZE_640_352,
        /// <summary>
        /// 640*400
        /// 640*400
        /// </summary>
        CAPTURE_SIZE_640_400,
        /// <summary>
        /// 320*192
        /// 320*192
        /// </summary>
        CAPTURE_SIZE_320_192,
        /// <summary>
        /// 320*176
        /// 320*176
        /// </summary>
        CAPTURE_SIZE_320_176,
        /// <summary>
        /// 800*600
        /// 800*600
        /// </summary>
        CAPTURE_SIZE_SVGA1,
        /// <summary>
        /// 2560*1440
        /// 2560*1440
        /// </summary>
        CAPTURE_SIZE_2560_1440,
        /// <summary>
        /// 2304*1296
        /// 2304*1296
        /// </summary>
        CAPTURE_SIZE_2304_1296,
        /// <summary>
        /// 2592*1520
        /// 2592*1520
        /// </summary>
        CAPTURE_SIZE_2592_1520,
        /// <summary>
        /// 4000*3000
        /// 4000*3000
        /// </summary>
        CAPTURE_SIZE_4000_3000,
        /// <summary>
        /// 2880*2880
        /// 2880*2880
        /// </summary>
        CAPTURE_SIZE_2880_2880,
        /// <summary>
        /// 2880*2160
        /// 2880*2160
        /// </summary>
        CAPTURE_SIZE_2880_2160,
        /// <summary>
        /// 2688*1520
        /// 2688*1520
        /// </summary>
        CAPTURE_SIZE_2688_1520,
        /// <summary>
        /// 2592*1944
        /// 2592*1944
        /// </summary>
        CAPTURE_SIZE_2592_1944,
        /// <summary>
        /// 3072*1728
        /// 3072*1728
        /// </summary>
        CAPTURE_SIZE_3072_1728,
        /// <summary>
        /// 3072*2048
        /// 3072*2048
        /// </summary>
        CAPTURE_SIZE_3072_2048,
        /// <summary>
        /// 3840*2160
        /// 3840*2160
        /// </summary>
        CAPTURE_SIZE_3840_2160,
        CAPTURE_SIZE_NR = 255,
    }

    /// <summary>
    /// 图片信息
    /// Image information
    /// </summary>
    public struct NET_WPAN_ACCESSORY_IMAGE_INFO
    {
        /// <summary>
        /// 分辨率
        /// resolution
        /// </summary>
        public EM_A_CAPTURE_SIZE emResolution;
        /// <summary>
        /// 抓图数量
        /// number of snapshots
        /// </summary>
        public int nSnapshotNumber;
        /// <summary>
        /// 抓图次数
        /// times of snapshots
        /// </summary>
        public int nSnapshotTimes;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 外部wifi优先级
    /// External WiFi priority
    /// </summary>
    public enum EM_EXTERNAL_WIFI_PRIORITY
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_EXTERNAL_WIFI_UNKNOWN,
        /// <summary>
        /// 首选外部wifi
        /// preferred external WiFi
        /// </summary>
        EM_EXTERNAL_WIFI_FIRST,
        /// <summary>
        /// 备选外部wifi
        /// optional external WiFi
        /// </summary>
        EM_EXTERNAL_WIFI_ALTERNATIVE,
        /// <summary>
        /// 仅使用外部wifi
        /// use external WiFi only
        /// </summary>
        EM_EXTERNAL_WIFI_USEONLY,
    }

    /// <summary>
    /// 外部wifi信息
    /// External WiFi information
    /// </summary>
    public struct NET_WPAN_EXTERNAL_WIFI_INFO
    {
        /// <summary>
        /// 外部wifi使能
        /// external WiFi enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 外部wifi优先级
        /// external WiFi priority
        /// </summary>
        public EM_EXTERNAL_WIFI_PRIORITY emPriority;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// wifi信息
    /// WIFI information
    /// </summary>
    public struct NET_WPAN_WIFI_INFO
    {
        /// <summary>
        /// Wi-Fi参数信息同步使能
        /// wifi parameter information synchronization enable
        /// </summary>
        public bool bSyncEnable;
        /// <summary>
        /// wifi名称
        /// wifi name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSSID;
        /// <summary>
        /// wifi密码
        /// wifi password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassword;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 报警
    ///  alarm
    /// </summary>
    public struct NET_WPAN_OVER_TEMPERATURE_ALARM_INFO
    {
        /// <summary>
        /// 
        ///  alarm enable switch
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 报警下限温度值
        /// over  alarm lower limit  value
        /// </summary>
        public double dbLowerLimit;
        /// <summary>
        /// 报警上限温度值
        /// over  alarm upper limit  value
        /// </summary>
        public double dbUpperLimit;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 布防模式
    /// Arming mode
    /// </summary>
    public enum EM_ARMING_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ARMING_UNKNOWN = -1,
        /// <summary>
        /// 在家布防
        /// arming at home
        /// </summary>
        EM_ARMING_ATHOME,
        /// <summary>
        /// 外出布防
        /// arming outside
        /// </summary>
        EM_ARMING_OUT,
    }

    /// <summary>
    /// 布防信息
    /// Arming infomation
    /// </summary>
    public struct NET_WPAN_ARMING_INFO
    {
        /// <summary>
        /// 布防模式
        /// arming type
        /// </summary>
        public EM_ARMING_TYPE emType;
        /// <summary>
        /// 布防开关：布防时候是否使能该探测器
        /// whether the detector is enabled during arming
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 延时使能：布防时候是否使用进入退出延时
        /// whether to use the entry and exit during arming
        /// </summary>
        public bool bDelayEnable;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 按钮报警类型
    /// Alarm type of button
    /// </summary>
    public enum EM_BUTTON_ALARM_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_BUTTON_ALARM_UNKNOWN = -1,
        /// <summary>
        /// 火警
        /// fire alarm
        /// </summary>
        EM_BUTTON_ALARM_FIRE,
        /// <summary>
        /// 紧急报警
        /// emergency alarm
        /// </summary>
        EM_BUTTON_ALARM_EMERGENCY,
        /// <summary>
        /// 医疗报警
        /// medical alarm
        /// </summary>
        EM_BUTTON_ALARM_MEDICAL,
    }

    /// <summary>
    /// 按钮信息
    /// Button information
    /// </summary>
    public struct NET_WPAN_ACCESSORY_BUTTON_INFO
    {
        /// <summary>
        /// 按键使能
        /// key enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 报警类型
        /// alarm type
        /// </summary>
        public EM_BUTTON_ALARM_TYPE emType;
        /// <summary>
        /// 警号联动个数
        /// number of siren linkage
        /// </summary>
        public uint nSirenLinkageNum;
        /// <summary>
        /// 警号联动
        /// siren linkage
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public int[] nSirenLinkage;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 输出信息
    /// Output information
    /// </summary>
    public struct NET_ACCESSORY_OUTPUT_INFO
    {
        /// <summary>
        /// / 输出状态, 0:未知, 1:关闭, 2:开启
        /// / Output status: 0 - unknown, 1 - closed, 2 - open
        /// </summary>
        public int nStatus;
        /// <summary>
        /// / 输出模式, 0:未知, 1:稳态, 2:脉冲
        /// / Output mode: 0 - unknown, 1 - steady state, 2 - pulse
        /// </summary>
        public int nMode;
        /// <summary>
        /// / 脉冲持续时间（输出模块为脉冲时生效）
        /// / Pulse duration (effective when output module is in pulse mode)
        /// </summary>
        public int nPulseDuration;
        /// <summary>
        /// / 预留字段
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szReserved;
    }

    /// <summary>
    /// 传感器类型
    /// Sensor type
    /// </summary>
    public enum EM_SENSOR_TYPE
    {
        /// <summary>
        /// / 未知
        /// Unknown
        /// </summary>
        EM_SENSOR_TYPE_UNKNOWN,
        /// <summary>
        /// / 常闭
        /// NC
        /// </summary>
        EM_SENSOR_TYPE_NC,
        /// <summary>
        /// / 常开
        /// NO
        /// </summary>
        EM_SENSOR_TYPE_NO,
    }

    /// <summary>
    /// 外部防拆配置
    /// Tamper Info
    /// </summary>
    public struct NET_ACCESSORY_TAMPER_INFO
    {
        /// <summary>
        /// / 外部防拆配置使能是否存在
        /// / Flag indicating if tamper information configuration is enabled
        /// </summary>
        public bool abEnable;
        /// <summary>
        /// / 外部防拆配置使能
        /// / Flag indicating if tamper information is enabled
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 传感器类型
        /// / Sensor type
        /// </summary>
        public EM_SENSOR_TYPE emType;
        /// <summary>
        /// / 外部防拆状态, 0:未知, 1:正常, 2:告警
        /// / Tamper status: 0 - unknown, 1 - normal, 2 - alarm
        /// </summary>
        public int nStatus;
        /// <summary>
        /// / 预留字段
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szReserved;
    }

    /// <summary>
    /// 外部接入探测器信息
    /// External Sensor information
    /// </summary>
    public struct NET_ACCESSORY_EXTERNAL_SENSOR_INFO
    {
        /// <summary>
        /// / 外部防拆配置
        /// / Tamper Info
        /// </summary>
        public NET_ACCESSORY_TAMPER_INFO stuTamperInfo;
        /// <summary>
        /// / 探测器状态, -1:未知, 0:正常, 1:告警
        /// / Detector status, -1: unknown, 0: normal, 1: alarm
        /// </summary>
        public int nStatus;
        /// <summary>
        /// / 输入探测器类型, "Tamper": 防拆, "Sensor":报警输入, "Keyswitch":钥匙开关
        /// / Input detector type, "Tamper", "Sensor", "Keyswitch"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szInputType;
        /// <summary>
        /// / 预留字段
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 移动报警检测信息
    /// Movement Detected info
    /// </summary>
    public struct NET_ACCESSORY_MOVEMENT_DETECTED_INFO
    {
        /// <summary>
        /// / 使能开关字段是否有效
        /// / Is the enable switch field valid
        /// </summary>
        public bool abEnable;
        /// <summary>
        /// / 使能开关
        /// / Enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 警号联动个数
        /// / number of siren linkage
        /// </summary>
        public uint nSirenLinkageNum;
        /// <summary>
        /// / 警号联动
        /// / siren linkage
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nSirenLinkage;
        /// <summary>
        /// / 预留字段
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szReserved;
    }

    /// <summary>
    /// 相机模组信息
    /// Camera module information
    /// </summary>
    public struct NET_ACCESSORY_CAMERA_INFO
    {
        /// <summary>
        /// / 相机状态, 0:未知, 1:不在位, 2:在位
        /// / Camera status, 0: unknown, 1: not in place, 2: in place
        /// </summary>
        public int nStatus;
        /// <summary>
        /// / 相机版本信息
        /// / Camera version information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVersion;
        /// <summary>
        /// / 相机序列号
        /// / Camera serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// / 预留字段
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 124)]
        public string szReserved;
    }

    /// <summary>
    /// 返回的配件信息
    /// Accessory information
    /// </summary>
    public struct NET_WPAN_ACCESSORY_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 录像使能，必须同时有RecordChannels
        /// record enable, and recordchannels must be available at the same time
        /// </summary>
        public bool bRecordEnable;
        /// <summary>
        /// 外部告警使能
        /// external alarm enable
        /// </summary>
        public bool bExternalAlarmEnable;
        /// <summary>
        /// 无密码布防使能
        /// enable arming without password
        /// </summary>
        public bool bArmingWithoutPassword;
        /// <summary>
        /// 报警Led灯指示，0：关闭；1：打开
        /// alarm LED indicator, 0: off, 1: Open
        /// </summary>
        public byte byAlarmLedIndication;
        /// <summary>
        /// 控制检测外接电源状态的开关，0：关闭；1：打开
        /// the switch for detecting the state of external power supply, 0: off, 1: Open
        /// </summary>
        public byte byExPowerCheck;
        /// <summary>
        /// 配件防拆状态，0：关；1：开
        /// anti disassembly status of accessory, 0: off, 1: Open
        /// </summary>
        public byte byTamper;
        /// <summary>
        /// 24H防区状态，0：关；1：开
        /// 24h defense zone status, 0: off, 1: Open
        /// </summary>
        public byte by24HDefenceStatus;
        /// <summary>
        /// 告警状态，0：正常；1：报警
        /// alarm status, 0: normal, 1: Alarm
        /// </summary>
        public byte byAlarmStatus;
        /// <summary>
        /// 外部告警状态，0：正常；1：报警
        /// external alarm status, 0: normal, 1: Alarm
        /// </summary>
        public byte byExternalAlarmStatus;
        /// <summary>
        /// Led灯指示，0：关；1：开
        /// LED indicator, 0: off, 1: Open
        /// </summary>
        public byte byLedIndication;
        /// <summary>
        /// 布撤防以及进入退出延时是否有BEEP声音，0：无；1：有
        /// whether there is beep sound during arming/disarming and entering/exiting delay, 0: none, 1: have
        /// </summary>
        public byte byBeepIndication;
        /// <summary>
        /// 紧急按钮状态，0：关；1：开
        /// emergency button status, 0: off, 1: Open
        /// </summary>
        public byte bySosStatus;
        /// <summary>
        /// 配件上报方式，0：直连；1：中继上报
        /// accessory reporting method: 0: direct connection, 1: Relay Report
        /// </summary>
        public byte byViaTrace;
        /// <summary>
        /// 传感器类型，0：常闭；1：常开
        /// sensor type, 0: normally closed, 1: normally open
        /// </summary>
        public byte bySensorType;
        /// <summary>
        /// 锁定状态，1：非锁定；2：锁定
        /// locked state, 1: unlocked, 2: lock
        /// </summary>
        public byte byLockState;
        /// <summary>
        /// 传感器故障状态，0：正常；1：故障
        /// sensor fault status, 0: normal, 1: malfunction
        /// </summary>
        public byte bySensorFailure;
        /// <summary>
        /// 信号强度测试，0：关；1：开
        /// signal strength test, 0: off, 1: Open
        /// </summary>
        public byte bySignalStrengthTest;
        /// <summary>
        /// 灵敏度测试，0：关；1：开
        /// sensitivity test, 0: off, 1: Open
        /// </summary>
        public byte bySensitivityTest;
        /// <summary>
        /// 音量测试，0：关；1：开
        /// volume test, 0: off, 1: Open
        /// </summary>
        public byte byVolumeTest;
        /// <summary>
        /// 抓图测试，0：关；1：开
        /// snapshot test, 0: off; 1: Open
        /// </summary>
        public byte bySnapshotTest;
        /// <summary>
        /// wifi测试，0：关；1：开
        /// wifi test, 0: off; 1: Open
        /// </summary>
        public byte byWifiTest;
        /// <summary>
        /// 传感器屏蔽状态, 1:关闭屏蔽；2：开启屏蔽
        /// sensor shielding status, 1: turn off shielding; 2: turn on shielding
        /// </summary>
        public byte byBlockState;
        /// <summary>
        /// 配件短地址，从1开始
        /// accessory short address, starting from 1
        /// </summary>
        public uint nShortAddr;
        /// <summary>
        /// 电池电量百分比：0~100
        /// battery power percentage: 0 ~ 100
        /// </summary>
        public uint nPercent;
        /// <summary>
        /// 无线信号强度等级
        /// wireless signal strength level
        /// </summary>
        public uint nSignalLevel;
        /// <summary>
        /// 进入延时，单位：秒
        /// entry delay, unit:s
        /// </summary>
        public uint nEntryDelay;
        /// <summary>
        /// 退出延时，单位：秒
        /// exit delay, unit:s
        /// </summary>
        public uint nExitDelay;
        /// <summary>
        /// 报警持续时间，单位：秒
        /// alarm duration, unit:s
        /// </summary>
        public uint nAlarmDuring;
        /// <summary>
        /// 触发报警间隔时间，单位：秒
        /// trigger alarm interval time, unit:S
        /// </summary>
        public int nTriggerAlarmInterval;
        /// <summary>
        /// 探测器状态
        /// detector status
        /// </summary>
        public EM_DETECTOR_STATUS_TYPE emState;
        /// <summary>
        /// 设备布防时音量
        /// volume during arming
        /// </summary>
        public EM_ACCESSORY_VOLUME emBeepVolume;
        /// <summary>
        /// 灵敏度
        /// sensitivity
        /// </summary>
        public EM_ACCESSORY_SENSITIVITY emSensentivity;
        /// <summary>
        /// 功率调节
        /// power regulation
        /// </summary>
        public EM_POWER_REGULATION_TYPE emPowerRegulation;
        /// <summary>
        /// 在线状态
        /// online status
        /// </summary>
        public EM_ONLINE_STATUS emOnline;
        /// <summary>
        /// 报警类型
        /// alarm type
        /// </summary>
        public EM_ACCESSORY_ALARM_TYPE emAlarmType;
        /// <summary>
        /// 输入类型
        /// input type
        /// </summary>
        public EM_ACCESSORY_INPUT_TYPE emInputType;
        /// <summary>
        /// LED亮度
        /// LED brightness
        /// </summary>
        public EM_LED_BRIGHTNESS_LEVEL emLedBrightnessLevel;
        /// <summary>
        /// 操作模式
        /// operating mode
        /// </summary>
        public EM_OPERATION_MODE emOperationMode;
        /// <summary>
        /// 防误按模式
        /// anti mispress mode
        /// </summary>
        public EM_ANTI_MISPRESS_TYPE emAntiMispress;
        /// <summary>
        /// 外部电源状态，若未开启检测外接电源状态则为未知
        /// external power status(if the external power is not turned on, the status is unknown)
        /// </summary>
        public EM_EXPOWER_STATE emExPowerState;
        /// <summary>
        /// 设备报警音量
        /// device alarm volume
        /// </summary>
        public EM_ACCESSORY_VOLUME emVolume;
        /// <summary>
        /// 环境温度，单位：摄氏度
        /// ambient  in degrees Celsius
        /// </summary>
        public float fAmbientTemperature;
        /// <summary>
        /// 配件序列号
        /// accessory serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 配件名称
        /// accessory name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 配件版本
        /// accessory version
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVersion;
        /// <summary>
        /// 配件型号
        /// accessory model
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szModel;
        /// <summary>
        /// 报警提示音
        /// alarm tone
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAlarmTone;
        /// <summary>
        /// 中继状态
        /// relay status
        /// </summary>
        public NET_WPAN_RELAY_INFO stuRelayTran;
        /// <summary>
        /// 传感器感应方式
        /// sensor sensing mode
        /// </summary>
        public EM_SENSE_METHOD emType;
        /// <summary>
        /// 心跳信息
        /// heartbeat
        /// </summary>
        public NET_WPAN_HEARTBEAT_INFO stuHeartbeat;
        /// <summary>
        /// 配件能力集
        /// accessory Capability Set
        /// </summary>
        public NET_WPAN_ACCESSORY_CAPS_INFO stuCaps;
        /// <summary>
        /// 登录失败的锁定信息
        /// lock information of login failure
        /// </summary>
        public NET_WPAN_ACCESSORY_LOCK_INFO stuLockInfo;
        /// <summary>
        /// 读卡器配置
        /// card reader configuration
        /// </summary>
        public NET_WPAN_CARD_READER_INFO stuCardReader;
        /// <summary>
        /// 图片信息
        /// image information
        /// </summary>
        public NET_WPAN_ACCESSORY_IMAGE_INFO stuImageInfo;
        /// <summary>
        /// 外部wifi信息
        /// external WiFi information
        /// </summary>
        public NET_WPAN_EXTERNAL_WIFI_INFO stuExternalWifi;
        /// <summary>
        /// Wi-Fi信息
        /// wifi information
        /// </summary>
        public NET_WPAN_WIFI_INFO stuWifiInfo;
        /// <summary>
        /// 报警
        ///  alarm
        /// </summary>
        public NET_WPAN_OVER_TEMPERATURE_ALARM_INFO stuOverTemperatureAlarm;
        /// <summary>
        /// 所属区域个数
        /// number of regions
        /// </summary>
        public uint nAreaNumberCnt;
        /// <summary>
        /// 所属区域编号，整形数组从1开始
        /// region number, starting from 1
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public int[] nAreaNumber;
        /// <summary>
        /// 控制区域个数
        /// number of control areas
        /// </summary>
        public uint nControlAreaNumCnt;
        /// <summary>
        /// 控制区域编号：所属区域编号，从1开始；-1：全局，0：关闭
        /// control area number, starting from 1(-1:global; 0:off)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public int[] nControlAreaNum;
        /// <summary>
        /// 录像通道号个数
        /// number of video channel numbers
        /// </summary>
        public uint nRecordChannelsNum;
        /// <summary>
        /// 录像通道号列表，一维数组，每个成员表示对应的通道需要执行录像，通道号从0开始
        /// recording channel number list, one-dimensional array, each member indicates that the corresponding channel needs to perform recording, and the channel number starts from 0
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nRecordChannels;
        /// <summary>
        /// 警号联动个数
        /// number of siren linkage
        /// </summary>
        public uint nSirenLinkageNum;
        /// <summary>
        /// 警号联动
        /// siren linkage
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nSirenLinkage;
        /// <summary>
        /// 布防信息个数
        /// number of arming information
        /// </summary>
        public uint nArmingInfoNum;
        /// <summary>
        /// 布防信息，最大4组
        /// arming information, up to 4 groups
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_WPAN_ARMING_INFO[] stuArmingInfo;
        /// <summary>
        /// 按键个数
        /// number of button
        /// </summary>
        public uint nButtonNum;
        /// <summary>
        /// 按键信息
        /// key information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_WPAN_ACCESSORY_BUTTON_INFO[] stuButton;
        /// <summary>
        /// / 配件类型标识
        /// / Accessory type identification
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDeviceIdentification;
        /// <summary>
        /// / 输出信息
        /// / Output Info
        /// </summary>
        public NET_ACCESSORY_OUTPUT_INFO stuOutput;
        /// <summary>
        /// / 外部接入探测器个数
        /// / Number of external access detectors
        /// </summary>
        public uint nExternalSensorCount;
        /// <summary>
        /// / 外部接入探测器信息
        /// / External access detector information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_ACCESSORY_EXTERNAL_SENSOR_INFO[] stuExternalSensor;
        /// <summary>
        /// / 移动报警检测
        /// / Movement Detected info
        /// </summary>
        public NET_ACCESSORY_MOVEMENT_DETECTED_INFO stuMovementDetected;
        /// <summary>
        /// / 输入电压，单位V，精确到1个小数点
        /// / Input voltage in Volts, accurate to 1 decimal point
        /// </summary>
        public float fInputVoltage;
        /// <summary>
        /// / 电流，单位A，精确到1个小数点
        /// / Electric current in Amps, accurate to 1 decimal point
        /// </summary>
        public float fElectricCurrent;
        /// <summary>
        /// / 功率，单位W，精确到1个小数点
        /// / Power in Watts, accurate to 1 decimal point
        /// </summary>
        public float fPower;
        /// <summary>
        /// / 电能，单位KW.h
        /// / Electric energy in kW.h
        /// </summary>
        public float fElectricEnergy;
        /// <summary>
        /// / 门铃功能使能是否存在
        /// / Is the doorbell function enabled
        /// </summary>
        public bool abChimeEnable;
        /// <summary>
        /// / 门铃功能使能
        /// / Door bell function enabled
        /// </summary>
        public bool bChimeEnable;
        /// <summary>
        /// / 是否过滤无效字段
        /// / Filter invalid fields
        /// </summary>
        public bool bFilterValidField;
        /// <summary>
        /// / 相机模组信息是否存在
        /// / Does the camera module information exist
        /// </summary>
        public bool bCameraInfo;
        /// <summary>
        /// / 相机模组信息
        /// / Camera module information
        /// </summary>
        public NET_ACCESSORY_CAMERA_INFO stuCameraInfo;
        /// <summary>
        /// / 随机数，配合抓图测试使用，若携带这个字段，则在设备执行完抓图后，上报的抓图测试事件(ManualTest)中的DelayUploadSeq的值与传入的一致
        /// / Delay Upload Num
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDelayUploadSeq;
    }

    /// <summary>
    /// 获取配件信息(对应DEVSTATE_GET_ACCESSORY_INFO)
    /// Get accessory information(corresponding to DEVSTATE_GET_ACCESSORY_INFO)
    /// </summary>
    public struct NET_GET_ACCESSORY_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 配件序列号数组个数（当个数为0时,返回主机下所有配件状态）
        /// number of accessory serial number array (when the number is 0, the status of all accessories under the host is returned)
        /// </summary>
        public uint nSNNum;
        /// <summary>
        /// 配件序列号数组
        /// accessory serial number array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 56 * 32)]
        public string szSN;
        /// <summary>
        /// 申请的配件个数
        /// number of accessory applied
        /// </summary>
        public uint nMaxInfoNum;
        /// <summary>
        /// 配件信息指针,由调用者分配内存,分配的大小为 nMaxAccessoryInfo*sizeof(NET_WPAN_ACCESSORY_INFO)
        /// pointer fo tag array, user malloc the memory, the size is nMaxAccessoryInfo*sizeof(NET_WPAN_ACCESSORY_INFO)
        /// </summary>
        public IntPtr pstuInfo;
        /// <summary>
        /// 返回的配件数
        /// number of accessory returned
        /// </summary>
        public uint nInfoNum;
        /// <summary>
        /// / 是否过滤无效字段
        /// / Filter invalid fields
        /// </summary>
        public bool bFilterValidField;
    }

    /// <summary>
    /// 设置配件信息入参(对应CTRL_LOWRATEWPAN_SET_ACCESSORY_PARAM)
    /// Set accessory information(corresponding to CTRL_LOWRATEWPAN_SET_ACCESSORY_PARAM)
    /// </summary>
    public struct NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM
    {
        /// <summary>
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 配件信息
        /// accessory information
        /// </summary>
        public NET_WPAN_ACCESSORY_INFO stuInfo;
    }

    /// <summary>
    /// 获取设备状态入参
    /// </summary>
    public struct NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS
    {
        /// <summary>
        /// 结构体大小
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 供电类型
    /// </summary>
    public enum EM_A_NET_EM_POWER_TYPE
    {
        /// <summary>
        /// 未知
        /// </summary>
        NET_EM_POWER_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 电源适配器
        /// </summary>
        NET_EM_POWER_TYPE_POWERADAPTER,
        /// <summary>
        /// 电池
        /// </summary>
        NET_EM_POWER_TYPE_BATTERY,
        /// <summary>
        /// 电池+电源适配器
        /// </summary>
        NET_EM_POWER_TYPE_BATTERY_AND_POWERADAPTER,
    }

    /// <summary>
    /// 电源电池相关信息
    /// </summary>
    public struct NET_DEVSTATUS_POWER_INFO
    {
        /// <summary>
        /// 电池电量百分比,0~100
        /// </summary>
        public uint nBatteryPercent;
        /// <summary>
        /// 供电类型
        /// </summary>
        public EM_A_NET_EM_POWER_TYPE emPowerType;
    }

    /// <summary>
    /// 有线网连接状态
    /// </summary>
    public enum EM_A_NET_EM_ETH_STATE
    {
        /// <summary>
        /// 未知
        /// </summary>
        NET_EM_ETH_UNKNOWN,
        /// <summary>
        /// 连接
        /// </summary>
        NET_EM_ETH_CONNECT,
        /// <summary>
        /// 未连接
        /// </summary>
        NET_EM_ETH_DISCONNECT,
    }

    /// <summary>
    /// sim卡状态
    /// </summary>
    public enum EM_A_NET_EM_SIM_STATE
    {
        /// <summary>
        /// 未知
        /// </summary>
        NET_EM_SIM_UNKNOWN,
        /// <summary>
        /// 在线
        /// </summary>
        NET_EM_SIM_ONLINE,
        /// <summary>
        /// 离线
        /// </summary>
        NET_EM_SIM_OFFLINE,
    }

    /// <summary>
    /// Sim卡PIN状态
    /// SIM card PIN status
    /// </summary>
    public enum EM_SIM_PIN_STATUS
    {
        /// <summary>
        /// / 未知
        /// / unknown
        /// </summary>
        EM_SIM_PIN_STATUS_UNKNOWN,
        /// <summary>
        /// / PIN解锁状态
        /// / Exist
        /// </summary>
        EM_SIM_PIN_STATUS_EXIST,
        /// <summary>
        /// / PIN锁定状态
        /// / PINLock
        /// </summary>
        EM_SIM_PIN_STATUS_PINLOCK,
    }

    /// <summary>
    /// Sim卡在位状态
    /// SIM card position status
    /// </summary>
    public enum EM_SIM_POSITION_STATUS
    {
        /// <summary>
        /// / 未知
        /// / unknown
        /// </summary>
        EM_SIM_POSITION_STATUS_UNKNOWN,
        /// <summary>
        /// / 在位
        /// / Exist
        /// </summary>
        EM_SIM_POSITION_STATUS_EXIST,
        /// <summary>
        /// / 不在位
        /// / Unexist
        /// </summary>
        EM_SIM_POSITION_STATUS_UNEXIST,
    }

    /// <summary>
    /// sim卡状态信息
    /// </summary>
    public struct NET_DEVSTATUS_SIM_INFO
    {
        /// <summary>
        /// SIM卡状态
        /// </summary>
        public EM_A_NET_EM_SIM_STATE emStatus;
        /// <summary>
        /// SIM卡编号
        /// </summary>
        public byte byIndex;
        /// <summary>
        /// / 字节对齐
        /// / Reserved bytes for byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
        public string szReserved;
        /// <summary>
        /// / Sim卡PIN状态
        /// / SIM card PIN status
        /// </summary>
        public EM_SIM_PIN_STATUS emPINStatus;
        /// <summary>
        /// / Sim卡在位状态
        /// / SIM card position status
        /// </summary>
        public EM_SIM_POSITION_STATUS emPositionStatus;
        /// <summary>
        /// / 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 网络相关信息
    /// </summary>
    public struct NET_DEVSTATUS_NET_INFO
    {
        /// <summary>
        /// wifi信号强度等级，0~5，0表示没有信号
        /// </summary>
        public uint nWifiIntensity;
        /// <summary>
        /// wifi信号强度，单位dbm, 0~100,0表示没有信号
        /// </summary>
        public uint nWifiSignal;
        /// <summary>
        /// 2g/3g/4g信号强度,单位dbm. 0~100, 0表示没有信号
        /// </summary>
        public uint nCellulSignal;
        /// <summary>
        /// 2g/3g/4g信号强度等级,0~5, 0表示没有信号
        /// </summary>
        public uint nCellulIntensity;
        /// <summary>
        /// 有线网连接状态
        /// </summary>
        public EM_A_NET_EM_ETH_STATE emEthState;
        /// <summary>
        /// 蜂窝网络实际使用流量，单位：MB
        /// </summary>
        public uint n3Gflux;
        /// <summary>
        /// 网络实际使用时长，单位：分钟
        /// </summary>
        public uint n3GfluxByTime;
        /// <summary>
        /// 网络连接状态
        /// </summary>
        public EM_A_NET_EM_ETH_STATE emWifiState;
        /// <summary>
        /// 蜂窝网络连接状态
        /// </summary>
        public EM_A_NET_EM_ETH_STATE emCellularstate;
        /// <summary>
        /// SIM卡数量
        /// </summary>
        public uint nSimNum;
        /// <summary>
        /// SIM卡状态信息
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_DEVSTATUS_SIM_INFO[] stuSimInfo;
    }

    /// <summary>
    /// 主机防拆状态
    /// </summary>
    public enum EM_A_NET_EM_TAMPER_STATE
    {
        /// <summary>
        /// 未知
        /// </summary>
        NET_EM_TAMPER_UNKNOWN = -1,
        /// <summary>
        /// 未报警
        /// </summary>
        NET_EM_TAMPER_NOALARM,
        /// <summary>
        /// 报警中
        /// </summary>
        NET_EM_TAMPER_ALARMING,
    }

    /// <summary>
    /// 获取设备状态出参
    /// </summary>
    public struct NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS
    {
        /// <summary>
        /// 结构体大小
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 电源电池相关信息
        /// </summary>
        public NET_DEVSTATUS_POWER_INFO stuPowerInfo;
        /// <summary>
        /// 网络相关信息
        /// </summary>
        public NET_DEVSTATUS_NET_INFO stuNetInfo;
        /// <summary>
        /// 主机软件版本
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVersion;
        /// <summary>
        /// 主机防拆状态
        /// </summary>
        public EM_A_NET_EM_TAMPER_STATE emTamperState;
    }

    /// <summary>
    /// UPnP配置模式
    /// UPnP configuration mode
    /// </summary>
    public enum EM_CONFIGURATION_MODE
    {
        /// <summary>
        /// 未知模式
        /// unknown mode
        /// </summary>
        EM_CONFIGURATION_UNKNOWN = -1,
        /// <summary>
        /// 手动配置
        /// manual mode
        /// </summary>
        EM_CONFIGURATION_MANUAL,
        /// <summary>
        /// 自动配置
        /// automatic mode
        /// </summary>
        EM_CONFIGURATION_AUTO,
    }


    /// <summary>
    /// UPnP服务类型
    /// UPnP service type
    /// </summary>
    public enum EM_SERVICE_TYPE
    {
        /// <summary>
        /// 未知服务
        /// unknown service
        /// </summary>
        EM_SERVICE_UNKNOWN = -1,
        /// <summary>
        /// WEB服务
        /// web service
        /// </summary>
        EM_SERVICE_WEB,
        /// <summary>
        /// 私有协议服务
        /// private protocol service
        /// </summary>
        EM_SERVICE_PRIV,
        /// <summary>
        /// RTSP服务
        /// RTSP service
        /// </summary>
        EM_SERVICE_RTSP,
        /// <summary>
        /// HTTPS服务
        /// HTTPS service
        /// </summary>
        EM_SERVICE_HTTPS,
        /// <summary>
        /// SNMP服务
        /// SNMP service
        /// </summary>
        EM_SERVICE_SNMP,
    }

    /// <summary>
    /// 协议类型
    /// protocol type
    /// </summary>
    public enum EM_PROTOCOL_TYPE
    {
        /// <summary>
        /// 未知协议
        /// unknown protocol
        /// </summary>
        EM_PROTOCOL_UNKNOWN = -1,
        /// <summary>
        /// TCP协议
        /// TCP protocol
        /// </summary>
        EM_PROTOCOL_TCP,
        /// <summary>
        /// UDP协议
        /// UDP protocol
        /// </summary>
        EM_PROTOCOL_UDP,
    }

    /// <summary>
    /// 映射表信息
    /// mapping table information
    /// </summary>
    public struct NET_A_CFG_MAP_TABLE_INFO
    {
        /// <summary>
        /// 使能开关
        /// enable switch
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 服务名称，OldUPnP实现依赖该字段
        /// service name, OldUPnP implementation depends on this field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szServiceName;
        /// <summary>
        /// 服务类型
        /// service type
        /// </summary>
        public EM_SERVICE_TYPE emServiceType;
        /// <summary>
        /// 协议类型
        /// protocol type
        /// </summary>
        public EM_PROTOCOL_TYPE emProtocol;
        /// <summary>
        /// 内部端口
        /// internal port
        /// </summary>
        public uint nInnerPort;
        /// <summary>
        /// 外部端口
        /// external port
        /// </summary>
        public uint nOuterPort;
    }

    /// <summary>
    /// UPNP配置，对应配置项目CFG_CMD_UPNP
    /// UPNP configuration, corresponding to CFG_CMD_UPNP
    /// </summary>
    public struct NET_A_CFG_UPNP_INFO
    {
        /// <summary>
        /// 端口映射使能
        /// port mapping enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 是否开启UPnP被查找功能
        /// whether to enable the UPnP lookup function
        /// </summary>
        public bool bStartDeviceDiscover;
        /// <summary>
        /// 模式
        /// mode
        /// </summary>
        public EM_CONFIGURATION_MODE emMode;
        /// <summary>
        /// 最大映射表个数
        /// maximum number of mapping tables
        /// </summary>
        public int nMaxTable;
        /// <summary>
        /// 实际映射表个数
        /// number of actual mapping tables
        /// </summary>
        public int nReturnTable;
        /// <summary>
        /// 映射表信息 < NET_A_CFG_MAP_TABLE_INFO >
        /// mapping table information < NET_A_CFG_MAP_TABLE_INFO >
        /// </summary>
        public IntPtr pstuMapTable;
    }

    /// <summary>
    /// UPnP状态类型
    /// UPnP status type
    /// </summary>
    public enum EM_UPNP_STATUS_TYPE
    {
        /// <summary>
        /// 状态未知
        /// status unknown
        /// </summary>
        EM_UPNP_STATUS_UNKNOWN,
        /// <summary>
        /// 获取成功
        /// get succeed
        /// </summary>
        EM_UPNP_STATUS_SUCCESS,
        /// <summary>
        /// 获取失败
        /// get failed
        /// </summary>
        EM_UPNP_STATUS_ERROR,
    }

    /// <summary>
    /// 端口映射状态类型
    /// Port mapping status type
    /// </summary>
    public enum EM_PORTMAP_STATUS_TYPE
    {
        /// <summary>
        /// 状态未知
        /// status unknown
        /// </summary>
        EM_PORTMAP_STATUS_UNKNOWN,
        /// <summary>
        /// 映射成功
        /// mapping succeed
        /// </summary>
        EM_PORTMAP_STATUS_SUCCESS,
        /// <summary>
        /// 映射失败
        /// mapping failed
        /// </summary>
        EM_PORTMAP_STATUS_FAILED,
    }

    /// <summary>
    /// 获取UPnP映射状态(对应DEVSTATE_GET_UPNP_STATUS)
    /// Get UPnP mapping status(corresponding to DEVSTATE_GET_UPNP_STATUS)
    /// </summary>
    public struct NET_GET_UPNPSTATUS_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否正在工作
        /// whether it is working
        /// </summary>
        public bool bWorking;
        /// <summary>
        /// 状态
        /// status
        /// </summary>
        public EM_UPNP_STATUS_TYPE emStatus;
        /// <summary>
        /// 内部IP
        /// internal address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szInnerAddress;
        /// <summary>
        /// 外部IP
        /// external address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szOuterAddress;
        /// <summary>
        /// 申请的端口映射状态个数
        /// number of requested port mapping states
        /// </summary>
        public uint nMaxPortMapStatus;
        /// <summary>
        /// 实际返回的端口映射状态个数
        /// number of actually returned port mapping states
        /// </summary>
        public uint nReturnNum;
        /// <summary>
        /// 端口映射状态信息指针，由调用者分配内存,分配的大小为 nMaxPortMapStatus*sizeof( EM_PORTMAP_STATUS_TYPE )
        /// pointer fo tag array, user malloc the memory, the size is nMaxPortMapStatus*sizeof( EM_PORTMAP_STATUS_TYPE )
        /// </summary>
        public IntPtr pemPortMapStatus;
    }

    /// <summary>
    /// 物体动作支持类型
    /// Object action type
    /// </summary>
    public enum EM_A_ENUM_VAGEOBJECT_ACTION
    {
        /// <summary>
        /// 未知类型
        /// UnKnown
        /// </summary>
        ENUM_VAGEOBJECT_ACTION_UNKNOWN,
        /// <summary>
        /// 第一次出现在检测区域中，或者跟踪时物理分离动作中尚未确认的新物体
        /// Appear.
        /// </summary>
        ENUM_VAGEOBJECT_ACTION_APPEAR,
        /// <summary>
        /// 正在运动，物体被正常跟踪
        /// Move.
        /// </summary>
        ENUM_VAGEOBJECT_ACTION_MOVE,
        /// <summary>
        /// 物体停止运动，这个物体不会在出现在下一帧物体列表中，物体开始移动后再恢复在列表中
        /// Stay.
        /// </summary>
        ENUM_VAGEOBJECT_ACTION_STAY,
        /// <summary>
        /// 物体从原来的区域移除，或者被遮盖，或者跟踪失败，移除的物体ID不会被自动删除，并且物体重现出现是有可能再次被使用
        /// Remove.
        /// </summary>
        ENUM_VAGEOBJECT_ACTION_REMOVE,
        /// <summary>
        /// 运动到跟踪区域之外，或者达到了算法跟踪物体的上限而被清除，消失的物体ID将不再出现
        /// Disappear.
        /// </summary>
        ENUM_VAGEOBJECT_ACTION_DISAPPEAR,
        /// <summary>
        /// 从其他物体中分离出来，可以用来检测物体遗留，关联ID表示从这个ID对应物体分离
        /// Split.
        /// </summary>
        ENUM_VAGEOBJECT_ACTION_SPLIT,
        /// <summary>
        /// 合并到其他物体，可以用来检查物体保全，关联ID表示合并到这个ID对相应的物体
        /// Merge.
        /// </summary>
        ENUM_VAGEOBJECT_ACTION_MERGE,
        /// <summary>
        /// 如果算法无法确定分离动作中某个物体是原先同一个物体，应该创建先一个新的物体，证据充分后再重命名为旧的物体ID，关联ID表示暂时使用的新的ID
        /// Rename.
        /// </summary>
        ENUM_VAGEOBJECT_ACTION_RENAME,
    }

    /// <summary>
    /// 物体截图
    /// object image info
    /// </summary>
    public struct NET_VAGEOBJECT_IMAGE
    {
        /// <summary>
        /// 在二进制数据块中的偏移
        /// Offset in the binary buffer
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 图片大小,单位：字节
        /// Image Length unit: kb
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 图片宽度
        /// Image width.
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// 图片高度
        /// Image Height
        /// </summary>
        public uint nHeight;
        /// <summary>
        /// 文件路径
        /// Image file path.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;
    }

    /// <summary>
    /// 视频分析泛型物体类型
    /// Object info
    /// </summary>
    public struct NET_VAGEOBJECT_INFO
    {
        /// <summary>
        /// 物体ID，每个ID表示一个唯一的物体
        /// Object ID, each ID represents a unique object
        /// </summary>
        public uint nObjectID;
        /// <summary>
        /// 模型支持的泛类型物体类型编号
        /// Type numbers of generic objects supported by the model
        /// </summary>
        public uint nTypeIndex;
        /// <summary>
        /// 模型支持的泛类型物体类型
        /// Generic object types supported by the model
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szTypeName;
        /// <summary>
        /// 置信度,值越大表示置信度越高 0~100
        /// Confidence. 0~100
        /// </summary>
        public int nConfidence;
        /// <summary>
        /// 物体动作支持类型
        /// Object action
        /// </summary>
        public EM_A_ENUM_VAGEOBJECT_ACTION emAction;
        /// <summary>
        /// 包围盒 矩形类型，当物体类型为车辆、车牌时为0~8191相对坐标
        /// Bounding box
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// 包围盒 绝对坐标
        /// Bounding box absolute coordinates
        /// </summary>
        public NET_RECT stuOriginalBoundingBox;
        /// <summary>
        /// 物体型心（不是包围盒中心）, 二维空间点类型
        /// Object center (not the center of the bounding box)
        /// </summary>
        public NET_POINT stuCenter;
        /// <summary>
        /// 主要颜色是否有效
        /// Is the main color effective
        /// </summary>
        public bool bMainColor;
        /// <summary>
        /// 物体主要颜色, rgb
        /// Maincolor of object, rgb
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byMainColor;
        /// <summary>
        /// 物体截图
        /// Image info
        /// </summary>
        public NET_VAGEOBJECT_IMAGE stuImage;
        /// <summary>
        /// 当前时间戳（物体抓拍或识别时，会将此识别智能帧附在一个视频帧或jpeg图片中，此帧所在原始视频中的出现时间）
        /// Current Timestamp
        /// </summary>
        public NET_TIME_EX stuCurrentTimeStamp;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_ANYTHING_DETECT 全物体类型检测事件 对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_ANYTHING_DETECT
    /// </summary>
    public struct NET_A_DEV_EVENT_ANYTHING_DETECT_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0-脉冲 1-开始 2-结束
        /// Event action 0:pulse 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位:毫秒)
        /// Time stamp(unit:ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occur time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 智能事件所属大类
        /// Event class type
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 智能事件规则编号
        /// Event rule id
        /// </summary>
        public uint nRuleId;
        /// <summary>
        /// 事件触发的预置点号，从1开始
        /// PresetID
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 事件对应文件信息
        /// Event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 全景广角图
        /// If stuSceneImage is valid
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 检测到的物体个数
        /// Number of detected objects
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// 检测到的物体信息 < NET_VAGEOBJECT_INFO >
        /// Detected object information < NET_VAGEOBJECT_INFO >
        /// </summary>
        public IntPtr pstuObjects;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 用户登录锁定事件
    /// User Login Lock Event
    /// </summary>
    public struct NET_A_ALARM_UPLOAD_USER_LOCK_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 1:开始 该事件为脉冲事件，目前SDK只上报开始事件给客户
        /// 1: Start, this event is a pulse event. Currently, the SDK only reports the start event to the customer
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件发生的时间
        /// Event occurrence time
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// 设备IP地址
        /// Device IP address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szDeviceIP;
        /// <summary>
        /// 设备Mac地址
        /// Device Mac Address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
        public string szDeviceMac;
        /// <summary>
        /// 用户名
        /// UserName
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserName;
        /// <summary>
        /// 组名
        /// Group
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szGroup;
        /// <summary>
        /// 非法登录的IP
        /// Illegal login IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szIllegalLoginIP;
    }

    /// <summary>
    /// 卷类型枚举
    /// volume type enumeration
    /// </summary>
    public enum EM_A_NET_VOLUME_TYPE
    {
        /// <summary>
        /// 所有卷
        /// all volume
        /// </summary>
        VOLUME_TYPE_ALL = 0,
        /// <summary>
        /// 物理卷
        /// physical volume
        /// </summary>
        VOLUME_TYPE_PHYSICAL,
        /// <summary>
        /// Raid卷
        /// Raid volume
        /// </summary>
        VOLUME_TYPE_RAID,
        /// <summary>
        /// VG虚拟卷组
        /// VG virtual volume
        /// </summary>
        VOLUME_TYPE_VOLUME_GROUP,
        /// <summary>
        /// iSCSI卷
        /// iSCSI volume
        /// </summary>
        VOLUME_TYPE_ISCSI,
        /// <summary>
        /// 独立物理卷（这个物理盘,没有加入到, RAID,虚拟卷组等等组中）
        /// independent physical volume, this physical volume, is not added into, RAID, virtual volume group,
        /// </summary>
        VOLUME_TYPE_INVIDUAL_PHY,
        /// <summary>
        /// 全局热备卷
        /// global hot spare volume
        /// </summary>
        VOLUME_TYPE_GLOBAL_SPARE,
        /// <summary>
        /// NAS盘(包括FTP, SAMBA, NFS)
        /// NAS volume(include FTP, SAMBA, NFS)
        /// </summary>
        VOLUME_TYPE_NAS,
        /// <summary>
        /// 独立RAID卷（指没有加入到，虚拟卷组等组中）
        /// independent raid volume, is not added into virtual volume group.
        /// </summary>
        VOLUME_TYPE_INVIDUAL_RAID,
        VOLUME_TYPE_MAX,
    }

    /// <summary>
    /// CLIENT_QueryDevInfo , NET_QUERY_DEV_STORAGE_NAMES类型接口输入参数
    /// CLIENT_QueryDevInfo , NET_QUERY_DEV_STORAGE_NAMES type port input parameter
    /// </summary>
    public struct NET_IN_STORAGE_DEV_NAMES
    {
        public uint dwSize;
        /// <summary>
        /// 要获取的卷类型
        /// volume type to get
        /// </summary>
        public EM_A_NET_VOLUME_TYPE emVolumeType;
    }

    /// <summary>
    /// CLIENT_QueryDevInfo , NET_QUERY_DEV_STORAGE_NAMES类型接口输出参数
    /// CLIENT_QueryDevInfo , NET_QUERY_DEV_STORAGE_NAMES type volume output parameter
    /// </summary>
    public struct NET_OUT_STORAGE_DEV_NAMES
    {
        public uint dwSize;
        /// <summary>
        /// 获取到设备的存储模块名数量
        /// got device storage module name quantity
        /// </summary>
        public int nDevNamesNum;
        /// <summary>
        /// 设备名列表
        /// device name list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128 * 128)]
        public string szStoregeDevNames;
    }

    /// <summary>
    /// 夜晚特殊配置选项,在晚上光线较暗时自动切换到夜晚的配置参数
    /// Special configuration for night,will automatically switch to night configuration when low light
    /// </summary>
    public struct NET_A_DEV_NIGHTOPTIONS
    {
        /// <summary>
        /// 0-不切换,1-切换
        /// 大致日出和日落时间,日落之后日出之前,将采用夜晚特殊的配置。
        /// 00:00:00 ~23:59:59
        /// 0-Do not switch,1-Switch
        /// Roughly sunrise and sunset time, before sunrise or after sunset, will use a special configuration for night.
        /// 00:00:00 ~23:59:59
        /// </summary>
        public byte bEnable;
        public byte bSunriseHour;
        public byte bSunriseMinute;
        public byte bSunriseSecond;
        public byte bSunsetHour;
        public byte bSunsetMinute;
        public byte bSunsetSecond;
        /// <summary>
        /// 白平衡 0:unabled,1:Auto 2:sunny 3:cloudy 4:home 5:office 6:night 7: Custom
        /// White balance 0:unabled,1:Auto 2:sunny 3:cloudy 4:home 5:office 6:night 7: Custom
        /// </summary>
        public byte bWhiteBalance;
        /// <summary>
        /// 红色增益调节,白平衡为"Custom"模式下有效 0~100
        /// Red gain adjustment, white balance to "Custom" mode will effect 0~100
        /// </summary>
        public byte bGainRed;
        /// <summary>
        /// 绿色增益调节,白平衡为"Custom"模式下有效 0~100
        /// Green gain adjustment, white balance to "Custom" mode will effect 0~100
        /// </summary>
        public byte bGainBlue;
        /// <summary>
        /// 蓝色增益调节,白平衡为"Custom"模式下有效 0~100
        /// Blue gain adjustment, white balance to "Custom" mode will effect 0~100
        /// </summary>
        public byte bGainGreen;
        /// <summary>
        /// 0~100
        /// 0~100
        /// </summary>
        public byte bGain;
        /// <summary>
        /// 0-不自动增益 1-自动增益
        /// 0-Without auto gain 1-Auto gain
        /// </summary>
        public byte bGainAuto;
        /// <summary>
        /// 亮度值 0~100
        /// Brightness value 0~100
        /// </summary>
        public byte bBrightnessThreshold;
        /// <summary>
        /// 电平参考值 0~100
        /// electric value 0~100
        /// </summary>
        public byte ReferenceLevel;
        /// <summary>
        /// 取值范围取决于设备能力集：0-自动曝光 1~n-1-手动曝光等级 n-带时间上下限的自动曝光 n+1-自定义时间手动曝光 (n表示支持的曝光等级数）
        /// Range depends on the device capability: 0-Auto Exposure 1~n-1-manual exposure level; n-Auto Exposure with time limit; n+1-manual exposure customized time (n means exposure level)
        /// </summary>
        public byte bExposureSpeed;
        /// <summary>
        /// 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms
        /// Lower limit of automatic exposure time or customized manual exposure time, in milliseconds, value 0.1ms ~ 80ms
        /// </summary>
        public float ExposureValue1;
        /// <summary>
        /// 自动曝光时间上限,毫秒为单位,取值0.1ms~80ms
        /// Automatic exposure time limit, in milliseconds, value 0.1ms ~ 80ms
        /// </summary>
        public float ExposureValue2;
        /// <summary>
        /// 自动光圈使能,1开启,0关闭
        /// Auto Aperture Enable,1:open,0:close
        /// </summary>
        public byte bAutoApertureEnable;
        /// <summary>
        /// 宽动态值 取值范围由能力决定
        /// wide dynamic value, it depends on max support value
        /// </summary>
        public byte bWideDynamicRange;
        /// <summary>
        /// 夜晚相位 0~360
        /// night sync 0~360
        /// </summary>
        public ushort wNightSyncValue;
        /// <summary>
        /// 夜晚相位0~999(千分之一度),与wNightSyncValue组合构成夜晚相位值
        /// night sync mill value 0~999
        /// </summary>
        public ushort wNightSyncValueMillValue;
        /// <summary>
        /// 保留
        /// Reserve
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public byte[] res;
    }

    /// <summary>
    /// 摄像头属性配置
    /// camera attribute configration
    /// </summary>
    public struct NET_A_DEV_CAMERA_CFG
    {
        public uint dwSize;
        /// <summary>
        /// 曝光模式；取值范围取决于设备能力集：0-自动曝光,1-曝光等级1,2-曝光等级2…n-1最大曝光等级数 n带时间上下限的自动曝光 n+1自定义时间手动曝光 (n==bExposureEn）
        /// Exposure mode;1-9:Manual exposure level ,0: Auto exposure
        /// </summary>
        public byte bExposure;
        /// <summary>
        /// 背光补偿：背光补偿等级取值范围取决于设备能力集,0-关闭,1-背光补偿强度1,2-背光补偿强度2…n-最大背光补偿等级数
        /// Backlight compensation:3:High,2:Medium,1:Low,0:close
        /// </summary>
        public byte bBacklight;
        /// <summary>
        /// 日/夜模式；3-根据时间自动切换 2：开(黑白),1：根据亮度启动切换,0：关(彩色)
        /// Day/night mode;2:Open,1:Auto,0:Close
        /// </summary>
        public byte bAutoColor2BW;
        /// <summary>
        /// 镜像；1：开,0：关
        /// Mirror;1:Open,0:Close
        /// </summary>
        public byte bMirror;
        /// <summary>
        /// 翻转；1：开,0：关
        /// Flip;1:Open,0:Close support;0 :do not support
        /// </summary>
        public byte bFlip;
        /// <summary>
        /// 自动光圈功能能力: 1：支持；0 ：不支持
        /// the capacity of Auto  function 1:support;0 :do not support
        /// </summary>
        public byte bLensEn;
        /// <summary>
        /// 自动光圈功能: 1:开启自动光圈；0: 关闭自动光圈
        /// Auto aperture function: 1:Enable aperture ;0: unable aperture
        /// </summary>
        public byte bLensFunction;
        /// <summary>
        /// 白平衡 0:unabled,1:Auto 2:sunny 3:cloudy 4:home 5:office 6:night 7: Custom
        /// White Balance 0:unabled,1:Auto 2:sunny 3:cloudy 4:home 5:office 6:night
        /// </summary>
        public byte bWhiteBalance;
        /// <summary>
        /// 信号格式0-Inside(内部输入) 1- BT656 2-720p 3-1080i 4-1080p 5-1080sF
        /// Signal format 0-Inside(Internal input) 1- BT656 2-720p 3-1080i 4-1080p 5-1080sF
        /// </summary>
        public byte bSignalFormat;
        /// <summary>
        /// 0-不旋转,1-顺时针90°,2-逆时针90°
        /// 0-Not rotating,1-90 degrees clockwise,2-90 degrees counterclockwise
        /// </summary>
        public byte bRotate90;
        /// <summary>
        /// 电平参考值 0~100
        /// electric value 0~100
        /// </summary>
        public byte bReferenceLevel;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        public byte byReserve;
        /// <summary>
        /// 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms
        /// Auto exposure or manual exposure limit custom time,Milliseconds(0.1ms~80ms)
        /// </summary>
        public float ExposureValue1;
        /// <summary>
        /// 自动曝光时间上限,毫秒为单位,取值0.1ms~80ms
        /// Auto exposure limit,Milliseconds(0.1ms~80ms)
        /// </summary>
        public float ExposureValue2;
        /// <summary>
        /// 夜晚配置参数选项
        /// Configuration parameter options for night
        /// </summary>
        public NET_A_DEV_NIGHTOPTIONS stuNightOptions;
        /// <summary>
        /// 红色增益调节,白平衡为"Custom"模式下有效 0~100
        /// Red gain adjustment, effective when white balance to "Custom" mode, 0 ~ 100
        /// </summary>
        public byte bGainRed;
        /// <summary>
        /// 绿色增益调节,白平衡为"Custom"模式下有效 0~100
        /// Green gain adjustment, effective when white balance to "Custom" mode, 0 ~ 100
        /// </summary>
        public byte bGainBlue;
        /// <summary>
        /// 蓝色增益调节,白平衡为"Custom"模式下有效 0~100
        /// Blue gain adjustment, effective when white balance to "Custom" mode, 0 ~ 100
        /// </summary>
        public byte bGainGreen;
        /// <summary>
        /// 闪光灯工作模式,0-关闭,1-始终,2-自动
        /// Flash mode,0-close,1-always,2-auto
        /// </summary>
        public byte bFlashMode;
        /// <summary>
        /// 闪光灯工作值, 0-0us, 1-64us, 2-128us,...15-960us
        /// Flash work values, 0-0us, 1-64us, 2-128us,...15-960us
        /// </summary>
        public byte bFlashValue;
        /// <summary>
        /// 闪光灯触发模式0-低电平 1-高电平
        /// Flash trigger mode 0 - low level 1 - high level
        /// </summary>
        public byte bFlashPole;
        /// <summary>
        /// 外部同步信号输入,0-内部同步 1-外部同步
        /// External single input
        /// </summary>
        public byte bExternalSyncPhase;
        /// <summary>
        /// 闪光灯亮度预设值 区间0~100
        /// Flash brightness prevlue, 0~100
        /// </summary>
        public byte bFlashInitValue;
        /// <summary>
        /// 外同步的相位设置 0~360(小数点后3位数字有效)
        /// External value 0~360
        /// </summary>
        public ushort wExternalSyncValue;
        /// <summary>
        /// 外同步的相位设置0~999(千分之一度),与wExternalSyncValue组合构成外同步的相位值
        /// External SyncValue Mill Value0~999
        /// </summary>
        public ushort wExternalSyncValueMillValue;
        /// <summary>
        /// 宽动态值 取值范围由能力决定
        /// wide dynamic range, it depends on max support value
        /// </summary>
        public byte bWideDynamicRange;
        /// <summary>
        /// 曝光补偿值,默认为7,范围0~14
        /// default compensation value,default is 7,range[0~14]
        /// </summary>
        public byte byExposureCompensation;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 54)]
        public string bRev;
    }

    /// <summary>
    /// 邮件配置
    /// Mail setup
    /// </summary>
    public struct NET_A_MAIL_CFG
    {
        /// <summary>
        /// 邮件服务器IP地址
        /// Email server IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string sMailIPAddr;
        /// <summary>
        /// 邮件服务器端口
        /// Email server port
        /// </summary>
        public ushort wMailPort;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        public ushort wReserved;
        /// <summary>
        /// 发送地址
        /// Send out address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string sSenderAddr;
        /// <summary>
        /// 用户名
        /// User name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string sUserName;
        /// <summary>
        /// 用户密码
        /// User password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string sUserPsw;
        /// <summary>
        /// 目的地址
        /// Destination address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string sDestAddr;
        /// <summary>
        /// 抄送地址
        /// CC address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string sCcAddr;
        /// <summary>
        /// 暗抄地址
        /// BCC address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string sBccAddr;
        /// <summary>
        /// 标题
        /// Subject
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string sSubject;
    }

    /// <summary>
    /// 邮件配置结构体
    /// Mail configuration structure
    /// </summary>
    public struct NET_A_DEV_MAIL_CFG
    {
        /// <summary>
        /// 邮件服务器地址(IP或者域名)
        /// Mail server address(IP and domain name )
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string sMailIPAddr;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string sSubMailIPAddr;
        /// <summary>
        /// 邮件服务器端口
        /// Mail server port
        /// </summary>
        public ushort wMailPort;
        public ushort wSubMailPort;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        public ushort wReserved;
        /// <summary>
        /// 发送地址
        /// From
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string sSenderAddr;
        /// <summary>
        /// 用户名
        /// User name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string sUserName;
        /// <summary>
        /// 用户密码
        /// password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string sUserPsw;
        /// <summary>
        /// 目的地址
        /// To
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string sDestAddr;
        /// <summary>
        /// 抄送地址
        /// CC
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string sCcAddr;
        /// <summary>
        /// 暗抄地址
        /// BCC
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string sBccAddr;
        /// <summary>
        /// 标题
        /// Subject
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string sSubject;
        /// <summary>
        /// 使能0:false, 1:true
        /// Enable 0:false, 1:true
        /// </summary>
        public byte bEnable;
        /// <summary>
        /// SSL使能
        /// SSL enable
        /// </summary>
        public byte bSSLEnable;
        /// <summary>
        /// 发送时间间隔,[0,3600]秒
        /// Send interval,[0,3600]s
        /// </summary>
        public ushort wSendInterval;
        /// <summary>
        /// 匿名选项[0,1], 0表示FALSE,1表示TRUE.
        /// Anonymous Options[0,1], 0:FALSE,1:TRUE.
        /// </summary>
        public byte bAnonymous;
        /// <summary>
        /// 附件使能[0,1], 0表示FALSE,1表示TRUE.
        /// Attach enable[0,1], 0:FALSE,1:TRUE.
        /// </summary>
        public byte bAttachEnable;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 154)]
        public string reserved;
    }

    /// <summary>
    /// 图片类型
    /// image type
    /// </summary>
    public enum EM_USERMANAGER_IMAGE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_USERMANAGER_IMAGE_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 本地人脸库图
        /// local image
        /// </summary>
        EM_USERMANAGER_IMAGE_TYPE_LOCAL,
        /// <summary>
        /// 拍摄场景图
        /// scene image
        /// </summary>
        EM_USERMANAGER_IMAGE_TYPE_SCENE,
        /// <summary>
        /// 人脸抠图
        /// face image
        /// </summary>
        EM_USERMANAGER_IMAGE_TYPE_FACE,
        /// <summary>
        /// 红外抓图
        /// infra-red image
        /// </summary>
        EM_USERMANAGER_IMAGE_TYPE_INFRARED,
        /// <summary>
        /// 陪同人员抓图
        /// Entourage image
        /// </summary>
        EM_USERMANAGER_IMAGE_TYPE_ENTOURAGE,
        /// <summary>
        /// 热图
        /// Thermogram image
        /// </summary>
        EM_USERMANAGER_IMAGE_TYPE_THERMOGRAM,
    }

    /// <summary>
    /// 用户信息图片信息
    /// usermanager image info
    /// </summary>
    public struct NET_USERMANAGER_IMAGE_INFO
    {
        /// <summary>
        /// 在二进制数据块中的偏移,单位:字节
        /// offset in binary data,unit:byte
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 图片大小,单位:字节
        /// Image length,unit:byte
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 图片宽度
        /// image width
        /// </summary>
        public ushort nWidth;
        /// <summary>
        /// 图片高度
        /// image height
        /// </summary>
        public ushort nHeight;
        /// <summary>
        /// 图片类型
        /// image type
        /// </summary>
        public EM_USERMANAGER_IMAGE_TYPE emImageType;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_USERMANAGER_FOR_TWSDK (用户信息上报事件)对应的数据块描述信息
    /// EVENT_IVS_USERMANAGER_FOR_TWSDK Specifies the description of the data block corresponding to User information reporting event
    /// </summary>
    public struct NET_DEV_EVENT_USERMANAGER_FOR_TWSDK_INFO
    {
        /// <summary>
        /// 通道号
        /// ChannelID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲
        /// 0: pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件发生的时间
        /// The time of the event
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 扩展协议字段
        /// Extended protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 用户ID
        /// UserID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
        public string szUserID;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 7)]
        public string szReserved1;
        /// <summary>
        /// 用户名
        /// UserName
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUserName;
        /// <summary>
        /// 用户类型 -1: 未知 0: 为普通用户 1: 为禁止名单用户 2: 为来宾用户 3: 为巡逻用户 4:  5: 残障用户
        /// Byte aligned user type - 1: unknown 0: normal user 1: forbidden user 2: guest user 3: patrol user 4: 5: disablod user
        /// </summary>
        public int nUserType;
        /// <summary>
        /// 使用次数
        /// Use time
        /// </summary>
        public int nUseTime;
        /// <summary>
        /// 用户权限 0:未知 1: 管理员 2: 普通用户
        /// User permission 0: unknown 1: administrator 2: ordinary user
        /// </summary>
        public int nAuthority;
        /// <summary>
        /// 有效的的时间段数目
        /// Number of nTimeSections
        /// </summary>
        public int nTimeSectionNum;
        /// <summary>
        /// 时段
        /// TimeSections
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public uint[] nTimeSections;
        /// <summary>
        /// 有效期
        /// term of validity
        /// </summary>
        public NET_TIME stuValidTo;
        /// <summary>
        /// 假日计划
        /// Special Days Schedule
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public uint[] nSpecialDaysSchedule;
        /// <summary>
        /// 假日计划表示数量
        /// Number of Special Days Schedule
        /// </summary>
        public int nSpecialDaysScheduleNum;
        /// <summary>
        /// 消息类型 0: 未知 1: 人员新增消息 2: 人员修改消息 3:人员删除消息（删除时仅UserID有效）
        /// Message type 0: Unknown 1: New message for personnel 2: Modify message for personnel 3: Delete message for personnel (only UserID is valid when deleting)
        /// </summary>
        public int nType;
        /// <summary>
        /// 密码
        /// Password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
        public string szPassword;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 7)]
        public string szReserved2;
        /// <summary>
        /// 目标特征值
        /// FaceList
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5 * 2048)]
        public string szFaceList;
        /// <summary>
        /// 目标特征值数量
        /// Number of facelist
        /// </summary>
        public int nFaceListNum;
        /// <summary>
        /// 卡片数量
        /// Number of cardlist
        /// </summary>
        public int nCardListNum;
        /// <summary>
        /// 卡片
        /// cardlist
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5 * 32)]
        public string szCardList;
        /// <summary>
        /// 
        /// 
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5 * 256)]
        public string szFingerList;
        /// <summary>
        /// 数量
        /// Number of
        /// </summary>
        public int nFingerListNum;
        /// <summary>
        /// 是否删除所有用户（true:删除所有用户数据，其余字段无效）
        /// Whether to delete all users (true: delete all user data, other fields are invalid)
        /// </summary>
        public bool bDelAllUser;
        /// <summary>
        /// 有效期开始时间
        /// Valid from
        /// </summary>
        public NET_TIME stuValidFrom;
        /// <summary>
        /// 设备序列号
        /// sn
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 用户总数量
        /// user count
        /// </summary>
        public uint nUserCount;
        /// <summary>
        /// 总数量
        /// count
        /// </summary>
        public uint nFingerCount;
        /// <summary>
        /// 人脸总数量
        /// face count
        /// </summary>
        public uint nFaceCount;
        /// <summary>
        /// 卡片总数量
        /// card count
        /// </summary>
        public uint nCardCount;
        /// <summary>
        /// 用户信息图片信息
        /// user image info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public NET_USERMANAGER_IMAGE_INFO[] stuImageInfo;
        /// <summary>
        /// 用户信息图片信息个数
        /// user image info count
        /// </summary>
        public int nImageInfoCount;
        /// <summary>
        /// 用户ID扩展
        /// UserID extend
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szUserIDEx;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 532)]
        public string szReserved;
    }

    /// <summary>
    /// 获取的操作类型
    /// Type of get operate
    /// </summary>
    public enum EM_A_NET_EM_GET_ALARMREGION_INFO
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        NET_EM_GET_ALARMREGION_INFO_UNKNOWN,
        /// <summary>
        /// 获取防区能力， 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ALARMCAPS， pstuOutParam类型为NET_OUT_GET_ALARMCAPS
        /// Get alarm capability. CLIENT_GetAlarmRegionInfo:(pstuInParam: NET_IN_GET_ALARMCAPS pstuOutParam: NET_OUT_GET_ALARMCAPS)
        /// </summary>
        NET_EM_GET_ALARMREGION_INFO_ALARMCAPS,
        /// <summary>
        /// 获取布防状态， 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ALARMMODE， pstuOutParam类型为NET_OUT_GET_ALARMMODE
        /// Get arm mode. CLIENT_GetAlarmRegionInfo:(pstuInParam: NET_IN_GET_ALARMMODE pstuOutParam: NET_OUT_GET_ALARMMODE)
        /// </summary>
        NET_EM_GET_ALARMREGION_INFO_ARMMODE,
        /// <summary>
        /// 获取旁路状态， 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_BYPASSMODE， pstuOutParam类型为NET_OUT_GET_BYPASSMODE
        /// Get bypass mode. CLIENT_GetAlarmRegionInfo:(pstuInParam: NET_IN_GET_BYPASSMODE pstuOutParam: NET_OUT_GET_BYPASSMODE)
        /// </summary>
        NET_EM_GET_ALARMREGION_INFO_BYPASSMODE,
        /// <summary>
        /// 获取区域防区， 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_AREAZONES， pstuOutParam类型为NET_OUT_GET_AREAZONES
        /// Get area zones. CLIENT_GetAlarmRegionInfo:(pstuInParam: NET_IN_GET_AREAZONES pstuOutParam: NET_OUT_GET_AREAZONES)
        /// </summary>
        NET_EM_GET_ALARMREGION_INFO_AREAZONES,
        /// <summary>
        /// 获取所有的报警防区， 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ALLINSLOTS， pstuOutParam类型为NET_OUT_GET_ALLINSLOTS
        /// Get all in slots. CLIENT_GetAlarmRegionInfo:(pstuInParam: NET_IN_GET_ALLINSLOTS pstuOutParam: NET_OUT_GET_ALLINSLOTS)
        /// </summary>
        NET_EM_GET_ALARMREGION_INFO_ALLINSLOTS,
        /// <summary>
        /// 获取所有的报警输出， 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ALLOUTSLOTS， pstuOutParam类型为NET_OUT_GET_ALLOUTSLOTS
        /// Get all out slots. CLIENT_GetAlarmRegionInfo:(pstuInParam: NET_IN_GET_ALLOUTSLOTS pstuOutParam: NET_OUT_GET_ALLOUTSLOTS)
        /// </summary>
        NET_EM_GET_ALARMREGION_INFO_ALLOUTSLOTS,
        /// <summary>
        /// 获取防区连接状态， 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_CONNECTIONSTATUS， pstuOutParam类型为NET_OUT_GET_CONNECTIONSTATUS
        /// Get zone connection status. CLIENT_GetAlarmRegionInfo:(pstuInParam: NET_IN_GET_CONNECTIONSTATUS pstuOutParam: NET_OUT_GET_CONNECTIONSTATUS)
        /// </summary>
        NET_EM_GET_ALARMREGION_INFO_ZONECONNECTIONSSTATUS,
        /// <summary>
        /// 获取区域状态， 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_AREAS_STATUS， pstuOutParam类型为NET_OUT_GET_AREAS_STATUS
        /// Get area status. CLIENT_GetAlarmRegionInfo:(pstuInParam: NET_IN_GET_AREAS_STATUS pstuOutParam: NET_OUT_GET_AREAS_STATUS)
        /// </summary>
        NET_EM_GET_ALARMREGION_INFO_AREASTATUS,
        /// <summary>
        /// 获取输出状态， 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_OUTPUT_STATE， pstuOutParam类型为NET_OUT_GET_OUTPUT_STATE
        /// Get output state. CLIENT_GetAlarmRegionInfo:(pstuInParam: NET_IN_GET_OUTPUT_STATE pstuOutParam: NET_OUT_GET_OUTPUT_STATE)
        /// </summary>
        NET_EM_GET_ALARMREGION_INFO_OUTPUTSTATE,
        /// <summary>
        /// 获取防区故障信息， 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ZONES_TROUBLE， pstuOutParam类型为NET_OUT_GET_ZONES_TROUBLE
        /// Get zones trouble. CLIENT_GetAlarmRegionInfo:(pstuInParam: NET_IN_GET_ZONES_TROUBLE pstuOutParam: NET_OUT_GET_ZONES_TROUBLE)
        /// </summary>
        NET_EM_GET_ALARMREGION_INFO_ZONESTROUBLE,
        /// <summary>
        /// 获取通道状态， 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_CHANNELS_STATE， pstuOutParam类型为NET_OUT_GET_CHANNELS_STATE
        /// Get channels state, CLIENT_GetAlarmRegionInfo:(pstuInParam: NET_IN_GET_CHANNELS_STATE pstuOutParam: NET_OUT_GET_CHANNELS_STATE)
        /// </summary>
        NET_EM_GET_ALARMREGION_INFO_CHANNELSSTATE,
        /// <summary>
        /// 获取配件信息， 此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ACCESSORY_INFO， pstuOutParam类型为NET_OUT_GET_ACCESSORY_INFO
        /// Get accessory, CLIENT_GetAlarmRegionInfo:(pstuInParam: NET_IN_GET_ACCESSORY_INFO pstuOutParam:NET_OUT_GET_ACCESSORY_INFO)
        /// </summary>
        NET_EM_GET_ALARMREGION_INFO_ACCESSORY,
    }

    /// <summary>
    /// 获取布防模式 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ARMMODE
    /// CLIENT_GetAlarmRegionInfo NET_EM_GET_ALARMREGION_INFO_ARMMODE input param
    /// </summary>
    public struct NET_IN_GET_ALARMMODE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 布撤防信息
    /// armmode information
    /// </summary>
    public struct NET_ARMMODE_INFO
    {
        /// <summary>
        /// 布撤防状态
        /// arm state
        /// </summary>
        public EM_ARM_STATE emArmState;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 获取布防模式 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ARMMODE
    /// CLIENT_GetAlarmRegionInfo NET_EM_GET_ALARMREGION_INFO_ARMMODE output param
    /// </summary>
    public struct NET_OUT_GET_ALARMMODE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 布撤防状态个数
        /// arm state number
        /// </summary>
        public int nArmModeRet;
        /// <summary>
        /// 布撤防信息
        /// arm mode information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_ARMMODE_INFO[] stuArmMode;
        /// <summary>
        /// 布撤防状态个数扩展 超过8个请使用这个字段
        /// The number of arming and disarming states is expanded. If more than 8, please use this field.
        /// </summary>
        public int nArmModeRetEx;
        /// <summary>
        /// 布撤防信息
        /// Arming and disarming information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_ARMMODE_INFO[] stuArmModeEx;
    }

    /// <summary>
    /// 表示人数越上限类型
    /// Indicates that the number of people exceeds the upper limit
    /// </summary>
    public enum EM_NUMBER_STAT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_NUMBERSTAT_TYPE_UNKNOWN,
        /// <summary>
        /// 进入
        /// Enter over
        /// </summary>
        EM_NUMBERSTAT_TYPE_ENTEROVER,
        /// <summary>
        /// 退出
        /// Exit over
        /// </summary>
        EM_NUMBERSTAT_TYPE_EXITOVER,
        /// <summary>
        /// 在里面
        /// Inside over
        /// </summary>
        EM_NUMBERSTAT_TYPE_INSIDEOVER,
    }

    /// <summary>
    /// 事件类型EVENT_IVS_NUMBERSTAT(数量统计事件)对应的数据块描述信息
    /// the describe of EVENT_IVS_NUMBERSTAT's data
    /// </summary>
    public struct NET_A_DEV_EVENT_NUMBERSTAT_INFO
    {
        /// <summary>
        /// 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved2;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 区域内物体的个数
        /// the number of object which is in the area
        /// </summary>
        public int nNumber;
        /// <summary>
        /// 设置的上限
        /// upper limit
        /// </summary>
        public int nUpperLimit;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 字节对齐
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved1;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 表示进入区域或者出入口的内物体的个数
        /// entered object number
        /// </summary>
        public int nEnteredNumber;
        /// <summary>
        /// 表示出来区域或者出入口的内物体的个数
        /// exited object number
        /// </summary>
        public int nExitedNumber;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件触发累计次数
        /// event trigger accumilated times
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 区域ID，一个预置点可以有多个区域ID
        /// Area ID, a preset point can correspond to multiple area IDs
        /// </summary>
        public uint nAreaID;
        /// <summary>
        /// 该场景下是否合规
        /// Is compliant, TRUE:yes, FALSE:no
        /// </summary>
        public bool bIsCompliant;
        /// <summary>
        /// 表示人数越上限类型
        /// Indicates that the number of people exceeds the upper limit
        /// </summary>
        public EM_NUMBER_STAT_TYPE emType;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 经过区域物体的个数
        /// Number of passed
        /// </summary>
        public int nPassedNumber;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 800)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 粒度模式
    /// Granularity Mode
    /// </summary>
    public enum EM_STAT_GRANULARITY
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_STAT_GRANULARITY_UNKNOWN,
        /// <summary>
        /// 分钟粒度
        /// Minute granularity
        /// </summary>
        EM_STAT_GRANULARITY_MINUTE,
    }

    /// <summary>
    /// 订阅统计通道数据入参
    /// Subscribe to statistics channel data entry
    /// </summary>
    public struct NET_IN_ATTACH_VIDEOSTAT_STREAM
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 视频通道号
        /// Video channel number
        /// </summary>
        public int nVideoChannel;
        /// <summary>
        /// 粒度
        /// granularity
        /// </summary>
        public EM_STAT_GRANULARITY emGranularity;
        /// <summary>
        /// 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// "NumberStat"：人数统计，统计进入离开数量
        /// "NumberStat": count the number of people, count the number of entering and leaving
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRuleType;
        /// <summary>
        /// 开始时间，表示从什么时间开始统计上报，开始时间，需按周期取整。如推送周期是10分钟一次，那么开始时间，只能为，每个小时的 第0分，10分、20分、30分、40、分、50分。
        /// The start time indicates when to start the statistical report. The start time needs to be rounded up according to the period. If the push cycle is once every 10 minutes, then the start time can only be 0, 10, 20, 30, 40, 50, and 50 minutes of each hour.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szStartTime;
        /// <summary>
        /// 统计通道数据回调
        /// Statistics channel data callback
        /// </summary>
        public fVideoStatStreamCallBack cbVideoStatStream;
        /// <summary>
        /// 用户数据
        /// User data
        /// </summary>
        public IntPtr dwUser;
        /// <summary>
        /// 与Granularity结合使用，如emGranularity为 EM_GRANULARITY_MINUTE， Cycle 值为5，表示以5分钟统计周期上报数据
        /// Used in conjunction with Granularity, for example, emGranularity is EM_GRANULARITY_MINUTE, and the Cycle value is 5, which means that the data is reported in a statistical period of 5 minutes
        /// </summary>
        public ushort nCycle;
        /// <summary>
        /// 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2)]
        public string szReserved2;
        /// <summary>
        /// 滞留情况数组大小，如填0则不下发该字段
        /// Retention array size. If 0 is used, this field is not delivered
        /// </summary>
        public int nSendMinStayTimeValidNum;
        /// <summary>
        /// 上报时间段内区域人员滞留情况, 表示统计的间隔结果中返回滞留时间大于3秒，大于5秒，大于10秒的记录,单位秒, 不下发时回调仅返回总人数和总滞留时长
        /// Personnel retention within a reported period: indicates that the retention time is longer than 3 seconds, longer than 5 seconds, and longer than 10 seconds (unit: second). If not delivered, the callback returns only the total number of personnel and the total duration
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public int[] nMinStayTime;
    }

    /// <summary>
    /// 订阅统计通道数据出参
    /// Subscribe to heat map information
    /// </summary>
    public struct NET_OUT_ATTACH_VIDEOSTAT_STREAM
    {
        /// <summary>
        /// 此结构体大小
        /// The size of this structure
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 统计通道数据信息
    /// Statistics channel data information
    /// </summary>
    public struct NET_CB_VIDEOSTAT_STREAM
    {
        /// <summary>
        /// 统计通道号
        /// Statistical channel number
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 预置点编号默认值为0，球机必填，范围1~PtzPresetMax，IPC可不填。
        /// The default value of the preset point number is 0, which is required for the dome camera, and the range is 1~PtzPresetMax. IPC is optional.
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 规则名称
        /// Rule name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleNanme;
        /// <summary>
        /// 当前这一统计周期的开始时间
        /// The start time of the current statistical period
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szStartTime;
        /// <summary>
        /// "NumberStat"：人数统计
        /// "NumberStat": People counting
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRuleType;
        /// <summary>
        /// 粒度
        /// granularity
        /// </summary>
        public EM_STAT_GRANULARITY emStatGranularity;
        /// <summary>
        /// 与Granularity结合使用，如emGranularity为 EM_GRANULARITY_MINUTE， Cycle 值为5，表示以5分钟统计周期上报数据
        /// Used in conjunction with Granularity, for example, emGranularity is EM_GRANULARITY_MINUTE, and the Cycle value is 5, which means that the data is reported in a statistical period of 5 minutes
        /// </summary>
        public ushort nCycle;
        /// <summary>
        /// 区域ID，没有该字段或者为0，为单区域
        /// Area ID, without this field or 0, it is a single area
        /// </summary>
        public ushort nAreaID;
        /// <summary>
        /// 本周期内进入人数小计
        /// Subtotal of people entering this week
        /// </summary>
        public uint nEnteredSubtotal;
        /// <summary>
        /// 本周期内离开人数小计
        /// Subtotal of the number of people leaving this week
        /// </summary>
        public uint nExitedSubtotal;
        /// <summary>
        /// 保留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 设备硬盘录像时间信息
    /// disk record time
    /// </summary>
    public struct NET_A_DEV_DISK_RECORD_TIME
    {
        /// <summary>
        /// 录像时间段1开始时间
        /// start time 1
        /// </summary>
        public NET_TIME stuStartTime1;
        /// <summary>
        /// 录像时间段1结束时间
        /// end time 1
        /// </summary>
        public NET_TIME stuEndTime1;
        /// <summary>
        /// 是否有第二段
        /// have two part or not
        /// </summary>
        public bool bTwoPart;
        /// <summary>
        /// 录像时间段2开始时间
        /// start time 2
        /// </summary>
        public NET_TIME stuStartTime2;
        /// <summary>
        /// 录像时间段2结束时间
        /// end time 2
        /// </summary>
        public NET_TIME stuEndTime2;
        /// <summary>
        /// 硬盘号
        /// disk number
        /// </summary>
        public byte bDiskNum;
        /// <summary>
        /// 分区号
        /// subarea num
        /// </summary>
        public byte bSubareaNum;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 62)]
        public byte[] byReserved;
    }


    /// <summary>
    /// 人脸导入的状态
    /// Face append state
    /// </summary>
    public enum EM_FACE_APPEND_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_FACE_APPEND_STATE_UNKNOWN,
        /// <summary>
        /// 开始导入
        /// Start import
        /// </summary>
        EM_FACE_APPEND_STATE_START,
        /// <summary>
        /// 正在导入
        /// Importing
        /// </summary>
        EM_FACE_APPEND_STATE_RUN,
        /// <summary>
        /// 导入结束
        /// Stop import
        /// </summary>
        EM_FACE_APPEND_STATE_STOP,
        /// <summary>
        /// 导入取消
        /// Cancle import
        /// </summary>
        EM_FACE_APPEND_STATE_CANCLE,
    }


    /// <summary>
    /// 扩展信息
    /// Extended Information
    /// </summary>
    public struct NET_MULTI_APPEND_EXTENDED_INFO
    {
        /// <summary>
        /// 该次人脸导入的token值
        /// The token value of this face import
        /// </summary>
        public uint nToken;
        /// <summary>
        /// 人脸导入状态
        /// Face append state
        /// </summary>
        public EM_FACE_APPEND_STATE emState;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 248)]
        public string szResvered;
    }

    /// <summary>
    /// CLIENT_BatchAppendFaceRecognition 接口输入参数
    /// Input param of CLIENT_BatchAppendFaceRecognition
    /// </summary>
    public struct NET_IN_BATCH_APPEND_FACERECONGNITION
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 需要添加的人员数量
        /// the number of persons which are appended to the face DB
        /// </summary>
        public uint nPersonNum;
        /// <summary>
        /// 人员信息，内存由用户申请，大小为nPersonNum * sizeof( NET_FACERECOGNITION_PERSON_INFOEX )
        /// person info,memory is requested by user,and the size is nPersonNum * sizeof( NET_FACERECOGNITION_PERSON_INFOEX )
        /// </summary>
        public IntPtr pstPersonInfo;
        /// <summary>
        /// 缓冲地址
        /// picture buffer
        /// </summary>
        public IntPtr pBuffer;
        /// <summary>
        /// 缓冲数据长度
        /// length of picture buffer
        /// </summary>
        public uint nBufferLen;
        /// <summary>
        /// 字节对齐
        /// alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] bReserved;
        /// <summary>
        /// 扩展信息
        /// Extended Information
        /// </summary>
        public NET_MULTI_APPEND_EXTENDED_INFO stuInfo;
    }

    /// <summary>
    /// 批量添加人员结果信息
    /// result of batch append persons
    /// </summary>
    public struct NET_BATCH_APPEND_PERSON_RESULT
    {
        /// <summary>
        /// 人员UID
        /// UID
        /// </summary>
        public uint nUID;
        /// <summary>
        /// 错误码信息
        /// error code
        /// </summary>
        public uint dwErrorCode;
        /// <summary>
        /// 添加人员UID, 根据UIDType指定UID使用字段
        /// Add personnel UID, specify UID field according to UIDType
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUID2;
        /// <summary>
        /// 保留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 448)]
        public byte[] bReserved;
    }

    /// <summary>
    /// CLIENT_BatchAppendFaceRecognition 接口输出参数
    /// output param of CLIENT_BatchAppendFaceRecognition
    /// </summary>
    public struct NET_OUT_BATCH_APPEND_FACERECONGNITION
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 批量添加结果个数，由用户指定，数值与NET_IN_BATCH_APPEND_FACERECONGNITION中的nPersonNum一致
        /// number of result,it is set by user. The value is same with the nPersonNum in ET_IN_MULTI_APPEND_FACERECONGNITION
        /// </summary>
        public uint nResultNum;
        /// <summary>
        /// 批量添加结果信息 < NET_BATCH_APPEND_PERSON_RESULT >
        /// result of batch append persons < NET_BATCH_APPEND_PERSON_RESULT >
        /// </summary>
        public IntPtr pstResultInfo;
        /// <summary>
        /// 指定NET_BATCH_APPEND_PERSON_RESULT中的UID使用字段，不存在本字段或值为0则使用UID字段，若值为1则使用UID2字段
        /// Specify the UID field in NET_BATCH_APPEND_PERSON_RESULT. If this field does not exist or the value is 0, the UID field will be used. If the value is 1, the UID2 field will be used.
        /// </summary>
        public uint nUIDType;
    }

    /// <summary>
    /// 报警事件类型ALARM_BUS_SHARP_TURN(车辆急转事件)对应的数据描述信息
    /// alarm event type ALARM_BUS_SHARP_TURN (vehicle sharp turn event) corresponding data description info
    /// </summary>
    public struct NET_A_ALARM_BUS_SHARP_TURN_INFO
    {
        public uint dwSize;
        /// <summary>
        /// GPS信息
        /// GPS info
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 事件发生时间
        /// Event occurrence time
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// / 事件动作, 1:开始 2:停止
        /// Action, 1:start, 2:stop;
        /// </summary>
        public int nAction;
        /// <summary>
        /// / stuRealUTC 是否有效，bRealUTC 为 TRUE 时，用 stuRealUTC，否则用 stuTime 字段
        /// Is stuRealUTC valid? When bRealUTC is true, use stuRealUTC; otherwise, use the stuTime field
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// / 事件发生的时间(标准UTC时间)
        /// Time of event occurrence (standard UTC time)
        /// </summary>
        public NET_TIME_EX stuRealUTC;
    }

    /// <summary>
    /// CLIENT_SetGPSUuidInfo接口输入参数
    /// CLIENT_SetGPSUuidInfo input param
    /// </summary>
    public struct NET_IN_SET_GPS_UUID_INFO
    {
        public uint dwSize;
        /// <summary>
        /// uuid,客户端唯一标识
        /// uuid
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUUID;
    }

    /// <summary>
    /// CLIENT_SetGPSUuidInfo接口输出参数
    /// CLIENT_SetGPSUuidInfo output param
    /// </summary>
    public struct NET_OUT_SET_GPS_UUID_INFO
    {
        public uint dwSize;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_NEAR_DISTANCE_DETECTION(近距离接触事件)对应的数据块描述信息
    /// IVS event type NEAR_DISTANCE_DETECTION(near distance detection event)data description
    /// </summary>
    public struct NET_A_DEV_EVENT_NEAR_DISTANCE_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// keep align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// time of occurrence
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2048)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 事件类型
    /// Event type
    /// </summary>
    public struct NET_EVENT_TYPE
    {
        /// <summary>
        /// 报警事件 TRUE：报警事件
        /// Alarm event TRUE: alarm event
        /// </summary>
        public bool bIsAlarmEvent;
        /// <summary>
        /// 违章事件 TRUE：违章事件
        /// Violation event TRUE: violation event
        /// </summary>
        public bool bIsViolation;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_CARDISTANCESHORT (车间距过小报警事件）对应的数据块描述信息
    /// EVENT_IVS_TRAFFIC_CARDISTANCESHORT (TrafficCarDistanceShort)corresponding data block description info
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 保留字节，为了对齐
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Time stamp(ms)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// Event occurred time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 车牌信息
        /// Plate info
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 车身信息
        /// Car body info
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// 车道号
        /// Corresponding lane number
        /// </summary>
        public int nLane;
        /// <summary>
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// Snap index,such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// </summary>
        public int nSequence;
        /// <summary>
        /// 车辆信息
        /// Traffic car info
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// 事件对应文件信息
        /// Event corresponding to file information
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 992)]
        public byte[] byReserved1;
        /// <summary>
        /// 公共信息
        /// Public info
        /// </summary>
        public NET_EVENT_COMM_INFO stCommInfo;
        /// <summary>
        /// 事件类型
        /// Event type
        /// </summary>
        public NET_EVENT_TYPE stuEventType;
    }

    /// <summary>
    /// 刷卡方式
    /// swipe card
    /// </summary>
    public enum EM_A_NET_DRIVER_CHECK_METHOD
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        NET_DRIVER_CHECK_METHOD_UNKNOWN,
        /// <summary>
        /// POS机
        /// POS device
        /// </summary>
        NET_DRIVER_CHECK_METHOD_POS,
        /// <summary>
        /// 手动输入
        /// manually input
        /// </summary>
        NET_DRIVER_CHECK_METHOD_HAND,
    }

    /// <summary>
    /// 刷卡类型
    /// swipe card type
    /// </summary>
    public enum EM_A_NET_DRIVER_CHECK_TYPE
    {
        /// <summary>
        /// 未知
        /// unknow
        /// </summary>
        NET_DRIVER_CHECK_TYPE_UNKNOWN,
        /// <summary>
        /// 签到
        /// sign up
        /// </summary>
        NET_DRIVER_CHECK_TYPE_SIGNIN,
        /// <summary>
        /// 签出
        /// sign out
        /// </summary>
        NET_DRIVER_CHECK_TYPE_SIGNOUT,
    }

    /// <summary>
    /// 报警事件类型ALARM_BUS_DRIVER_CHECK( 司机识别卡检测事件)对应的数据描述信息
    /// alarm event type ALARM_BUS_DRIVER_CHECK( driver recognition card detection event)corresponding to data description info
    /// </summary>
    public struct NET_A_ALARM_BUS_DRIVER_CHECK_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 车牌
        /// plate
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCarNo;
        /// <summary>
        /// 司机姓名
        /// driver name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDriverName;
        /// <summary>
        /// 工号
        /// ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDriverID;
        /// <summary>
        /// 驾驶证发证机构名称
        /// licence issuing organization name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szOrganize;
        /// <summary>
        /// 证件有效期
        /// licence validity
        /// </summary>
        public NET_TIME_EX stUsefulLife;
        /// <summary>
        /// GPS信息
        /// GPS info
        /// </summary>
        public NET_GPS_STATUS_INFO stGPSStatusInfo;
        /// <summary>
        /// 打卡时间
        /// sign up time
        /// </summary>
        public NET_TIME_EX stCheckTime;
        /// <summary>
        /// 打卡方式
        /// sign up method
        /// </summary>
        public EM_A_NET_DRIVER_CHECK_METHOD emCheckMethod;
        /// <summary>
        /// 打卡类型
        /// sign up type
        /// </summary>
        public EM_A_NET_DRIVER_CHECK_TYPE emCheckType;
    }

    /// <summary>
    /// 线路方向
    /// direction
    /// </summary>
    public enum EM_A_NET_LINE_DIRECTION
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        NET_LINE_DIRECTION_UNKNOWN,
        /// <summary>
        /// 正向
        /// firward direction
        /// </summary>
        NET_LINE_DIRECTION_POSTIVE,
        /// <summary>
        /// 反向
        /// opposite direction
        /// </summary>
        NET_LINE_DIRECTION_NEGATIVE,
        /// <summary>
        /// 环线
        /// loop
        /// </summary>
        NET_LINE_DIRECTION_AROUND,
        /// <summary>
        /// 离散
        /// disperse
        /// </summary>
        NET_LINE_DIRECTION_DISPERSE,
    }

    /// <summary>
    /// 进站离站状态
    /// in/out station status
    /// </summary>
    public enum EM_A_NET_BUS_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        NET_BUS_STATE_UNKNOWN,
        /// <summary>
        /// 非法
        /// illegal
        /// </summary>
        NET_BUS_STATE_ILLEGAL,
        /// <summary>
        /// 合法
        /// legal
        /// </summary>
        NET_BUS_STATE_LEGAL,
    }

    /// <summary>
    /// 报站方式
    /// stop announcement method
    /// </summary>
    public enum EM_A_NET_PORT_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        NET_PORT_TYPE_UNKOWN,
        /// <summary>
        /// 手动报站
        /// manual stop announcement
        /// </summary>
        NET_PORT_TYPE_MANUAL,
        /// <summary>
        /// GPS报站
        /// GPS stopannouncement
        /// </summary>
        NET_PORT_TYPE_GPS,
    }

    /// <summary>
    /// 车载开门事件的数据类型
    /// mobile unlock event data type
    /// </summary>
    public enum EM_VEHICLE_DATA_TYPE
    {
        EM_VEHICLE_DOOR_OPEN_DATA_UNKNOWN = 0,
        /// <summary>
        /// 实时的数据
        /// real-time data
        /// </summary>
        EM_VEHICLE_DOOR_OPEN_DATA_REALTIME,
        /// <summary>
        /// 重发的数据
        /// re-send data
        /// </summary>
        EM_VEHICLE_DOOR_OPEN_DATA_HISTORY,
    }

    /// <summary>
    /// 报警事件类型ALARM_BUS_IMPORT_SITE(进站事件)对应的数据描述信息
    /// alarm event type ALARM_BUS_IMPORT_SITE(in station event)corresponding to data description info
    /// </summary>
    public struct NET_A_ALARM_BUS_IMPORT_SITE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 站点标识
        /// station mark
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSiteID;
        /// <summary>
        /// 站序
        /// stop order
        /// </summary>
        public uint dwSiteNum;
        /// <summary>
        /// 线路方向
        /// direction
        /// </summary>
        public EM_A_NET_LINE_DIRECTION emDirection;
        /// <summary>
        /// 线路标识
        /// maek
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szLineID;
        /// <summary>
        /// 进站离站时间
        /// in/out station time
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// used to confirm event time, UTC, unit is second
        /// </summary>
        public int nTime;
        /// <summary>
        /// 是否按规定时间进站
        /// if in/out station on time
        /// </summary>
        public EM_A_NET_BUS_STATE emState;
        /// <summary>
        /// 报站方式
        /// stop announcement method
        /// </summary>
        public EM_A_NET_PORT_TYPE emType;
        /// <summary>
        /// GPS信息
        /// GPS info
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 总站点数
        /// total stop point
        /// </summary>
        public uint dwSiteCount;
        /// <summary>
        /// 站点名称
        /// stop name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSiteName;
        /// <summary>
        /// 线路番号
        /// path no.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDesignation;
        /// <summary>
        /// 事件数据的类型
        /// event data type
        /// </summary>
        public EM_VEHICLE_DATA_TYPE emDataType;
        /// <summary>
        /// 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认
        /// confirm or not, via callCLIENT_BusConfirmEventport to confirm
        /// </summary>
        public bool bNeedConfirm;
        /// <summary>
        /// 上一站到当前站的里程，单位：m
        /// The mileage from prev station to current station,Unit:m
        /// </summary>
        public uint nFromMileage;
        /// <summary>
        /// 起点站到当前站的里程，单位：m
        /// The total mileage from original station to current station,Unit:m
        /// </summary>
        public uint nTotalMileage;
        /// <summary>
        /// 上一站到当前站的耗时，单位：s
        /// The cost time from prev station to current station,Unit:s
        /// </summary>
        public uint nFromCostTime;
        /// <summary>
        /// 起点站到当前站的耗时，单位：s
        /// The total cost time from original station to current station,Unit:s
        /// </summary>
        public uint nTotalCostTime;
        /// <summary>
        /// 调度标识
        /// Schedule Unique Id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szScheduleUniqueId;
		/// <summary>
        /// /License plate number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCarNum;
        /// <summary>
        /// /Driver's corresponding ICC personnel ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDriverIccId;
        /// <summary>
        /// /Driver's name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDriverName;
        /// <summary>
        /// /Schedule Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szScheduleName;
        /// <summary>
        /// /Scheduling type. 1 represents time period scheduling, 2 represents periodic scheduling
        /// </summary>
        public int nScheduleType;
        /// <summary>
        /// /Plan ID
        /// </summary>
        public uint nPlanId;
        /// <summary>
        /// /Plan Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPlanName;
        /// <summary>
        /// /Planned start time
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szStartTime;
        /// <summary>
        /// /Planned end time
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szEndTime;
        /// <summary>
        /// /Business Relationship ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFuncRelativeID;
    }

    /// <summary>
    /// 不同设备统计到的人数信息
    /// Number of people info counted by different devices
    /// </summary>
    public struct NET_SUBTOTAL
    {
        /// <summary>
        /// 设备编号， 一个车上可能有好几个设备
        /// Device id
        /// </summary>
        public uint nDevNum;
        /// <summary>
        /// 准备上车人数
        /// Number of ready to get in the car
        /// </summary>
        public uint nInside;
        /// <summary>
        /// 准备下车人数
        /// Number of ready to get off the car
        /// </summary>
        public uint nExited;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byRserved;
    }

    /// <summary>
    /// 报警事件类型ALARM_BUS_EXPORT_SITE(离站事件)对应的数据描述信息
    /// alarm event type ALARM_BUS_EXPORT_SITE(out station event)corresponding to data description info
    /// </summary>
    public struct NET_A_ALARM_BUS_EXPORT_SITE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 站点标识
        /// stop mark
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSiteID;
        /// <summary>
        /// 站序
        /// order
        /// </summary>
        public uint dwSiteNum;
        /// <summary>
        /// 线路方向
        /// direction
        /// </summary>
        public EM_A_NET_LINE_DIRECTION emDirection;
        /// <summary>
        /// 线路标识
        /// mark
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szLineID;
        /// <summary>
        /// 进站离站时间
        /// in/out station time
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// used to confirm event time, UTC, unit is second
        /// </summary>
        public int nTime;
        /// <summary>
        /// 是否按规定时间离站
        /// if out station on time
        /// </summary>
        public EM_A_NET_BUS_STATE emState;
        /// <summary>
        /// 报站方式
        /// stop announcement method
        /// </summary>
        public EM_A_NET_PORT_TYPE emType;
        /// <summary>
        /// GPS信息
        /// GPS info
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 总站点数
        /// total stop point
        /// </summary>
        public uint dwSiteCount;
        /// <summary>
        /// 站点名称
        /// stop name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSiteName;
        /// <summary>
        /// 线路番号
        /// path no.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDesignation;
        /// <summary>
        /// 事件数据的类型
        /// event data type
        /// </summary>
        public EM_VEHICLE_DATA_TYPE emDataType;
        /// <summary>
        /// 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认
        /// confirm or not, via call CLIENT_BusConfirmEventport to confirm
        /// </summary>
        public bool bNeedConfirm;
        /// <summary>
        /// 上一站到当前站的里程，单位：m
        /// The mileage from prev station to current station,Unit:m
        /// </summary>
        public uint nFromMileage;
        /// <summary>
        /// 起点站到当前站的里程，单位：m
        /// The total mileage from original station to current station,Unit:m
        /// </summary>
        public uint nTotalMileage;
        /// <summary>
        /// 上一站到当前站的耗时，单位：s
        /// The cost time from prev station to current station,Unit:s
        /// </summary>
        public uint nFromCostTime;
        /// <summary>
        /// 起点站到当前站的耗时，单位：s
        /// The total cost time from original station to current station,Unit:s
        /// </summary>
        public uint nTotalCostTime;
        /// <summary>
        /// 本次关门事件统计到的净人数，只计算当前关门时统计的人数。下车人数比上车人数多则会统计为负数
        /// The number of people counted in this closing event.When the number of getting off is greater than the number of getting on the bus,the number of people counted is nagative
        /// </summary>
        public int nCurrentPeople;
        /// <summary>
        /// 本次关门总上车人数
        /// The number of people that get on the car in this closing event
        /// </summary>
        public uint nTotalIn;
        /// <summary>
        /// 本次关门总下车人数
        /// The number of people that get off the car in this closing event
        /// </summary>
        public uint nTotalOut;
        /// <summary>
        /// 统计人数的设备数量
        /// The number of device that count people
        /// </summary>
        public uint nSubtotalCount;
        /// <summary>
        /// 不同设备统计到的人数信息，最多有32个设备（一辆车可能有多个设备统计人数）
        /// Number of people info counted by different devices. Up to 32 device(A car may have mulitiple device count people)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_SUBTOTAL[] stuSubtotal;
        /// <summary>
        /// 调度标识
        /// Schedule Unique Id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szScheduleUniqueId;
		/// <summary>
        /// /License plate number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCarNum;
        /// <summary>
        /// /Driver's corresponding ICC personnel ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDriverIccId;
        /// <summary>
        /// /Driver's name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDriverName;
        /// <summary>
        /// /Schedule Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szScheduleName;
        /// <summary>
        /// /Scheduling type. 1 represents time period scheduling, 2 represents periodic scheduling
        /// </summary>
        public int nScheduleType;
        /// <summary>
        /// /Plan ID
        /// </summary>
        public int nPlanId;
        /// <summary>
        /// /Plan Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPlanName;
        /// <summary>
        /// /Planned start time
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szStartTime;
        /// <summary>
        /// /Planned end time
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szEndTime;
        /// <summary>
        /// /Business Relationship ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szFuncRelativeID;
    }

    /// <summary>
    /// 异常事件类型
    /// abnormal event type
    /// </summary>
    public enum EM_ALARM_BUS_ABNORMAL_EVENT_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_UNKNOWN,
        /// <summary>
        /// 恢复营运,"Running"
        /// recover operation, "Running"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_RUNNING,
        /// <summary>
        /// 吃饭,"Meal"
        /// eat, "Meal"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_MEAL,
        /// <summary>
        /// 路堵,"Block"
        /// jam, "Block"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_BLOCK,
        /// <summary>
        /// 通话,"Call"
        /// call, "Call"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_CALL,
        /// <summary>
        /// 车坏,"Breakdown"
        /// breakdown, "Breakdown"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_BREAKDOWN,
        /// <summary>
        /// 停止营运,"Discontinued"
        /// stop operation, "Discontinued"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_DISCONTINUED,
        /// <summary>
        /// 盗抢,"Robing"
        /// robing, "Robing"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_ROBING,
        /// <summary>
        /// 超载,"Overload"
        /// overload, "Overload"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_OVERLOAD,
        /// <summary>
        /// 纠纷,"Dispute"
        /// dispute, "Dispute"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_DISPUTE,
        /// <summary>
        /// 事故,"Accident"
        /// event, "Accident"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_ACCIDENT,
        /// <summary>
        /// 超速,"OverSpeed"
        /// over speed, "OverSpeed"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_OVERSPEED,
        /// <summary>
        /// 包车,"Rental"
        /// rental, "Rental"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_RENTAL,
        /// <summary>
        /// 保养,"Maintenance"
        /// maintenance, "Maintenance"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_MAINTENANCE,
        /// <summary>
        /// 脱保停运,"Closure"
        /// closure, "Closure"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_CLOSURE,
        /// <summary>
        /// 治安事件, "PubSecurity"
        /// "PubSecurity"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_PUBSECURITY,
        /// <summary>
        /// 进入停车场, "EnterPark"
        /// "EnterPark"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_ENTER_PARK,
        /// <summary>
        /// 离开平车场, "LeavePark"
        /// "LeavePark"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_LEAVE_PARK,
        /// <summary>
        /// 加油, "Refuel"
        /// "Refuel"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_REFUEL,
        /// <summary>
        /// 火灾报警, "Fire"
        /// "Fire"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_FIRE,
        /// <summary>
        /// 乘客救助, "Help"
        /// "Help"
        /// </summary>
        EM_ALARM_BUS_ABNORMAL_EVENT_TYPE_HELP,
    }

    /// <summary>
    /// 报警事件类型ALARM_BUS_ABNORMAL(车辆异常事件)对应的数据描述信息
    /// alarm event type ALARM_BUS_ABNORMAL(vehicle abnormal event )corresponding to data description info
    /// </summary>
    public struct NET_A_ALARM_BUS_ABNORMAL_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 异常事件类型
        /// abnormal event type
        /// </summary>
        public EM_ALARM_BUS_ABNORMAL_EVENT_TYPE emEventType;
        /// <summary>
        /// 车牌
        /// plate
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCarNo;
        /// <summary>
        /// 线路标识
        /// path mark
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szLineID;
        /// <summary>
        /// 线路方向
        /// path direction
        /// </summary>
        public EM_A_NET_LINE_DIRECTION emLineDirection;
        /// <summary>
        /// 发生时间
        /// occur time
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// GPS信息
        /// GPSinfo
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
    }

    /// <summary>
    /// 门禁状态类型
    /// Access Control Status Type
    /// </summary>
    public enum EM_A_NET_ACCESS_CTL_STATUS_TYPE
    {
        NET_ACCESS_CTL_STATUS_TYPE_UNKNOWN = 0,
        /// <summary>
        /// 开门
        /// Open
        /// </summary>
        NET_ACCESS_CTL_STATUS_TYPE_OPEN,
        /// <summary>
        /// 关门
        /// Close
        /// </summary>
        NET_ACCESS_CTL_STATUS_TYPE_CLOSE,
        /// <summary>
        /// 异常
        /// Abnormal
        /// </summary>
        NET_ACCESS_CTL_STATUS_TYPE_ABNORMAL,
        /// <summary>
        /// 假锁
        /// fake locked
        /// </summary>
        NET_ACCESS_CTL_STATUS_TYPE_FAKELOCKED,
        /// <summary>
        /// 常闭
        /// close always
        /// </summary>
        NET_ACCESS_CTL_STATUS_TYPE_CLOSEALWAYS,
        /// <summary>
        /// 常开
        /// open always
        /// </summary>
        NET_ACCESS_CTL_STATUS_TYPE_OPENALWAYS,
        /// <summary>
        /// 正常
        /// Normal
        /// </summary>
        NET_ACCESS_CTL_STATUS_TYPE_NORMAL,
    }

    /// <summary>
    /// 车载开门事件, 对应事件类型 VEHICLE_DOOR_OPEN
    /// mobile door status
    /// typedef NET_ACCESS_CTL_STATUS_TYPE NET_VEHICLE_DOOR_STATUS;
    /// mobile unlock event , corresponding to event type VEHICLE_DOOR_OPEN
    /// </summary>
    public struct NET_A_ALARM_VEHICLE_DOOR_OPEN_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 门状态
        /// door status
        /// </summary>
        public EM_A_NET_ACCESS_CTL_STATUS_TYPE emStatus;
        /// <summary>
        /// 门序号, 1:前门,2:中门,3:后门
        /// door no., 1:front door,2:middle door,3:rear door
        /// </summary>
        public int nDoor;
        /// <summary>
        /// 事件时间, UTC制
        /// event time, UTC
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// used to confirm event used time, UTC, unit is second
        /// </summary>
        public int nTime;
        /// <summary>
        /// GPS信息
        /// GPSinfo
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 事件数据的类型
        /// event data type
        /// </summary>
        public EM_VEHICLE_DATA_TYPE emDataType;
        /// <summary>
        /// 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认
        /// confirm or not, via call CLIENT_BusConfirm Eventport to confirm
        /// </summary>
        public bool bNeedConfirm;
    }

    /// <summary>
    /// 当前里程事件, 对应事件类型 ALARM_BUS_CUR_MILEAGE
    /// The current event, the corresponding event type ALARM_BUS_CUR_MILEAGE
    /// </summary>
    public struct NET_A_ALARM_BUS_CUR_MILEAGE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认
        /// Whether need confirm, confirm it by CLIENT_BusConfirmEvent
        /// </summary>
        public bool bNeedConfirm;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// Time for confirming the event, UTC, The unit is in seconds
        /// </summary>
        public int nTime;
        /// <summary>
        /// 事件数据的类型
        /// The type of event data
        /// </summary>
        public EM_VEHICLE_DATA_TYPE emDataType;
        /// <summary>
        /// 事件时间, UTC制
        /// Event time, UTC
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// GPS信息, 只有经纬度、速度、方向角字段有效
        /// GPS information, only longitude and latitude /speed and direction angle valid
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 当前时间段的开始时间, UTC制
        /// The beginning of the current period of time, UTC
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 当前时间段的开始时间时的GPS信息, 只有经纬度、速度、方向角字段有效
        /// The informations of the GPS on the beginning of the current period of time
        /// </summary>
        public NET_GPS_STATUS_INFO stuStartGPSStatusInfo;
        /// <summary>
        /// 当前时间段的里程数, 单位:0.1km
        /// Number of miles the current period, unit:0.1km
        /// </summary>
        public uint nMileage;
        /// <summary>
        /// 工号
        /// Driver ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDriverID;
    }

    /// <summary>
    /// 当前油耗情况事件, 对应事件类型 ALARM_BUS_CUR_OIL
    /// The current consumption situation, A corresponding event type ALARM_BUS_CUR_OIL
    /// </summary>
    public struct NET_A_ALARM_BUS_CUR_OIL_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认
        /// Whether need confirm, confirm it by CLIENT_BusConfirmEvent
        /// </summary>
        public bool bNeedConfirm;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// Time for confirmmingevent, UTC, unit:seconds
        /// </summary>
        public int nTime;
        /// <summary>
        /// 事件数据的类型
        /// The type of the event data
        /// </summary>
        public EM_VEHICLE_DATA_TYPE emDataType;
        /// <summary>
        /// 事件时间, UTC制
        /// Event time, UTC
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// GPS信息, 只有经纬度、速度、方向角字段有效
        /// GPS information, only longitude and latitude /speed and direction angle valid
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 当前时间段的开始时间, UTC制
        /// The begining time of the current, UTC
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 当前时间段的开始时间时的GPS信息, 只有经纬度、速度、方向角字段有效
        /// The GPS informations at the beginning time of the current, only longitude and latitude /speed and direction angle valid
        /// </summary>
        public NET_GPS_STATUS_INFO stuStartGPSStatusInfo;
        /// <summary>
        /// 当前油量, 单位: 0.1L
        /// Current oil, unit: 0.1L
        /// </summary>
        public uint nCurOil;
        /// <summary>
        /// 油箱容积, 单位: 0.1L
        /// Tank capacity, unit: 0.1L
        /// </summary>
        public uint nOilTankage;
        /// <summary>
        /// 当前时间段内油量变化, 单位: 0.1L, 正数表示加油, 负数表示耗油
        /// The changes oil of current time, unit: 0.1L, Positive means refuel, Negative means oil consumption
        /// </summary>
        public int nOilChange;
        /// <summary>
        /// 车牌信息
        /// plate
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCarNO;
        /// <summary>
        /// 附属油箱列表
        /// Sub oil list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_SUB_OIL_LIST_INFO[] stuSubOilList;
        /// <summary>
        /// 附属油箱个数
        /// Sub oil num
        /// </summary>
        public int nSubOilNum;
    }

    /// <summary>
    /// 附属油箱列表
    /// Sub oil list
    /// </summary>
    public struct NET_SUB_OIL_LIST_INFO
    {
        /// <summary>
        /// 当前油量，单位：0.1L
        /// Current oil quantity, unit: 0.1L
        /// </summary>
        public uint nCurOilSub;
        /// <summary>
        /// 油箱容积，单位：0.1L
        /// Tank capacity, unit: 0.1L
        /// </summary>
        public uint nOilTankageSub;
        /// <summary>
        /// 当前时间段内油量变化，单位：0.1L 正表示加油 负表示耗油
        /// Change of fuel volume in the current time period, unit: 0.1L, positive indicates refueling, negative represents fuel consumption
        /// </summary>
        public int nOilChangeSub;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 低油量报警事件, 对应事件类型 ALARM_BUS_LOW_OIL
    /// Low oil alarm events, Corresponding event type ALARM_BUS_LOW_OIL
    /// </summary>
    public struct NET_A_ALARM_BUS_LOW_OIL_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认
        /// Whether need confirm, confirm it by CLIENT_BusConfirmEvent
        /// </summary>
        public bool bNeedConfirm;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// Time for confirming the event, UTC, The unit is in seconds
        /// </summary>
        public int nTime;
        /// <summary>
        /// 事件数据的类型
        /// The type of the event data
        /// </summary>
        public EM_VEHICLE_DATA_TYPE emDataType;
        /// <summary>
        /// 事件时间, UTC制
        /// Event time, UTC
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// GPS信息, 只有经纬度、速度、方向角字段有效
        /// GPS information, only longitude and latitude /speed and direction angle valid
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 当前油量, 单位: 0.1L
        /// Current oil, unit: 0.1L
        /// </summary>
        public uint nCurOil;
        /// <summary>
        /// 油量阈值, 单位: 0.1L
        /// Oil threshold, unit: 0.1L
        /// </summary>
        public uint nOilLine;
        /// <summary>
        /// 油箱容积, 单位: 0.1L
        /// Tank capacity, unit: 0.1L
        /// </summary>
        public uint nOilTankage;
        /// <summary>
        /// 车牌信息
        /// plate
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCarNO;
    }

    /// <summary>
    /// 事件类型 ALARM_PASSENGER_CARD_CHECK (乘客刷卡事件)对应的数据描述信息
    /// The description information of event type ALARM_PASSENGER_CARD_CHECK corresponding data block
    /// </summary>
    public struct NET_A_ALARM_PASSENGER_CARD_CHECK
    {
        /// <summary>
        /// 是否需要回复
        /// Need confirm or not
        /// </summary>
        public bool bEventConfirm;
        /// <summary>
        /// 公交卡号
        /// Buscard number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCardNum;
        /// <summary>
        /// GPS信息
        /// GPS information
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPS;
        /// <summary>
        /// 刷卡时间
        /// Time of card check
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// UTC整型
        /// UTC time. unit:second
        /// </summary>
        public int nTime;
        /// <summary>
        /// 刷卡类型
        /// Type of card check
        /// </summary>
        public EM_PASSENGER_CARD_CHECK_TYPE emType;
        /// <summary>
        /// 刷卡机Mac码 (默认"0000",兼容老设备)
        /// POS Mac code(default "0000")
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szMac;
        /// <summary>
        /// 预留
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1012)]
        public byte[] reserved;
    }

    /// <summary>
    /// 电子围栏状态
    /// electronic fence status
    /// </summary>
    public enum EM_ENCLOSURE_STATUS
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ENCLOSURE_STATUS_UNKNOWN,
        /// <summary>
        /// 在电子围栏内
        /// Inside the electronic enclosure
        /// </summary>
        EM_ENCLOSURE_STATUS_INSIDE,
        /// <summary>
        /// 不在电子围栏内
        /// Not in the electronic enclosure
        /// </summary>
        EM_ENCLOSURE_STATUS_OUTSIDE,
    }

    /// <summary>
    /// 报警事件类型ALARM_VEHICLE_STANDING_OVER_TIME(停车超时报警)对应的数据描述信息
    /// alarm event type ALARM_VEHICLE_STANDING_OVER_TIME(parking timeout alarm)corresponding to data description info
    /// </summary>
    public struct NET_A_ALARM_VEHICLE_STANDING_OVER_TIME_INFO
    {
        public uint dwSize;
        /// <summary>
        /// GPS信息
        /// GPS info
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 第一次发生的时间
        /// first occurance time
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// 本次事件发生的时间
        /// current event occurrence time
        /// </summary>
        public NET_TIME_EX stuUtc;
        /// <summary>
        /// 本次事件发生的时间, 与stuUtc值一样,格式不同,用于事件确认接口入参
        /// current event occurrence time
        /// </summary>
        public uint dwUtc;
        /// <summary>
        /// 是否需要回复
        /// confirm needed or not, invalid in CLIENT_StartListenEx callback
        /// </summary>
        public bool bEventConfirm;
        /// <summary>
        /// 停车时长，单位秒
        /// Parking time, in seconds
        /// </summary>
        public uint nParkingTime;
        /// <summary>
        /// 设备编码
        /// Device code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDeviceID;
        /// <summary>
        /// 电子围栏状态
        /// Electronic fence status
        /// </summary>
        public EM_ENCLOSURE_STATUS emEnclosureStatus;
    }

    /// <summary>
    /// 事件类型 ALARM_DRIVE_AFTER_WORK (非工作时间事件)对应的数据描述信息
    /// event type ALARM_BUS_DRIVE_AFTER_WORK (not work time) data description
    /// </summary>
    public struct NET_A_ALARM_DVRIVE_AFTER_WORK
    {
        /// <summary>
        /// 是否需要回复
        /// need confirm or not
        /// </summary>
        public bool bEventConfirm;
        /// <summary>
        /// GPS信息
        /// GPS
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPS;
        /// <summary>
        /// 刷卡时间
        /// check time
        /// </summary>
        public NET_TIME_EX stuUtc;
        /// <summary>
        /// 刷卡时间, 与stuUtc值一样,格式不同,用于事件确认接口入参
        /// check time, value equal to stuUtc, format different, used to confirm
        /// </summary>
        public uint dwUtc;
        /// <summary>
        /// 预留
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] reserved;
    }

    /// <summary>
    /// 报警事件类型 ALARM_BUS_PAD_SHUTDOWN(PAD关机事件)对应的数据描述信息
    /// event type ALARM_BUS_PAD_SHUTDOWN(PAD shut down event) data description
    /// </summary>
    public struct NET_A_ALARM_BUS_PAD_SHUTDOWN_INFO
    {
        /// <summary>
        /// 关机延时时间,单位：秒
        /// delay time for shut down, unit: sec
        /// </summary>
        public int nDelayTime;
        /// <summary>
        /// 是否需要确认
        /// need confirme to shut down, TRUE: yes, FALSE: no
        /// </summary>
        public bool bConfirm;
        /// <summary>
        /// 事件发生的时间
        /// event time
        /// </summary>
        public NET_TIME_EX stuUtcTime;
        /// <summary>
        /// 事件发生的时间, 用于确认
        /// event time, for confirm
        /// </summary>
        public uint dwUtc;
        /// <summary>
        /// 预留字节
        /// revervsed
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型 ALARM_BUS_TIRED_DRIVE_CHECK (疲劳驾驶事件)对应的数据描述信息
    /// The description information of event type ALARM_BUS_TIRED_DRIVE_CHECK corresponding data block
    /// </summary>
    public struct NET_A_ALARM_TIRED_DRIVE_CHECK_INFO
    {
        /// <summary>
        /// 是否需要回复
        /// Need confirm or not
        /// </summary>
        public bool bEventConfirm;
        /// <summary>
        /// 事件动作, 0:Start, 1:Stop
        /// 0:Start, 1:Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 驾驶时间 单位分钟
        /// Drive time unit:minutes
        /// </summary>
        public int nDriveTime;
        /// <summary>
        /// GPS信息
        /// GPS information
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPS;
        /// <summary>
        /// 事件上报时间
        /// Time of the event happens
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件上报时间,UTC整型
        /// Time of the event happens UTC time. unit:second
        /// </summary>
        public int nTime;
        /// <summary>
        /// 预留
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] reserved;
    }

    /// <summary>
    /// 偷油报警事件, 对应事件类型 ALARM_BUS_STEAL_OIL
    /// Steal oil alarm events, Corresponding evnet type ALARM_BUS_STEAL_OIL
    /// </summary>
    public struct NET_A_ALARM_BUS_STEAL_OIL_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认
        /// Whether need confirm, confirm it by CLIENT_BusConfirmEvent
        /// </summary>
        public bool bNeedConfirm;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// Time for confirming the event, UTC, The unit is in seconds
        /// </summary>
        public int nTime;
        /// <summary>
        /// 事件数据的类型
        /// The type of the event data
        /// </summary>
        public EM_VEHICLE_DATA_TYPE emDataType;
        /// <summary>
        /// 事件时间, UTC制
        /// Event time, UTC
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// GPS信息, 只有经纬度、速度、方向角字段有效
        /// GPS information, only longitude and latitude /speed and direction angle valid
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 当前油量, 单位: 0.1L
        /// Current oil, unit: 0.1L
        /// </summary>
        public uint nCurOil;
        /// <summary>
        /// 油箱容积, 单位: 0.1L
        /// Tank capacity, unit: 0.1L
        /// </summary>
        public uint nOilTankage;
        /// <summary>
        /// 车牌信息
        /// plate
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCarNO;
        /// <summary>
        /// / 事件发生的时间(标准UTC时间)
        /// / Time of event occurrence (standard UTC time)
        /// </summary>
        public NET_TIME_EX stuRealUTC;
        /// <summary>
        /// / stuRealUTC 是否有效，bRealUTC 为 TRUE 时，用 stuRealUTC，否则用 stuTime 字段
        /// / Is stuRealUTC valid? When bRealUTC is TRUE, use stuRealUTC; otherwise, use the stuTime field
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// / 减少油量，单位0.1L
        /// / Reduce fuel volume, unit 0.1L
        /// </summary>
        public uint nOilDecreased;
    }

    /// <summary>
    /// 线路状态
    /// Line status
    /// </summary>
    public enum EM_LINE_STATE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_LINE_STATE_UNKNOWN,
        /// <summary>
        /// 线路正常
        /// Normal
        /// </summary>
        EM_LINE_STATE_NORMAL,
        /// <summary>
        /// 脱离线路
        /// Away
        /// </summary>
        EM_LINE_STATE_AWAY,

    }
    /// <summary>
    /// 线路偏移事件, 车载需求,对应事件类型 ALARM_BUS_CIRCUIT_SHIFT
    /// Circuit shift event,vehicle demand, Corresponding to ALARM_BUS_CIRCUIT_SHIFT
    /// </summary>
    public struct NET_A_ALARM_BUS_CIRCUIT_SHIFT_INFO
    {
        /// <summary>
        /// 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认
        /// Whether need confirm, confirm it by CLIENT_BusConfirmEvent
        /// </summary>
        public bool bNeedConfirm;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// Time for confirming the event, UTC, The unit is in seconds
        /// </summary>
        public uint nTime;
        /// <summary>
        /// GPS信息, 只有经纬度、速度、方向角字段有效
        /// GPS information, only longitude and latitude /speed and direction angle valid
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 事件发生时间,UTC制
        /// Event time, UTC
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 线路状态
        /// Line status
        /// </summary>
        public EM_LINE_STATE emLineState;
        /// <summary>
        /// 是否停车且偏移
        /// Whether to stop and offset
        /// </summary>
        public bool bShiftAndPark;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 线路超时事件,押运车需求,对应事件类型 ALARM_BUS_ROUTE_OVERTIME
    /// Route overtime,escort vehicle demand,Corresponding to ALARM_BUS_ROUTE_OVERTIME
    /// </summary>
    public struct NET_A_ALARM_BUS_ROUTE_OVERTIME_INFO
    {
        /// <summary>
        /// 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认
        /// Whether need confirm, confirm it by CLIENT_BusConfirmEvent
        /// </summary>
        public bool bNeedConfirm;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// Time for confirming the event, UTC, The unit is in seconds
        /// </summary>
        public uint nTime;
        /// <summary>
        /// GPS信息, 只有经纬度、速度、方向角字段有效
        /// GPS information, only longitude and latitude /speed and direction angle valid
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 事件发生时间,UTC制
        /// Event time, UTC
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 载重报警事件,渣土机需求,对应事件 ALARM_BUS_VEHICLE_CARRY_ALARM
    /// Vehicle Carry Alarm, slag machine demand, Corresponding to ALARM_BUS_VEHICLE_CARRY_ALARM
    /// </summary>
    public struct NET_A_ALARM_BUS_VEHICLE_CARRY_ALARM_INFO
    {
        /// <summary>
        /// 事件动作, 0: 重载, 1: 空载
        /// Event Action, 0: heavy load, 1: empty load
        /// </summary>
        public int nAction;
        /// <summary>
        /// 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认
        /// Whether need confirm, confirm it by CLIENT_BusConfirmEvent
        /// </summary>
        public bool bNeedConfirm;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// Time for confirming the event, UTC, The unit is in seconds
        /// </summary>
        public uint nTime;
        /// <summary>
        /// GPS信息, 只有经纬度、速度、方向角字段有效
        /// GPS information, only longitude and latitude /speed and direction angle valid
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 事件发生时间,UTC制
        /// Event time, UTC
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 载重报警事件,渣土机需求,对应事件 ALARM_BUS_VEHICLE_PAULIN_ALARM
    /// Vehicle Paulin Alarm, slag machine demand, Corresponding to ALARM_BUS_VEHICLE_PAULIN_ALARM
    /// </summary>
    public struct NET_A_ALARM_BUS_VEHICLE_PAULIN_ALARM_INFO
    {
        /// <summary>
        /// 事件动作, 0: 篷布开, 1: 篷布关
        /// Event Action, 0: paulin open 1: paulin close
        /// </summary>
        public int nAction;
        /// <summary>
        /// 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认
        /// Whether need confirm, confirm it by CLIENT_BusConfirmEvent
        /// </summary>
        public bool bNeedConfirm;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// Time for confirming the event, UTC, The unit is in seconds
        /// </summary>
        public uint nTime;
        /// <summary>
        /// GPS信息, 只有经纬度、速度、方向角字段有效
        /// GPS information, only longitude and latitude /speed and direction angle valid
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 事件发生时间,UTC制
        /// Event time, UTC
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 举升报警事件,渣土机需求,对应事件 ALARM_BUS_VEHICLE_LIFT_ALARM
    /// Vehicle Lift Alarm, slag machine demand, Corresponding to ALARM_BUS_VEHICLE_LIFT_ALARM
    /// </summary>
    public struct NET_A_ALARM_BUS_VEHICLE_LIFT_ALARM_INFO
    {
        /// <summary>
        /// 事件动作, 0: 举升机举, 1: 举升机平
        /// Event Action, 0: lift, 1: flat
        /// </summary>
        public int nAction;
        /// <summary>
        /// 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认
        /// Whether need confirm, confirm it by CLIENT_BusConfirmEvent
        /// </summary>
        public bool bNeedConfirm;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// Time for confirming the event, UTC, The unit is in seconds
        /// </summary>
        public uint nTime;
        /// <summary>
        /// GPS信息, 只有经纬度、速度、方向角字段有效
        /// GPS information, only longitude and latitude /speed and direction angle valid
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 事件发生时间,UTC制
        /// Event time, UTC
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 火灾压力传感器报警事件,对应事件 ALARM_BUS_FIRE_PRESSURE_ALARM
    /// Fire pressure sensor alarm event,Corresponding to ALARM_BUS_FIRE_PRESSURE_ALARM
    /// </summary>
    public struct NET_A_ALARM_BUS_FIRE_PRESSURE_ALARM_INFO
    {
        /// <summary>
        /// 事件动作, 0: 开始, 1: 停止
        /// Event Action, 0: start, 1: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// Time for confirming the event, UTC, The unit is in seconds
        /// </summary>
        public uint nTime;
        /// <summary>
        /// 火灾压力传感器阈值
        /// Fire pressure sensor threshold
        /// </summary>
        public double dbFirePressureThreshold;
        /// <summary>
        /// 当前火灾压力传感器值
        /// Current fire pressure sensor value
        /// </summary>
        public double dbFirePressureValue;
        /// <summary>
        /// 事件发生的时间
        /// Event time, UTC
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// GPS信息
        /// GPS
        /// </summary>NET_ALARM_BUS_ADD_OIL_INFO
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved;
    }

    /// <summary>
    /// 事件数据类型
    /// Event data type
    /// </summary>
    public enum EM_EVENT_DATA_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_EVENT_DATA_TYPE_UNKNOWN,
        /// <summary>
        /// 实时数据
        /// Real-time data
        /// </summary>
        EM_EVENT_DATA_TYPE_REALTIME,
        /// <summary>
        /// 历史数据, 重发数据
        /// Historical Data, Resend Data
        /// </summary>
        EM_EVENT_DATA_TYPE_HISTORY,
    }

    /// <summary>
    /// 油量增加检测事件, 对应事件 ALARM_BUS_ADD_OIL
    /// Increased oil volume detection event, corresponding to ALARM_BUS_ADD_OIL
    /// </summary>
    public struct NET_ALARM_BUS_ADD_OIL_INFO
    {
        /// <summary>
        /// 事件动作, 0: 脉冲, 1: 开始, 2: 停止
        /// Event action, 0:pulse 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 是否需要确认, 通过调用CLIENT_BusConfirmEvent接口确认
        /// Whether need confirm, confirm it by CLIENT_BusConfirmEvent
        /// </summary>
        public bool bNeedConfirm;
        /// <summary>
        /// 用来确认事件用的时间, UTC制, 单位为秒
        /// Time for confirming the event, UTC, The unit is in seconds
        /// </summary>
        public uint nTime;
        /// <summary>
        /// 事件发生时间,UTC制
        /// Event time, UTC
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 事件数据类型
        /// Event data type
        /// </summary>
        public EM_EVENT_DATA_TYPE emDataType;
        /// <summary>
        /// 车牌
        /// license plate
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]
        public string szCarNo;
        /// <summary>
        /// 加油量, 单位: 0.1L
        /// Oil volume, unit: 0.1L
        /// </summary>
        public uint nAddOilVolume;
        /// <summary>
        /// 开始加油时间
        /// Start refueling time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 结束加油时间
        /// End refueling time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_ABNORMALRUNDETECTION(异常奔跑事件)对应的数据块描述信息
    /// the describe of EVENT_IVS_ABNORMALRUNDETECTION's data
    /// </summary>
    public struct NET_A_DEV_EVENT_ABNORMALRUNDETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 检测到的物体
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 物体运动速度,km/h
        /// speed ,km/h
        /// </summary>
        public double dbSpeed;
        /// <summary>
        /// 触发速度,km/h
        /// triggerSpeed,km/h
        /// </summary>
        public double dbTriggerSpeed;
        /// <summary>
        /// 规则检测区域顶点数
        /// detect region's point number
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 规则检测区域
        /// detect region info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// 物体运动轨迹顶点数
        /// track line point number
        /// </summary>
        public int nTrackLineNum;
        /// <summary>
        /// 物体运动轨迹
        /// track line info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] TrackLine;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 异常奔跑类型, 0-快速奔跑, 1-突然加速, 2-突然减速
        /// type, 0-run fast, 1-sudden speedup, 2-sudden speed-down
        /// </summary>
        public byte bRunType;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件源设备上的index,-1表示数据无效
        /// the source device's index,-1 means data in invalid
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// the source device's sign(exclusive),field said local device does not exist or is empty
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// 事件触发累计次数
        /// event trigger accumilated times
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 智能事件公共信息
        /// intelligent things info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved bytes.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 604)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 鱼眼窗口位置信息
    /// fish eye window location info
    /// </summary>
    public struct NET_A_CFG_FISHEYE_WINDOW_INFO
    {
        /// <summary>
        /// 窗口ID
        /// window ID
        /// </summary>
        public uint dwWindowID;
        /// <summary>
        /// EPtz（电子云台）的焦点横坐标
        /// EPtz (e-PTZ), focus x axis
        /// </summary>
        public int nFocusX;
        /// <summary>
        /// EPtz (电子云台）的焦点纵坐标
        /// EPtz (e-PTZ), focus y axis
        /// </summary>
        public int nFocusY;
        /// <summary>
        /// EPtz的水平角度
        /// EPtz h-angle
        /// </summary>
        public int nHorizontalAngle;
        /// <summary>
        /// EPtz的垂直角度
        /// EPtz v-angle
        /// </summary>
        public int nVerticalAngle;
    }

    /// <summary>
    /// 鱼眼各模式的窗口位置信息
    /// fish eye mode window location info
    /// </summary>
    public struct NET_A_CFG_FISHEYE_MODE_INFO
    {
        /// <summary>
        /// 模式类型，详见 CFG_CALIBRATE_MODE
        /// mode type, see CFG_CALIBRATE_MODE
        /// </summary>
        public int nModeType;
        /// <summary>
        /// 当前模式下的窗口数
        /// current mode window number
        /// </summary>
        public int nWindowNum;
        /// <summary>
        /// 具体窗口信息
        /// see window info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_A_CFG_FISHEYE_WINDOW_INFO[] stuWindwos;
    }

    /// <summary>
    /// 鱼眼矫正模式
    /// fish eye mode
    /// </summary>
    public enum EM_A_CFG_CALIBRATE_MODE
    {
        /// <summary>
        /// 未知模式
        /// unknown mode
        /// </summary>
        CFG_CALIBRATE_MODE_UNKOWN,
        /// <summary>
        /// 原始图像模式
        /// original image mode
        /// </summary>
        CFG_CALIBRATE_MODE_ORIGIAL,
        /// <summary>
        /// 配置模式
        /// config mode
        /// </summary>
        CFG_CALIBRATE_MODE_CONFIG,
        /// <summary>
        /// 全景模式
        /// panorama mode
        /// </summary>
        CFG_CALIBRATE_MODE_PANORAMA,
        /// <summary>
        /// 双全景模式
        /// dual panorama mode
        /// </summary>
        CFG_CALIBRATE_MODE_DOUBLEPANORAMA,
        /// <summary>
        /// 1+3模式（一个原始鱼眼图像加3个EPtz图像）
        /// 1+3 mode, one original fish eyeimage plus 3 EPtz images,
        /// </summary>
        CFG_CALIBRATE_MODE_ORIGIALPLUSTHREEEPTZREGION,
        /// <summary>
        /// 单画面EPtz模式（只有一个EPtz画面）
        /// single image EPtz mode, only one EPtz image,
        /// </summary>
        CFG_CALIBRATE_MODE_SINGLE,
        /// <summary>
        /// 4画面模式（4个EPtz控制画面）
        /// 4 image mode, 4 EPtz control images,
        /// </summary>
        CFG_CALIBRATE_MODE_FOUREPTZREGION,
        /// <summary>
        /// 普通模式
        /// normal mode
        /// </summary>
        CFG_CALIBRATE_MODE_NORMAL,
    }

    /// <summary>
    /// 鱼眼详细信息配置
    /// Fish eye detailed info config
    /// </summary>
    public struct NET_A_CFG_FISHEYE_DETAIL_INFO
    {
        /// <summary>
        /// 模块数
        /// module number
        /// </summary>
        public int nModeNum;
        /// <summary>
        /// 具体模块信息
        /// detailed module info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_A_CFG_FISHEYE_MODE_INFO[] stuModes;
        /// <summary>
        /// 鱼眼矫正模式
        /// fish eye calibrate mode
        /// </summary>
        public EM_A_CFG_CALIBRATE_MODE emCalibrateMode;
    }

    /// <summary>
    /// 紧急事件(对应URGENCY_ALARM_EX2, 对原有的URGENCY_ALARM_EX类型的升级, 指人为触发的紧急事件, 一般处理是联动外部通讯功能请求帮助)
    /// Emergency Event, Correspond URGENCY_ALARM_EX2,URGENCY_ALARM_EX Update, That is Artificially Triggered Emergency,General Treatment is Linkage External Communications Functions for Help,
    /// </summary>
    public struct NET_A_ALARM_URGENCY_ALARM_EX2
    {
        public uint dwSize;
        /// <summary>
        /// 事件产生的时间
        /// Event Begin Time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 用于标识不同的紧急事件
        /// used to mark different emergency event
        /// </summary>
        public uint nID;
        /// <summary>
        /// 0:脉冲
        /// 0: pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// GPS信息
        /// GPS information
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatusInfo;
        /// <summary>
        /// 国际移动设备辨识码15位数字标识
        /// 15-digit ID with International Mobile Equipment Identification Code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szImei;
        /// <summary>
        /// 距离上次上报的GPS移动距离, 单位0.1Km
        /// GPS movement distance from the last report, unit 0.1Km
        /// </summary>
        public uint nDistance;
        /// <summary>
        /// 车牌号码
        /// License plate number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPlateNumber;
        /// <summary>
        /// 应答号码
        /// Answer number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szReplyNumber;
        /// <summary>
        /// 线路信息
        /// Line information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szLine;
    }

    /// <summary>
    /// 登陆失败报警配置(对应 CFG_CMD_LOGIN_FAILURE_ALARM)
    /// login failure alarm(Corresponding to CFG_CMD_LOGIN_FAILURE_ALARM)
    /// </summary>
    public struct NET_A_CFG_LOGIN_FAILURE_ALARM
    {
        /// <summary>
        /// 登陆失败报警使能开关，TRUE为打开，FALSE为关闭
        /// Enable switch of login failure alarm,TRUE is ON,FALSE is OFF
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 尝试登陆次数，若登陆密码错误次数达到尝试次数后，启动报警联动
        /// Try login times.if times is over nTryLoginTimes, start alarm linkage.
        /// </summary>
        public int nTryLoginTimes;
        /// <summary>
        /// 报警联动
        /// alarm link
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
    }

    /// <summary>
    /// 围栏报警类型
    /// fence alarm type
    /// </summary>
    public enum EM_ENCLOSURE_TYPE_EX
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ENCLOSURE_TYPE_EX_UNKNOWN,
        /// <summary>
        /// 限速区
        /// limit speed
        /// </summary>
        EM_ENCLOSURE_TYPE_EX_LIMITSPEED,
        /// <summary>
        /// 驾驶区
        /// Drive area
        /// </summary>
        EM_ENCLOSURE_TYPE_EX_DRIVEALLOW,
        /// <summary>
        /// 禁止区
        /// Forbidden
        /// </summary>
        EM_ENCLOSURE_TYPE_EX_FORBIDDRIVE,
        /// <summary>
        /// 装货区
        /// Loading area
        /// </summary>
        EM_ENCLOSURE_TYPE_EX_LOADGOODS,
        /// <summary>
        /// 卸货区
        /// Unloading area
        /// </summary>
        EM_ENCLOSURE_TYPE_EX_UPLOADGOODS,
    }

    /// <summary>
    /// 详细类型
    /// detail type
    /// </summary>
    public enum EM_ENCLOSURE_ALARM_TYPE_EX
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        ENCLOSURE_ALARM_EX_UNKNOWN,
        /// <summary>
        /// 驶入
        /// Drivein
        /// </summary>
        ENCLOSURE_ALARM_EX_DRIVEIN,
        /// <summary>
        /// 驶出
        /// Driveout
        /// </summary>
        ENCLOSURE_ALARM_EX_DRIVEOUT,
        /// <summary>
        /// 超速
        /// overspeed
        /// </summary>
        ENCLOSURE_ALARM_EX_OVERSPEED,
        /// <summary>
        /// 超速消失
        /// Speedclear
        /// </summary>
        ENCLOSURE_ALARM_EX_SPEEDCLEAR,
    }

    /// <summary>
    /// 电子围栏报警拓展结构体
    /// electronic fence alarm expansion structure
    /// </summary>
    public struct NET_A_ALARM_ENCLOSURE_INFO_EX
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 1:开始 2:停止
        /// 1: start 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件发生的时间
        /// The time when the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 围栏报警类型
        /// Fence alarm type
        /// </summary>
        public EM_ENCLOSURE_TYPE_EX emType;
        /// <summary>
        /// 返回详细类型个数
        /// Returns the number of detailed types
        /// </summary>
        public int nActionNum;
        /// <summary>
        /// 详细类型
        /// Detail type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_ENCLOSURE_ALARM_TYPE_EX[] emAction;
        /// <summary>
        /// 司机编号
        /// Driver number
        /// </summary>
        public int nDriverNo;
        /// <summary>
        /// 围栏编号
        /// Fence number
        /// </summary>
        public int nEnclosureID;
        /// <summary>
        /// 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274
        /// The longitude (in millionths of a degree, ranging from 0 to 360 degrees) is 300178274 if the longitude is 120.178274 degrees east
        /// </summary>
        public uint dwLongitude;
        /// <summary>
        /// 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382
        /// Latitude (0 to 180 degrees in millionths) For example, the latitude of 30.183382 degrees north is 120183382
        /// </summary>
        public uint dwLatidude;
        /// <summary>
        /// 限制车速
        /// Limit the speed
        /// </summary>
        public int nLimitSpeed;
        /// <summary>
        /// 当前速度
        /// Current speed
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDeviceID;
        /// <summary>
        /// 出发围栏编号
        /// Departure fence number
        /// </summary>
        public int nStartEnclosureID;
        /// <summary>
        /// 目的围栏编号
        /// Destination fence number
        /// </summary>
        public int nEndEnclosureID;
        /// <summary>
        /// 出发时间，本地时间
        /// Departure time, local time
        /// </summary>
        public NET_TIME_EX stuStartTime;
        /// <summary>
        /// 出发时间，本地时间
        /// Departure time, local time
        /// </summary>
        public NET_TIME_EX stuEndTime;
        /// <summary>
        /// 本趟行驶行驶里程数，单位0.1Km
        /// The mileage of this trip (unit: 0.1Km)
        /// </summary>
        public int nMileage;
        /// <summary>
        /// 趟数
        /// Number of trips
        /// </summary>
        public int nTriggerCount;
        /// <summary>
        /// 保留
        /// Reserve
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 电子围栏报警
    /// enclosure alarm info
    /// </summary>
    public struct NET_A_ALARM_ENCLOSURE_INFO
    {
        /// <summary>
        /// 有效电子围栏类型个数
        /// type number
        /// </summary>
        public int nTypeNumber;
        /// <summary>
        /// 电子围栏类型, 见 ENCLOSURE_TYPE
        /// type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] bType;
        /// <summary>
        /// 有效报警类型个数
        /// alarm type number
        /// </summary>
        public int nAlarmTypeNumber;
        /// <summary>
        /// 报警类型,见ENCLOSURE_ALARM_TYPE
        /// alarm type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] bAlarmType;
        /// <summary>
        /// 司机工号
        /// drive id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDriverId;
        /// <summary>
        /// 电子围栏ID
        /// enclosure id
        /// </summary>
        public uint unEnclosureId;
        /// <summary>
        /// 限速,单位km/h
        /// speed limit(km/h)
        /// </summary>
        public uint unLimitSpeed;
        /// <summary>
        /// 当前速度
        /// current speed
        /// </summary>
        public uint unCurrentSpeed;
        /// <summary>
        /// 报警发生时间
        /// alarm time
        /// </summary>
        public NET_TIME stAlarmTime;
        /// <summary>
        /// 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274
        /// longitude
        /// </summary>
        public uint dwLongitude;
        /// <summary>
        /// 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382
        /// 经纬度的具体转换方式可以参考结构体 NET_WIFI_GPS_INFO 中的注释
        /// latidude
        /// </summary>
        public uint dwLatidude;
        /// <summary>
        /// 0-实时 1-补传
        /// 0-real time 1-tofill
        /// </summary>
        public byte bOffline;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
        public string reserve;
        /// <summary>
        /// 围栏触发次数
        /// trigger count
        /// </summary>
        public uint unTriggerCount;
        /// <summary>
        /// 事件公共扩展字段结构体 注：该结构体走 ALARM_ENCLOSURE_INFO_EX 时依然有效
        /// Event Public Extension Field structure Note: This structure is still valid with ALARM_ENCLOSURE_INFO_EX
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 该值为TRUE时应使用 ALARM_ENCLOSURE_INFO_EX 结构体中字段
        /// If this value is TRUE, the ALARM_ENCLOSURE_INFO_EX structure field should be used
        /// </summary>
        public bool bIsAlarmEnclosureInfoEx;
        /// <summary>
        /// 当走三代事件时数据存在该结构体
        /// Data exists in this structure when three generations of events are taken
        /// </summary>
        public NET_A_ALARM_ENCLOSURE_INFO_EX stuAlarmEnclosureInfoEx;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 人脸对比库进度类型
    /// the type of face database progress
    /// </summary>
    public enum EM_FACEDB_PROGRESS_TYPE
    {
        /// <summary>
        /// 人脸库导入进度
        /// import progress
        /// </summary>
        EM_FACEDB_PROGRESS_IMPORT,
        /// <summary>
        /// 人脸库部署进度
        /// deploy progress
        /// </summary>
        EM_FACEDB_PROGRESS_DEPLOY,
    }

    /// <summary>
    /// 人脸库导入状态
    /// the state of import face database
    /// </summary>
    public enum EM_IMPORT_FACEDB_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_IMPORT_FACEDB_UNKNOWN,
        /// <summary>
        /// 导入中
        /// importing
        /// </summary>
        EM_IMPORT_FACEDB_ONGING,
        /// <summary>
        /// 导入结束, 开始生成数据库
        /// import end, start production database
        /// </summary>
        EM_IMPORT_FACEDB_END,
        /// <summary>
        /// 系统忙，已经有导入任务
        /// the system is busy
        /// </summary>
        EM_IMPORT_FACEDB_BUSY,
        /// <summary>
        /// 数据包检验失败
        /// packet checkout faile
        /// </summary>
        EM_IMPORT_FACEDB_DATAERROR,
        /// <summary>
        /// 数据包非法
        /// packet illegal
        /// </summary>
        EM_IMPORT_FACEDB_INVALID,
        /// <summary>
        /// 同步成功, 数据库已生成
        /// synchronization success
        /// </summary>
        EM_IMPORT_FACEDB_SYNC_SUCCESS,
        /// <summary>
        /// 同步失败, 数据库无法生成
        /// synchronization failed
        /// </summary>
        EM_IMPORT_FACEDB_SYNC_FALIED,
        /// <summary>
        /// 数据库已满无法导入
        /// database cannot be imported
        /// </summary>
        EM_IMPORT_FACEDB_DBFULL,
        /// <summary>
        /// 存储空间满无法导入
        /// storage space is full, cannot to import face database
        /// </summary>
        EM_IMPORT_FACEDB_SDFULL,
        /// <summary>
        /// 导入压缩包密码不对
        /// compression package cipher is incorrect
        /// </summary>
        EM_IMPORT_FACEDB_CIPHER_ERROR,
        /// <summary>
        /// 发送人脸库数据失败
        /// failed to send face database data
        /// </summary>
        EM_IMPORT_FACEDB_SEND_FAIL,
        /// <summary>
        /// 上传失败
        /// upload failure
        /// </summary>
        EM_IMPORT_FACEDB_UPLOAD_FAIL,
        /// <summary>
        /// 无权上传数据
        /// no permission
        /// </summary>
        EM_IMPORT_FACEDB_UPLOAD_NO_PERMISSION,
    }

    /// <summary>
    /// 导入人脸库状态信息
    /// The status information of import face DB
    /// </summary>
    public struct NET_IMPORT_FACEDB_STATE
    {
        /// <summary>
        /// 进度, 百分比
        /// progress, percentage
        /// </summary>
        public uint nProgress;
        /// <summary>
        /// 进度类型
        /// the type of progress
        /// </summary>
        public EM_FACEDB_PROGRESS_TYPE emType;
        /// <summary>
        /// 状态信息
        /// state type
        /// </summary>
        public EM_IMPORT_FACEDB_STATE emState;
        /// <summary>
        /// 逻辑通道号, 0表示本地通道, 1表示远程通道0, 以此类推
        /// Logical channel number, 0 for local channel, 1 for remote channel 0, and so on
        /// </summary>
        public int nLogicChannel;
        /// <summary>
        /// 当前已部署成功人员数量
        /// Current number of successfully deployed personnel
        /// </summary>
        public int nDeploySuccessNum;
        /// <summary>
        /// 人员总数
        /// Total personnel
        /// </summary>
        public int nTotalNum;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 500)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_ImportFaceDB 接口输入参数
    /// input parameter of interface CLIENT_ImportFaceDB
    /// </summary>
    public struct NET_IN_IMPORT_FACE_DB
    {
        /// <summary>
        /// 结构体大小
        /// the size of this struct
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 人员组ID
        /// group ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupId;
        /// <summary>
        /// 压缩密码
        /// pass word
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassWord;
        /// <summary>
        /// 人脸库路径, 由用户指定, 后续优先使用szFaceDBFilePath
        /// the path of face DB file, specified by user (Szfacedbfilepath is preferred in the future)
        /// </summary>
        public IntPtr pszFaceDBPath;
        /// <summary>
        /// 上传状态回调函数
        /// the callback function of upload face DB
        /// </summary>
        public fImportFaceDbCallBack cbImportState;
        /// <summary>
        /// 用户数据
        /// user data
        /// </summary>
        public IntPtr dwUser;
        /// <summary>
        /// 超时时间
        /// wait time
        /// </summary>
        public int nWaitTime;
        /// <summary>
        /// 人脸库文件个数
        /// Number of face database files
        /// </summary>
        public uint nFaceDBFileNum;
        /// <summary>
        /// 人脸库文件路径列表, 由用户指定
        /// 文件列表并不是指多个人脸库, 所有的文件都是指向同一个人脸库
        /// Face database file path list, specified by the user.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32 * 256)]
        public string szFaceDBFilePath;
        /// <summary>
        /// 逻辑通道号数
        /// logic channe number
        /// </summary>
        public int nLogicChannelNum;
        /// <summary>
        /// 逻辑通道号数组, -1表示所有通道, 0表示本地通道, 1表示远程通道0, 以此类推
        /// Array of logical channel numbers, - 1 for all channels, 0 for local channels, 1 for remote channels 0, and so on  The file list does not refer to multiple face databases. All files point to the same face database
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public int[] nLogicChannels;
    }

    /// <summary>
    /// CLIENT_ImportFaceDB 接口输出参数
    /// output parameter of interface CLIENT_ImportFaceDB
    /// </summary>
    public struct NET_OUT_IMPORT_FACE_DB
    {
        /// <summary>
        /// 结构体大小
        /// the size of this struct
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 导出人脸对比库错误码
    /// the error code of export face DB
    /// </summary>
    public enum EM_EXPORT_FACEDB_ERRORCODE
    {
        /// <summary>
        /// 人脸库导出请求成功
        /// request success
        /// </summary>
        EM_EXPORT_FACEDB_REQUEST_SUCCESS = 1,
        /// <summary>
        /// 无权限
        /// no authority
        /// </summary>
        EM_EXPORT_FACEDB_NO_AUTHORITY = 2,
        /// <summary>
        /// 文件不存在
        /// no such file
        /// </summary>
        EM_EXPORT_FACEDB_NO_THIS_FILE = 3,
        /// <summary>
        /// 导出结束
        /// export end
        /// </summary>
        EM_EXPORT_FACEDB_EXPORT_END = 4,
        /// <summary>
        /// 导出中
        /// exporting
        /// </summary>
        EM_EXPORT_FACEDB_EXPORTING = 5,
        /// <summary>
        /// 文件准备完成
        /// prepare file success
        /// </summary>
        EM_EXPORT_FACEDB_FILE_READY = 8,
        /// <summary>
        /// 文件准备失败
        /// prepare file faild
        /// </summary>
        EM_EXPORT_FACEDB_FILE_FAILED = 9,
        /// <summary>
        /// 人脸库导出请求成功, 需要等待设备准备数据
        /// request success, and need to wait for the device preparation file
        /// </summary>
        EM_EXPORT_FACEDB_WAIT_FILE = 10,
        /// <summary>
        /// 系统忙, 暂时无法导出数据
        /// the system is busy, can not to export face BD
        /// </summary>
        EM_EXPORT_FACEDB_SYSTEM_BUSY = 11,
        /// <summary>
        /// 人脸库数据未定义密码, 不允许导出
        /// no password, can not to export face DB
        /// </summary>
        EM_EXPORT_FACEDB_NO_PASSWORD = 12,
    }

    /// <summary>
    /// 导出人脸库状态信息
    /// The status information of export face DB
    /// </summary>
    public struct NET_EXPORT_FACEDB_STATE
    {
        /// <summary>
        /// 进度, 百分比
        /// progress, percentage
        /// </summary>
        public uint nProgress;
        /// <summary>
        /// 错误码
        /// error code
        /// </summary>
        public EM_EXPORT_FACEDB_ERRORCODE emErrorCode;
        /// <summary>
        /// 人脸库导出数据
        /// the data of face DB
        /// </summary>
        public IntPtr pDataBuf;
        /// <summary>
        /// 数据长度
        /// data len
        /// </summary>
        public uint dwDataLen;
        /// <summary>
        /// 逻辑通道号, 0表示本地通道, 1表示远程通道0, 以此类推
        /// Logical channel number, 0 for local channel, 1 for remote channel 0, and so on
        /// </summary>
        public int nLogicChannel;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_ExportFaceDB 接口输入参数
    /// input parameter of interface CLIENT_ExportFaceDB
    /// </summary>
    public struct NET_IN_EXPORT_FACE_DB
    {
        /// <summary>
        /// 结构体大小
        /// the size of this struct
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 人员组ID
        /// Group ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupId;
        /// <summary>
        /// 压缩密码
        /// password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassWord;
        /// <summary>
        /// 导出人脸库回调函数
        /// the callback function of export face DB
        /// </summary>
        public fExportStateCallBack cbExportFaceDbCallBack;
        /// <summary>
        /// 用户数据
        /// user data
        /// </summary>
        public IntPtr dwUser;
        /// <summary>
        /// 超时时间
        /// wait time
        /// </summary>
        public int nWaitTime;
        /// <summary>
        /// 逻辑通道号, 0表示本地通道, 1表示远程通道0, 以此类推
        /// Logical channel number, 0 for local channel, 1 for remote channel 0, and so on
        /// </summary>
        public int nLogicChannel;
    }

    /// <summary>
    /// CLIENT_ExportFaceDB 接口输出参数
    /// output parameter of interface CLIENT_ExportFaceDB
    /// </summary>
    public struct NET_OUT_EXPORT_FACE_DB
    {
        /// <summary>
        /// 结构体大小
        /// the size of this struct
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 透雾模式枚举
    /// enum of defog mode
    /// </summary>
    public enum EM_A_CFG_DEFOG_MODE
    {
        /// <summary>
        /// 未知方式
        /// unknown mode
        /// </summary>
        EM_DEFOG_MODE_UNKNOW,
        /// <summary>
        /// 关闭
        /// off
        /// </summary>
        EM_DEFOG_MODE_OFF,
        /// <summary>
        /// 自动
        /// automatic
        /// </summary>
        EM_DEFOG_MODE_AUTO,
        /// <summary>
        /// 手动
        /// manual
        /// </summary>
        EM_DEFOG_MODE_MANAL,
    }

    /// <summary>
    /// 大气光模式枚举
    /// enum of light intensity mode
    /// </summary>
    public enum EM_A_CFG_LIGHT_INTENSITY_MODE
    {
        /// <summary>
        /// 未知方式
        /// unknown mode
        /// </summary>
        EM_LIGHT_INTENSITY_MODE_UNKNOW,
        /// <summary>
        /// 自动
        /// automatic
        /// </summary>
        EM_LIGHT_INTENSITY_MODE_AUTO,
        /// <summary>
        /// 手动
        /// manual
        /// </summary>
        EM_LIGHT_INTENSITY_MODE_MANUL,
    }

    /// <summary>
    /// 透雾设置配置信息,对应结构体 CFG_VIDEOINDEFOG
    /// corresponding struct CFG_VIDEOINDEFOG of defog configuration
    /// </summary>
    public struct NET_A_CFG_VIDEOINDEFOG
    {
        /// <summary>
        /// 透雾模式
        /// defog mode
        /// </summary>
        public EM_A_CFG_DEFOG_MODE emDefogMode;
        /// <summary>
        /// 强度(0-100)
        /// intensity(0-100)
        /// </summary>
        public int nIntensity;
        /// <summary>
        /// 大气光模式
        /// light intensity mode
        /// </summary>
        public EM_A_CFG_LIGHT_INTENSITY_MODE emLightIntensityMode;
        /// <summary>
        /// 大气光强度(0-15)
        /// light intensity level(0-15)
        /// </summary>
        public int nLightIntensityLevel;
        /// <summary>
        /// 光学去雾使能 (TRUE使能，FALSE去使能)
        /// enable or not(TRUE:enable, FALSE:not enable)
        /// </summary>
        public bool bCamDefogEnable;
    }

    /// <summary>
    /// 单个通道对应的透雾配置信息
    /// configure information of each channel
    /// </summary>
    public struct NET_A_CFG_VIDEOINDEFOG_LIST
    {
        /// <summary>
        /// 每个通道实际透雾配置个数
        /// actual configure NO. of each channel
        /// </summary>
        public int nVideoInDefogNum;
        /// <summary>
        /// 每个通道对应的透雾配置数组
        /// arrays of configure
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public NET_A_CFG_VIDEOINDEFOG[] stVideoInDefog;
    }

    /// <summary>
    /// CLIENT_AttachEventRestore 接口输入参数
    /// CLIENT_AttachEventRestore input
    /// </summary>
    public struct NET_IN_ATTACH_EVENT_RESTORE
    {
        /// <summary>
        /// 结构体大小
        /// size of structure
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 客户端惟一标识
        /// client identifier
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string szUuid;
        /// <summary>
        /// /需要订阅的事件码列表，一次可订阅多个事件
        /// event code list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64 * 32)]
        public string szCodes;
        /// <summary>
        /// /需要订阅的事件码数量
        /// event code list num
        /// </summary>
        public int nCodesNum;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TIMECHANGE_FOR_TWSDK (系统时间被修改报警事件)对应的数据块描述信息
    /// Description of the data block corresponding to the event EVENT_IVS_TIMECHANGE_FOR_TWSDK (System time modified alarm event)
    /// </summary>
    public struct NET_DEV_EVENT_TIMECHANGE_FOR_TWSDK_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// 0: pulse,1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 扩展协议字段
        /// Extend the protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 修改前时间
        /// Before Modify Time
        /// </summary>
        public NET_TIME stuBeforeModifyTime;
        /// <summary>
        /// 修改后时间
        /// Modified Time
        /// </summary>
        public NET_TIME stuModifiedTime;
        /// <summary>
        /// 设备序列号
        /// Device serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 事件发生的时间
        /// Time of the event
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 预留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 设置的操作类型
    /// Type of set operate
    /// </summary>
    public enum EM_A_NET_EM_SET_ALARMREGION_INFO
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        NET_EM_SET_ALARMREGION_INFO_UNKNOWN,
        /// <summary>
        /// 设置布防模式， 此时CLIENT_SetAlarmRegionInfo接口中的pstuInParam类型为 NET_IN_SET_ALARMMODE， pstuOutParam类型为 NET_OUT_SET_ALARMMODE
        /// Set arm mode CLIENT_SetAlarmRegionInfo:(pstuInParam: NET_IN_SET_ALARMMODE pstuOutParam: NET_OUT_SET_ALARMMODE)
        /// </summary>
        NET_EM_SET_ALARMREGION_INFO_ARMMODE,
        /// <summary>
        /// 设置旁路模式， 此时CLIENT_SetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_SET_BYPASSMODE， pstuOutParam类型为NET_OUT_SET_BYPASSMODE
        /// Set bypass mode CLIENT_SetAlarmRegionInfo:(pstuInParam: NET_IN_SET_BYPASSMODE pstuOutParam: NET_OUT_SET_BYPASSMODE)
        /// </summary>
        NET_EM_SET_ALARMREGION_INFO_BYPASSMODE,
        /// <summary>
        /// 设置输出状态， 此时CLIENT_SetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_SET_OUTPUT_STATE， pstuOutParam类型为NET_OUT_SET_OUTPUT_STATE
        /// Set output state CLIENT_SetAlarmRegionInfo:(pstuInParam: NET_IN_SET_OUTPUT_STATE pstuOutParam: NET_OUT_SET_OUTPUT_STATE)
        /// </summary>
        NET_EM_SET_ALARMREGION_INFO_OUTPUTSTATE,
    }

    /// <summary>
    /// 布防的情景模式
    /// Deployment scenario mode
    /// </summary>
    public enum EM_A_NET_EM_SCENE_MODE
    {
        /// <summary>
        /// 未知模式
        /// Unknown mode
        /// </summary>
        NET_EM_SCENE_MODE_UNKNOWN,
        /// <summary>
        /// 外出模式
        /// OutDoor mode
        /// </summary>
        NET_EM_SCENE_MODE_OUTDOOR,
        /// <summary>
        /// 在家模式
        /// AtHome mode
        /// </summary>
        NET_EM_SCENE_MODE_INDOOR,
        /// <summary>
        /// 全局模式
        /// Whole mode
        /// </summary>
        NET_EM_SCENE_MODE_WHOLE,
        /// <summary>
        /// 立即模式
        /// RightNow mode
        /// </summary>
        NET_EM_SCENE_MODE_RIGHTNOW,
        /// <summary>
        /// 自动模式
        /// Auto Mode
        /// </summary>
        NET_EM_SCENE_MODE_AUTO,
        /// <summary>
        /// 强制模式
        /// Force Mode
        /// </summary>
        NET_EM_SCENE_MODE_FORCE,
        /// <summary>
        /// 自定义模式
        /// Custom Mode
        /// </summary>
        NET_EM_SCENE_MODE_CUSTOM,
        /// <summary>
        /// 就寝模式
        /// Sleeping Mode
        /// </summary>
        NET_EM_SCENE_MODE_SLEEPING,
    }

    /// <summary>
    /// 布撤防详细信息
    /// Arming and disarming details
    /// </summary>
    public struct NET_ARM_OPTIONS
    {
        /// <summary>
        /// 情景模式
        /// Scene mode
        /// </summary>
        public EM_A_NET_EM_SCENE_MODE emSceneMode;
        /// <summary>
        /// 触发方式
        /// Trigger method
        /// </summary>
        public EM_AREAARM_TRIGGERMODE emAreaarmTriggerMode;
        /// <summary>
        /// 触发者编号，如用户编号、键盘地址、遥控器编号、定时器编号或key类型防区号
        /// Trigger number, such as user number, keyboard address, remote control number, timer number or key type zone number
        /// </summary>
        public int nId;
        /// <summary>
        /// 触发者名称，如用户名称，键盘名称等
        /// Trigger name, such as user name, keyboard name, etc.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 网络用户IP地址或网络地址，对于TriggerMode为Remote时，需要填写此项
        /// The IP address or network address of the network user, when TriggerMode is Remote, this field is required
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szClientAddress;
        /// <summary>
        /// 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 132)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 执行布撤防时的附加信息
    /// Additional information when performing arming and disarming
    /// </summary>
    public struct NET_DETAIL_INFO
    {
        /// <summary>
        /// 布撤防详细信息
        /// Arming and disarming details
        /// </summary>
        public NET_ARM_OPTIONS stuArmOption;
        /// <summary>
        /// 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 设置布防模式 输入参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_ARMMODE
    /// CLIENT_SetAlarmRegionInfo NET_EM_SET_ALARMREGION_INFO_ARMMODE input param
    /// </summary>
    public struct NET_IN_SET_ALARMMODE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 布撤防类型
        /// arm type
        /// </summary>
        public EM_ARM_TYPE emArmType;
        /// <summary>
        /// 密码
        /// password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPwd;
        /// <summary>
        /// 区域的个数
        /// area number
        /// </summary>
        public int nAreaNum;
        /// <summary>
        /// 区域号
        /// area id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public int[] arrAreas;
        /// <summary>
        /// 执行布撤防时的附加信息
        /// Additional information when performing arming and disarming
        /// </summary>
        public NET_DETAIL_INFO stuDetail;
        /// <summary>
        /// 区域的扩展个数
        /// Number of areas to expand
        /// </summary>
        public int nAreaNumEx;
        /// <summary>
        /// 区域号扩展 个数超过8个使用这个字段
        /// Use this field if the number of area number extension exceeds 8
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public int[] arrAreasEx;
    }

    /// <summary>
    /// 布防失败细节
    /// failed detail
    /// </summary>
    public struct NET_A_ARM_FAILED_DETAIL
    {
        /// <summary>
        /// 布防失败的区域号
        /// failed area id
        /// </summary>
        public int nArea;
        /// <summary>
        /// 报警源输入返回个数
        /// alarm source return number
        /// </summary>
        public int nAlarmSourceRet;
        /// <summary>
        /// 区域下包含的有源输入的防区
        /// alarm source number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 72)]
        public int[] arrAlarmSource;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 设备异常信息
    /// Equipment exception information
    /// </summary>
    public struct NET_DEVICE_FAULT_INFO
    {
        /// <summary>
        /// 设备名称
        /// Device Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
        /// <summary>
        /// 异常原因，平台直接取值做显示即可
        /// The reason for the exception, the platform can directly display the value
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReason;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 异常防区信息
    /// Abnormal zone information
    /// </summary>
    public struct NET_ZONE_ABNORMAL_INFO
    {
        /// <summary>
        /// 防区号
        /// Zone code
        /// </summary>
        public int nIndex;
        /// <summary>
        /// 防区名称
        /// Zoom name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
        /// <summary>
        /// 异常原因，异常原因，平台直接取值做显示即可
        /// Exception reason, exception reason, the platform can directly display the value
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReason;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 188)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 布防失败细节扩展字段
    /// Bufang failure details extended field
    /// </summary>
    public struct NET_A_ARM_FAILED_DETAIL_EX
    {
        /// <summary>
        /// 布防失败的区域号
        /// Number of the area that failed to arm
        /// </summary>
        public int nArea;
        /// <summary>
        /// 报警源输入返回个数
        /// Number of alarm source input returns
        /// </summary>
        public int nAlarmSourceRetEx;
        /// <summary>
        /// 区域下包含的有源输入的防区
        /// The active input defense zone contained under the zone
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] arrAlarmSourceEx;
        /// <summary>
        /// 异常防区信息个数
        /// Number of abnormal zone information
        /// </summary>
        public int nZoneAbnormalNum;
        /// <summary>
        /// 异常防区信息，最大有1024个
        /// Abnormal zone information, maximum 1024
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_ZONE_ABNORMAL_INFO[] stuZoneAbnormal;
    }

    /// <summary>
    /// 设置布防模式 输出参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_ARMMODE
    /// CLIENT_SetAlarmRegionInfo NET_EM_SET_ALARMREGION_INFO_ARMMODE output param
    /// </summary>
    public struct NET_OUT_SET_ALARMMODE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 布防结果 0:成功 1:失败
        /// result 0:succeed 1:failed
        /// </summary>
        public int nArmResult;
        /// <summary>
        /// 布防失败的区域个数
        /// failed area number
        /// </summary>
        public int nFailedAreaRet;
        /// <summary>
        /// 布防失败的细节
        /// failed detail
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_A_ARM_FAILED_DETAIL[] stuFailedDetail;
        /// <summary>
        /// 布防失败个数, 最大值为64
        /// The number of failed deployments, the maximum is 64
        /// </summary>
        public int nFailedDetailNum;
        /// <summary>
        /// 布防失败的细节扩展字段 布防个数大于8个使用此字段 NET_A_ARM_FAILED_DETAIL_EX
        /// Expansion field for details of failed deployment NET_A_ARM_FAILED_DETAIL_EX
        /// </summary>
        public IntPtr pstuFailedDetailEx;
        /// <summary>
        /// 异常设备信息个数
        /// Number of abnormal device information
        /// </summary>
        public int nDeviceFaultNum;
        /// <summary>
        /// 设备异常信息，最大支持256个
        /// Device abnormal information, maximum support 256
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_DEVICE_FAULT_INFO[] stuDeviceFault;
    }

    /// <summary>
    /// 旁路模式类型
    /// Bypass mode type
    /// </summary>
    public enum EM_BYPASSMODE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_BYPASSMODE_TYPE_UNKNOWN,
        /// <summary>
        /// 不使用
        /// Not use
        /// </summary>
        EM_BYPASSMODE_TYPE_OFF,
        /// <summary>
        /// 正常
        /// Normal
        /// </summary>
        EM_BYPASSMODE_TYPE_ACTIVE,
        /// <summary>
        /// 旁路
        /// Bypass
        /// </summary>
        EM_BYPASSMODE_TYPE_BYPASSED,
        /// <summary>
        /// 隔离
        /// Isolate
        /// </summary>
        EM_BYPASSMODE_TYPE_ISOLATED,
        /// <summary>
        /// 测试
        /// Test
        /// </summary>
        EM_BYPASSMODE_TYPE_TEST,
    }

    /// <summary>
    /// 设置旁路状态 输入参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_BYPASSMODE
    /// CLIENT_SetAlarmRegionInfo NET_EM_SET_ALARMREGION_INFO_BYPASSMODE input param
    /// </summary>
    public struct NET_IN_SET_BYPASSMODE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 密码
        /// password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPwd;
        /// <summary>
        /// 旁路模式
        /// bypass mode
        /// </summary>
        public EM_BYPASSMODE_TYPE emType;
        /// <summary>
        /// 防区个数
        /// zone number
        /// </summary>
        public int nZoneNum;
        /// <summary>
        /// 防区号
        /// zone id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 72)]
        public int[] arrZones;
        /// <summary>
        /// 防区个数扩展
        /// zone number extend
        /// </summary>
        public int nZoneNumEx;
        /// <summary>
        /// 防区号扩展，超过72时使用此字段
        /// Zone code extension, use this field when it exceeds 72
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] arrZonesEx;
    }

    /// <summary>
    /// 设置旁路状态 输出参数，此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_BYPASSMODE
    /// CLIENT_SetAlarmRegionInfo NET_EM_SET_ALARMREGION_INFO_BYPASSMODE output param
    /// </summary>
    public struct NET_OUT_SET_BYPASSMODE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 输出通道类型
    /// output channel type
    /// </summary>
    public enum EM_OUTPUT_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_OUTPUT_TYPE_UNKNOWN,
        /// <summary>
        /// 警号
        /// siren
        /// </summary>
        EM_OUTPUT_TYPE_SIREN,
        /// <summary>
        /// 输出通道
        /// out
        /// </summary>
        EM_OUTPUT_TYPE_ALARMOUT,
    }

    /// <summary>
    /// 设置输出状态 输入参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_OUTPUTSTATE
    /// CLIENT_SetAlarmRegionInfo NET_EM_SET_ALARMREGION_INFO_OUTPUTSTATE input param
    /// </summary>
    public struct NET_IN_SET_OUTPUT_STATE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 输出类型
        /// output type
        /// </summary>
        public EM_OUTPUT_TYPE emType;
        /// <summary>
        /// emType= EM_OUTPUT_TYPE_SIREN时表示警号号
        /// emType= EM_OUTPUT_TYPE_ALARMOUT时表示通道号
        /// emType= EM_OUTPUT_TYPE_SIREN: siren
        /// emType= EM_OUTPUT_TYPE_ALARMOUT: channel id
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 输出动作false:关闭true:打开
        /// output action false:close true:open
        /// </summary>
        public byte action;
        /// <summary>
        /// 字节对齐
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 设置输出状态输出参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_OUTPUTSTATE
    /// CLIENT_SetAlarmRegionInfo NET_EM_SET_ALARMREGION_INFO_OUTPUTSTATE output param
    /// </summary>
    public struct NET_OUT_SET_OUTPUT_STATE
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 探测器主电丢失事件(对应ALARM_WIRELESSDEV_POWERLESS)
    /// wireless device powerless event(corresponding to ALARM_WIRELESSDEV_POWERLESS)
    /// </summary>
    public struct NET_A_ALARM_WIRELESSDEV_POWERLESS_INFO
    {
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// 0:pulse 1:start 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 探测器地址
        /// device index
        /// </summary>
        public int nIndex;
        /// <summary>
        /// 事件发生的时间
        /// Time of event
        /// </summary>
        public NET_TIME_EX stuLoacalTime;
        /// <summary>
        /// 探测器类型
        /// device type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szModel;
        /// <summary>
        /// 探测器名称
        /// device name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
        /// <summary>
        /// 探测器序列号
        /// device serial-number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 探测器所属区域名称
        /// Area name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAreaName;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserverd;
    }

    /// <summary>
    /// 事件类型ALARM_KEYPAD_LOCK (键盘锁定事件)对应的数据块描述信息
    /// The description information of the data block corresponding to the event type ALARM_KEYPAD_LOCK (keyboard lock event)
    /// </summary>
    public struct NET_A_ALARM_KEYPAD_LOCK_INFO
    {
        /// <summary>
        /// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action, 1 means the continuous event starts, 2 means the continuous event ends
        /// </summary>
        public int nAction;
        /// <summary>
        /// 通道号
        /// Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件发生的时间
        /// Time when the event occurred
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 联系人信息
    /// Contact member info
    /// </summary>
    public struct NET_MEMBERS_INFO
    {
        /// <summary>
        /// 联系人姓名
        /// contact member name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
        /// <summary>
        /// 设备描述
        /// device description
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szMobile;
        /// <summary>
        /// 电子邮箱
        /// E-mail
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szEmail;
        /// <summary>
        /// 组织
        /// organization
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szOrganization;
    }

    /// <summary>
    /// 通知类型
    /// Notify type
    /// </summary>
    public enum EM_A_NET_NOTIFY_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        NET_NOTIFY_TYPE_UNKNOWN,
        /// <summary>
        /// 短信
        /// message, SMS
        /// </summary>
        NET_NOTIFY_TYPE_SMS,
        /// <summary>
        /// 电话
        /// phone call
        /// </summary>
        NET_NOTIFY_TYPE_CALL,
        /// <summary>
        /// 短信&电话
        /// SMS&CALL
        /// </summary>
        NET_NOTIFY_TYPE_ALL,
    }

    /// <summary>
    /// 用户组关联通知信息
    /// User group association notify information
    /// </summary>
    public struct NET_NOTIFY_INFO
    {
        /// <summary>
        /// 通知类型
        /// notify type
        /// </summary>
        public EM_A_NET_NOTIFY_TYPE emType;
        /// <summary>
        /// 是否接受报警事件的推送
        /// accept alarm event notify or not
        /// </summary>
        public bool bAlarmEvents;
        /// <summary>
        /// 是否接受故障事件的推送
        /// accept system fault event notify or not
        /// </summary>
        public bool bSystemEvents;
        /// <summary>
        /// 是否接受操作事件的推送
        /// accept operation event or not
        /// </summary>
        public bool bOperationEvents;
    }

    /// <summary>
    /// 通讯录配置列表
    /// communication config list
    /// </summary>
    public struct NET_NETAPP_COMMUNICATION_LIST
    {
        /// <summary>
        /// 自定义组名,不可重复命名
        /// custom group name,Non-repeatable naming
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szGroupName;
        /// <summary>
        /// 联系人个数
        /// num of member
        /// </summary>
        public int nMembersNum;
        /// <summary>
        /// 联系人信息
        /// contact member info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_MEMBERS_INFO[] arrMembers;
        /// <summary>
        /// 用户组关联通知信息
        /// user group association notify info
        /// </summary>
        public NET_NOTIFY_INFO stuNotifyInfo;
    }

    /// <summary>
    /// 通讯录配置
    /// CommunicationList config
    /// </summary>
    public struct NET_NETAPP_COMMUNICATION_LIST_CFG
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 实际的通讯录配置个数
        /// num of communication list config
        /// </summary>
        public int nConmmunicationListNum;
        /// <summary>
        /// 通讯录配置数组
        /// communication config array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_NETAPP_COMMUNICATION_LIST[] stuCommunication;
    }

    /// <summary>
    /// CLIENT_QueryDevInfo , NET_QUERY_WLAN_ACCESSPOINT 命令输入参数
    /// CLIENT_QueryDevInfo , NET_QUERY_WLAN_ACCESSPOINT input
    /// </summary>
    public struct NET_IN_WLAN_ACCESSPOINT
    {
        public uint dwSize;
        /// <summary>
        /// 需要获取信息的无线网络名称,为空时搜索所有网络
        /// SSID of wireless network whose info you want to query. if null, query all wireless network
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string szSSID;
        /// <summary>
        /// 网卡名称, 为空时, 默认为eth2
        /// Network Name, default is eth2
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
    }

    /// <summary>
    /// 接入点信息
    /// info for each network
    /// </summary>
    public struct NET_WLAN_ACCESSPOINT_INFO
    {
        /// <summary>
        /// 无线网络名称
        /// SSID (name of wireless network)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string szSSID;
        /// <summary>
        /// 信号强度 范围0-100
        /// signal strength, range: 0-100
        /// </summary>
        public int nStrength;
        /// <summary>
        /// 认证模式0:OPEN;1:SHARED;2:WPA;3:WPA-PSK;4:WPA2;5:WPA2-PSK;
        /// 6:WPA-NONE(用在adhoc网络模式),
        /// 7-11是混合模式,选择其中任何一种都可以进行连接
        /// 7:WPA-PSK | WPA2-PSK; 8:WPA | WPA2; 9:WPA | WPA-PSK;
        /// 10:WPA2 | WPA2-PSK; 11:WPA | WPA-PSK |WPA2 |WPA2-PSK 12: UnKnown
        /// attestation mod:0:OPEN;1:SHARED;2:WPA;3:WPA-PSK;4:WPA2;5:WPA2-PSK;
        /// 6:WPA-NONE(only use in Adhoc mode),
        /// 7-11 are mix mode,choose one of them can to be connected
        /// 7:WPA-PSK | WPA2-PSK; 8:WPA | WPA2; 9:WPA | WPA-PSK;
        /// 10:WPA2 | WPA2-PSK; 11:WPA | WPA-PSK |WPA2 |WPA2-PSK 12: UnKnown
        /// </summary>
        public int nAuthMode;
        /// <summary>
        /// 0:NONE, 1:WEP, 2:TKIP, 3:AES(CCMP), 4:TKIP+AES( mix Mode), 5:UnKnown
        /// 0:NONE, 1:WEP, 2:TKIP, 3:AES(CCMP), 4:TKIP+AES( mix Mode), 5:UnKnown
        /// </summary>
        public int nEncrAlgr;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1016)]
        public string reserved;
    }

    /// <summary>
    /// CLIENT_QueryDevInfo , NET_QUERY_WLAN_ACCESSPOINT 命令输出参数
    /// CLIENT_QueryDevInfo , NET_QUERY_WLAN_ACCESSPOINT output
    /// </summary>
    public struct NET_OUT_WLAN_ACCESSPOINT
    {
        public uint dwSize;
        /// <summary>
        /// 无线网络接入点个数
        /// wireless network count
        /// </summary>
        public int nCount;
        /// <summary>
        /// 接入点信息
        /// info for each network
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_WLAN_ACCESSPOINT_INFO[] stuInfo;
    }

    /// <summary>
    /// Low Rate Wireless Personal Area Network 低速无线私域网 begin
    /// /
    /// 无线设备类型
    /// Low Rate Wireless Personal Area Network low speed wireless private network begin
    /// 
    /// Wireless Device Type
    /// </summary>
    public enum EM_A_NET_WIRELESS_DEVICE_TYPE
    {
        NET_WIRELESS_DEVICE_TYPE_UNKNOWN = 0,
        /// <summary>
        /// 无线键盘
        /// Wireless keyboard
        /// </summary>
        NET_WIRELESS_DEVICE_TYPE_KEYBOARD,
        /// <summary>
        /// 无线防区
        /// Wireless zone
        /// </summary>
        NET_WIRELESS_DEVICE_TYPE_DEFENCE,
        /// <summary>
        /// 无线遥控
        /// Wireless remote control
        /// </summary>
        NET_WIRELESS_DEVICE_TYPE_REMOTECONTROL,
        /// <summary>
        /// 无线门磁
        /// Wireless door sensor
        /// </summary>
        NET_WIRELESS_DEVICE_TYPE_MAGNETOMER,
        /// <summary>
        /// 无线警号
        /// Wireless alarm bell
        /// </summary>
        NET_WIRELESS_DEVICE_TYPE_ALARMBELL,
        /// <summary>
        /// 无线插座
        /// Wireless switcher
        /// </summary>
        NET_WIRELESS_DEVICE_TYPE_SWITCHER,
        /// <summary>
        /// 无线智能锁
        /// Wireless smart lock
        /// </summary>
        NET_WIRELESS_DEVICE_TYPE_SMARTLOCK,
        /// <summary>
        /// 无线中继器
        /// Wireless Repeater
        /// </summary>
        NET_WIRELESS_DEVICE_TYPE_REPEATER,
    }

    /// <summary>
    /// 无线设备工作模式
    /// Wireless Device Mode
    /// </summary>
    public enum EM_WIRELESS_DEVICE_MODE
    {
        /// <summary>
        /// 模式未识别
        /// </summary>
        EM_WIRELESS_DEVICE_MODE_UNKNOWN = 0,
        /// <summary>
        /// Normal 普通模式
        /// Normal
        /// </summary>
        EM_WIRELESS_DEVICE_MODE_NORMAL,
        /// <summary>
        /// Polling 巡检模式 只有Type为RemoteControl时才能处于巡检模式
        /// Polling It only to be valid when emType is NET_WIRELESS_DEVICE_TYPE_REMOTECONTROL
        /// </summary>
        EM_WIRELESS_DEVICE_MODE_POLLING,
    }

    /// <summary>
    /// 传感器方式
    /// the type of sense method
    /// </summary>
    public enum EM_CODEID_SENSE_METHOD_TYPE
    {
        /// <summary>
        /// 未知的
        /// Unknown
        /// </summary>
        EM_CODEID_SENSE_METHOD_TYPE_UNKOWN,
        /// <summary>
        /// 门磁
        /// Door Magnetism
        /// </summary>
        EM_CODEID_SENSE_METHOD_TYPE_DOOR_MAGNETISM,
        /// <summary>
        /// 燃气传感
        /// Gas Sensor
        /// </summary>
        EM_CODEID_SENSE_METHOD_TYPE_GAS_SENSOR,
        /// <summary>
        /// 幕帘传感器
        /// Curtain Sensor
        /// </summary>
        EM_CODEID_SENSE_METHOD_TYPE_CURTAIN_SENSOR,
        /// <summary>
        /// 移动传感器
        /// Mobile Sensor
        /// </summary>
        EM_CODEID_SENSE_METHOD_TYPE_MOBILE_SENSOR,
        /// <summary>
        /// 被动红外传感器
        /// Passive Infrared Sensor
        /// </summary>
        EM_CODEID_SENSE_METHOD_TYPE_PASSIVEINFRA,
        /// <summary>
        /// 紧急按钮
        /// Urgency Button
        /// </summary>
        EM_CODEID_SENSE_METHOD_TYPE_URGENCY_BUTTON,
        /// <summary>
        /// 烟雾传感器
        /// Smoking Sensor
        /// </summary>
        EM_CODEID_SENSE_METHOD_TYPE_SMOKING_SENSOR,
        /// <summary>
        /// 双鉴传感器(红外+微波)
        /// DoubleMethod(Infrare+Microwave)
        /// </summary>
        EM_CODEID_SENSE_METHOD_TYPE_DOUBLEMETHOD,
        /// <summary>
        /// 水浸传感器
        /// Water Sensor
        /// </summary>
        EM_CODEID_SENSE_METHOD_TYPE_WATER_SENSOR,
        /// <summary>
        /// 三技术
        /// Three Sensor
        /// </summary>
        EM_CODEID_SENSE_METHOD_TYPE_THREEMETHOD,
    }

    /// <summary>
    /// 对码信息
    /// Code info
    /// </summary>
    public struct NET_CODEID_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 无线ID号
        /// Wireless ID no.
        /// </summary>
        public ulong nWirelessId;
        /// <summary>
        /// 无线设备类型
        /// Wireless device type
        /// </summary>
        public EM_A_NET_WIRELESS_DEVICE_TYPE emType;
        /// <summary>
        /// 用户名
        /// Username
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szName;
        /// <summary>
        /// 是否启用了此设备
        /// Enable this device
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 自定义名称
        /// Custom Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCustomName;
        /// <summary>
        /// 无线防区的alarm通道号,Alarm配置的下标,只有Type为Defence时此字段才有效。
        /// It only to be valid when emType is NET_WIRELESS_DEVICE_TYPE_DEFENCE
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 无线设备工作模式
        /// Wireless Device Mode.
        /// </summary>
        public EM_WIRELESS_DEVICE_MODE emMode;
        /// <summary>
        /// 传感器方式
        /// The sense method
        /// </summary>
        public EM_CODEID_SENSE_METHOD_TYPE emSenseMethod;
        /// <summary>
        /// 无线设备序列号
        /// Wireless Device SN
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSerialNumber;
        /// <summary>
        /// 任务ID
        /// Task ID
        /// </summary>
        public uint nTaskID;
        /// <summary>
        /// 智能锁房间号
        /// Room number of intelligent lock
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRoomNo;
        /// <summary>
        /// ZW数量:为0时表示不支持ZW
        /// fingerprint number: 0 indicates unsupported fingerprints
        /// </summary>
        public uint nMaxFingerprints;
        /// <summary>
        /// 卡片数量:为0时表示不支持卡片
        /// cards number: 0 indicates unsupported cards
        /// </summary>
        public uint nMaxCards;
        /// <summary>
        /// 密码数量:为0时表示不支持密码
        /// password number: 0 indicates unsupported password
        /// </summary>
        public uint nMaxPwd;
        /// <summary>
        /// 智能门锁复杂盐值
        /// Salt Value
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRandSalt;
    }

    /// <summary>
    /// 增加对码信息
    /// add code info
    /// </summary>
    public struct NET_CTRL_LOWRATEWPAN_ADD
    {
        public uint dwSize;
        /// <summary>
        /// 对码数据
        /// code info data
        /// </summary>
        public NET_CODEID_INFO stuCodeIDInfo;
    }

    /// <summary>
    /// 删除全部无线设备
    /// CLIENT_ControlDevice接口的 CTRL_LOWRATEWPAN_REMOVEALL命令参数
    /// Delete all wireless device
    /// CLIENT_ControlDevice port CTRL_LOWRATEWPAN_REMOVEALL command parameter
    /// </summary>
    public struct NET_CTRL_LOWRATEWPAN_REMOVEALL
    {
        public uint dwSize;
    }

    /// <summary>
    /// 删除指定无线设备
    /// CLIENT_ControlDevice 接口的 CTRL_LOWRATEWPAN_REMOVE命令参数
    /// Delete specific wireless device
    /// CLIENT_ControlDevice port CTRL_LOWRATEWPAN_REMOVE command parameter
    /// </summary>
    public struct NET_CTRL_LOWRATEWPAN_REMOVE
    {
        public uint dwSize;
        /// <summary>
        /// 无线设备ID
        /// Wireless device ID
        /// </summary>
        public ulong nWirelessId;
        /// <summary>
        /// 无线设备序列号 无线对码后续采用序列号的方式
        /// Wireless device SN
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSerialNumber;
    }

    /// <summary>
    /// CLIENT_AttachLowRateWPAN()输入参数
    /// CLIENT_AttachLowRateWPAN() input parameter
    /// </summary>
    public struct NET_IN_ATTACH_LOWRATEWPAN
    {
        public uint dwSize;
        /// <summary>
        /// 对码数据回调
        /// Code data call
        /// </summary>
        public fAttachLowRateWPANCB cbAttachLowRateWPANCB;
        /// <summary>
        /// 用户数据
        /// User Data
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// 对码错误类型
    /// Code error type
    /// </summary>
    public enum EM_A_NET_CODEID_ERROR_TYPE
    {
        /// <summary>
        /// 对码正确
        /// Code correct
        /// </summary>
        NET_CODEID_ERROR_TYPE_RIGHT = 0,
        /// <summary>
        /// 已经存在
        /// Exists
        /// </summary>
        NET_CODEID_ERROR_TYPE_ALREADYEXIST,
        /// <summary>
        /// 其他错误
        /// Other error
        /// </summary>
        NET_CODEID_ERROR_TYPE_OTHER,
    }


    /// <summary>
    /// CLIENT_AttachLowRateWPAN()输出参数
    /// CLIENT_AttachLowRateWPAN() output parameter
    /// </summary>
    public struct NET_OUT_ATTACH_LOWRATEWPAN
    {
        public uint dwSize;
    }

    /// <summary>
    /// 规则配置
    /// rule type
    /// </summary>
    public struct NET_RULETYPY_STRING
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRulelTypeStr;
    }

    /// <summary>
    /// 全局配置列表, 扩展支持单个通道多种智能的开启,和szGlobalType二选一使能,如果szGlobalTypeList 里面有场景内容则优先使用
    /// Global configuration list, The extension supports the opening of multiple intelligences in a single channel,And szglobaltype. If there is scene content in szglobaltypelist, it is preferred to use
    /// </summary>
    public struct NET_GLOBLETYPY_LIST_STRING
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGlobalTypeListStr;
    }

    /// <summary>
    /// 平台下发轮询配置信息
    /// Set Polling Config Info
    /// </summary>
    public struct NET_SET_POLLING_CONFIG_INFO
    {
        /// <summary>
        /// 使能开关
        /// enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 通道号
        /// channel
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// 全局配置
        /// global type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGlobalType;
        /// <summary>
        /// 规则配置个数
        /// rule type count
        /// </summary>
        public int nRulelTypeCnt;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// 规则配置
        /// rule type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_RULETYPY_STRING[] szRulelType;
        /// <summary>
        /// 全局配置列表, 扩展支持单个通道多种智能的开启,和szGlobalType二选一使能,如果szGlobalTypeList 里面有场景内容则优先使用
        /// Global configuration list, The extension supports the opening of multiple intelligences in a single channel,And szglobaltype. If there is scene content in szglobaltypelist, it is preferred to use
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_GLOBLETYPY_LIST_STRING[] szGlobalTypeList;
        /// <summary>
        /// 全局配置列表个数
        /// Global configuration list number
        /// </summary>
        public int nGlobalTypeListNum;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 636)]
        public string szReserved;
    }

    /// <summary>
    /// 平台下发轮询配置入参
    /// Set Polling Config InParam
    /// </summary>
    public struct NET_IN_SET_POLLING_CONFIG
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 平台下发轮询配置个数
        /// Set Polling Config Info count
        /// </summary>
        public uint nConfigCnt;
        /// <summary>
        /// 平台下发轮询配置信息
        /// Set Polling Config Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_SET_POLLING_CONFIG_INFO[] stuConfigInfos;
    }

    /// <summary>
    /// 平台下发轮询配置出参
    /// Set Polling Config OutParam
    /// </summary>
    public struct NET_OUT_SET_POLLING_CONFIG
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 报警联动
    /// Alarm activation
    /// </summary>
    public struct NET_A_CFG_ALARM_SUBSYSTEM_MSG_HANDLE
    {
        /// <summary>
        /// 报警输出使能
        /// support alarm output or not
        /// </summary>
        public bool bAlarmOutEnable;
        /// <summary>
        /// 警号输出使能
        /// support alarm bell or not
        /// </summary>
        public bool bAlarmBellEnable;
        /// <summary>
        /// 报警输出通道号个数
        /// Channel's count of alarm output
        /// </summary>
        public int nAlarmOutChannelNum;
        /// <summary>
        /// 报警输出通道号列表
        /// Channel list of alarm output
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nAlarmOutChannels;
    }

    /// <summary>
    /// 报警子系统配置 ==>CFG_CMD_ALARM_SUBSYSTEM
    /// Alarm sub system config ==>CFG_CMD_ALARM_SUBSYSTEM
    /// </summary>
    public struct NET_A_CFG_ALARM_SUBSYSTEM_INFO
    {
        /// <summary>
        /// 名称
        /// name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 本地防区数目
        /// Local zone quantity
        /// </summary>
        public int nZoneNum;
        /// <summary>
        /// 本地防区号
        /// Local zone no.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] anZone;
        /// <summary>
        /// 扩展防区数目
        /// Extention zone quantity
        /// </summary>
        public int nExZoneNum;
        /// <summary>
        /// 扩展防区号
        /// Extention zone no.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] anExZone;
        /// <summary>
        /// 延时撤防时间（进入延时）, 单位为秒
        /// Delay disarm time, entry time, ,unit is s
        /// </summary>
        public int nDisableDelay;
        /// <summary>
        /// 延时布防时间（退出延时）, 单位为秒
        /// Delay arm time, exit delay, , unit is s
        /// </summary>
        public int nEnableDelay;
        /// <summary>
        /// 是否为公共子系统
        /// Public sub system
        /// </summary>
        public bool bIsPublic;
        /// <summary>
        /// 公共所属的子系统数目
        /// Public sub system quantity
        /// </summary>
        public int nPublicSubSystem;
        /// <summary>
        /// 公共所属的关联子系统
        /// Public link sub system
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] anPublicSubSystem;
        /// <summary>
        /// 报警联动
        /// Alarm activation
        /// </summary>
        public NET_A_CFG_ALARM_SUBSYSTEM_MSG_HANDLE stuEventHandler;
        /// <summary>
        /// 是否启用子系统
        /// enable the subsystem or not
        /// </summary>
        public bool bEnable;
    }

    /// <summary>
    /// 日期
    /// data time
    /// </summary>
    public struct NET_A_CFG_DATA_TIME
    {
        /// <summary>
        /// 年
        /// year
        /// </summary>
        public uint dwYear;
        /// <summary>
        /// 月
        /// month
        /// </summary>
        public uint dwMonth;
        /// <summary>
        /// 日
        /// day
        /// </summary>
        public uint dwDay;
        /// <summary>
        /// 时
        /// hour
        /// </summary>
        public uint dwHour;
        /// <summary>
        /// 分
        /// minute
        /// </summary>
        public uint dwMinute;
        /// <summary>
        /// 秒
        /// second
        /// </summary>
        public uint dwSecond;
        /// <summary>
        /// 保留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public uint[] dwReserved;
    }


    /// <summary>
    /// 普通配置 (CFG_CMD_DEV_GENERRAL) General
    /// General configuration(CFG_CMD_DEV_GENERRAL) General
    /// </summary>
    public struct NET_A_CFG_DEV_DISPOSITION_INFO
    {
        /// <summary>
        /// 本机编号，主要用于遥控器区分不同设备 0~998
        /// Device number,0~998
        /// </summary>
        public int nLocalNo;
        /// <summary>
        /// 机器名称或编号
        /// Machine name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMachineName;
        /// <summary>
        /// 机器部署地点即道路编码
        /// Machine instal address,such as road number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMachineAddress;
        /// <summary>
        /// 机器分组或叫设备所属单位 默认为空，用户可以将不同的设备编为一组，便于管理，可重复。
        /// Machine group, it instal as null,
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMachineGroup;
        /// <summary>
        /// 机器编号, 联网平台内唯一
        /// The machine serial number exclusive
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szMachineID;
        /// <summary>
        /// 登陆失败可尝试次数
        /// logon failed attempt times
        /// </summary>
        public int nLockLoginTimes;
        /// <summary>
        /// 登陆失败锁定时间
        /// login failed lock time
        /// </summary>
        public int nLoginFailLockTime;
        /// <summary>
        /// 登陆失败可尝试次数使能
        /// logon failed attempt times enable
        /// </summary>
        public bool bLockLoginEnable;
        /// <summary>
        /// 启动时间
        /// activation time
        /// </summary>
        public NET_A_CFG_DATA_TIME stuActivationTime;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 916)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 智能家居情景模式
    /// SmartHome scene mode
    /// </summary>
    public enum EM_SMARTHOME_SCENE_MODE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_SMARTHOME_SCENE_MODE_UNKNOWN,
        /// <summary>
        /// 在家
        /// At home
        /// </summary>
        EM_SMARTHOME_SCENE_MODE_AT_HOME,
        /// <summary>
        /// 离开
        /// Leave home
        /// </summary>
        EM_SMARTHOME_SCENE_MODE_LEAVE_HOME,
        /// <summary>
        /// 睡眠
        /// In sleeping
        /// </summary>
        EM_SMARTHOME_SCENE_MODE_IN_SLEEPING,
    }

    /// <summary>
    /// 串口地址
    /// Serial address
    /// </summary>
    public struct NET_A_CFG_COMMADDR_INFO
    {
        /// <summary>
        /// 串口地址个数
        /// serial address number
        /// </summary>
        public int nAddressNum;
        /// <summary>
        /// 地址描述,不同长商地址位不同，用数组表示
        /// address description, different manufacturer has different addresses, in group
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public int[] nAddress;
    }

    /// <summary>
    /// 情景详细信息
    /// Profile detail info
    /// </summary>
    public struct NET_A_CFG_PROFILE_INFO
    {
        /// <summary>
        /// 情景ID
        /// Scene ID
        /// </summary>
        public int nSceneID;
        /// <summary>
        /// 长家名称
        /// Device brand
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szBrand;
        /// <summary>
        /// 情景模式
        /// Scene mode
        /// </summary>
        public EM_SMARTHOME_SCENE_MODE emScene;
        /// <summary>
        /// 串口地址
        /// Device address
        /// </summary>
        public NET_A_CFG_COMMADDR_INFO stuCommAddr;
    }

    /// <summary>
    /// 情景模式配置 (对应 CFG_CMD_SCENE_MODE)
    /// Profile config (corresponding to CFG_CMD_SCENE_MODE)
    /// </summary>
    public struct NET_A_CFG_SCENE_MODE_INFO
    {
        /// <summary>
        /// 当前情景模式ID号
        /// Current profile ID
        /// </summary>
        public int nCurrentID;
        /// <summary>
        /// 情景模式个数
        /// The valid count of profile
        /// </summary>
        public int nProfileCount;
        /// <summary>
        /// 情景模式信息
        /// The profile
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 54)]
        public NET_A_CFG_PROFILE_INFO[] stuProfiles;
    }

    /// <summary>
    /// 机箱入侵报警(防拆报警)配置
    /// Chassis intrusion alarm (tamper alarm) configuration
    /// </summary>
    public struct NET_A_CFG_CHASSISINTRUSION_INFO
    {
        /// <summary>
        /// 使能开关
        /// Enable switch
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 报警联动
        /// alarmLinkage
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
    }

    /// <summary>
    /// 无线设备认证方式
    /// wireless Authentication
    /// </summary>
    public enum EM_CFG_WIRELESS_AUTHENTICATION
    {
        /// <summary>
        /// UnKnown
        /// UnKnown
        /// </summary>
        EM_CFG_WIRELESS_AUTHENTICATION_UNKNOWN,
        /// <summary>
        /// OPEN
        /// OPEN
        /// </summary>
        EM_CFG_WIRELESS_AUTHENTICATION_OPEN,
        /// <summary>
        /// SHARED
        /// SHARED
        /// </summary>
        EM_CFG_WIRELESS_AUTHENTICATION_SHARED,
        /// <summary>
        /// WPA
        /// WPA
        /// </summary>
        EM_CFG_WIRELESS_AUTHENTICATION_WPA,
        /// <summary>
        /// WPA-PSK
        /// WPA-PSK
        /// </summary>
        EM_CFG_WIRELESS_AUTHENTICATION_WPAPSK,
        /// <summary>
        /// WPA2
        /// WPA2
        /// </summary>
        EM_CFG_WIRELESS_AUTHENTICATION_WPA2,
        /// <summary>
        /// WPA2-PSK
        /// WPA2-PSK
        /// </summary>
        EM_CFG_WIRELESS_AUTHENTICATION_WPA2PSK,
        /// <summary>
        /// WPA-NONE
        /// WPA-NONE
        /// </summary>
        EM_CFG_WIRELESS_AUTHENTICATION_WPANONE,
        /// <summary>
        /// WPA-PSK|WPA2-PSK
        /// WPA-PSK/WPA2-PSK
        /// </summary>
        EM_CFG_WIRELESS_AUTHENTICATION_WPAPSK_WPA2PSK,
        /// <summary>
        /// WPA|WPA2
        /// WPA/WPA2
        /// </summary>
        EM_CFG_WIRELESS_AUTHENTICATION_WPA_WPA2,
        /// <summary>
        /// WPA | WPA-PSK
        /// WPA/WPA-PSK
        /// </summary>
        EM_CFG_WIRELESS_AUTHENTICATION_WPA_WPAPSK,
        /// <summary>
        /// WPA2|WPA2-PSK
        /// WPA2/WPA2-PSK
        /// </summary>
        EM_CFG_WIRELESS_AUTHENTICATION_WPA2_WPA2PSK,
        /// <summary>
        /// WPA|WPA-PSK|WPA2|WPA2-PSK
        /// WPA/WPA-PSK|WPA2/WPA2-PSK
        /// </summary>
        EM_CFG_WIRELESS_AUTHENTICATION_WPA_WPAPSK_WPA2_WPA2PSK,
    }

    /// <summary>
    /// 无线数据加密方式
    /// DataEncryption type
    /// </summary>
    public enum EM_CFG_WIRELESS_DATA_ENCRYPT
    {
        /// <summary>
        /// UnKnown
        /// UnKnown
        /// </summary>
        EM_CFG_WIRELESS_DATA_ENCRYPT_UNKNOWN,
        /// <summary>
        /// NONE
        /// NONE
        /// </summary>
        EM_CFG_WIRELESS_DATA_ENCRYPT_NONE,
        /// <summary>
        /// WEP
        /// WEP
        /// </summary>
        EM_CFG_WIRELESS_DATA_ENCRYPT_WEP,
        /// <summary>
        /// TKIP
        /// TKIP
        /// </summary>
        EM_CFG_WIRELESS_DATA_ENCRYPT_TKIP,
        /// <summary>
        /// AES(CCMP)
        /// AES(CCMP)
        /// </summary>
        EM_CFG_WIRELESS_DATA_ENCRYPT_AES,
        /// <summary>
        /// TKIP+AES
        /// TKIP+AES
        /// </summary>
        EM_CFG_WIRELESS_DATA_ENCRYPT_TKIP_AES,
    }

    /// <summary>
    /// EAP方法
    /// EAP method
    /// </summary>
    public enum EM_CFG_EAP_METHOD
    {
        /// <summary>
        /// UnKnown
        /// UnKnown
        /// </summary>
        EM_CFG_EAP_METHOD_UNKNOWN,
        /// <summary>
        /// PEAP
        /// PEAP
        /// </summary>
        EM_CFG_EAP_METHOD_PEAP,
        /// <summary>
        /// TLS
        /// TLS
        /// </summary>
        EM_CFG_EAP_METHOD_TLS,
        /// <summary>
        /// TTLS
        /// TTLS
        /// </summary>
        EM_CFG_EAP_METHOD_TTLS,
    }

    /// <summary>
    /// EAP身份验证方法
    /// EAP AuthType
    /// </summary>
    public enum EM_CFG_EAP_AUTH_TYPE
    {
        /// <summary>
        /// UnKnown
        /// UnKnown
        /// </summary>
        EM_CFG_EAP_AUTH_TYPE_UNKNOWN,
        /// <summary>
        /// NONE
        /// NONE
        /// </summary>
        EM_CFG_EAP_AUTH_TYPE_NONE,
        /// <summary>
        /// PAP
        /// PAP
        /// </summary>
        EM_CFG_EAP_AUTH_TYPE_PAP,
        /// <summary>
        /// MSCHAP
        /// MSCHAP
        /// </summary>
        EM_CFG_EAP_AUTH_TYPE_MSCHAP,
        /// <summary>
        /// MSCHAPV2
        /// MSCHAPV2
        /// </summary>
        EM_CFG_EAP_AUTH_TYPE_MSCHAPV2,
        /// <summary>
        /// GTC
        /// GTC
        /// </summary>
        EM_CFG_EAP_AUTH_TYPE_GTC,
    }

    /// <summary>
    /// 单个WLAN配置EAP
    /// EAP of one WLAN
    /// </summary>
    public struct NET_A_CFG_WLAN_EAP
    {
        /// <summary>
        /// EAP方法
        /// EAP method
        /// </summary>
        public EM_CFG_EAP_METHOD emMethod;
        /// <summary>
        /// EAP身份验证方法
        /// EAP auth
        /// </summary>
        public EM_CFG_EAP_AUTH_TYPE emAuthType;
        /// <summary>
        /// 身份
        /// Identity
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szIdentity;
        /// <summary>
        /// 匿名身份
        /// AnonymousID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szAnonymousID;
        /// <summary>
        /// 密码
        /// Password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassword;
        /// <summary>
        /// CA证书
        /// CA
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szCaCert;
        /// <summary>
        /// 用户证书
        /// User Cert
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szUserCert;
    }

    /// <summary>
    /// 单个WLAN配置Network
    /// Network of one WLAN
    /// </summary>
    public struct NET_A_CFG_WLAN_NETWORK
    {
        /// <summary>
        /// IP
        /// IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szIPAddress;
        /// <summary>
        /// 子网掩码
        /// subnet mask
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szSubnetMask;
        /// <summary>
        /// 网关
        /// gateway
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szDefaultGateway;
        /// <summary>
        /// 是否开启DHCP
        /// DHCP enable
        /// </summary>
        public bool bDhcpEnable;
        /// <summary>
        /// DNS服务器
        /// DNS servers
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2 * 40)]
        public string szDnsServers;
    }

    /// <summary>
    /// 单个WLAN配置
    /// WLAN configure
    /// </summary>
    public struct NET_A_CFG_WLAN_INFO
    {
        /// <summary>
        /// Wlan名称, 只能获取不能修改
        /// Wlan name, read only
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szWlanName;
        /// <summary>
        /// WIFI网卡使能开关, TRUE打开, FALSE关闭
        /// WIFI interface enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 网络名称(SSID)
        /// SSID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string szSSID;
        /// <summary>
        /// 手动连接开关, TRUE手动连接, FALSE手动断开
        /// manual connect to WLAN, TRUE: connect, FALSE: disconnect
        /// </summary>
        public bool bConnectEnable;
        /// <summary>
        /// 自动连接开关, TRUE不自动连接, FALSE自动连接, IPC无意义
        /// auto connect to WALN, TRUE: no, FALSE: yes, no scene for IPC
        /// </summary>
        public bool bLinkEnable;
        /// <summary>
        /// 连接模式, 0: auto, 1: adhoc, 2: Infrastructure
        /// link mode, 0: auto, 1: adhoc, 2: Infrastructure
        /// </summary>
        public int nLinkMode;
        /// <summary>
        /// 加密模式, 0: off, 1: on, 2: WEP64, 3: WEP128, 4: WPA-PSK-TKIP, 5: WPA-PSK-AES, 6: WPA2-PSK-TKIP, 7: WPA2-PSK-AES, 8: WPA-TKIP, 9: WPA-AES,
        /// 10: WPA2-TKIP, 11: WPA2-AES, 12: AUTO
        /// Encryption, 0: off, 1: on, 2: WEP-OPEN, 3: WEP-SHARED, 4: WPA-TKIP, 5: WPA-PSK-TKIP, 6: WPA2-TKIP, 7: WPA2-PSK-TKIP, 8: WPA-AES, 9: WPA-PSK-AES, 10: WPA2-AES, 11: WPA2-PSK-AES, 12: Auto
        /// </summary>
        public int nEncryption;
        /// <summary>
        /// 认证方式, 暂时没用
        /// Authentication, unused
        /// </summary>
        public EM_CFG_WIRELESS_AUTHENTICATION emAuthentication;
        /// <summary>
        /// 数据加密方式, 暂时没用
        /// Data Encryption, unused
        /// </summary>
        public EM_CFG_WIRELESS_DATA_ENCRYPT emDataEncryption;
        /// <summary>
        /// 密码类型, 0: Hex, 1: ASCII
        /// Key Type, 0: Hex, 1: ASCII
        /// </summary>
        public int nKeyType;
        /// <summary>
        /// 秘钥索引, 取值0~3
        /// Key index, range of 0~3
        /// </summary>
        public int nKeyID;
        /// <summary>
        /// 四组密码
        /// four keys
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4 * 128)]
        public string szKeys;
        /// <summary>
        /// 密码是否已经设置
        /// is key set or not
        /// </summary>
        public bool bKeyFlag;
        /// <summary>
        /// EAP
        /// EAP
        /// </summary>
        public NET_A_CFG_WLAN_EAP stuEap;
        /// <summary>
        /// Network
        /// Network
        /// </summary>
        public NET_A_CFG_WLAN_NETWORK stuNetwork;
    }

    /// <summary>
    /// WLAN配置(对应 CFG_CMD_WLAN)
    /// all WLAN configure(corresponding to CFG_CMD_WLAN)
    /// </summary>
    public struct NET_A_CFG_NETAPP_WLAN
    {
        /// <summary>
        /// stuWlanInfo有效的WLAN配置个数
        /// valid WLAN info in stuWlanInfo
        /// </summary>
        public int nNum;
        /// <summary>
        /// WLAN配置信息
        /// WLAN info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_A_CFG_WLAN_INFO[] stuWlanInfo;
    }

    /// <summary>
    /// 网络未连接（包括wifi，3G/4G）配置(对应 CFG_CMD_WIRELESS_NOT_CONNECTED)
    /// WireLess not connected info(corresponding to CFG_CMD_WIRELESS_NOT_CONNECTED)
    /// </summary>
    public struct NET_A_CFG_WIRELESS_NOT_CONNECTED_INFO
    {
        /// <summary>
        /// 使能
        /// Enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 网络未连接（包括wifi，3G/4G）持续时间，超过该时间则触发报警，单位秒
        /// Notify Time of WireLess not connected, over this time will triggle alarm, unit second
        /// </summary>
        public uint dwNotifyTimes;
        /// <summary>
        /// 报警联动
        /// Alarm activation
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
    }

    /// <summary>
    /// 
    /// 无线网络连接配置
    /// 每日流量控制策略
    /// 
    /// Wireless network configuration
    /// Daily traffic control strategy
    /// </summary>
    public enum EM_CFG_DAY3GFLUXTACTIC
    {
        /// <summary>
        /// 按流量
        /// By traffic
        /// </summary>
        EM_CFG_DAY3GFLUXTACTIC_BYFLUX = 0,
        /// <summary>
        /// 按时间
        /// By time
        /// </summary>
        EM_CFG_DAY3GFLUXTACTIC_BYTIME,
    }

    /// <summary>
    /// 流量报警策略
    /// Traffic police tactics
    /// </summary>
    public enum EM_CFG_DAY3GFLUXACTION
    {
        /// <summary>
        /// 无动作
        /// No Action
        /// </summary>
        EM_CFG_DAY3GFLUXACTION_NOTHING = 0,
        /// <summary>
        /// 3G下线
        /// 3G offline
        /// </summary>
        EM_CFG_DAY3GFLUXACTION_3GNETDOWN,
    }


    /// <summary>
    /// 接入的网络名称
    /// the name of the network access
    /// </summary>
    public enum EM_CFG_APN
    {
        /// <summary>
        /// 中国电信
        /// CTNET
        /// </summary>
        EM_CFG_APN_CTNET = 0,
        /// <summary>
        /// 中国移动
        /// CMNET
        /// </summary>
        EM_CFG_APN_CMNET,
        /// <summary>
        /// 中国联通
        /// UNINET
        /// </summary>
        EM_CFG_APN_UNINET,
    }

    /// <summary>
    /// 鉴权模式
    /// Authentication mode
    /// </summary>
    public enum EM_CFG_AUTHMODE
    {
        /// <summary>
        /// 不需要鉴权
        /// Do not need authentication
        /// </summary>
        EM_AUTHMODE_NO,
        /// <summary>
        /// PAP鉴权
        /// PAP authentication
        /// </summary>
        EM_AUTHMODE_PAP,
        /// <summary>
        /// CHAP鉴权
        /// CHAP authentication
        /// </summary>
        EM_AUTHMODE_CHAP,
    }

    /// <summary>
    /// 流量使用策略
    /// Traffic usage policy
    /// </summary>
    public enum EM_CFG_3GFLUXTACTIC
    {
        /// <summary>
        /// 未知类型
        /// unknown
        /// </summary>
        EM_3GFLUXTACTIC_UNKNOWN = -1,
        /// <summary>
        /// 按月包流量
        /// 3G flux tactic by flux
        /// </summary>
        EM_3GFLUXTACTIC_BYFLUX,
        /// <summary>
        /// 按月包时长
        /// 3G flux tactics by time
        /// </summary>
        EM_3GFLUXTACTIC_BYTIME,
    }

    /// <summary>
    /// 工作模式选择
    /// working mode selection
    /// </summary>
    public enum EM_CFG_WORKMODE
    {
        EM_WORKMODE_UNKNOWN = -1,
        /// <summary>
        /// "CDMA1x"
        /// "CDMA1x"
        /// </summary>
        EM_WORKMODE_CDMA1X,
        /// <summary>
        /// "EVDO"
        /// "EVDO"
        /// </summary>
        EM_WORKMODE_EVDO,
        /// <summary>
        /// "TD-SCDMA"
        /// "TD-SCDMA"
        /// </summary>
        EM_WORKMODE_TDSCDMA,
        /// <summary>
        /// "WCDMA"
        /// "WCDMA"
        /// </summary>
        EM_WORKMODE_WCDMA,
        /// <summary>
        /// "EDGE"
        /// "EDGE"
        /// </summary>
        EM_WORKMODE_EDGE,
        /// <summary>
        /// "TDD-LTE"
        /// "TDD-LTE"
        /// </summary>
        EM_WORKMODE_TDDLTE,
        /// <summary>
        /// "FDD-LTE"
        /// "FDD-LTE"
        /// </summary>
        EM_WORKMODE_FDDLTE,
        /// <summary>
        /// "TD-LTE"
        /// "TD-LTE"
        /// </summary>
        EM_WORKMODE_TDLTE,
        /// <summary>
        /// "Auto"
        /// "Auto"
        /// </summary>
        EM_WORKMODE_AUTO,
    }

    /// <summary>
    /// 无线网络连接设置
    /// Wi-Fi Settings
    /// </summary>
    public struct NET_A_CFG_WIRELESS_INFO
    {
        /// <summary>
        /// 2G网络使能
        /// 2G Network Enables
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 保活时间, 单位为秒，0表示一直连接，不自动断开
        /// Keep-alive time, in seconds, 0 means always connected, does not automatically disconnect
        /// </summary>
        public int nKeepAlive;
        /// <summary>
        /// 接入的2G网络名称
        /// the name of the 2G network access
        /// </summary>
        public EM_CFG_APN emAPN;
        /// <summary>
        /// 用户名
        /// User Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUseName;
        /// <summary>
        /// 密码
        /// Password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassword;
        /// <summary>
        /// 每日流量控制策略
        /// Daily Traffic Control Strategy
        /// </summary>
        public EM_CFG_DAY3GFLUXTACTIC emDay3GFluxTactic;
        /// <summary>
        /// 每日流量使用上限, MB或者分钟
        /// Daily Traffic Usage Limit, MB or minute
        /// </summary>
        public uint dwDay3GFluxUp;
        /// <summary>
        /// 当日的已用流量, MB或者分钟
        /// Used Traffic Day, MB or minute
        /// </summary>
        public uint dwDay3GFluxUse;
        /// <summary>
        /// 流量报警策略
        /// Traffic police tactics
        /// </summary>
        public EM_CFG_DAY3GFLUXACTION emDay3GFluxAction;
        /// <summary>
        /// 拨号时间段
        /// Time sections
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 6)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 鉴权模式
        /// Authentication mode
        /// </summary>
        public EM_CFG_AUTHMODE emAuthMode;
        /// <summary>
        /// 接入网络名
        /// APN name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAPNName;
        /// <summary>
        /// 实际使用流量, [0,65535]MB或者分钟
        /// The actual use of flux, [0,65535]MB or minute
        /// </summary>
        public uint n3GFlux;
        /// <summary>
        /// 流量使用策略
        /// flux usage policy
        /// </summary>
        public EM_CFG_3GFLUXTACTIC em3GFluxTactic;
        /// <summary>
        /// 流量使用上限
        /// Flux usage up limit
        /// </summary>
        public uint n3GFluxUp;
        /// <summary>
        /// 工作模式选择
        /// working mode selection
        /// </summary>
        public EM_CFG_WORKMODE emWorkMode;
        /// <summary>
        /// 拨号号码
        /// Dail number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDailNumber;
        /// <summary>
        /// 是否已经被语音或短信激活
        /// Whether it has been activated by voice or SMS
        /// </summary>
        public bool bActivate;
    }

    /// <summary>
    /// 串口基本属性
    /// COM basic property
    /// </summary>
    public struct NET_A_CFG_COMM_PROP
    {
        /// <summary>
        /// 数据位；0：5，1：6，2：7，3：8
        /// Data bit;0:5,1:6,2:7,3:8
        /// </summary>
        public byte byDataBit;
        /// <summary>
        /// 停止位；0：1位，1：1.5位，2：2位
        /// Stop bit;0:1-bit,1:1.5-bit,2:2-bit
        /// </summary>
        public byte byStopBit;
        /// <summary>
        /// 校验位；0：无校验，1：奇校验；2：偶校验
        /// Parity;0:None,1:Odd;2:Even
        /// </summary>
        public byte byParity;
        /// <summary>
        /// 波特率；0：300，1：600，2：1200，3：2400，4：4800，
        /// 5：9600，6：19200，7：38400，8：57600，9：115200
        /// Baud rate;0:300,1:600,2:1200,3:2400,4:4800,
        /// 5:9600,6:19200,7:38400,8:57600,9:115200
        /// </summary>
        public byte byBaudRate;
    }

    /// <summary>
    /// 串口信息
    /// COM info
    /// </summary>
    public struct NET_A_CFG_COMM_INFO
    {
        /// <summary>
        /// 串口协议
        /// COM protocol
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szProtocolName;
        /// <summary>
        /// 串口属性
        /// COM property
        /// </summary>
        public NET_A_CFG_COMM_PROP stuAttribute;
        /// <summary>
        /// 设备地址
        /// Device address
        /// </summary>
        public int nAddress;
    }

    /// <summary>
    /// 串口配置
    /// COM config
    /// </summary>
    public struct NET_A_CFG_COMMGROUP_INFO
    {
        /// <summary>
        /// 串口数量
        /// COM amount
        /// </summary>
        public int nCommNum;
        /// <summary>
        /// 串口数组
        /// COM array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_A_CFG_COMM_INFO[] stuComms;
    }

    /// <summary>
    /// 通道名称
    /// Channel name
    /// </summary>
    public struct NET_A_AV_CFG_ChannelName
    {
        public int nStructSize;
        /// <summary>
        /// 摄像头唯一编号
        /// Camera unique SN
        /// </summary>
        public int nSerial;
        /// <summary>
        /// 通道名
        /// Channel name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szName;
    }

    /// <summary>
    /// CLIENT_TransmitCmd 接口输入参数
    /// CLIENT_TransmitCmd input params
    /// </summary>
    public struct NET_IN_TRANSMIT_CMD
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号, 范围 0~设备通道数
        /// Channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 协议类型，0 : 整形数组
        /// Protocol type, 0: integer array
        /// </summary>
        public int nHannel;
        /// <summary>
        /// 此命令需要接收回复
        /// This command needs to receive a reply
        /// </summary>
        public bool bReply;
        /// <summary>
        /// 命令字节数量
        /// Command Count
        /// </summary>
        public int nMessageCount;
        /// <summary>
        /// 具体命令，是一个数组，每个元素为每个字节的整形值，使用DVR同前端交互协议,需要用户分配内存空间
        /// The specific command is an array, each element is an integer value of each byte, and the user needs to allocate memory space
        /// </summary>
        public IntPtr pMessage;
    }

    /// <summary>
    /// CLIENT_TransmitCmd 接口输出参数
    /// CLIENT_TransmitCmd output params
    /// </summary>
    public struct NET_OUT_TRANSMIT_CMD
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号, 范围 0~设备通道数
        /// Channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 协议类型，0 : 整形数组
        /// Protocol type, 0: integer array
        /// </summary>
        public int nHannel;
        /// <summary>
        /// 返回命令长度
        /// Return command length
        /// </summary>
        public int nRetMessageCount;
        /// <summary>
        /// 用户填写,为pMessage指针所指的数组元素数量
        /// The number of array elements indicated by the pMessage pointer filled by the user
        /// </summary>
        public int nMaxMessageCount;
        /// <summary>
        /// 返回值，是一个数组，每个元素为每个字节的整形值，需要用户分配内存空间
        /// The return value is an array. Each element is an integer value of each byte. The user needs to allocate memory space
        /// </summary>
        public IntPtr pMessage;
    }

    /// <summary>
    /// CLIENT_ManualTest 接口输入参数
    /// CLIENT_ManualTest input params
    /// </summary>
    public struct NET_IN_MANUAL_TEST
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 测试ID，每次下发的测试ID不一样
        /// TestID,the test ID issued each time is different
        /// </summary>
        public uint dwTestID;
        /// <summary>
        /// 测试的通道号，可以对应某一个要测试的SIA服务器
        /// Channel ID
        /// </summary>
        public uint nChannel;
    }

    /// <summary>
    /// CLIENT_ManualTest 接口输出参数
    /// CLIENT_ManualTest output params
    /// </summary>
    public struct NET_OUT_MANUAL_TEST
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 结果 1：测试成功，结果同步返回 2：发送测试请求成功，结果异步返回 3：测试失败
        /// Result 1: The test is successful, the result is returned synchronously 2: The test request is sent successfully, the result is returned asynchronously 3: The test failed
        /// </summary>
        public int nTestResult;
    }

    /// <summary>
    /// 用户状态
    /// user status
    /// </summary>
    public enum EM_GETUSERINFOBYCONDITION_USER_STATUS
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_GETUSERINFOBYCONDITION_USER_STATUS_UNKNOWN,
        /// <summary>
        /// 不存在，未配置过用户信息
        /// does not exist, user information has not been configured
        /// </summary>
        EM_GETUSERINFOBYCONDITION_USER_STATUS_NOPRESENT,
        /// <summary>
        /// 未激活，已经配置过用户信息，但是未使能
        /// not activated, user information has been configured, but not enabled
        /// </summary>
        EM_GETUSERINFOBYCONDITION_USER_STATUS_INACTIVATED,
        /// <summary>
        /// 已激活
        /// activated
        /// </summary>
        EM_GETUSERINFOBYCONDITION_USER_STATUS_ACTIVATED,
    }

    /// <summary>
    /// 用户的权限列表
    /// User's permission list
    /// </summary>
    public enum EM_ALARM_USERAUTHORITY
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ALARM_USERAUTHORITY_UNKNOWN,
        /// <summary>
        /// 布防
        /// Arming
        /// </summary>
        EM_ALARM_USERAUTHORITY_ARMING,
        /// <summary>
        /// 强制布防
        /// force arming
        /// </summary>
        EM_ALARM_USERAUTHORITY_FORCEARMING,
        /// <summary>
        /// 撤防
        /// Disarm
        /// </summary>
        EM_ALARM_USERAUTHORITY_DISARM,
        /// <summary>
        /// 旁路
        /// Bypass
        /// </summary>
        EM_ALARM_USERAUTHORITY_BYPASS,
        /// <summary>
        /// 永久旁路
        /// permanent bypass
        /// </summary>
        EM_ALARM_USERAUTHORITY_PERMANENTBYPASS,
        /// <summary>
        /// 消警
        /// Alarm elimination
        /// </summary>
        EM_ALARM_USERAUTHORITY_ALARMCONFIRM,
        /// <summary>
        /// 查询日志
        /// query log
        /// </summary>
        EM_ALARM_USERAUTHORITY_QUERYLOG,
        /// <summary>
        /// 调试模式
        /// debug mode
        /// </summary>
        EM_ALARM_USERAUTHORITY_DEBUGMODE,
        /// <summary>
        /// 更改基本程序，如：升级程序
        /// Change the basic program, such as: upgrade program
        /// </summary>
        EM_ALARM_USERAUTHORITY_UPGRADE,
        /// <summary>
        /// 添加/更改配置参数
        /// add/change configuration parameters
        /// </summary>
        EM_ALARM_USERAUTHORITY_SYSTEMCONFIG,
        /// <summary>
        /// 用户管理
        /// user management
        /// </summary>
        EM_ALARM_USERAUTHORITY_USERMANAGEMENT,
    }

    /// <summary>
    /// 用户所在组
    /// User's group
    /// </summary>
    public enum EM_ALARM_USER_GROUP
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ALARM_USER_GROUP_UNKNOWN,
        /// <summary>
        /// 管理员
        /// Administrator
        /// </summary>
        EM_ALARM_USER_GROUP_ADMIN,
        /// <summary>
        /// 安装员
        /// installer
        /// </summary>
        EM_ALARM_USER_GROUP_INSTALLER,
        /// <summary>
        /// 制造商
        /// manufacturer
        /// </summary>
        EM_ALARM_USER_GROUP_MANUFACTURER,
        /// <summary>
        /// 操作员
        /// operator
        /// </summary>
        EM_ALARM_USER_GROUP_OPERATOR,
    }

    /// <summary>
    /// 码流类型
    /// stream type
    /// </summary>
    public enum EM_GETUSERINFOBYCONDITION_USER_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_GETUSERINFOBYCONDITION_USER_TYPE_UNKNOWN,
        /// <summary>
        /// 键盘用户
        /// keyboard user
        /// </summary>
        EM_GETUSERINFOBYCONDITION_USER_TYPE_KEYPAD,
        /// <summary>
        /// IC卡用户
        /// IC card user
        /// </summary>
        EM_GETUSERINFOBYCONDITION_USER_TYPE_ICCARD,
        /// <summary>
        /// 遥控器用户
        /// remote control user
        /// </summary>
        EM_GETUSERINFOBYCONDITION_USER_TYPE_REMOTECONTROL,
        /// <summary>
        /// 手机用户
        /// mobile phone users
        /// </summary>
        EM_GETUSERINFOBYCONDITION_USER_TYPE_MOBILE,
        /// <summary>
        /// key用户
        /// key user
        /// </summary>
        EM_GETUSERINFOBYCONDITION_USER_TYPE_KEY,
    }

    /// <summary>
    /// 功能
    /// Features
    /// </summary>
    public enum EM_ALARM_ONECLICKARMING_FUNCTION
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ALARM_ONECLICKARMING_FUNCTION_UNKNOWN,
        /// <summary>
        /// 开关
        /// switch
        /// </summary>
        EM_ALARM_ONECLICKARMING_FUNCTION_ONOFF,
        /// <summary>
        /// 只开
        /// only open
        /// </summary>
        EM_ALARM_ONECLICKARMING_FUNCTION_ONONLY,
        /// <summary>
        /// 只关
        /// only off
        /// </summary>
        EM_ALARM_ONECLICKARMING_FUNCTION_OFFONLY,
    }

    /// <summary>
    /// 触发类型
    /// trigger type
    /// </summary>
    public enum EM_ALARM_ONECLICKARMING_TRIGGEROPTION
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_ALARM_ONECLICKARMING_TRIGGEROPTION_UNKNOWN,
        /// <summary>
        /// 脉冲
        /// impulse
        /// </summary>
        EM_ALARM_ONECLICKARMING_TRIGGEROPTION_IMPULSE,
        /// <summary>
        /// 双稳定
        /// Bistable
        /// </summary>
        EM_ALARM_ONECLICKARMING_TRIGGEROPTION_BISTABLE,
    }

    /// <summary>
    /// 一键布防配置
    /// One-key deployment configuration
    /// </summary>
    public struct NET_ALARM_USER_ONECLICKARMING
    {
        /// <summary>
        /// 一键布防使能
        /// One key arming enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 布防功能
        /// Arming function
        /// </summary>
        public EM_ALARM_ONECLICKARMING_FUNCTION emFunction;
        /// <summary>
        /// 触发类型
        /// trigger type
        /// </summary>
        public EM_ALARM_ONECLICKARMING_TRIGGEROPTION emTriggerOption;
        /// <summary>
        /// 一键布防类型
        /// Deployment scenario mode
        /// </summary>
        public EM_A_NET_EM_SCENE_MODE emArmProfile;
        /// <summary>
        /// 布撤防模式
        /// arm type
        /// </summary>
        public EM_ARM_TYPE emArmMode;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 报警产品本地用户扩展信息
    /// Alarm product local user extension information
    /// </summary>
    public struct NET_ALARM_USER_EXTERN
    {
        /// <summary>
        /// 胁迫密码
        /// Duress password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDuressPassword;
        /// <summary>
        /// 关联卡片
        /// Associated card
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64 * 32)]
        public string szCard;
        /// <summary>
        /// 关联卡片数量
        /// number of associated card
        /// </summary>
        public int nCardNum;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 报警产品本地用户信息
    /// Local user information of alarm product
    /// </summary>
    public struct NET_ALARM_USER
    {
        /// <summary>
        /// 用户编号
        /// User ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szID;
        /// <summary>
        /// 用户状态
        /// User status
        /// </summary>
        public EM_GETUSERINFOBYCONDITION_USER_STATUS emUserStatus;
        /// <summary>
        /// 用户名
        /// username
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 密码
        /// password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassword;
        /// <summary>
        /// 用户的权限列表个数
        /// The number of user authorization lists
        /// </summary>
        public int nAuthorityListNum;
        /// <summary>
        /// 用户的权限列表
        /// User's authorization list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_ALARM_USERAUTHORITY[] emAuthorityList;
        /// <summary>
        /// 用户所在组
        /// user's group
        /// </summary>
        public EM_ALARM_USER_GROUP emGroup;
        /// <summary>
        /// 是否为保留用户，保留用户不可删除
        /// Whether it is a reserved user, the reserved user cannot be deleted
        /// </summary>
        public bool bReserved;
        /// <summary>
        /// 用户类型
        /// User type
        /// </summary>
        public EM_GETUSERINFOBYCONDITION_USER_TYPE emUserType;
        /// <summary>
        /// 相同短信时间间隔，间隔时间内若有连续相同的报告触发，则不上传。（当用户类型为Key时有效）单位：秒
        /// The same message time interval, if the same report is triggered continuously within the interval, it will not be uploaded. (Valid when the user type is Key) Unit: seconds
        /// </summary>
        public uint nInterval;
        /// <summary>
        /// 允许访问的时间 开始时间
        /// Allowed access time Start time
        /// </summary>
        public NET_TIME stuAccessAllowTimeStart;
        /// <summary>
        /// 允许访问的时间 结束时间
        /// Allowed access time End time
        /// </summary>
        public NET_TIME stuAccessAllowTimeEnd;
        /// <summary>
        /// 用户备注信息
        /// User remarks information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szMemo;
        /// <summary>
        /// 关联的子系统对应子系统号的个数
        /// The number of associated subsystem corresponding to the subsystem number
        /// </summary>
        public int nSubSystemNum;
        /// <summary>
        /// 关联的子系统，对应子系统号，用户只能操作其关联的子系统
        /// Associated subsystem, corresponding to the subsystem number, the user can only operate its associated subsystem
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public int[] nSubSystems;
        /// <summary>
        /// 关联防区的个数
        /// Number of associated zone
        /// </summary>
        public int nZoneNum;
        /// <summary>
        /// 关联防区，当emUserType=EM_GETUSERINFOBYCONDITION_USER_TYPE_KEY时用来关联Key防区。不同的Key防区可以关联不同的Key用户。
        /// Associate the zone, when emUserType=EM_GETUSERINFOBYCONDITION_USER_TYPE_KEY, it is used to associate the Key zone. Different Key defense zones can be associated with different Key users.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nZones;
        /// <summary>
        /// 一键布防配置
        /// One-click arming configuration
        /// </summary>
        public NET_ALARM_USER_ONECLICKARMING stuOneClickArming;
        /// <summary>
        /// 用户信息扩展数据，需要用户申请内存 < NET_ALARM_USER_EXTERN >
        /// User information extended data requires user to apply for memory < NET_ALARM_USER_EXTERN >
        /// </summary>
        public IntPtr pstuAlarmUserExtern;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256 - 8)]
        public byte[] byReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256 - 4)]
        public byte[] byReserved;
#endif
    }

    /// <summary>
    /// CLIENT_ModifyAlarmUser 接口输入参数
    /// CLIENT_ModifyAlarmUser input params
    /// </summary>
    public struct NET_IN_MODIFY_ALARM_USER
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 用户ID，用户唯一标识
        /// User ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUserID;
        /// <summary>
        /// 修改的用户信息
        /// User information
        /// </summary>
        public NET_ALARM_USER stuAlarmUser;
    }

    /// <summary>
    /// CLIENT_ModifyAlarmUser 接口输出参数
    /// CLIENT_ModifyAlarmUser output params
    /// </summary>
    public struct NET_OUT_MODIFY_ALARM_USER
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_ModifyAlarmUserPassword 接口输入参数
    /// CLIENT_ModifyAlarmUserPassword input params
    /// </summary>
    public struct NET_IN_MODIFY_ALARM_USER_PASSWORD
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 用户ID，用户唯一标识
        /// User ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUserID;
        /// <summary>
        /// 旧密码
        /// Old password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szOldPassword;
        /// <summary>
        /// 新密码
        /// New password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNewPassword;
    }

    /// <summary>
    /// CLIENT_ModifyAlarmUserPassword 接口输出参数
    /// CLIENT_ModifyAlarmUserPassword output params
    /// </summary>
    public struct NET_OUT_MODIFY_ALARM_USER_PASSWORD
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_DeleteAlarmUser 接口输入参数
    /// CLIENT_DeleteAlarmUser input params
    /// </summary>
    public struct NET_IN_DELETE_ALARM_USER
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 用户ID，用户唯一标识
        /// User ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUserID;
    }

    /// <summary>
    /// CLIENT_DeleteAlarmUser 接口输出参数
    /// CLIENT_DeleteAlarmUser output params
    /// </summary>
    public struct NET_OUT_DELETE_ALARM_USER
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_AddAlarmUser 接口输入参数
    /// CLIENT_AddAlarmUser input params
    /// </summary>
    public struct NET_IN_ADD_ALARM_USER
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 添加的用户信息
        /// User information
        /// </summary>
        public NET_ALARM_USER stuAlarmUser;
    }

    /// <summary>
    /// CLIENT_AddAlarmUser 接口输出参数
    /// CLIENT_AddAlarmUser output params
    /// </summary>
    public struct NET_OUT_ADD_ALARM_USER
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// Area状态信息
    /// Areas status infomation
    /// </summary>
    public struct NET_AREAS_INFO
    {
        /// <summary>
        /// 子系统当前的布撤防模式
        /// "T" : Total布防/外出布防模式
        /// "p1" : Partial1布防/在家布防模式
        /// "p2" : Partial2布防/自定义模式
        /// "P" : Partial1+2布防
        /// "t" : 强制布防
        /// "D" : 撤防
        /// Current deployment and removal mode of the subsystem
        /// "T": Total deployment/outbound deployment mode
        /// "P1": Partial1 defense/home defense mode
        /// "P2": Partial2 deployment/custom mode
        /// "P": Partial1+2 defense
        /// "T": forced deployment
        /// "D": defense withdrawal
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szMode;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReserved;
    }

    /// <summary>
    /// 禁止布防的条件，当其中一个或多个状态且对应项的值为true时，报警主机应能禁止布防
    /// Conditions for Prohibiting Deployment
    /// </summary>
    public struct NET_PREVENTION_OF_ARMING_INFO
    {
        /// <summary>
        /// 入侵探测器处于激活状态
        /// Intrusion detector activated
        /// </summary>
        public bool bIntrusionDetectorActivated;
        /// <summary>
        /// 紧急报警装置处于激活状态
        /// Holdup device activated
        /// </summary>
        public bool bHoldupDeviceActivated;
        /// <summary>
        /// 移动目标探测器被遮挡
        /// Movement detector masked
        /// </summary>
        public bool bMovementDetectorMasked;
        /// <summary>
        /// 移动目标探测器的探测距离明显减小
        /// Movement detector range reduction
        /// </summary>
        public bool bMovementDetectorRangeReduction;
        /// <summary>
        /// 入侵探测器故障
        /// Intrusion detector fault
        /// </summary>
        public bool bIntrusionDetectorFault;
        /// <summary>
        /// 防拆报警
        /// Tamper condition
        /// </summary>
        public bool bTamperCondition;
        /// <summary>
        /// 互连通信故障
        /// Interconnection faults
        /// </summary>
        public bool bInterconnectionFaults;
        /// <summary>
        /// 主电源故障
        /// Prime power source fault
        /// </summary>
        public bool bPrimePowerSourceFault;
        /// <summary>
        /// 备用电源故障
        /// Alternative power source fault
        /// </summary>
        public bool bAlternativePowerSourceFault;
        /// <summary>
        /// 报警传输系统故障
        /// Alarm transmission systemFault
        /// </summary>
        public bool bAlarmTransmissionSystemFault;
        /// <summary>
        /// 告警装置故障
        /// Warning device fault
        /// </summary>
        public bool bWarningDeviceFault;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szReserved;
    }

    /// <summary>
    /// 系统检测状态
    /// System status check
    /// </summary>
    public struct NET_SYSTEM_STATUS_CHECK_INFO
    {
        /// <summary>
        /// 检测使能
        /// Enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 禁止布防的条件，当其中一个或多个状态且对应项的值为true时，报警主机应能禁止布防
        /// Conditions for Prohibiting Deployment
        /// </summary>
        public NET_PREVENTION_OF_ARMING_INFO stuPreventionOfArming;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// Area布撤防配置, 对应 NET_EM_CFG_AREA_ARM_MODE
    /// Area deployment and removal configuration, corresponding toNET_EM_CFG_AREA_ARM_MODE
    /// </summary>
    public struct NET_CFG_AREA_ARM_MODE_INFO
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// Area状态信息数量，数组最大64个
        /// number of Areas status infomation list
        /// </summary>
        public int nAreasNum;
        /// <summary>
        /// Area状态信息数组
        /// Areas status infomation list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_AREAS_INFO[] stuAreas;
        /// <summary>
        /// 系统检测状态
        /// System status check
        /// </summary>
        public NET_SYSTEM_STATUS_CHECK_INFO stuSystemStatusCheck;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR_OVERLOAD (非机动车超载事件) 对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_TRAFFIC_NONMOTOR_OVERLOAD (Non-motor overload)
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// Evnet name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// Event corresponding to file information
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 智能事件公共信息
        /// Intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// snapshot mark (by bit), see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 对应图片的分辨率
        /// picture resolution
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// 非机动车信息
        /// NonMotor information
        /// </summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// 车道号
        /// Line number
        /// </summary>
        public int nLane;
        /// <summary>
        /// 抓拍序号，如3-2-1/0，1表示抓拍正常结束，0表示抓拍异常结束
        /// Snap index,such as 3,2,1/0. 1 means the last one,0 means there has some exception and snap stop
        /// </summary>
        public int nSequence;
        /// <summary>
        /// 公共信息
        /// common information
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// 交通车辆信息
        /// Traffic car info
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// 图片信息数组
        /// Picture information
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Picture number
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 本地文件路径
        /// / Local file path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFilePath;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 724 - 8)]
        public byte[] byReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 724 - 4)]
        public byte[] byReserved;
#endif
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT (非机动车未戴安全帽事件) 对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT (Non-motor without safehat)
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// Evnet name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// Event corresponding to file information
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 智能事件公共信息
        /// Intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// snapshot mark (by bit), see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 对应图片的分辨率
        /// picture resolution
        /// </summary>
        public NET_RESOLUTION_INFO stuResolution;
        /// <summary>
        /// 非机动车信息
        /// NonMotor information
        /// </summary>
        public NET_VA_OBJECT_NONMOTOR stuNonMotor;
        /// <summary>
        /// 车道号
        /// Line number
        /// </summary>
        public int nLane;
        /// <summary>
        /// 抓拍序号，如3-2-1/0，1表示抓拍正常结束，0表示抓拍异常结束
        /// Snap index,such as 3,2,1/0. 1 means the last one,0 means there has some exception and snap stop
        /// </summary>
        public int nSequence;
        /// <summary>
        /// 公共信息
        /// common information
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// 交通车辆信息
        /// Traffic car info
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// 图片信息数组
        /// Picture information
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Picture number
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// / 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 980 - 8)]
        public byte[] byReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 980 - 4)]
        public byte[] byReserved;
#endif
    }

    /// <summary>
    /// CLIENT_RealPlayForSpGdpr 接口入参
    /// CLIENT_RealPlayForSpGdpr input param
    /// </summary>
    public struct NET_IN_REALPLAY_FOR_SP_GDPR
    {
        /// <summary>
        /// 结构体大小：赋值为结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道
        /// channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 类型
        /// type
        /// </summary>
        public EM_RealPlayType rType;
        /// <summary>
        /// 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] szReserved;
        /// <summary>
        /// 窗口句柄
        /// wnd handle
        /// </summary>
        public IntPtr hWnd;
        /// <summary>
        /// 实时数据回调
        /// Real-time data callback
        /// </summary>
        public fRealDataCallBackEx2 cbRealData;
        /// <summary>
        /// 原始码流数据回调
        /// Callback of raw codestream data
        /// </summary>
        public fOriginalRealDataCallBack pOriginalRealDataCallBack;
        /// <summary>
        /// 加密码流数据回调
        /// Add cipher stream data callback
        /// </summary>
        public fEncryptRealDataCallBackEx pEncryptRealDataCallBackEx;
        /// <summary>
        /// 断线回调
        /// Disconnect the callback
        /// </summary>
        public fRealPlayDisConnectCallBack cbDisconnect;
        /// <summary>
        /// 用户参数
        /// user info
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// CLIENT_RealPlayForSpGdpr 出参
    /// CLIENT_RealPlayForSpGdpr output param
    /// </summary>
    public struct NET_OUT_REALPLAY_FOR_SP_GDPR
    {
        /// <summary>
        /// 结构体大小：赋值为结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 下载数据加密配置
    /// download encrypt mediafile configuration
    /// </summary>
    public struct NET_DOWNLOAD_ENCRYPT_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否开启数据加密
        /// encrypt enable
        /// </summary>
        public bool bEncryptEnable;
        /// <summary>
        /// 加密下载数据密码
        /// password of encrypted file
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szEncryptPasswd;
        /// <summary>
        /// 加密算法
        /// Algorithm
        /// </summary>
        public EM_ALGORITHM_TYPE emAlgorithm;
    }

    /// <summary>
    /// CLIENT_SetTourSource 接口输入参数(设置窗口轮巡显示源)
    /// CLIENT_SetTourSource Interface input parameters (Settings window round tour shows source)
    /// </summary>
    public struct NET_IN_SET_TOUR_SOURCE
    {
        public uint dwSize;
        /// <summary>
        /// 输出通道号
        /// Output Channel Number
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 窗口号
        /// Window Number
        /// </summary>
        public int nWindow;
        /// <summary>
        /// 显示源数组, 可进行窗口轮巡,由用户申请内存，大小为sizeof(NET_SPLIT_SOURCE)*nSrcCount
        /// Display Origin Array,can be round tour in the window,the space application by the user,apply to sizeof(NET_SPLIT_SOURCE)*nSrcCount
        /// </summary>
        public IntPtr pstuSrcs;
        /// <summary>
        /// 显示源数量
        /// Display Origin Number
        /// </summary>
        public int nSrcCount;
    }

    /// <summary>
    /// CLIENT_SetTourSource 接口输出参数(设置窗口轮巡显示源)
    /// CLIENT_SetTourSource Interface output parameters (Settings window round tour shows source)
    /// </summary>
    public struct NET_OUT_SET_TOUR_SOURCE
    {
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_GetTourSource 接口输入参数
    /// CLIENT_GetTourSource port input parameter
    /// </summary>
    public struct NET_IN_GET_TOUR_SOURCE
    {
        public uint dwSize;
        /// <summary>
        /// 输出通道号, pszCompsiteID为NULL时有效
        /// output channel no., pszCompsiteIDis NULL, it is valid
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 拼接屏ID
        /// splicing video wall ID
        /// </summary>
        public IntPtr pszCompositeID;
        /// <summary>
        /// 窗口号, -1表示所有窗口
        /// window no., -1 means all window
        /// </summary>
        public int nWindow;
    }

    /// <summary>
    /// 窗口轮巡显示源信息
    /// window tour display source info
    /// </summary>
    public struct NET_SPLIT_TOUR_SOURCE
    {
        public uint dwSize;
        /// <summary>
        /// 显示源数组, 用户分配内存,大小为sizeof(NET_SPLIT_SOURCE)*nMaxSrcCount
        /// display source group, user allocation memory,apply to sizeof(NET_SPLIT_SOURCE)*nMaxSrcCount
        /// </summary>
        public IntPtr pstuSrcs;
        /// <summary>
        /// 显示源最大数量
        /// display source max quantity
        /// </summary>
        public int nMaxSrcCount;
        /// <summary>
        /// 返回的显示源数量
        /// return display source quantity
        /// </summary>
        public int nRetSrcCount;
    }

    /// <summary>
    /// CLIENT_GetTourSource 接口输出参数
    /// CLIENT_GetTourSource port output parameter
    /// </summary>
    public struct NET_OUT_GET_TOUR_SOURCE
    {
        public uint dwSize;
        /// <summary>
        /// 窗口轮巡信息数组, 用户分配内存,大小为sizeof(NET_SPLIT_TOUR_SOURCE)*nMaxWndCount
        /// window tour info group, user allocation memory,the space application by the user,apply to sizeof(NET_SPLIT_TOUR_SOURCE)*nMaxWndCount
        /// </summary>
        public IntPtr pstuWndSrcs;
        /// <summary>
        /// 窗口最大数组, 用户填写
        /// window max group, user fill in
        /// </summary>
        public int nMaxWndCount;
        /// <summary>
        /// 返回的窗口数量
        /// return window quantity
        /// </summary>
        public int nRetWndCount;
    }

    /// <summary>
    /// 窗口轮巡动作
    /// window tour motion
    /// </summary>
    public enum EM_NET_WINDOW_TOUR_ACTION
    {
        /// <summary>
        /// 开始
        /// start
        /// </summary>
        EM_NET_WND_TOUR_ACTION_START,
        /// <summary>
        /// 停止
        /// stop
        /// </summary>
        EM_NET_WND_TOUR_ACTION_STOP,
    }

    /// <summary>
    /// 窗口轮巡控制输入参数, 对应NET_SPLIT_OPERATE_SET_TOUR
    /// window tour control input parameter, corresponding to NET_SPLIT_OPERATE_SET_TOUR
    /// </summary>
    public struct NET_IN_SPLIT_SET_TOUR
    {
        public uint dwSize;
        /// <summary>
        /// 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效
        /// output channel no. or cubeless video wall virtual channel no., pszCompositeID is NULL is valid
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 融合屏ID
        /// cubeless video wall ID
        /// </summary>
        public IntPtr pszCompositeID;
        /// <summary>
        /// 窗口号
        /// window no.
        /// </summary>
        public int nWindow;
        /// <summary>
        /// 轮巡动作
        /// tour motion
        /// </summary>
        public EM_NET_WINDOW_TOUR_ACTION emAction;
    }

    /// <summary>
    /// 窗口轮巡控制输出参数, 对应NET_SPLIT_OPERATE_SET_TOUR
    /// window tour control output parameter, corresponding to NET_SPLIT_OPERATE_SET_TOUR
    /// </summary>
    public struct NET_OUT_SPLIT_SET_TOUR
    {
        public uint dwSize;
    }

    /// <summary>
    /// 声音配置
    /// Sound configuration
    /// </summary>
    public struct NET_CFG_SOUND
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 报警语音提示文件路径
        /// alarm sound file path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szAlarmSoundPath;
        /// <summary>
        /// 报警持续时间,单位：秒
        /// Alarm duration, unit: second
        /// </summary>
        public uint nAlarmSoundDuration;
        /// <summary>
        /// / 报警语音提示音量,范围[0, 100]
        /// / Alarm voice prompt volume, range [0, 100]
        /// </summary>
        public int nAlarmSoundVolume;
    }

    /// <summary>
    /// CPU信息
    /// CPU info
    /// </summary>
    public struct NET_A_CPU_INFO
    {
        public uint dwSize;
        /// <summary>
        /// CPU利用率
        /// CPU usage
        /// </summary>
        public int nUsage;
    }

    /// <summary>
    /// CPU状态
    /// CPU status
    /// </summary>
    public struct NET_A_CPU_STATUS
    {
        public uint dwSize;
        /// <summary>
        /// 查询是否成功
        /// Search succeeded or not
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// CPU数量
        /// CPU amount
        /// </summary>
        public int nCount;
        /// <summary>
        /// CPU信息
        /// CPU info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_A_CPU_INFO[] stuCPUs;
    }

    /// <summary>
    /// 内存信息
    /// Memory info
    /// </summary>
    public struct NET_A_MEMORY_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 总内存, M
        /// Total memory, M
        /// </summary>
        public uint dwTotal;
        /// <summary>
        /// 剩余内存, M
        /// Free memory, M
        /// </summary>
        public uint dwFree;
    }

    /// <summary>
    /// 内存状态
    /// Memory status
    /// </summary>
    public struct NET_A_MEMORY_STATUS
    {
        public uint dwSize;
        /// <summary>
        /// 查询是否成功
        /// Search succeeded or not
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 内存信息
        /// Memory info
        /// </summary>
        public NET_A_MEMORY_INFO stuMemory;
    }

    /// <summary>
    /// 风扇信息
    /// Fan info
    /// </summary>
    public struct NET_A_FAN_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 名称
        /// Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 速度
        /// Speed
        /// </summary>
        public uint nSpeed;
    }

    /// <summary>
    /// 风扇状态
    /// Fan status
    /// </summary>
    public struct NET_A_FAN_STATUS
    {
        public uint dwSize;
        /// <summary>
        /// 查询是否成功
        /// Search succeeded or not
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 风扇数量
        /// Fan amount
        /// </summary>
        public int nCount;
        /// <summary>
        /// 风扇状态
        /// Fan status
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_A_FAN_INFO[] stuFans;
    }

    /// <summary>
    /// 温度信息
    /// Temperature info
    /// </summary>
    public struct NET_A_TEMPERATURE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 传感器名称
        /// Sensor name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 温度
        /// Temperature
        /// </summary>
        public float fTemperature;
    }

    /// <summary>
    /// 温度状态
    /// Temperature status
    /// </summary>
    public struct NET_A_TEMPERATURE_STATUS
    {
        public uint dwSize;
        /// <summary>
        /// 查询是否成功
        /// Search succeeded or not
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 温度数量
        /// Temperature amount
        /// </summary>
        public int nCount;
        /// <summary>
        /// 温度信息
        /// Temperature info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_A_TEMPERATURE_INFO[] stuTemps;
    }

    /// <summary>
    /// 系统状态
    /// System status
    /// </summary>
    public struct NET_A_SYSTEM_STATUS
    {
        public uint dwSize;
        /// <summary>
        /// CPU状态 < NET_A_CPU_STATUS >
        /// CPU status < NET_A_CPU_STATUS >
        /// </summary>
        public IntPtr pstuCPU;
        /// <summary>
        /// 内存状态 < NET_A_MEMORY_STATUS >
        /// Memory status < NET_A_MEMORY_STATUS >
        /// </summary>
        public IntPtr pstuMemory;
        /// <summary>
        /// 风扇状态 < NET_A_FAN_STATUS >
        /// Fan status < NET_A_FAN_STATUS >
        /// </summary>
        public IntPtr pstuFan;
        /// <summary>
        /// 电源状态 < NET_POWER_STATUS >
        /// Power status < NET_POWER_STATUS >
        /// </summary>
        public IntPtr pstuPower;
        /// <summary>
        /// 温度状态 < NET_A_TEMPERATURE_STATUS >
        /// Temperature status < NET_A_TEMPERATURE_STATUS >
        /// </summary>
        public IntPtr pstuTemp;
    }

    /// <summary>
    /// ONVIF服务配置, 对应 NET_EM_CFG_VSP_ONVIF
    /// ONVIF service configuration, corresponding to NET_EM_CFG_VSP_ONVIF
    /// </summary>
    public struct NET_CFG_VSP_ONVIF_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 开关控制
        /// Switch control
        /// </summary>
        public bool bServiceStart;
    }

    /// <summary>
    /// ssh服务端配置
    /// SSHD config
    /// </summary>
    public struct NET_NETAPP_SSHD_CFG
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否开启sshd监听服务
        /// enable open sshd server
        /// </summary>
        public bool bEnable;
    }

    /// <summary>
    /// 邮件上报设备状况
    /// Mail Report Device Status
    /// </summary>
    public struct NET_A_CFG_HEALTHREPORT_INFO
    {
        /// <summary>
        /// 使能
        /// Enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 邮件发送间隔,单位为秒,范围：0~3600
        /// Mail sending interval, unit is s, range:0~3600
        /// </summary>
        public int nInterval;
    }

    /// <summary>
    /// 邮件发送配置 ==>CFG_CMD_EMAIL
    /// Mail sending config ==>CFG_CMD_EMAIL
    /// </summary>
    public struct NET_A_CFG_EMAIL_INFO
    {
        /// <summary>
        /// 使能
        /// Enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 是否需要SSL加密
        /// If SSL encrypt
        /// </summary>
        public bool bSslEnable;
        /// <summary>
        /// 是否需要TLS加密
        /// If TLS encrypt
        /// </summary>
        public bool bTlsEnable;
        /// <summary>
        /// SMTP服务器IP地址或网络名
        /// SMTP Server IP address or network name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szAddress;
        /// <summary>
        /// 端口号
        /// Port no.
        /// </summary>
        public int nPort;
        /// <summary>
        /// 帐户名
        /// Account
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUserName;
        /// <summary>
        /// 密码
        /// Password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassword;
        /// <summary>
        /// 匿名邮件，true匿名，false非匿名
        /// Anonymous mail, true is anonymous, false is non-anonymous
        /// </summary>
        public bool bAnonymous;
        /// <summary>
        /// 发件人地址
        /// Sender address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szSendAddress;
        /// <summary>
        /// 有效收件人数
        /// Valid receiver quantity
        /// </summary>
        public int nRetReciversNum;
        /// <summary>
        /// 收件人列表
        /// Receiver list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100 * 256)]
        public string szReceivers;
        /// <summary>
        /// 邮件标题关键字
        /// Mail title keywork
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szTitle;
        /// <summary>
        /// 事件联动邮件，只发送带附件的邮件
        /// Event link mail, only send mail with attachment
        /// </summary>
        public bool bOnlyAttachment;
        /// <summary>
        /// 邮件附件使能
        /// Enable attachment
        /// </summary>
        public bool bAttachEnable;
        /// <summary>
        /// 同一事件的最小邮件发送间隔，单位为秒
        /// Same event min main sending interval, unit is s
        /// </summary>
        public int nSendInterv;
        /// <summary>
        /// 能力,为true时,stuHealthReport有效
        /// Capacity,is true ,stuHealthReport is valiud
        /// </summary>
        public byte abHealthReport;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved;
        /// <summary>
        /// 邮件上报设备状况
        /// Mail report device status
        /// </summary>
        public NET_A_CFG_HEALTHREPORT_INFO stuHealthReport;
        /// <summary>
        /// 是否开启邮件鉴权,TRUE表示需要有用户名和密码先登入到SMTP服务器;FALSE表示不需要用户名和密码，直接通过SMTP服务器转发发送邮件
        /// Whether to enbale mail authentication.
        /// TRUE means you need a username and password to login to SMTP server.
        /// FALSE means you don't need a username and password,through the SMTP server to send mail directly.
        /// </summary>
        public bool bAuthentication;
    }

    /// <summary>
    /// videocolor style
    /// videocolor style
    /// </summary>
    public enum EM_A_CFG_ENUM_VIDEOCOLOR_STYLE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        CFG_ENUM_VIDEOCOLOR_STYLE_UNKNOWN,
        /// <summary>
        /// 柔和
        /// gentle
        /// </summary>
        CFG_ENUM_VIDEOCOLOR_STYLE_GENTLE,
        /// <summary>
        /// 标准
        /// standard
        /// </summary>
        CFG_ENUM_VIDEOCOLOR_STYLE_STANDARD,
        /// <summary>
        /// 艳丽
        /// flamboyant
        /// </summary>
        CFG_ENUM_VIDEOCOLOR_STYLE_FLAMBOYANT,
    }

    /// <summary>
    /// 视频输入颜色配置, 每个视频输入通道对应多个颜色配置
    /// Video input color config. Each input video has several corresponding color setups.
    /// </summary>
    public struct NET_A_AV_CFG_VideoColor
    {
        public int nStructSize;
        /// <summary>
        /// 时间段
        /// Period
        /// </summary>
        public NET_AV_CFG_TimeSection stuTimeSection;
        /// <summary>
        /// 亮度, 0~100
        /// Brightness, 1~100
        /// </summary>
        public int nBrightness;
        /// <summary>
        /// 对比度, 0~100
        /// Contrastness, 1~100
        /// </summary>
        public int nContrast;
        /// <summary>
        /// 饱和度, 0~100
        /// Saturation, 1~100
        /// </summary>
        public int nSaturation;
        /// <summary>
        /// 色调, 0~100
        /// Hue, 1~100
        /// </summary>
        public int nHue;
        /// <summary>
        /// 增益, 0~100
        /// plus, 0~100
        /// </summary>
        public int nGamma;
        /// <summary>
        /// 色彩抑制等级 0~100
        /// constrain grade 0~100
        /// </summary>
        public int nChromaSuppress;
        /// <summary>
        /// 色彩风格
        /// color style
        /// </summary>
        public EM_A_CFG_ENUM_VIDEOCOLOR_STYLE emColorStyle;
    }

    /// <summary>
    /// 通道视频输入颜色配置
    /// Channel video input color config
    /// </summary>
    public struct NET_A_AV_CFG_ChannelVideoColor
    {
        public int nStructSize;
        /// <summary>
        /// 通道颜色配置数
        /// Channel color config amount
        /// </summary>
        public int nColorNum;
        /// <summary>
        /// 通道颜色配置, 每个通道对应多个颜色配置
        /// Channel color config. Each input video has several corresponding color setups.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public NET_A_AV_CFG_VideoColor[] stuColor;
    }

    /// <summary>
    /// 视频输入夜晚特殊配置选项，在晚上光线较暗时自动切换到夜晚的配置参数
    /// Video input nigh special configuration, automatically switch to night configuration when dark
    /// </summary>
    public struct NET_A_CFG_VIDEO_IN_NIGHT_OPTIONS
    {
        /// <summary>
        /// 已废弃,使用CFG_VIDEO_IN_OPTIONS里面的bySwitchMode
        /// 0-不切换，总是使用白天配置；1-根据亮度切换；2-根据时间切换；3-不切换，总是使用夜晚配置；4-使用普通配置
        /// abandoned, replaced by bySwitchMode in CFG_VIDEO_IN_OPTIONS
        /// 0- do not switch, 1- switch by brightness, 2- switch by time
        /// </summary>
        public byte bySwitchMode;
        /// <summary>
        /// 当前使用的配置文件.
        /// 0-白天
        /// 1-晚上
        /// 2-Normal
        /// 0，1,2都为临时配置，使图像生效，便于查看图像调试效果，不点击确定，离开页面不保存至设备。
        /// /3-非临时配置，点击确定后保存至设备，与SwitchMode结合使用，根据SwitchMode决定最终生效的配置。
        /// SwitchMode=0，Profile=3，设置白天配置到设备；
        /// SwitchMode=1，Profile=3，则设置夜晚配置到设备
        /// SwitchMode=2，Profile=3，根据日出日落时间段切换，白天时间段使用白天配置，夜晚时间段使用夜晚配置，保存至设备；
        /// SwitchMode=4，Profile=3；使用普通配置，保存至设备
        /// The current use of configuration files.
        /// 0 - day
        /// 1 - night
        /// 2-Normal
        /// 0,1,2 are temporary configuration,make the image effect, easy to debug view image effect, do not click ok to leave the page is not saved to the device.
        /// /3 - Non-temporary configuration, and click OK to save to your device, used in conjunction with SwitchMode, decided to configure the final effect under SwitchMode.
        /// SwitchMode=0, Profile=3, Set the configuration to the device during the day;
        /// SwitchMode=1, Profile=3, Set the night configuration to the device
        /// SwitchMode=2, Profile=3, According to sunrise and sunset time switch, use during the day time configuration during the day and night time use night configuration, save to equipment;
        /// SwitchMode=4, Profile=3, Use common configuration ,saved to the device
        /// </summary>
        public byte byProfile;
        /// <summary>
        /// 亮度阈值 0~100
        /// Brightness Threshold 0~100
        /// </summary>
        public byte byBrightnessThreshold;
        /// <summary>
        /// 大致日出和日落时间，日落之后日出之前，将采用夜晚特殊的配置。
        /// Sunrise and sunset time, night mode is on before sunrise and after sunset
        /// </summary>
        public byte bySunriseHour;
        /// <summary>
        /// 00:00:00 ~ 23:59:59
        /// 00:00:00 ~ 23:59:59
        /// </summary>
        public byte bySunriseMinute;
        public byte bySunriseSecond;
        public byte bySunsetHour;
        public byte bySunsetMinute;
        public byte bySunsetSecond;
        /// <summary>
        /// 红色增益调节，白平衡为"Custom"模式下有效 0~100
        /// Red gain red. Valid when WB is "Custom" mode (0~100)
        /// </summary>
        public byte byGainRed;
        /// <summary>
        /// 绿色增益调节，白平衡为"Custom"模式下有效 0~100
        /// Green gain. Valid when WB is "Custom" mode (0~100)
        /// </summary>
        public byte byGainBlue;
        /// <summary>
        /// 蓝色增益调节，白平衡为"Custom"模式下有效 0~100
        /// Blue gain setup. Valid when WB is "Custom" mode (0~100)
        /// </summary>
        public byte byGainGreen;
        /// <summary>
        /// 曝光模式；取值范围取决于设备能力集：0-自动曝光，1-曝光等级1，2-曝光等级2…n-1最大曝光等级数 n带时间上下限的自动曝光 n+1自定义时间手动曝光 (n==byExposureEn）
        /// Exposure mode; range value depends on device capacity set; 0-automatic, 1- exposure level1,2-exposure level 2. Mn-1:Max exposure level n auto exposure of max and min time. n+1 custom exposure time (n==byExposureEn)
        /// </summary>
        public byte byExposure;
        /// <summary>
        /// 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位，取值0.1ms~80ms
        /// Auto exposure value min limit or manual axposure custom, unit is millisecond (0.1ms~80ms).
        /// </summary>
        public float fExposureValue1;
        /// <summary>
        /// 自动曝光时间上限,毫秒为单位，取值0.1ms~80ms
        /// Auto exposure time max limit, unit is millisecond (0.1ms~80ms)
        /// </summary>
        public float fExposureValue2;
        /// <summary>
        /// 白平衡, 0-"unable", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
        /// WB. White 0-"unable", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
        /// </summary>
        public byte byWhiteBalance;
        /// <summary>
        /// 0~100, GainAuto为true时表示自动增益的上限，否则表示固定的增益值
        /// When gainAuto is true, it is max auto gain limit, otherwise, it is fixed value gain.
        /// </summary>
        public byte byGain;
        /// <summary>
        /// 自动增益
        /// Auto Gain
        /// </summary>
        public byte bGainAuto;
        /// <summary>
        /// 自动光圈
        /// Auto aperture
        /// </summary>
        public byte bIrisAuto;
        /// <summary>
        /// 外同步的相位设置 0~360
        /// 0~360 LL Phase
        /// </summary>
        public float fExternalSyncPhase;
        /// <summary>
        /// 增益下限
        /// gain min
        /// </summary>
        public byte byGainMin;
        /// <summary>
        /// 增益上限
        /// gain max
        /// </summary>
        public byte byGainMax;
        /// <summary>
        /// 背光补偿：取值范围取决于设备能力集：0-关闭1-启用2-指定区域背光补偿
        /// backlight:ability to set value range depends on the device,0-close 1-open 2-backlingt compensation specified area
        /// </summary>
        public byte byBacklight;
        /// <summary>
        /// 防闪烁模式 0-Outdoor 1-50Hz防闪烁 2-60Hz防闪烁
        /// prevent flashing mode,0- out door, 1-50HZ prevent flashing,2-60HZ prevent flashing
        /// </summary>
        public byte byAntiFlicker;
        /// <summary>
        /// 日/夜模式；0-总是彩色，1-根据亮度自动切换，2-总是黑白
        /// day or night,0-colour,1-according to the brightness auromatically switches,2-black and white
        /// </summary>
        public byte byDayNightColor;
        /// <summary>
        /// 曝光模式调节 曝光等级为自动曝光时有效，取值：0-默认自动，1-增益优先，2-快门优先
        /// exposure mode, effective exposure levels for automatic exposure,1-auto,2-plus,2-shutter
        /// </summary>
        public byte byExposureMode;
        /// <summary>
        /// 0-不旋转，1-顺时针90°，2-逆时针90°
        /// 0-not rotate,1-deasil 90,2-deasil 90
        /// </summary>
        public byte byRotate90;
        /// <summary>
        /// 镜像
        /// mirror
        /// </summary>
        public byte bMirror;
        /// <summary>
        /// 宽动态值 0-关闭，1~100-为真实范围值
        /// wide dynamic range[1~100],0-close
        /// </summary>
        public byte byWideDynamicRange;
        /// <summary>
        /// 强光抑制 0-关闭， 1~100为范围值
        /// glare inhibition,0-close,[1-100]
        /// </summary>
        public byte byGlareInhibition;
        /// <summary>
        /// 背光补偿区域
        /// backlight region
        /// </summary>
        public NET_CFG_RECT stuBacklightRegion;
        /// <summary>
        /// 0-关闭，1-辅助聚焦，2-自动聚焦
        /// 0-close, 1-aux focus, 2-auto focus
        /// </summary>
        public byte byFocusMode;
        /// <summary>
        /// 翻转
        /// flip
        /// </summary>
        public byte bFlip;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 74)]
        public byte[] reserved;
    }

    /// <summary>
    /// 闪光灯配置
    /// Flashlight control
    /// </summary>
    public struct NET_A_CFG_FLASH_CONTROL
    {
        /// <summary>
        /// 工作模式，0-禁止闪光，1-始终闪光，2-自动闪光
        /// Working mode, 0-flash prohibited, 1- always flash, 2- automatic flash
        /// </summary>
        public byte byMode;
        /// <summary>
        /// 工作值, 0-0us, 1-64us, 2-128us, 3-192...15-960us
        /// Working value,0-0us, 1-64us, 2-128us, 3-192...15-960us
        /// </summary>
        public byte byValue;
        /// <summary>
        /// 触发模式, 0-低电平 1-高电平 2-上升沿 3-下降沿
        /// Trigger mode, 0-low level, 1- high level, 2- upper edge 3- lower edge
        /// </summary>
        public byte byPole;
        /// <summary>
        /// 亮度预设值 区间0~100
        /// Brightness pre-set value range (0~100)
        /// </summary>
        public byte byPreValue;
        /// <summary>
        /// 占空比, 0~100
        /// Duty ratio, 0~100
        /// </summary>
        public byte byDutyCycle;
        /// <summary>
        /// 倍频, 0~10
        /// Frenquency multiple, 0~10
        /// </summary>
        public byte byFreqMultiple;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 122)]
        public byte[] reserved;
    }

    /// <summary>
    /// 抓拍参数特殊配置
    /// Snapshot special config
    /// </summary>
    public struct NET_A_CFG_VIDEO_IN_SNAPSHOT_OPTIONS
    {
        /// <summary>
        /// 红色增益调节，白平衡为"Custom"模式下有效 0~100
        /// Red gain red. Valid when WB is "Custom" mode (0~100)
        /// </summary>
        public byte byGainRed;
        /// <summary>
        /// 绿色增益调节，白平衡为"Custom"模式下有效 0~100
        /// Green gain. Valid when WB is "Custom" mode (0~100)
        /// </summary>
        public byte byGainBlue;
        /// <summary>
        /// 蓝色增益调节，白平衡为"Custom"模式下有效 0~100
        /// Blue gain setup. Valid when WB is "Custom" mode (0~100)
        /// </summary>
        public byte byGainGreen;
        /// <summary>
        /// 曝光模式；取值范围取决于设备能力集：0-自动曝光，1-曝光等级1，2-曝光等级2…n-1最大曝光等级数 n带时间上下限的自动曝光 n+1自定义时间手动曝光 (n==byExposureEn）
        /// Exposure mode; range value depends on device capacity set; 0-automatic, 1- exposure level1,2-exposure level 2. Mn-1:Max exposure level n auto exposure of max and min time. n+1 custom exposure time (n==byExposureEn)
        /// </summary>
        public byte byExposure;
        /// <summary>
        /// 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位，取值0.1ms~80ms
        /// Auto exposure value min limit or manual axposure custom, unit is millisecond (0.1ms~80ms).
        /// </summary>
        public float fExposureValue1;
        /// <summary>
        /// 自动曝光时间上限,毫秒为单位，取值0.1ms~80ms
        /// Auto exposure time max limit, unit is millisecond (0.1ms~80ms)
        /// </summary>
        public float fExposureValue2;
        /// <summary>
        /// 白平衡, 0-"unable", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
        /// WB. 0-"unable", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
        /// </summary>
        public byte byWhiteBalance;
        /// <summary>
        /// 色温等级, 白平衡为"CustomColorTemperature"模式下有效
        /// Color temperature level. valid when WB is "CustomColorTemperature" .
        /// </summary>
        public byte byColorTemperature;
        /// <summary>
        /// 自动增益
        /// Auto gain
        /// </summary>
        public byte bGainAuto;
        /// <summary>
        /// 增益调节, GainAuto为true时表示自动增益的上限，否则表示固定的增益值
        /// When GainAuto is true, it is max auto gain limit, otherwise, it is fixed value gain
        /// </summary>
        public byte byGain;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 112)]
        public byte[] reversed;
    }

    /// <summary>
    /// 鱼眼镜头配置
    /// fish eye configuration
    /// </summary>
    public struct NET_A_CFG_FISH_EYE
    {
        /// <summary>
        /// 鱼眼圆心坐标,范围[0,8192]
        /// center point[0,8192]
        /// </summary>
        public NET_CFG_POLYGON stuCenterPoint;
        /// <summary>
        /// 鱼眼半径大小,范围[0,8192]
        /// radius [0,8192]
        /// </summary>
        public uint nRadius;
        /// <summary>
        /// 镜头旋转方向,旋转角度[0,360.0]
        /// direction[0,360.0]
        /// </summary>
        public float fDirection;
        /// <summary>
        /// 镜头安装方式 1顶装，2壁装；3地装,默认1
        /// place holder 1 roof loading,2 wall loading,3 earth loading.,default 1
        /// </summary>
        public byte byPlaceHolder;
        /// <summary>
        /// 鱼眼矫正模式,详见CFG_CALIBRATE_MODE枚举值
        /// fish eye mode, see CFG_CALIBRATE_MODE enumeration value
        /// </summary>
        public byte byCalibrateMode;
        /// <summary>
        /// 保留
        /// reversed
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 31)]
        public byte[] reversed;
    }

    /// <summary>
    /// 普通参数
    /// normal option
    /// </summary>
    public struct NET_A_CFG_VIDEO_IN_NORMAL_OPTIONS
    {
        /// <summary>
        /// 红色增益调节，白平衡为"Custom"模式下有效 0~100
        /// Red gain red. Valid when WB is "Custom" mode (0~100)
        /// </summary>
        public byte byGainRed;
        /// <summary>
        /// 绿色增益调节，白平衡为"Custom"模式下有效 0~100
        /// Green gain. Valid when WB is "Custom" mode (0~100)
        /// </summary>
        public byte byGainBlue;
        /// <summary>
        /// 蓝色增益调节，白平衡为"Custom"模式下有效 0~100
        /// Blue gain setup. Valid when WB is "Custom" mode (0~100)
        /// </summary>
        public byte byGainGreen;
        /// <summary>
        /// 曝光模式；取值范围取决于设备能力集：0-自动曝光，1-曝光等级1，2-曝光等级2…n-1最大曝光等级数 n带时间上下限的自动曝光 n+1自定义时间手动曝光 (n==byExposureEn）
        /// Exposure mode; range value depends on device capacity set; 0-automatic, 1- exposure level1,2-exposure level 2. Mn-1:Max exposure level n auto exposure of max and min time. n+1 custom exposure time (n==byExposureEn)
        /// </summary>
        public byte byExposure;
        /// <summary>
        /// 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位，取值0.1ms~80ms
        /// Auto exposure value min limit or manual axposure custom, unit is millisecond (0.1ms~80ms).
        /// </summary>
        public float fExposureValue1;
        /// <summary>
        /// 自动曝光时间上限,毫秒为单位，取值0.1ms~80ms
        /// Auto exposure time max limit, unit is millisecond (0.1ms~80ms)
        /// </summary>
        public float fExposureValue2;
        /// <summary>
        /// 白平衡, 0-"unable", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
        /// WB. White 0-"unable", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
        /// </summary>
        public byte byWhiteBalance;
        /// <summary>
        /// 0~100, GainAuto为true时表示自动增益的上限，否则表示固定的增益值
        /// When gainAuto is true, it is max auto gain limit, otherwise, it is fixed value gain.
        /// </summary>
        public byte byGain;
        /// <summary>
        /// 自动增益
        /// Auto Gain
        /// </summary>
        public byte bGainAuto;
        /// <summary>
        /// 自动光圈
        /// Auto aperture
        /// </summary>
        public byte bIrisAuto;
        /// <summary>
        /// 外同步的相位设置 0~360
        /// 0~360 LL Phase
        /// </summary>
        public float fExternalSyncPhase;
        /// <summary>
        /// 增益下限
        /// gain min
        /// </summary>
        public byte byGainMin;
        /// <summary>
        /// 增益上限
        /// gain max
        /// </summary>
        public byte byGainMax;
        /// <summary>
        /// 背光补偿：取值范围取决于设备能力集：0-关闭1-启用2-指定区域背光补偿
        /// backlight:ability to set value range depends on the device,0-close 1-open 2-backlingt compensation specified area
        /// </summary>
        public byte byBacklight;
        /// <summary>
        /// 防闪烁模式 0-Outdoor 1-50Hz防闪烁 2-60Hz防闪烁
        /// prevent flashing mode,0- out door, 1-50HZ prevent flashing,2-60HZ prevent flashing
        /// </summary>
        public byte byAntiFlicker;
        /// <summary>
        /// 日/夜模式；0-总是彩色，1-根据亮度自动切换，2-总是黑白
        /// day or night,0-colour,1-according to the brightness auromatically switches,2-black and white
        /// </summary>
        public byte byDayNightColor;
        /// <summary>
        /// 曝光模式调节 曝光等级为自动曝光时有效，取值：0-默认自动，1-增益优先，2-快门优先
        /// exposure mode, effective exposure levels for automatic exposure,0-auto,1-plus,2-shutter
        /// </summary>
        public byte byExposureMode;
        /// <summary>
        /// 0-不旋转，1-顺时针90°，2-逆时针90°
        /// 0-not rotate,1-deasil 90,2-deasil 90
        /// </summary>
        public byte byRotate90;
        /// <summary>
        /// 镜像
        /// mirror
        /// </summary>
        public byte bMirror;
        /// <summary>
        /// 宽动态值 0-关闭，1~100-为真实范围值
        /// wide dynamic range[1~100],0-close
        /// </summary>
        public byte byWideDynamicRange;
        /// <summary>
        /// 强光抑制 0-关闭， 1~100为范围值
        /// glare inhibition,0-close,[1-100]
        /// </summary>
        public byte byGlareInhibition;
        /// <summary>
        /// 背光补偿区域
        /// backlight region
        /// </summary>
        public NET_CFG_RECT stuBacklightRegion;
        /// <summary>
        /// 0-关闭，1-辅助聚焦，2-自动聚焦
        /// 0-off, 1-easy focus, 2-auto focus
        /// </summary>
        public byte byFocusMode;
        /// <summary>
        /// 翻转
        /// flip
        /// </summary>
        public byte bFlip;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 74)]
        public byte[] reserved;
    }

    /// <summary>
    /// 视频输入前端选项
    /// Video input options
    /// </summary>
    public struct NET_A_CFG_VIDEO_IN_OPTIONS
    {
        /// <summary>
        /// 背光补偿：取值范围取决于设备能力集：0-关闭1-启用2-指定区域背光补偿
        /// BLC:Range value depends on device capacity set, 0-off, 1-BLC level 1, 2- BLC level 2...n-max BLC level
        /// </summary>
        public byte byBacklight;
        /// <summary>
        /// 日/夜模式；0-总是彩色，1-根据亮度自动切换，2-总是黑白
        /// Day/night mode; 0-color.1-automatic switch according to the brightness.2- black/white
        /// </summary>
        public byte byDayNightColor;
        /// <summary>
        /// 白平衡, 0-"unable", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
        /// WB. 0-"unable", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
        /// </summary>
        public byte byWhiteBalance;
        /// <summary>
        /// 色温等级, 白平衡为"CustomColorTemperature"模式下有效
        /// Color temperature level. valid when WB is "CustomColorTemperature" .
        /// </summary>
        public byte byColorTemperature;
        /// <summary>
        /// 镜像
        /// Mirror
        /// </summary>
        public byte bMirror;
        /// <summary>
        /// 翻转
        /// Flip
        /// </summary>
        public byte bFlip;
        /// <summary>
        /// 自动光圈
        /// aperture automatic
        /// </summary>
        public byte bIrisAuto;
        /// <summary>
        /// 根据环境光自动开启红外补偿灯
        /// Auto enable IR compensation light according to the environment.
        /// </summary>
        public byte bInfraRed;
        /// <summary>
        /// 红色增益调节，白平衡为"Custom"模式下有效 0~100
        /// Red gain red. Valid when WB is "Custom" mode (0~100)
        /// </summary>
        public byte byGainRed;
        /// <summary>
        /// 绿色增益调节，白平衡为"Custom"模式下有效 0~100
        /// Green gain. Valid when WB is "Custom" mode (0~100)
        /// </summary>
        public byte byGainBlue;
        /// <summary>
        /// 蓝色增益调节，白平衡为"Custom"模式下有效 0~100
        /// Blue gain setup. Valid when WB is "Custom" mode (0~100)
        /// </summary>
        public byte byGainGreen;
        /// <summary>
        /// 曝光模式；取值范围取决于设备能力集：0-自动曝光，1-曝光等级1，2-曝光等级2…n-1最大曝光等级数 n带时间上下限的自动曝光 n+1自定义时间手动曝光 (n==byExposureEn）
        /// Exposure mode; range value depends on device capacity set; 0-automatic, 1- exposure level1, 2-exposure level 2. Mn-1:Max exposure level n auto exposure of max and min time. n+1 custom exposure time (n==byExposureEn)
        /// </summary>
        public byte byExposure;
        /// <summary>
        /// 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位，取值0.1ms~80ms
        /// Auto exposure value min limit or manual axposure custom, unit is millisecond (0.1ms~80ms).
        /// </summary>
        public float fExposureValue1;
        /// <summary>
        /// 自动曝光时间上限,毫秒为单位，取值0.1ms~80ms
        /// Auto exposure time max limit, unit is millisecond (0.1ms~80ms)
        /// </summary>
        public float fExposureValue2;
        /// <summary>
        /// 自动增益
        /// Auto gain
        /// </summary>
        public byte bGainAuto;
        /// <summary>
        /// 增益调节, GainAuto为true时表示自动增益的上限，否则表示固定的增益值
        /// When gainAuto is true, it is max gain automatic limit, otherwise, it is fixed value gain
        /// </summary>
        public byte byGain;
        /// <summary>
        /// 信号格式, 0-Inside(内部输入) 1-BT656 2-720p 3-1080p 4-1080i 5-1080sF
        /// Signal format, 0-Inside (internal input).1-BT656 2-720p 3-1080p 4-1080i 5-1080sF
        /// </summary>
        public byte bySignalFormat;
        /// <summary>
        /// 0-不旋转，1-顺时针90°，2-逆时针90°
        /// 0-non-rotate, 1- rotate 90 clockwise, 2-rotate 90 counterclockwise
        /// </summary>
        public byte byRotate90;
        /// <summary>
        /// 外同步的相位设置 0~360
        /// External sych phase set up.0~360
        /// </summary>
        public float fExternalSyncPhase;
        /// <summary>
        /// 外部同步信号输入,0-内部同步 1-外部同步
        /// External sync signal input, 0-INT. 1- LL
        /// </summary>
        public byte byExternalSync;
        /// <summary>
        /// 0-不切换，总是使用白天配置；1-根据亮度切换；2-根据时间切换；3-不切换，总是使用夜晚配置；4-使用普通配置
        /// </summary>
        public byte bySwitchMode;
        /// <summary>
        /// 双快门, 0-不启用，1-双快门全帧率，即图像和视频只有快门参数不同，2-双快门半帧率，即图像和视频快门及白平衡参数均不同
        /// Double exposure, 0-not use, 1-double exposure with full frame, as image and video differentiated only in parameter 2- double exposure with half frame, as image and and video differentiated completely
        /// </summary>
        public byte byDoubleExposure;
        /// <summary>
        /// 宽动态值
        /// WDR value
        /// </summary>
        public byte byWideDynamicRange;
        /// <summary>
        /// 夜晚参数
        /// Night config
        /// </summary>
        public NET_A_CFG_VIDEO_IN_NIGHT_OPTIONS stuNightOptions;
        /// <summary>
        /// 闪光灯配置
        /// Flashling config
        /// </summary>
        public NET_A_CFG_FLASH_CONTROL stuFlash;
        /// <summary>
        /// 抓拍参数, 双快门时有效
        /// Snapshot option, doule exposure only
        /// </summary>
        public NET_A_CFG_VIDEO_IN_SNAPSHOT_OPTIONS stuSnapshot;
        /// <summary>
        /// 鱼眼镜头
        /// fish eye
        /// </summary>
        public NET_A_CFG_FISH_EYE stuFishEye;
        /// <summary>
        /// 0-关闭，1-辅助聚焦，2-自动聚焦
        /// 0-off, 1-easy focus, 2-auto focus
        /// </summary>
        public byte byFocusMode;
        /// <summary>
        /// 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 28)]
        public byte[] reserved;
        /// <summary>
        /// 增益下限
        /// min gain
        /// </summary>
        public byte byGainMin;
        /// <summary>
        /// 增益上限
        /// max gain
        /// </summary>
        public byte byGainMax;
        /// <summary>
        /// 防闪烁模式 0-Outdoor 1-50Hz防闪烁 2-60Hz防闪烁
        /// prevent flashing mode 0-Outdoor 1-50Hz prevent flashing 2-60Hz prevent flashing
        /// </summary>
        public byte byAntiFlicker;
        /// <summary>
        /// 曝光模式调节 曝光等级为自动曝光时有效，取值：0-默认自动，1-增益优先，2-快门优先,4-手动
        /// exposure mode, effective exposure levels for automatic exposure,0-auto,1-plus,4-manual
        /// </summary>
        public byte byExposureMode;
        /// <summary>
        /// 强光抑制 0-关闭， 1~100为范围值
        /// glare inhibition[1~100] 0-close
        /// </summary>
        public byte byGlareInhibition;
        /// <summary>
        /// 背光补偿区域
        /// back light region
        /// </summary>
        public NET_CFG_RECT stuBacklightRegion;
        /// <summary>
        /// 普通参数
        /// normal option
        /// </summary>
        public NET_A_CFG_VIDEO_IN_NORMAL_OPTIONS stuNormalOptions;
    }

    /// <summary>
    /// 每个通道对应的配置类型
    /// config type
    /// </summary>
    public enum EM_A_NET_EM_CONFIG_TYPE
    {
        /// <summary>
        /// 白天
        /// day time
        /// </summary>
        NET_EM_CONFIG_DAYTIME,
        /// <summary>
        /// 夜晚
        /// night
        /// </summary>
        NET_EM_CONFIG_NIGHT,
        /// <summary>
        /// 普通
        /// normal
        /// </summary>
        NET_EM_CONFIG_NORMAL,
        /// <summary>
        /// 自适应模式，SDK根据设备当前的模式进行自适应设置和获取
        /// 自适应模式目前暂时只支持NET_VIDEOIN_IMAGE_INFO配置
        /// Adaptive mode: currently only supports configuration NET_VIDEOIN_IMAGE_INFO
        /// </summary>
        NET_EM_CONFIG_ADAPTER,
    }

    /// <summary>
    /// 3D降噪控制类型
    /// 3D denoise type
    /// </summary>
    public enum EM_A_NET_EM_3D_TYPE
    {
        /// <summary>
        /// 未知
        /// unknow
        /// </summary>
        NET_EM_3D_UNKONW,
        /// <summary>
        /// 关闭
        /// off
        /// </summary>
        NET_EM_3D_OFF,
        /// <summary>
        /// 自动
        /// auto
        /// </summary>
        NET_EM_3D_AUTO,
    }

    /// <summary>
    /// 3D降噪手动控制信息
    /// 3D noise reduction manual control information
    /// </summary>
    public struct NET_3D_DENOISE_MANUL_TYPE_INFO
    {
        /// <summary>
        /// / 时域等级, 0-255, 3D降噪重点在时域降噪
        /// Time domain level, 0-255, 3D noise reduction focuses on time domain noise reduction
        /// </summary>
        public int nTnfLevel;
        /// <summary>
        /// / 空域等级, 0-255, 有些视频平台的3D降噪也会在空域做处理，选填
        /// Airspace level, 0-255, some video platforms also perform 3D noise reduction in the airspace, optional
        /// </summary>
        public int nSnfLevel;
        /// <summary>
        /// / 保留字节
        /// Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// 3D降噪配置
    /// 3D denoise config of video input
    /// </summary>
    public struct NET_VIDEOIN_3D_DENOISE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 配置类型，获取和设置时都要指定
        /// config type, you need set the value wether set or get config
        /// </summary>
        public EM_A_NET_EM_CONFIG_TYPE emCfgType;
        /// <summary>
        /// 3D降噪控制类型
        /// 3D denoise type
        /// </summary>
        public EM_A_NET_EM_3D_TYPE em3DType;
        /// <summary>
        /// 3D降噪等级，em3DType为NET_EM_3D_AUTO时有效
        /// 3D denoise type, valid when em3DType==NET_EM_3D_AUTO
        /// </summary>
        public int nAutoLevel;
        /// <summary>
        /// / 3D降噪手动控制信息
        /// 3D noise reduction manual control information
        /// </summary>
        public NET_3D_DENOISE_MANUL_TYPE_INFO stu3DManulType;
    }

    /// <summary>
    /// Https服务配置
    /// Https Server configuration,corresponding to CFG_CMD_HTTPS
    /// </summary>
    public struct NET_A_CFG_HTTPS_INFO
    {
        /// <summary>
        /// 服务使能
        /// server enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 端口号
        /// port
        /// </summary>
        public int nPort;
        /// <summary>
        /// 根证书绝对路径
        /// Root Certificate Path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRootCertificatePath;
        /// <summary>
        /// 国家
        /// country
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szCountry;
        /// <summary>
        /// 洲名或省名
        /// state name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szState;
        /// <summary>
        /// 位置
        /// local city
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szLocatity;
        /// <summary>
        /// 组织名称
        /// Organization name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szOrganization;
        /// <summary>
        /// 组织单元名称
        /// Organization Unit
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szOrganizationUnit;
        /// <summary>
        /// CN字段，是域名或者IP
        /// Common Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCommonName;
        /// <summary>
        /// 邮箱
        /// email
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szEmail;
        /// <summary>
        /// 公司名称
        /// company name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 服务器证书地址
        /// server Certificate Path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPath;
        /// <summary>
        /// 证书有效期
        /// validity
        /// </summary>
        public int nUsefulLife;
    }

    /// <summary>
    /// 显示区域相对于原显示窗口的坐标
    /// display area relative to the original display area coordinates
    /// </summary>
    public struct NET_A_DISPLAYRREGION
    {
        /// <summary>
        /// 显示区域相对于原显示窗口的左坐标
        /// left
        /// </summary>
        public double dleft;
        /// <summary>
        /// 显示区域相对于原显示窗口的右坐标
        /// right
        /// </summary>
        public double dright;
        /// <summary>
        /// 显示区域相对于原显示窗口的上坐标
        /// top
        /// </summary>
        public double dtop;
        /// <summary>
        /// 显示区域相对于原显示窗口的下坐标
        /// bottom
        /// </summary>
        public double dbottom;
    }

    /// <summary>
    /// 存储数据加密配置
    /// Store data encryption configuration
    /// </summary>
    public struct NET_STORE_ENCRYPT_INFO
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否需要录像存储加密
        /// encrypt enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 0:未知 1:密钥管理服务器分配管理 2:用户自定义密码
        /// 0: Unknown 1: Key management server assignment management 2: User defined password
        /// </summary>
        public int nVKEKMode;
        /// <summary>
        /// 加密算法
        /// Algorithm
        /// </summary>
        public EM_ALGORITHM_TYPE emAlgorithm;
        /// <summary>
        /// 客户配置的密码，用于对码流加密密码的二次加密,bEnable为TRUE且nVKEKMode为2时填写
        /// The password configured by the customer is used for secondary encryption of the code stream encryption password. It is filled in when bEnable is TRUE and nVKEKMode is 2
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szEncryptPasswd;
    }

    /// <summary>
    /// 报警类型
    /// Alarm type
    /// </summary>
    public enum EM_VEHICLE_ALARM_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknow
        /// </summary>
        EM_VEHICLE_ALARM_TYPE_UNKNOWN,
        /// <summary>
        /// "DriveActionAnalyse" , 驾驶员行为检测 DSM
        /// DriveActionAnalyse
        /// </summary>
        EM_VEHICLE_ALARM_TYPE_DRIVEACTIONANALYSE,
        /// <summary>
        /// "DriveAssistantAlarm", 辅助驾驶报警 ADAS
        /// DriveAssistantAlarm
        /// </summary>
        EM_VEHICLE_ALARM_TYPE_DRIVEASSISTANTALARM,
        /// <summary>
        /// "HandsOffSteeringWheelDetection" , 双手脱离方向盘 ICM
        /// HandsOffSteeringWheelDetection
        /// </summary>
        EM_VEHICLE_ALARM_TYPE_HANDSOFFSTEERINGWHEELDETECTION,
        /// <summary>
        /// "Emergency" 紧急报警
        /// Emergency
        /// </summary>
        EM_VEHICLE_ALARM_TYPE_EMERGENCY,
        /// <summary>
        /// "DriverDeatailAlarm" 按DSM/ADAS具体子类型配置，此时stuSubAlarmInfo有效
        /// DriverDeatailAlarm
        /// </summary>
        EM_VEHICLE_ALARM_TYPE_DRIVERDEATAILALARM,
    }

    /// <summary>
    /// 报警子类型
    /// Alarm subtype
    /// </summary>
    public enum EM_SUB_ALARM_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknow
        /// </summary>
        EM_SUB_ALARM_TYPE_UNKNOWN,
        /// <summary>
        /// "FatigueAlarm",疲劳驾驶报警
        /// FatigueAlarm
        /// </summary>
        EM_SUB_ALARM_TYPE_FATIGUEALARM,
        /// <summary>
        /// "DistractAlarm",分身驾驶报警
        /// DistractAlarm
        /// </summary>
        EM_SUB_ALARM_TYPE_DISTRACTALARM,
        /// <summary>
        /// "CallingAlarm",接打电话报警
        /// CallingAlarm
        /// </summary>
        EM_SUB_ALARM_TYPE_CALLINGALARM,
        /// <summary>
        /// "NoDriverAlarm",驾驶员离岗报警
        /// NoDriverAlarm
        /// </summary>
        EM_SUB_ALARM_TYPE_NODRIVERALARM,
        /// <summary>
        /// "WearingIRAlarm",佩戴红外阻断眼镜报警
        /// WearingIRAlarm
        /// </summary>
        EM_SUB_ALARM_TYPE_WEARINGIRALARM,
        /// <summary>
        /// "SmokingAlarm",吸烟报警
        /// SmokingAlarm
        /// </summary>
        EM_SUB_ALARM_TYPE_SMOKINGALARM,
        /// <summary>
        /// "CamOcclusionAlarm",镜头遮挡报警
        /// CamOcclusionAlarm
        /// </summary>
        EM_SUB_ALARM_TYPE_CAMOCCLUSIONALARM,
        /// <summary>
        /// "UnbeltedAlarm",未系安全带报警
        /// UnbeltedAlarm
        /// </summary>
        EM_SUB_ALARM_TYPE_UNBELTEDALARM,
        /// <summary>
        /// "IdentityAlarm",驾驶员身份异常报警
        /// IdentityAlarm
        /// </summary>
        EM_SUB_ALARM_TYPE_IDENTITYALARM,
        /// <summary>
        /// "DriverChangeAlarm",换人驾驶报警
        /// DriverChangeAlarm
        /// </summary>
        EM_SUB_ALARM_TYPE_DRIVERCHANGEALARM,
        /// <summary>
        /// "ForwardCollisionAlarm",前向碰撞报警
        /// ForwardCollisionAlarm
        /// </summary>
        EM_SUB_ALARM_TYPE_FORWARDCOLLISIONALARM,
        /// <summary>
        /// "LaneDepartureAlarm",车道偏离报警
        /// LaneDepartureAlarm
        /// </summary>
        EM_SUB_ALARM_TYPE_LANEDEPARTUREALARM,
        /// <summary>
        /// "HeadwayAlarm"车距过近报警
        /// HeadwayAlarm
        /// </summary>
        EM_SUB_ALARM_TYPE_HEADWAYALARM,
    }

    /// <summary>
    /// 具体的报警子类型信息
    /// Specific alarm subtype information
    /// </summary>
    public struct NET_SUB_ALARM_INFO
    {
        /// <summary>
        /// 报警子类型
        /// Alarm subtype
        /// </summary>
        public EM_SUB_ALARM_TYPE emSubAlarmType;
        /// <summary>
        /// 关联视频录像的开始时间以事件发生时间为基础的提前多少秒
        /// The number of seconds in advance of the start time of the associated video recording based on the event occurrence time
        /// </summary>
        public int nRecordAheadTimes;
        /// <summary>
        /// 关联视频录像的结束时间以事件发生时间为基础的延后多少秒
        /// How many seconds is the end time of the associated video recording delayed based on the time of the event occurrence
        /// </summary>
        public int nRecordDelayTimes;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 124)]
        public string szReserved;
    }

    /// <summary>
    /// 一个报警类型的通道配置
    /// Channel configuration for an alarm type
    /// </summary>
    public struct NET_VEHICLE_ALARM_LINK_INFO
    {
        /// <summary>
        /// 报警类型
        /// Alarm type
        /// </summary>
        public EM_VEHICLE_ALARM_TYPE emAlarmType;
        /// <summary>
        /// 报警关联的抓图通道数组个数
        /// Number of snapshot channel arrays associated with alarms
        /// </summary>
        public int nLinkSnapChannelNum;
        /// <summary>
        /// 报警关联的抓图通道数组,通道号从0开始
        /// Array of snapshot channels associated with an alarm, with channel numbers starting from 0
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nLinkSnapChannelList;
        /// <summary>
        /// 报警关联的视频通道数组,通道号从0开始。
        /// An array of video channels associated with an alarm, with channel numbers starting from 0
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nLinkRecordChannelList;
        /// <summary>
        /// 报警关联的视频通道数组个数
        /// Number of video channel arrays associated with the alarm
        /// </summary>
        public int nLinkRecordChannelNum;
        /// <summary>
        /// 关联视频录像的开始时间以事件发生时间为基础的提前多少秒
        /// The number of seconds in advance of the start time of the associated video recording based on the event occurrence time
        /// </summary>
        public int nRecordAheadTimes;
        /// <summary>
        /// 关联视频录像的结束时间以事件发生时间为基础的延后多少秒
        /// How many seconds is the end time of the associated video recording delayed based on the time of the event occurrence
        /// </summary>
        public int nRecordDelayTimes;
        /// <summary>
        /// 具体的报警子类型个数
        /// Number of specific alarm subtypes
        /// </summary>
        public int nSubAlarmInfoNum;
        /// <summary>
        /// 具体的报警子类型信息
        /// Specific alarm subtype information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_SUB_ALARM_INFO[] stuSubAlarmInfo;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 车载设备报警关联配置, 对应 NET_EM_CFG_VEHICLE_ALARM_LINK_PARAM
    /// Onboard device alarm association configuration, corresponding to NET_ EM_ CFG_ VEHICLE_ ALARM_ LINK_ PARAM
    /// </summary>
    public struct NET_CFG_VEHICLE_ALARM_LINK_PARAM_INFO
    {
        /// <summary>
        /// 结构体大小
        /// dwSize
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 配置个数
        /// Number of configurations
        /// </summary>
        public int nVehicleAlarmLinkNum;
        /// <summary>
        /// 一个报警类型的通道配置
        /// Channel configuration for an alarm type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_VEHICLE_ALARM_LINK_INFO[] stuVehicleAlarmLinkInfo;
    }

    /// <summary>
    /// 手机push notification配置, 对应 NET_EM_CFG_MOBILE_PHONE_APPLICATION
    /// Mobile phone push notification configuration, corresponding to NET_EM_CFG_MOBILE_PHONE_APPLICATION
    /// </summary>
    public struct NET_CFG_MOBILE_PHONE_APPLICATION_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否开启手机推送
        /// Whether to enable mobile push Notification
        /// </summary>
        public bool bPushNotificationEnable;
    }

    /// <summary>
    /// CGI服务开关控制配置, 对应 NET_EM_CFG_VSP_CGI
    /// CGI Service Switch Control Configuration, corresponding to NET_EM_CFG_VSP_CGI
    /// </summary>
    public struct NET_CFG_VSP_CGI_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否开启CGI服务
        /// Whether to enable CGI service
        /// </summary>
        public bool bServiceStart;
    }

    /// <summary>
    /// NTP Server服务开关控制配置, 对应 NET_EM_CFG_VSP_NTP_SERVER
    /// NTP Server Service Switch Control Configuration, corresponding to NET_EM_CFG_VSP_NTP_SERVER
    /// </summary>
    public struct NET_CFG_CFG_VSP_NTP_SERVER_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否开启NTP Server服务
        /// Whether to enable the NTP Server service
        /// </summary>
        public bool bServiceStart;
    }

    /// <summary>
    /// 设备搜索配置, 对应 NET_EM_CFG_DEVICE_DISCOVERY
    /// Device Search Configuration, corresponding to NET_EM_CFG_DEVICE_DISCOVERY
    /// </summary>
    public struct NET_CFG_DEVICE_DISCOVERY_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否开启设备搜索
        /// Enable device search
        /// </summary>
        public bool bEnable;
    }

    /// <summary>
    /// LLDPConfig 全局配置, 对应 NET_EM_CFG_LLDP_GLOBAL
    /// LLDPConfig Global Configuration, corresponding to NET_EM_CFG_LLDP_GLOBAL
    /// </summary>
    public struct NET_CFG_LLDP_GLOBAL_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 是否开启LLDPConfig全局配置
        /// Whether to enable LLDPConfig global configuration
        /// </summary>
        public bool bEnable;
    }

    /// <summary>
    /// 登录安全等级控制配置, 对应 NET_EM_CFG_LOGIN_AUTH_CTRL
    /// Login Security Level Control Configuration, corresponding to NET_EM_CFG_LOGIN_AUTH_CTRL
    /// </summary>
    public struct NET_CFG_LOGIN_AUTH_CTRL_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 私有协议服务端角色认证模式, 1:安全模式, 2:兼容模式
        /// Private protocol server role authentication mode, 1: Security mode, 2: Compatibility mode
        /// </summary>
        public int nPriSvrPolicy;
        /// <summary>
        /// 私有协议客户端角色认证模式, 1:安全模式, 2:兼容模式
        /// Private Protocol Client Role Authentication Mode, 1: Security Mode, 2: Compatibility Mode
        /// </summary>
        public int nPriCliPolicy;
    }

    /// <summary>
    /// CLIENT_GetEncodeBitrate 接口入参
    /// CLIENT_GetEncodeBitrate input parameter
    /// </summary>
    public struct NET_IN_GET_ENCODE_BITRATE
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned a value
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号个数
        /// Number of channel numbers
        /// </summary>
        public int nChannelCount;
        /// <summary>
        /// 要查询的通道号
        /// Channel number to query
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public int[] nChannels;
    }

    /// <summary>
    /// CLIENT_GetEncodeBitrate 接口出参
    /// CLIENT_GetEncodeBitrate output parameter
    /// </summary>
    public struct NET_OUT_GET_ENCODE_BITRATE
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned a value
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 实际返回的个数
        /// Number of actual returns
        /// </summary>
        public int nRetBitrateCount;
        /// <summary>
        /// 对应通道的码率大小
        /// The code rate size of the corresponding channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public int[] nBitrareCount;
    }

    /// <summary>
    /// 图片扩展信息
    /// image information
    /// </summary>
    public struct NET_IMAGE_INFO_EX3
    {
        /// <summary>
        /// 图片类型
        /// Picture type
        /// </summary>
        public EM_IMAGE_TYPE_EX2 emType;
        /// <summary>
        /// 在二进制数据块中的偏移
        /// Offset in the binary data block
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 图片大小,单位:字节
        /// Picture size, unit: byte
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 用于字节对齐
        /// for byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string byReserverd;
        /// <summary>
        /// 图片存储位置
        /// Picture storage location
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
        /// <summary>
        /// 二进制图片加密秘钥，设备传过来的是Base64编码之后的，SDK不做解码处理
        /// The binary image encryption key is transmitted from the device after Base64 encoding, and the SDK does not perform decoding processing
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szEncryptKey;
        /// <summary>
        /// 用于字节对齐
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserverd2;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_RIDING_MOTOR_CYCLE (摩托车骑跨检测事件)对应的数据块描述信息
    /// Event type EVENT_IVS_RIDING_MOTOR_CYCLE (Motorcycle straddle detection event) corresponding data block description information
    /// </summary>
    public struct NET_A_DEV_EVENT_RIDING_MOTOR_CYCLE_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// Action, 0:pulse,1:start, 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// Category of intelligent events
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// GroupID事件组ID，同一物体抓拍过程内GroupID相同
        /// group ID, which is the same in the process of capturing the same object
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// CountInGroup一个事件组内的抓拍张数
        /// CountInGroup Number of snapshots in an event group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// IndexInGroup一个事件组内的抓拍序号，从1开始
        /// IndexInGroup The snap sequence number in an event group, starting from 1
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// 事件时间毫秒数
        /// Time of occurrence in milliseconds
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// 相对事件时间戳,(单位是毫秒)
        /// Relative event timestamp in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// Time of occurrence
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 检测到的物体信息个数
        /// Number of detected object information
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// 表示检测到的物体信息
        /// Indicates the detected object information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_A_MSG_OBJECT_EX2[] stuObjects;
        /// <summary>
        /// 全景广角图，仅IndexInData字段有效
        /// Panoramic wide-angle image, only the IndexInData field is valid
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 图片信息数组 < NET_IMAGE_INFO_EX2 >
        /// Picture information array < NET_IMAGE_INFO_EX2 >
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 预留字节
        /// reserved bytes
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020 - 8)]
        public sbyte[] szReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020 - 4)]
        public sbyte[] szReserved;
#endif
    }

    /// <summary>
    /// 触发模式
    /// Trigger mode
    /// </summary>
    public enum EM_CROWD_LEVEL_DETECTION_TRIGGERMODE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_CROWD_LEVEL_DETECTION_TRIGGERMODE_UNKNOWN,
        /// <summary>
        /// 自适应模式
        /// Adaptive mode
        /// </summary>
        EM_CROWD_LEVEL_DETECTION_TRIGGERMODE_ADAPTIVE,
        /// <summary>
        /// 自定义模式
        /// Custom mode
        /// </summary>
        EM_CROWD_LEVEL_DETECTION_TRIGGERMODE_CUSTOM,
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_CROWD_LEVEL_DETECTION (拥挤程度检测事件)对应的数据块描述信息
    /// The description of the data block corresponding to the event type EVENT_IVS_CROWD_LEVEL_DETECTION
    /// </summary>
    public struct NET_A_DEV_EVENT_CROWD_LEVEL_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// Action, 0:pulse,1:start, 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// Category of intelligent events
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// 相对事件时间戳,(单位是毫秒)
        /// Relative event timestamp in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// Time of occurrence
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件时间毫秒数
        /// Time of occurrence in milliseconds
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 规则区域
        /// Rule area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 规则区域个数
        /// Number of rule areas
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 事件触发的预置点号，从1开始
        /// Preset point number triggered by the event,Start with 1
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 触发模式
        /// Trigger mode
        /// </summary>
        public EM_CROWD_LEVEL_DETECTION_TRIGGERMODE emTriggerMode;
        /// <summary>
        /// 实际触发报警的人数
        /// Number of people who actually triggered the alarm
        /// </summary>
        public uint nCrowdDetectNum;
        /// <summary>
        /// 检测到的拥挤程度等级
        /// Level of congestion detected
        /// </summary>
        public uint nCrowdRankResult;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// 检测到的拥挤程度等级名称
        /// Detected congestion level name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szCrowdGroupName;
        /// <summary>
        /// 图片信息数组 < NET_IMAGE_INFO_EX3 >
        /// Image information < NET_IMAGE_INFO_EX3 >
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Image information number
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020 - 8)]
        public sbyte[] szReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020 - 4)]
        public sbyte[] szReserved;
#endif
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_QUEUEDETECTION(排队检测报警事件)对应数据块描述信息
    /// Event type EVENT_IVS_QUEUEDETECTION(queue detection)corresponding data block description info
    /// </summary>
    public struct NET_A_DEV_EVENT_QUEUEDETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved2;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 保留字节,留待扩展.
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved1;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 规则检测线
        /// detect line
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_POINT[] stuDetectLine;
        /// <summary>
        /// 事件触发累计次数
        /// event trigger accumilated times
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 保留字节,留待扩展.
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1012)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_OBJECT_APPEAR_DETECTION (目标出现事件)对应的数据块描述信息
    /// Event type EVENT_IVS_OBJECT_APPEAR_DETECTION (Object Appear Detection Event) corresponding data description information
    /// </summary>
    public struct NET_DEV_EVENT_OBJECT_APPEAR_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel number,start with 0
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// Action, 0:pulse, 1:start, 2:stop;
        /// </summary>
        public int nAction;
        /// <summary>
        /// 扩展协议字段
        /// Extended Protocol Fields
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 事件名称
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// Event Class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// 相对事件时间戳,单位毫秒
        /// Relative event timestamp in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生时间
        /// Time of the event
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 智能事件规则编号
        /// Rule ID
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 事件编号
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 帧序号
        /// Sequence
        /// </summary>
        public uint nSequence;
        /// <summary>
        /// 视频分析帧序号
        /// FrameSequence
        /// </summary>
        public int nFrameSequence;
        /// <summary>
        /// GroupID事件组ID
        /// Group ID
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// CountInGroup一个事件组内的抓拍张数
        /// Count In Group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// IndexInGroup一个事件组内的抓拍序号
        /// Index In Group
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// 字节对齐
        /// Reserved Byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// 检测目标的物体信息个数
        /// Number of object information detected by the target
        /// </summary>
        public int nObjectCount;
        /// <summary>
        /// 检测目标的物体信息 < NET_MSG_OBJECT >
        /// Detect object information of the target < NET_MSG_OBJECT >
        /// </summary>
        public IntPtr pstuObjects;
        /// <summary>
        /// 全景图
        /// Scene Image
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 预留字节
        /// Reserved Byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_OBJECT_DISAPPEAR_DETECTION (目标出现事件)对应的数据块描述信息
    /// Event type EVENT_IVS_OBJECT_DISAPPEAR_DETECTION (Object Disappear Detection Event) corresponding data description information
    /// </summary>
    public struct NET_DEV_EVENT_OBJECT_DISAPPEAR_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel number,start with 0
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// Action, 0:pulse, 1:start, 2:stop;
        /// </summary>
        public int nAction;
        /// <summary>
        /// 扩展协议字段
        /// Extended Protocol Fields
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 事件名称
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// Event Class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// 相对事件时间戳,单位毫秒
        /// Relative event timestamp in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生时间
        /// Time of the event
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 智能事件规则编号
        /// Rule ID
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// GroupID事件组ID
        /// Group ID
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// CountInGroup一个事件组内的抓拍张数
        /// Count In Group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// IndexInGroup一个事件组内的抓拍序号
        /// Index In Group
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// 事件编号
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 帧序号
        /// Sequence
        /// </summary>
        public uint nSequence;
        /// <summary>
        /// 视频分析帧序号
        /// Frame Sequence
        /// </summary>
        public int nFrameSequence;
        /// <summary>
        /// 规则区域
        /// Detect Region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT_EX[] stuDetectRegion;
        /// <summary>
        /// 规则区域个数
        /// Number of Detect Region
        /// </summary>
        public int nDetectRegionCount;
        /// <summary>
        /// 检测目标的物体信息个数
        /// Number of object information detected by the target
        /// </summary>
        public int nObjectCount;
        /// <summary>
        /// 检测目标的物体信息 < NET_MSG_OBJECT >
        /// Detect object information of the target < NET_MSG_OBJECT >
        /// </summary>
        public IntPtr pstuObjects;
        /// <summary>
        /// 全景图
        /// Scene Image
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 预留字节
        /// Reserved Byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 目标物体子类型
    /// Target object subtype
    /// </summary>
    public enum EM_FIRE_EXTINGUISHER_CATEGORY_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_UNKNOWN,
        /// <summary>
        /// 普通类型灭火器，8kg左右
        /// Common type fire extinguisher,8kg
        /// </summary>
        EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_EXTINGUISHER_GENERAL,
        /// <summary>
        /// 35kg推车式灭火器
        /// 35kg Wheeled fire extinguishers
        /// </summary>
        EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_EXTINGUISHER_HANDPUSH,
        /// <summary>
        /// 普通标识牌
        /// Ordinary signboard
        /// </summary>
        EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_SIGNBOARD_GENERAL,
        /// <summary>
        /// 静电标示牌
        /// Electrostatic signboard
        /// </summary>
        EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_SIGNBOARD_STATIC_ELETRICITY,
        /// <summary>
        /// 加油口盖标示牌
        /// Filler cap sign
        /// </summary>
        EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_SIGNBOARD_OILCAP,
        /// <summary>
        /// 路锥
        /// Road cone
        /// </summary>
        EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_ROADCONE,
        /// <summary>
        /// 盖子
        /// lid
        /// </summary>
        EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_COVERPLATE,
        /// <summary>
        /// 加油口盖标示牌打开
        /// Fuel filler cap sign open
        /// </summary>
        EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_OILCAP_OPEN,
        /// <summary>
        /// 加油口盖标示牌关闭
        /// Fuel filler cap sign close
        /// </summary>
        EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_OILCAP_CLOSE,
    }

    /// <summary>
    /// 区域内目标物体子类型信息
    /// Sub type information of target object in the area
    /// </summary>
    public struct NET_FIRE_EXTINGUISHER_CATEGORY_INFO
    {
        /// <summary>
        /// 目标物体子类型
        /// Target object subtype
        /// </summary>
        public EM_FIRE_EXTINGUISHER_CATEGORY_TYPE emCategory;
        /// <summary>
        /// 目标物体子类型对应计数
        /// Target object subtype corresponding count
        /// </summary>
        public int nNum;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// 目标区域内物体计数信息
    /// Object count information in target area
    /// </summary>
    public struct NET_FIRE_EXTINGUISHER_OBJECT_INFO
    {
        /// <summary>
        /// 区域内目标总数
        /// Total number of targets in the region
        /// </summary>
        public uint nAlertNum;
        /// <summary>
        /// 区域内目标物体子类型信息个数
        /// Number of target object subtype information in the area
        /// </summary>
        public int nCategoryInfoNum;
        /// <summary>
        /// 区域内目标物体子类型信息
        /// Sub type information of target object in the area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_FIRE_EXTINGUISHER_CATEGORY_INFO[] stuCategoryInfo;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 灭火器检测事件, 对应事件类型 EVENT_IVS_FIRE_EXTINGUISHER_DETECTION
    /// Fire extinguisher detection event, corresponding to EVENT_IVS_FIRE_EXTINGUISHER_DETECTION
    /// </summary>
    public struct NET_A_DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO
    {
        /// <summary>
        /// 通道号,从0开始
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作, 1表示开始, 2表示结束, -1表示未知
        /// Action
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// 事件名称
        /// event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// UTC
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件ID
        /// EventID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 智能事件所属大类
        /// Smart event classtype
        /// </summary>
        public EM_SCENE_CLASS_TYPE emClassType;
        /// <summary>
        /// 检测到的物体
        /// Object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 全景广角图
        /// Scene Image
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 目标区域内物体计数信息
        /// Object count information in target area
        /// </summary>
        public NET_FIRE_EXTINGUISHER_OBJECT_INFO stuObjectInfo;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 图片信息数组
        /// Picture information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020 - 8)]
        public sbyte[] szReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020 - 4)]
        public sbyte[] szReserved;
#endif
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_SAME_OBJECT_SEARCH_DETECT (按图索骥物品检测事件)对应的数据块描述信息
    /// Event type EVENT_IVS_SAME_OBJECT_SEARCH_DETECT Indicates the description of the data block corresponding to the object detection event
    /// </summary>
    public struct NET_DEV_EVENT_SAME_OBJECT_SEARCH_DETECT_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲, 1:开始, 2:停止
        /// 0: Pulse, 1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 扩展协议字段
        /// Expand the protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 事件发生时间, 带时区偏差的UTC时间, 单位秒
        /// Event occurrence time, UTC time with time zone deviation, in seconds
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件编号
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// Category to which intelligent events belong
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// 相对事件时间戳,单位毫秒
        /// Relative event timestamp, in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件组ID，同一辆车抓拍过程内GroupID相同。
        /// Event group ID, the GroupID of the same vehicle during the capturing process.
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// CountInGroup一个事件组内应有的抓拍张数
        /// CountInGroup Number of snaps that should be in an event group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// 一个事件组内的抓拍序号，从1开始
        /// Capture sequence number of an event group, starting from 1
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// 物体信息列表数组有效个数
        /// Valid number of object information list array
        /// </summary>
        public int nObjectsNum;
        /// <summary>
        /// 物体信息列表
        /// Object information list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 算法名称
        /// Algorithm name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAlgName;
        /// <summary>
        /// 物品类型
        /// Item type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szObjectType;
        /// <summary>
        /// 全景图
        /// Panoramic view
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuImageInfo;
        /// <summary>
        /// 自定义报警ID
        /// Custom alarm ID
        /// </summary>
        public uint nAlarmId;
        /// <summary>
        /// ObjectType物品类型id
        /// ObjectType Object type id
        /// </summary>
        public uint nObjectTypeID;
        /// <summary>
        /// 规则使用的按图索骥算法id
        /// id of the search algorithm used by the rule
        /// </summary>
        public uint nAlgId;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 获取录像模式入参，对应接口CLIENT_GetCourseRecordMode
    /// In parameter, accrossoing interface CLIENT_GetCourseRecordMode
    /// </summary>
    public struct NET_IN_GET_COURSE_RECORD_MODE
    {
        public uint dwSize;
        /// <summary>
        /// 教室id号
        /// classroom id
        /// </summary>
        public int nClassRoomID;
    }

    /// <summary>
    /// 录像模式
    /// record mode
    /// </summary>
    public enum EM_A_NET_EM_RECORD_MODE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        NET_EM_RECORD_MODE_UNKNOWN,
        /// <summary>
        /// 课程录像模式
        /// course record
        /// </summary>
        NET_EM_RECORD_MODE_COURSE,
        /// <summary>
        /// 普通模式
        /// normal
        /// </summary>
        NET_EM_RECORD_MODE_NORMAL,
    }

    /// <summary>
    /// 获取录像模式出参，对应接口CLIENT_GetCourseRecordMode
    /// out parameter,accrossoing interface CLIENT_GetCourseRecordMode
    /// </summary>
    public struct NET_OUT_GET_COURSE_RECORD_MODE
    {
        public uint dwSize;
        /// <summary>
        /// 录像模式
        /// record mode
        /// </summary>
        public EM_A_NET_EM_RECORD_MODE emRecordMode;
    }

    /// <summary>
    /// 设置录像模式入参，对应接口CLIENT_SetCourseRecordMode
    /// In parameter, accrossoing interface CLIENT_SetCourseRecordMode
    /// </summary>
    public struct NET_IN_SET_COURSE_RECORD_MODE
    {
        public uint dwSize;
        /// <summary>
        /// 录像模式
        /// record mode
        /// </summary>
        public EM_A_NET_EM_RECORD_MODE emRecordMode;
        /// <summary>
        /// 教室id号
        /// classroom id
        /// </summary>
        public int nClassRoomID;
    }


    /// <summary>
    /// 逻辑通道号
    /// logic channel
    /// </summary>
    public enum EM_A_NET_EM_LOGIC_CHANNEL
    {
        /// <summary>
        /// 无效
        /// invalid
        /// </summary>
        NET_EM_LOGIC_CHANNEL_INVALID = -1,
        /// <summary>
        /// 视频组合通道号
        /// composite channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_COMPOSITE,
        /// <summary>
        /// PPT显示逻辑通道号
        /// PPT logic channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_PPT,
        /// <summary>
        /// 板书特写逻辑通道号
        /// blackboard logic channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_BLACKBOARD,
        /// <summary>
        /// 学生特写逻辑通道号
        /// student feature logic channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_STUDENTFEATURE,
        /// <summary>
        /// 学生全景逻辑通道号
        /// student fullview logic channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_STUDENTFULLVIEW,
        /// <summary>
        /// 教师特写逻辑通道号
        /// teacher feature logic channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_TEACHERFEATURE,
        /// <summary>
        /// 教师全景逻辑通道号
        /// teacher fullview logic channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_TEACHERFULLVIEW,
        /// <summary>
        /// 教师检测逻辑通道号
        /// teacher detect logic channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_TEACHERDETECT,
        /// <summary>
        /// 板书检测逻辑通道号
        /// blackboard detect logic channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_BLACKBOARDDETECT,
        /// <summary>
        /// 板书特写1逻辑通道号
        /// blackboard 1 logic channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_BLACKBOARD1,
        /// <summary>
        /// 板书检测1逻辑通道号
        /// blackboard detect 1 logic channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_BLACKBOARDDETECT1,
        /// <summary>
        /// 展台显示逻辑通道号
        /// visual presenter logic channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_VISUALPRESENTER,
        /// <summary>
        /// 视频监控逻辑通道号
        /// video surveillange channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_VIDEOSURVEILLANCE,
        /// <summary>
        /// 互动会议逻辑通道号
        /// video conference logic channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_VIDEOCONFERENCE,
        /// <summary>
        /// 互动演示逻辑通道
        /// video presentation logic channel id
        /// </summary>
        NET_EM_LOGIC_CHANNEL_VIDEO_PRESENTATION,
    }

    /// <summary>
    /// 通道信息
    /// channel info
    /// </summary>
    public struct NET_LOGIC_CHANNEL_INFO
    {
        /// <summary>
        /// 教室ID号
        /// classroom id
        /// </summary>
        public int nRoomID;
        /// <summary>
        /// 逻辑通道号
        /// logic channel id
        /// </summary>
        public EM_A_NET_EM_LOGIC_CHANNEL emLogicChannel;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 设置录像模式出参，对应接口CLIENT_SetCourseRecordMode
    /// out parameter,accrossoing interface CLIENT_SetCourseRecordMode
    /// </summary>
    public struct NET_OUT_SET_COURSE_RECORD_MODE
    {
        public uint dwSize;
    }

    /// <summary>
    /// 获取真实通道号入参，对应接口 CLIENT_GetRealPreviewChannel
    /// in parameter, accrossoing interface CLIENT_GetRealPreviewChannel
    /// </summary>
    public struct NET_IN_GET_REAL_PREVIEW_CHANNEL
    {
        public uint dwSize;
        /// <summary>
        /// 需要获取的通道数
        /// channel count
        /// </summary>
        public int nChannelCount;
        /// <summary>
        /// 逻辑通道信息，下标为将要获取的真实通道数
        /// logicchannel info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_LOGIC_CHANNEL_INFO[] stuChannelInfo;
    }

    /// <summary>
    /// 获取真实通道号出参，对应接口 CLIENT_GetRealPreviewChannel
    /// out parameter, accrossoing interface CLIENT_GetRealPreviewChannel
    /// </summary>
    public struct NET_OUT_GET_REAL_PREVIEW_CHANNEL
    {
        public uint dwSize;
        /// <summary>
        /// 通道数量
        /// channel number
        /// </summary>
        public int nChannelNum;
        /// <summary>
        /// 通道号
        /// channel id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public int[] nChannel;
    }

    /// <summary>
    /// 温度单位
    /// Temperature type
    /// </summary>
    public enum EM_TEMPERATURE_UNIT_EX
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_TEMPERATURE_EX_UNKNOWN,
        /// <summary>
        /// 摄氏度
        /// Centigrade
        /// </summary>
        EM_TEMPERATURE_EX_CENTIGRADE,
        /// <summary>
        /// 华氏度
        /// Fahrenheit
        /// </summary>
        EM_TEMPERATURE_EX_FAHRENHEIT,
        /// <summary>
        /// 开尔文
        /// Kelvin
        /// </summary>
        EM_TEMPERATURE_EX_KELVIN,
    }

    /// <summary>
    /// 显示环境温度的叠加配置 NET_EM_CFG_TEMPERATURE
    /// Overlay Configuration of Displaying Ambient Temperature NET_EM_CFG_TEMPERATURE
    /// </summary>
    public struct NET_OSD_CFG_TEMPERATURE
    {
        public uint dwSize;
        /// <summary>
        /// 显示时间,单位为秒，0 表示一直显示,自定义范围：1-3600
        /// Display time, in seconds, 0 is always displayed, custom range: 1-3600
        /// </summary>
        public int nDisplayTime;
        /// <summary>
        /// 叠加到主码流视频编码
        /// Overlay to main stream video coding
        /// </summary>
        public bool bEncodeBlend;
        /// <summary>
        /// 是否叠加到预览显示
        /// Whether to Overlay to Preview Display
        /// </summary>
        public bool bPreviewBlend;
        /// <summary>
        /// 前景色
        /// Foreground color
        /// </summary>
        public NET_COLOR_RGBA stuFrontColor;
        /// <summary>
        /// 背景色
        /// Background color
        /// </summary>
        public NET_COLOR_RGBA stuBackColor;
        /// <summary>
        /// 区域
        /// Region
        /// </summary>
        public NET_RECT stuRect;
        /// <summary>
        /// 温度单位的类型
        /// Temperature type
        /// </summary>
        public EM_TEMPERATURE_UNIT_EX emTemperatureType;
    }

    /// <summary>
    /// 非机动车颜色类型
    /// nonmotor color
    /// </summary>
    public enum EM_NONMOTOR_COLOR
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_NONMOTOR_UNKNOWN,
        /// <summary>
        /// 无法识别
        /// Other
        /// </summary>
        EM_NONMOTOR_COLOR_OTHER,
        /// <summary>
        /// 白色
        /// White
        /// </summary>
        EM_NONMOTOR_COLOR_WHITE,
        /// <summary>
        /// 橙色
        /// Orange
        /// </summary>
        EM_NONMOTOR_COLOR_ORANGE,
        /// <summary>
        /// 粉色
        /// Pink
        /// </summary>
        EM_NONMOTOR_COLOR_PINK,
        /// <summary>
        /// 黑色
        /// Black
        /// </summary>
        EM_NONMOTOR_COLOR_BLACK,
        /// <summary>
        /// 红色
        /// Red
        /// </summary>
        EM_NONMOTOR_COLOR_RED,
        /// <summary>
        /// 黄色
        /// Yellow
        /// </summary>
        EM_NONMOTOR_COLOR_YELLOW,
        /// <summary>
        /// 灰色
        /// Gray
        /// </summary>
        EM_NONMOTOR_COLOR_GRAY,
        /// <summary>
        /// 蓝色
        /// Blue
        /// </summary>
        EM_NONMOTOR_COLOR_BLUE,
        /// <summary>
        /// 绿色
        /// Green
        /// </summary>
        EM_NONMOTOR_COLOR_GREEN,
        /// <summary>
        /// 紫色
        /// Purple
        /// </summary>
        EM_NONMOTOR_COLOR_PURPLE,
        /// <summary>
        /// 棕色
        /// Brown
        /// </summary>
        EM_NONMOTOR_COLOR_BROWN,
        /// <summary>
        /// 银色
        /// Sliver
        /// </summary>
        EM_NONMOTOR_COLOR_SLIVER,
        /// <summary>
        /// 暗紫罗兰色
        /// Darkviolet
        /// </summary>
        EM_NONMOTOR_COLOR_DARKVIOLET,
        /// <summary>
        /// 栗色
        /// Maroon
        /// </summary>
        EM_NONMOTOR_COLOR_MAROON,
        /// <summary>
        /// 暗灰色
        /// Dimgray
        /// </summary>
        EM_NONMOTOR_COLOR_DIMGRAY,
        /// <summary>
        /// 白烟色
        /// Whitesmoke
        /// </summary>
        EM_NONMOTOR_COLOR_WHITESMOKE,
        /// <summary>
        /// 深橙色
        /// Darkorange
        /// </summary>
        EM_NONMOTOR_COLOR_DARKORANGE,
        /// <summary>
        /// 浅玫瑰色
        /// Mistyrose
        /// </summary>
        EM_NONMOTOR_COLOR_MISTYROSE,
        /// <summary>
        /// 番茄红色
        /// Tomato
        /// </summary>
        EM_NONMOTOR_COLOR_TOMATO,
        /// <summary>
        /// 橄榄色
        /// Olive
        /// </summary>
        EM_NONMOTOR_COLOR_OLIVE,
        /// <summary>
        /// 金色
        /// Gold
        /// </summary>
        EM_NONMOTOR_COLOR_GOLD,
        /// <summary>
        /// 暗橄榄绿色
        /// Darkolivegreen
        /// </summary>
        EM_NONMOTOR_COLOR_DARKOLIVEGREEN,
        /// <summary>
        /// 黄绿色
        /// Chartreuse
        /// </summary>
        EM_NONMOTOR_COLOR_CHARTREUSE,
        /// <summary>
        /// 绿黄色
        /// Greenyellow
        /// </summary>
        EM_NONMOTOR_COLOR_GREENYELLOW,
        /// <summary>
        /// 森林绿
        /// Forestgreen
        /// </summary>
        EM_NONMOTOR_COLOR_FORESTGREEN,
        /// <summary>
        /// 海洋绿
        /// Seagreen
        /// </summary>
        EM_NONMOTOR_COLOR_SEAGREEN,
        /// <summary>
        /// 深天蓝
        /// Deepskyblue
        /// </summary>
        EM_NONMOTOR_COLOR_DEEPSKYBLUE,
        /// <summary>
        /// 青色
        /// Cyan
        /// </summary>
        EM_NONMOTOR_COLOR_CYAN,
    }

    /// <summary>
    /// 非机动车子类型
    /// nonmotor subtype
    /// </summary>
    public enum EM_NONMOTOR_SUBTYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_NONMOTOR_SUBTYPE_UNKNOWN,
        /// <summary>
        /// 非机动车
        /// Non-Motor
        /// </summary>
        EM_NONMOTOR_SUBTYPE_NONMOTOR,
        /// <summary>
        /// 自行车
        /// Bicycle
        /// </summary>
        EM_NONMOTOR_SUBTYPE_BICYCLE,
        /// <summary>
        /// 三轮车
        /// Tricycle
        /// </summary>
        EM_NONMOTOR_SUBTYPE_TRICYCLE,
        /// <summary>
        /// 摩托车
        /// Motorcycle
        /// </summary>
        EM_NONMOTOR_SUBTYPE_MOTORCYCLE,
        /// <summary>
        /// (两) 三轮摩托车
        /// DualTriWheelMotorcycle
        /// </summary>
        EM_NONMOTOR_SUBTYPE_DUALTRIWHEEL,
        /// <summary>
        /// 轻便摩托车
        /// LightMotorcycle
        /// </summary>
        EM_NONMOTOR_SUBTYPE_LIGHT_MOTORCYCLE,
        /// <summary>
        /// 使馆摩托车
        /// EmbassyMotorcycle
        /// </summary>
        EM_NONMOTOR_SUBTYPE_EMBASSY_MOTORCYCLE,
        /// <summary>
        /// 领馆摩托车
        /// MarginalMotorcycle
        /// </summary>
        EM_NONMOTOR_SUBTYPE_MARGINAL_MOTORCYCLE,
        /// <summary>
        /// 境外摩托车
        /// AreaoutMotorcycle
        /// </summary>
        EM_NONMOTOR_SUBTYPE_AREAOUT_MOTORCYCLE,
        /// <summary>
        /// 外籍摩托车
        /// ForeignMotorcycle
        /// </summary>
        EM_NONMOTOR_SUBTYPE_FOREIGN_MOTORCYCLE,
        /// <summary>
        /// 试验摩托车
        /// TrialMotorcycle
        /// </summary>
        EM_NONMOTOR_SUBTYPE_TRIAL_MOTORCYCLE,
        /// <summary>
        /// 教练摩托车
        /// CoachMotorcycle
        /// </summary>
        EM_NONMOTOR_SUBTYPE_COACH_MOTORCYCLE,
        /// <summary>
        /// 行人
        /// Passerby
        /// </summary>
        EM_NONMOTOR_SUBTYPE_PASSERBY,
    }

    /// <summary>
    /// 头盔状态
    /// helmet state
    /// </summary>
    public enum EM_HELMET_STATE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_HELMET_UNKNOWN,
        /// <summary>
        /// 未识别
        /// unidentified
        /// </summary>
        EM_HELMET_OTHER,
        /// <summary>
        /// 未戴头盔
        /// not wear helmet
        /// </summary>
        EM_HELMET_NO,
        /// <summary>
        /// 戴头盔
        /// wear helmet
        /// </summary>
        EM_HELMET_YES,
    }

    /// <summary>
    /// FILE_QUERY_NONMOTOR 非机动车对应查询参数
    /// the param of find record file(corresponding to FILE_QUERY_NONMOTOR)
    /// </summary>
    public struct NET_A_MEDIAFILE_NONMOTOR_PARAM
    {
        /// <summary>
        /// 结构体大小
        /// the size of this struct
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 开始时间
        /// start time
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// 结束时间
        /// end time
        /// </summary>
        public NET_TIME stEndTime;
        /// <summary>
        /// 骑车人数最小值
        /// minimum number of cycling
        /// </summary>
        public uint nNumOfCyclingMin;
        /// <summary>
        /// 骑车人数最大值
        /// maximum number of cycling
        /// </summary>
        public uint nNumOfCyclingMax;
        /// <summary>
        /// 非机动车颜色
        /// nonmotor color
        /// </summary>
        public EM_NONMOTOR_COLOR emNonmotorColor;
        /// <summary>
        /// 非机动车子类型
        /// nonmotor subtype
        /// </summary>
        public EM_NONMOTOR_SUBTYPE emNonmotorSubtype;
        /// <summary>
        /// 头盔状态
        /// helmet state
        /// </summary>
        public EM_HELMET_STATE emHelmetState;
        /// <summary>
        /// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stEndTime), 为FALSE表示仅下发stStartTime, stEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
        /// TRUE means only deliver stuStartTimeRealUTC and stuEndTimeRealUTC (do not deliver stStartTime, stEndTime), FALSE means deliver only stStartTime, stEndTime (do not deliver stuStartTimeRealUTC and stuEndTimeRealUTC)
        /// </summary>
        public bool bOnlySupportRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用，与(stuStartTime, stuEndTime)互斥
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC, mutually exclusive with (stuStartTime, stuEndTime)
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用，与(stuStartTime, stuEndTime)互斥
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC, mutually exclusive with (stuStartTime, stuEndTime)
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
        /// <summary>
        /// 骑车人数, 255表示查未知
        /// Number of cyclists, 255 indicates unknown
        /// </summary>
        public uint nNumOfCycling;
        /// <summary>
        /// 查询方式: 0:未知, 1: 相等, 2: 小于, 3:大于, 当nNumOfCycling不为255时有效
        /// Query method: 0: unknown, 1: equal, 2: less than, 3: greater than, valid when nNumOfCycling is not 255
        /// </summary>
        public int nNumOfCyclingCmp;
        /// <summary>
        /// / 事件类型列表,参见智能分析事件类型
        /// / Associated event list, Reference intelligent analysis event type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nEventLists;
        /// <summary>
        /// / 事件总数
        /// / Count of events
        /// </summary>
        public int nEventCount;
        /// <summary>
        /// / 上装颜色
        /// / Top color
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_NONMOTOR_COLOR[] emUpperBodyColor;
        /// <summary>
        /// / 上装颜色个数
        /// / Number of colors on top
        /// </summary>
        public int nUpperBodyColorNum;
        /// <summary>
        /// / 车上人员帽子状态
        /// / Hat status of personnel on board the vehicle
        /// </summary>
        public EM_HAS_HAT emHasHat;
        /// <summary>
        /// /支持不下发骑车人数字段
        /// /Support not distributing the number of cyclists field
        /// </summary>
        public bool bUnEnableSupportNumOfCycling;
        /// <summary>
        /// /支持不下发查询方式字段
        /// /Support not issuing query method fields
        /// </summary>
        public bool bUnEnableSupportNumOfCyclingCmp;
        /// <summary>
        /// / 通道号数组有效个数
        /// / Number of valid channel number arrays
        /// </summary>
        public uint nChannelsNum;
        /// <summary>
        /// / 通道号数组
        /// / Channel number array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nChannels;
        /// <summary>
        /// / 支持不下发车上人员帽子状态字段
        /// / UnEnable Support HasHat
        /// </summary>
        public bool bUnEnableSupportHasHat;
    }

    /// <summary>
    /// 事件抠图信息
    /// event image info
    /// </summary>
    public struct NET_EVENT_IMAGE_INFO
    {
        /// <summary>
        /// / 图片长度
        /// image length
        /// </summary>
        public int nImageLength;
        /// <summary>
        /// / 图片路径
        /// image path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szImagePath;
        /// <summary>
        /// / 保留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] bReserved;
    }

    /// <summary>
    /// FILE_QUERY_NONMOTOR 非机动车对应FINDNEXT查询返回参数
    /// the record file info(corresponding to FILE_QUERY_NONMOTOR)
    /// </summary>
    public struct NET_A_MEDIAFILE_NONMOTOR_INFO
    {
        /// <summary>
        /// 结构体大小
        /// the size of this struct
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 开始时间
        /// start time
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// 结束时间
        /// end time
        /// </summary>
        public NET_TIME stEndTime;
        /// <summary>
        /// 文件路径
        /// file path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;
        /// <summary>
        /// 文件大小
        /// file size
        /// </summary>
        public int nFileSize;
        /// <summary>
        /// 骑车人数
        /// number of cycling
        /// </summary>
        public uint nNumOfCycling;
        /// <summary>
        /// 非机动车颜色
        /// nonmotor color
        /// </summary>
        public EM_NONMOTOR_COLOR emNonmotorColor;
        /// <summary>
        /// 非机动车子类型
        /// nonmotor subtype
        /// </summary>
        public EM_NONMOTOR_SUBTYPE emNonmotorSubtype;
        /// <summary>
        /// 头盔状态
        /// helmet state
        /// </summary>
        public EM_HELMET_STATE emHelmetState;
        /// <summary>
        /// 目标型心(不是包围盒中心), 0-8191相对坐标, 相对于小图
        /// Center of Target(not center of bounding box), 0-8191 relative coordinates, relative to small graph
        /// </summary>
        public NET_POINT stuFaceCenter;
        /// <summary>
        /// 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stStartTime和stEndTime有效(仅使用stStartTime和stEndTime)
        /// TRUE means only stuStartTimeRealUTC and stuEndTimeRealUTC are valid (only stuStartTimeRealUTC and stuEndTimeRealUTC are used), FALSE means only stStartTime and stEndTime are valid (only stStartTime and stEndTime are used)
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
        /// <summary>
        /// / 抠图信息
        /// ImageInfo
        /// </summary>
        public NET_EVENT_IMAGE_INFO stuImageInfo;
		/// <summary>
		/// 离线补传字段，唯一标识一个事件
        /// EventUUID String
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szEventUUIDStr;
    }

    /// <summary>
    /// IP地址或网络名或者设备id
    /// IP address or network name or device Id
    /// </summary>
    public struct NET_DEVICEID_String
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
    }

    /// <summary>
    /// CLIENT_GetDeviceInfoEx 接口输入参数
    /// CLIENT_GetDeviceInfoEx input param
    /// </summary>
    public struct NET_IN_GET_DEVICE_INFO_EX
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 设备个数
        /// Device Count
        /// </summary>
        public int nCount;
        /// <summary>
        /// 设备信息列表
        /// Device ID List
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_DEVICEID_String[] szDeviceIDs;
    }

    /// <summary>
    /// 设备属性
    /// Device Attribute
    /// </summary>
    public enum EM_DEVICE_ATTRIBUTE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_DEVICE_ATTRIBUTE_UNKNOWN,
        /// <summary>
        /// 主属性
        /// MainAttr
        /// </summary>
        EM_DEVICE_ATTRIBUTE_MASTER,
        /// <summary>
        /// 辅属性
        /// AssistantAttr
        /// </summary>
        EM_DEVICE_ATTRIBUTE_ASSISTANT,
    }

    /// <summary>
    /// 设备接入网络服务类型
    /// Net Server Type
    /// </summary>
    public enum EM_NET_SERVER_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_NET_SERVER_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 自动
        /// Auto
        /// </summary>
        EM_NET_SERVER_TYPE_AUTO,
        /// <summary>
        /// TCP
        /// TCP
        /// </summary>
        EM_NET_SERVER_TYPE_TCP,
        /// <summary>
        /// UDP
        /// UDP
        /// </summary>
        EM_NET_SERVER_TYPE_UDP,
        /// <summary>
        /// 组播
        /// MULTICAST
        /// </summary>
        EM_NET_SERVER_TYPE_MULTICAST,
    }

    /// <summary>
    /// 跟设备对接时的拉流协议类型
    /// Protocol Type
    /// </summary>
    public enum EM_CHANNEL_PROTOCOL_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_CHANNEL_PROTOCOL_TYPE_UNKNOWN,
        /// <summary>
        /// Onvif接入
        /// Onvif
        /// </summary>
        EM_CHANNEL_PROTOCOL_TYPE_ONVIF,
        /// <summary>
        /// 国标协议接入
        /// GB28181
        /// </summary>
        EM_CHANNEL_PROTOCOL_TYPE_GB28181,
        /// <summary>
        /// Rtsp协议接入
        /// Rtsp
        /// </summary>
        EM_CHANNEL_PROTOCOL_TYPE_RTSP,
        /// <summary>
        /// GB35114协议接入
        /// GB35114
        /// </summary>
        EM_CHANNEL_PROTOCOL_TYPE_GB35114,
    }

    /// <summary>
    /// 通道信息
    /// Channel Info
    /// </summary>
    public struct NET_DEVICE_CHANNEL_INFO
    {
        /// <summary>
        /// 远程通道号
        /// Remote Channel
        /// </summary>
        public uint nRemoteChannel;
        /// <summary>
        /// 分配的逻辑通道, -1表示未分配
        /// Logic Channel, -1 means unassigned
        /// </summary>
        public int nLogicChannel;
        /// <summary>
        /// 通道编码
        /// ChannelID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szChannelID;
        /// <summary>
        /// 通道国标编码
        /// GB Code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szGbCode;
        /// <summary>
        /// 显示在设备树的名称
        /// Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 设备详细信息
        /// Detail
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szDetail;
        /// <summary>
        /// 设备型号
        /// Device Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceType;
        /// <summary>
        /// 设备大类
        /// Device Class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDeviceClass;
        /// <summary>
        /// 通道是否在线, 0:离线 1:在线
        /// Whether the channel is online, 0: offline 1: online
        /// </summary>
        public uint nOnline;
        /// <summary>
        /// 该通道是否被本地设备使用 0:未使用 1:使用
        /// Whether the channel is used by the local device 0: not used 1: used
        /// </summary>
        public uint nUsed;
        /// <summary>
        /// ip地址
        /// IP address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szIP;
        /// <summary>
        /// mac地址
        /// MAC address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]
        public string szMac;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6)]
        public string szReserved1;
        /// <summary>
        /// 序列号
        /// Serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// 软件版本
        /// Software Version
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSoftwareVersion;
        /// <summary>
        /// 视频输入通道数
        /// Number of Video input channels
        /// </summary>
        public uint nVideoInChannels;
        /// <summary>
        /// 视频输出通道数
        /// Number of Video output channels
        /// </summary>
        public uint nVideoOutChannels;
        /// <summary>
        /// 音频输入通道数
        /// Number of Audio input channels
        /// </summary>
        public uint nAudioInChannels;
        /// <summary>
        /// 音频输出通道数
        /// Number of Audio output channels
        /// </summary>
        public uint nAudioOutChannels;
        /// <summary>
        /// 报警输入通道数
        /// Number of Alarm input channels
        /// </summary>
        public uint nAlarmInChannels;
        /// <summary>
        /// 报警输出通道数
        /// Number of Alarm output channels
        /// </summary>
        public uint nAlarmOutChannels;
        /// <summary>
        /// 支持最大辅码流路数(0~3路)
        /// Support the maximum number of auxiliary code streams (0~3 channels)
        /// </summary>
        public uint nMaxExtraStream;
        /// <summary>
        /// 设备接入网络服务类型
        /// Net Server Type
        /// </summary>
        public EM_NET_SERVER_TYPE emNetServerType;
        /// <summary>
        /// 跟设备对接时的拉流协议类型
        /// Protocol Type
        /// </summary>
        public EM_CHANNEL_PROTOCOL_TYPE emProtocolType;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved2;
        /// <summary>
        /// 温度值，摄氏度
        /// Temperature value, degrees Celsius
        /// </summary>
        public double dbTemperature;
        /// <summary>
        /// 通道在离线状态改变时的时间
        /// State Change Time
        /// </summary>
        public NET_TIME stuStateChangeTime;
        /// <summary>
        /// 视图库通道编码
        /// Video Image Channel ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVideoImageChannelID;
        /// <summary>
        /// 平台对接编号
        /// Platform docking ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlatformDoID;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 已添加设备的结果信息
    /// device info after add device
    /// </summary>
    public struct NET_GET_DEVICE_INFO_EX
    {
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// url
        /// Url
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szUrl;
        /// <summary>
        /// 设备序列号
        /// Serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSerialNo;
        /// <summary>
        /// 设备国标编码
        /// GB Code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szGBCode;
        /// <summary>
        /// 设备所属组织编码
        /// Org Code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szOrgCode;
        /// <summary>
        /// 设备类型
        /// Device Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceType;
        /// <summary>
        /// 设备大类
        /// Device Class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDeviceClass;
        /// <summary>
        /// 设备mac个数
        /// Device MAC Count
        /// </summary>
        public int nMacCount;
        /// <summary>
        /// 设备mac地址组
        /// Device MAC List
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 18)]
        public string szMacs;
        /// <summary>
        /// 设备软件版本号
        /// DevSoft Version
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDevSoftVersion;
        /// <summary>
        /// 设备名称
        /// Device Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceName;
        /// <summary>
        /// 设备详细信息
        /// Detail
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szDetail;
        /// <summary>
        /// 视频输入通道数
        /// Number of Video input channels
        /// </summary>
        public uint nVideoInChannel;
        /// <summary>
        /// 视频输出通道数
        /// Number of Video output channels
        /// </summary>
        public uint nVideoOutChannel;
        /// <summary>
        /// 音频输入通道数
        /// Number of Audio input channels
        /// </summary>
        public uint nAudioInChannel;
        /// <summary>
        /// 音频输出通道数
        /// Number of Audio output channels
        /// </summary>
        public uint nAudioOutChannel;
        /// <summary>
        /// 报警输入通道数
        /// Number of Alarm input channels
        /// </summary>
        public uint nAlarmIn;
        /// <summary>
        /// 报警输出通道数
        /// Number of Alarm output channels
        /// </summary>
        public uint nAlarmOut;
        /// <summary>
        /// 设备是否在线 0:离线 1：在线
        /// Whether the channel is online, 0: offline 1: online
        /// </summary>
        public uint nOnline;
        /// <summary>
        /// 设备离线错误码
        /// Device offline error code
        /// 0：无异常
        /// 268632064：组件接口没有找到
        /// 268632065：组件实现类没有找到
        /// 268632066：需要的客户端组件没有找到
        /// 268632067：客户端实例不存在
        /// 268632068：没有登录
        /// 268632069：非阻塞登录，正在尝试
        /// 268632070：用户名无效
        /// 268632071：密码无效
        /// 268632072：地址被屏蔽了
        /// 268632073：地址在黑名单中
        /// 268632074：用户名已经在使用，而且不能复用
        /// 268632075：超出了最大用户连接数
        /// 268632076：没有对应的操作权限
        /// 268632077：组件工厂创建对象失败
        /// 268632078：组件工厂获取实例失败
        /// 268632079：登录质询，需要根据返回的随机字符串再次登录
        /// 268632080：组件接口方法没有实现
        /// 268632081：帐号被锁定
        /// 268632082：登陆时网络连接失败
        /// 268632083：登陆连接成功，但收响应超时
        /// 268632084：登陆失败，原因未知
        /// 268632085：登陆失败，用户名或密码错误(替代6、7错误码)
        /// 268632086：登陆失败，未初始化无用户
        /// 268632087：登陆失败，admin用户需要强制修改密码
        /// 268632088：登陆连接超时
        /// 268632089：登陆失败，密码有效期失效
        /// 268632090：登陆失败，提示用户登录方式不对，需要切换登录方式
        /// 268632091：服务端返回消息格式错误(客户端设置)
        /// 268632092：登录失败，接入协议不匹配, 如以GB28181登录加强版的GB35114端
        /// 268632093：登录失败，登录受限，受限条件有限制IP、登录时间
        /// 268632094：登录失败，设备不支持高安全等级登录
        /// 268632095：组件接口操作不在产品规格内，被拦截
        /// 268632096：内部异常引起协议解析错误
        /// 268632097：组件接口操作超过设备限定能力，设备资源不足
        /// 268632098：账号已登录
        /// 268632099：版本不对，无法登陆
        /// 268632100：找不到网络主机
        /// 268632101：服务端返回消息错误
        /// 268632102：设备不匹配
        /// 268632103：域名解析失败
        /// 268632104：视频已加密
        /// 268632321：设备的状态机，在C状态时，不接受B状态时才有的业务请求
        /// 268632322：参数值，数量、类型、范围等不符合要求
        /// 268632323：正在处理业务，不接受重复业务请求
        /// 268632324：业务处理过程中出现未知错误
        /// 268632325：在处理业务请求过程中，资源不足
        /// 268632326：当前不支持该业务
        /// 268632327：业务处理超时
        /// 268632328：下发的业务请求过多
        /// 268632329：获取了过多的数据，设备无法处理
        /// 268632336：在业务批量执行过程中有错误发生
        /// 268632337：某种原因，业务被取消执行
        /// 268632577：设备未准备就绪，不接受业务的处理
        /// 268632578：设备型号不对或定制原因，无法进一步处理
        /// 268632579：无法获取到设备状态信息 
        /// </summary>
        public uint nErrorCode;
        /// <summary>
        /// 门禁设备可控制的门的总数
        /// The total number of doors that the access control device can control
        /// </summary>
        public uint nVtoDoors;
        /// <summary>
        /// 是否是POE设备, 0不是, 1是POE设备
        /// Whether it is a POE device, 0 is not, 1 is a POE device
        /// </summary>
        public uint nIsPoeDevice;
        /// <summary>
        /// Poe端口号, 取值范围>= 0; isPoeDevice字段为真时有效
        /// Poe port number, the value range is >= 0; it is valid when the isPoeDevice field is true
        /// </summary>
        public uint nPoePort;
        /// <summary>
        /// 是否支持目标比对
        /// Whether to support target comparison
        /// </summary>
        public bool bSupportedFR;
        /// <summary>
        /// 是否支持语音联动
        /// Whether to support voice linkage
        /// </summary>
        public bool bControlSpeaker;
        /// <summary>
        /// 设备属性
        /// Device Attribute
        /// </summary>
        public EM_DEVICE_ATTRIBUTE emDeviceAttribute;
        /// <summary>
        /// 是否具备统计功能
        /// Whether it has statistical function
        /// </summary>
        public bool bSupportedStatistic;
        /// <summary>
        /// 主协议是否存在
        /// Whether Is Main Protocol Exist
        /// </summary>
        public bool bIsMainProtocolExist;
        /// <summary>
        /// 视图库是否使能
        /// Whether the view library is enabled
        /// </summary>
        public bool bIsVideoImageEnable;
        /// <summary>
        /// 视图库是否在线 0:离线 1:在线
        /// Whether the view library is online 0: offline 1: online
        /// </summary>
        public uint nVideoImageOnline;
        /// <summary>
        /// 视图库离线错误码
        /// View library offline error code
        /// </summary>
        public uint nVideoImageErrorCode;
        /// <summary>
        /// 视图库注册编号
        /// View library registration number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVideoImageRegID;
        /// <summary>
        /// 用户申请的通道个数
        /// The number of channels applied by the user
        /// </summary>
        public int nMaxChannelCount;
        /// <summary>
        /// 实际返回的通道个数
        /// The actual number of channels returned
        /// </summary>
        public int nRetChannelCount;
        /// <summary>
        /// 通道信息, 由用户申请和释放内存, 申请大小为sizeof(NET_DEVICE_CHANNEL_INFO)*nMaxChannelCount
        /// Channel information, the user applies and releases memory, the application size is sizeof(NET_DEVICE_CHANNEL_INFO)*nMaxChannelCount
        /// </summary>
        public IntPtr pstuChannelsInfo;
        /// <summary>
        /// 是否支持白光灯控制
        /// Whether to support white light control
        /// </summary>
        public bool bControlLighter;
        /// <summary>
        /// 设备地址或域名
        /// Device address or domain name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSummaryAddress;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 896)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetDeviceInfoEx 接口输出参数
    /// CLIENT_GetDeviceInfoEx output param
    /// </summary>
    public struct NET_OUT_GET_DEVICE_INFO_EX
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 用户申请的设备个数
        /// The number of devices requested by the user
        /// </summary>
        public int nMaxCount;
        /// <summary>
        /// 实际返回的设备个数
        /// The actual number of devices returned
        /// </summary>
        public int nRetCount;
        /// <summary>
        /// 设备信息列表, 由用户申请和释放内存, 申请大小为sizeof(NET_GET_DEVICE_INFO_EX)*nMaxCount
        /// Device information list, the user applies and releases memory, the application size is sizeof(NET_GET_DEVICE_INFO_EX)*nMaxCount
        /// </summary>
        public IntPtr pstuDeviceInfo;
    }

    /// <summary>
    /// IP地址或网络名
    /// IP address or network name
    /// </summary>
    public struct NET_IPADDR_String
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szIpAddr;
    }

    /// <summary>
    /// mac地址
    /// mac address
    /// </summary>
    public struct NET_CLIENTID_String
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szClientID;
    }

    /// <summary>
    /// 传输离线文件配置
    /// Send oddline file config
    /// </summary>
    public struct NET_A_TRAFFIC_TRANSFER_OFFLINE_INFO
    {
        /// <summary>
        /// 使能
        /// Enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 0: 使用IP地址; 1:使用MAC地址
        /// 0: use IP address; 1: use MAC address
        /// </summary>
        public int nType;
        /// <summary>
        /// 返回的IP地址个数
        /// Return IP address quantity
        /// </summary>
        public int nIpAddrNum;
        /// <summary>
        /// IP地址或网络名
        /// IP address or network name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_IPADDR_String[] szIpAddr;
        /// <summary>
        /// 返回的mac地址个数
        /// Return mac address quantity
        /// </summary>
        public int nMacAddrNum;
        /// <summary>
        /// mac地址
        /// mac address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CLIENTID_String[] szClientID;
        /// <summary>
        /// 重传次数（限制平台客户端最大2个），表示同一张图片最大重传次数，默认值为0表示不限制重传次数
        /// Number of retransmissions (limited to 2 for platform clients), indicating the maximum number of retransmissions for the same image. The default value is 0, indicating no limit on retransmission times
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public uint[] nTransferTimes;
        /// <summary>
        /// 重传次数有效个数
        /// Number of valid retransmissions
        /// </summary>
        public uint nTransferTimesNum;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_GetDeviceInfo 接口输入参数
    /// input parameter of interface CLIENT_GetDeviceInfo
    /// </summary>
    public struct NET_IN_GET_DEVICE_LIST_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 设备个数
        /// device num
        /// </summary>
        public int nCount;
        /// <summary>
        /// 设备信息列表
        /// device id list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_DEVICEID_String[] szDeviceIDs;
    }

    public struct NET_MAC_String
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szMac;
    }

    /// <summary>
    /// 已添加设备的结果信息
    /// the result information of added device
    /// </summary>
    public struct NET_GET_DEVICE_INFO
    {
        /// <summary>
        /// 设备ID
        /// device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// url
        /// url
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szUrl;
        /// <summary>
        /// 设备序列号
        /// serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSerialNo;
        /// <summary>
        /// 设备类型
        /// device type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceType;
        /// <summary>
        /// 设备大类
        /// device class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDeviceClass;
        /// <summary>
        /// 设备mac个数
        /// device mac num
        /// </summary>
        public int nMacCount;
        /// <summary>
        /// 设备mac地址组
        /// device mac list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_MAC_String[] szMacs;
        /// <summary>
        /// 设备软件版本号
        /// device software version
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDevSoftVersion;
        /// <summary>
        /// 设备名称
        /// device name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceName;
        /// <summary>
        /// 设备详细信息
        /// device detail
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szDetail;
        /// <summary>
        /// 视频输入通道数
        /// video input channels num
        /// </summary>
        public uint nVideoInputCh;
        /// <summary>
        /// 视频输出通道数
        /// video output channels num
        /// </summary>
        public uint nVideoOutputCh;
        /// <summary>
        /// 音频输入通道数
        /// audio input channels num
        /// </summary>
        public uint nAudioInputCh;
        /// <summary>
        /// 音频输出通道数
        /// audio output channels num
        /// </summary>
        public uint nAudioOutputCh;
        /// <summary>
        /// 报警输入通道数
        /// alarm input channels num
        /// </summary>
        public uint nAlarmInputCh;
        /// <summary>
        /// 报警输出通道数
        /// alarm output channels num
        /// </summary>
        public uint nAlarmOutputCh;
        /// <summary>
        /// 设备离线错误码
        /// device off-line error code
        /// </summary>
        public uint nErrorCode;
        /// <summary>
        /// 门禁设备可控制的门的总数
        /// entrance guard vto door total num
        /// </summary>
        public uint nVtoDoors;
        /// <summary>
        /// 设备是否在线 0:离线 1：在线
        /// whether the device is online 0:off-line 1:online
        /// </summary>
        public byte byOnline;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 511)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_GetDeviceInfo 接口输出参数
    /// output parameter of interface CLIENT_GetDeviceInfo
    /// </summary>
    public struct NET_OUT_GET_DEVICE_LIST_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 用户申请的设备个数
        /// the count of the device in the user application
        /// </summary>
        public int nMaxCount;
        /// <summary>
        /// 实际返回的设备个数
        /// return count from device
        /// </summary>
        public int nRetCount;
        /// <summary>
        /// 设备信息列表, 由用户申请和释放内存, 申请大小为sizeof(NET_GET_DEVICE_INFO)*nMaxCount
        /// device info list, user malloc and free the memory,apply to sizeof(NET_GET_DEVICE_INFO)*nMaxCount
        /// </summary>
        public IntPtr pstuDeviceInfo;
    }

    /// <summary>
    /// CLIENT_GetChannelInfo 接口输入参数
    /// input parameter of interface CLIENT_GetChannelInfo
    /// </summary>
    public struct NET_IN_GET_CHANNEL_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 设备ID
        /// device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
    }

    /// <summary>
    /// 获取设备通道信息结果信息
    /// the result information of device channel
    /// </summary>
    public struct NET_GET_CHANNEL_INFO
    {
        /// <summary>
        /// 远程通道号
        /// remote channel
        /// </summary>
        public uint nRemoteChannel;
        /// <summary>
        /// 分配的逻辑通道,-1表示未分配
        /// logic channel, -1 means not allocation
        /// </summary>
        public int nLogicChannel;
        /// <summary>
        /// 名称
        /// name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 设备详细信息
        /// device detail
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szDetail;
        /// <summary>
        /// 设备类型
        /// device type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceType;
        /// <summary>
        /// 设备大类
        /// device class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDeviceClass;
        /// <summary>
        /// ip地址
        /// ip
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szIP;
        /// <summary>
        /// 设备mac地址
        /// device mac address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szMac;
        /// <summary>
        /// 设备序列号
        /// serial number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szSerialNo;
        /// <summary>
        /// 设备软件版本号
        /// device software version
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDevSoftVersion;
        /// <summary>
        /// 视频输入通道数
        /// video input channels num
        /// </summary>
        public uint nVideoInputCh;
        /// <summary>
        /// 视频输出通道数
        /// video output channels num
        /// </summary>
        public uint nVideoOutputCh;
        /// <summary>
        /// 音频输入通道数
        /// audio input channels num
        /// </summary>
        public uint nAudioInputCh;
        /// <summary>
        /// 音频输出通道数
        /// audio output channels num
        /// </summary>
        public uint nAudioOutputCh;
        /// <summary>
        /// 报警输入通道数
        /// alarm input channels num
        /// </summary>
        public uint nAlarmInputCh;
        /// <summary>
        /// 报警输出通道数
        /// alarm output channels num
        /// </summary>
        public uint nAlarmOutputCh;
        /// <summary>
        /// 通道是否在线0:离线 1：在线
        /// whether the channel is online 0:off-line 1:online
        /// </summary>
        public byte byOnline;
        /// <summary>
        /// 该通道是否被本地设备使用 0：未使用 1：使用
        /// whether the channel is used by local device 0:unuse 1:used
        /// </summary>
        public byte byUsed;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 510)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_GetChannelInfo 接口输出参数
    /// output parameter of interface CLIENT_GetChannelInfo
    /// </summary>
    public struct NET_OUT_GET_CHANNEL_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 用户申请的通道个数
        /// the count of the channel in the user application
        /// </summary>
        public int nMaxCount;
        /// <summary>
        /// 实际返回的通道个数
        /// return channel count from device
        /// </summary>
        public int nRetCount;
        /// <summary>
        /// 通道信息列表, 由用户申请和释放内存, 申请大小为sizeof(NET_GET_CHANNEL_INFO)*nMaxCount
        /// channel info list, user malloc and free the memory,apply to sizeof(NET_GET_CHANNEL_INFO)*nMaxCount
        /// </summary>
        public IntPtr pstuChannelInfo;
    }

    /// <summary>
    /// FILE_QUERY_HUMAN_TRAIT人体检测对应查询参数
    /// the param of find record file(corresponding to FILE_QUERY_HUMAN_TRAIT)
    /// </summary>
    public struct NET_A_MEDIAFILE_HUMAN_TRAIT_PARAM
    {
        /// <summary>
        /// 结构体大小
        /// the size of this struct
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 开始时间
        /// start time
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// 结束时间
        /// end time
        /// </summary>
        public NET_TIME stEndTime;
        /// <summary>
        /// 上衣颜色
        /// coat color
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public EM_CLOTHES_COLOR[] emCoatColor;
        /// <summary>
        /// 裤子颜色
        /// trousers color
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public EM_CLOTHES_COLOR[] emTrousersColor;
        /// <summary>
        /// 上衣类型
        /// coat type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public EM_COAT_TYPE[] emCoatType;
        /// <summary>
        /// 裤子类型
        /// trousers type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public EM_TROUSERS_TYPE[] emTrousersType;
        /// <summary>
        /// 需要查询的上衣颜色个数
        /// the number of coat color
        /// </summary>
        public uint nCoatColorNum;
        /// <summary>
        /// 需要查询的裤子颜色个数
        /// the number of trousers color
        /// </summary>
        public uint nTrousersColorNum;
        /// <summary>
        /// 需要查询的上衣类型个数
        /// the number of coat type
        /// </summary>
        public uint nCoatTypeNum;
        /// <summary>
        /// 需要查询的裤子类型个数
        /// the number of trousers type
        /// </summary>
        public uint nTrousersTypeNum;
        /// <summary>
        /// 是否戴帽子
        /// wear hat or not
        /// </summary>
        public EM_HAS_HAT emHasHat;
        /// <summary>
        /// 是否带包
        /// has bag or not
        /// </summary>
        public EM_HAS_BAG emHasBag;
        /// <summary>
        /// 性别
        /// sex
        /// </summary>
        public EM_SEX_TYPE emSex;
        /// <summary>
        /// 头发样式
        /// hair style
        /// </summary>
        public EM_HAIR_STYLE emHairStyle;
        /// <summary>
        /// 查询年龄段的最小年龄
        /// minimum age
        /// </summary>
        public uint nAgeMin;
        /// <summary>
        /// 查询年龄段的最大年龄
        /// maximum age
        /// </summary>
        public uint nAgeMax;
        /// <summary>
        /// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stEndTime), 为FALSE表示仅下发stStartTime, stEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
        /// TRUE means only deliver stuStartTimeRealUTC and stuEndTimeRealUTC (do not deliver stStartTime, stEndTime), FALSE means deliver only stStartTime, stEndTime (do not deliver stuStartTimeRealUTC and stuEndTimeRealUTC)
        /// </summary>
        public bool bOnlySupportRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用，与(stuStartTime, stuEndTime)互斥
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC, mutually exclusive with (stuStartTime, stuEndTime)
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用，与(stuStartTime, stuEndTime)互斥
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC, mutually exclusive with (stuStartTime, stuEndTime)
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
        /// <summary>
        /// 是否打伞
        /// has umbrella
        /// </summary>
        public EM_HAS_UMBRELLA emHasUmbrella;
        /// <summary>
        /// 帽子类型
        /// cap type
        /// </summary>
        public EM_CAP_TYPE emCap;
        /// <summary>
        /// / 事件类型列表,参见智能分析事件类型
        /// / Associated event list, Reference intelligent analysis event type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nEventLists;
        /// <summary>
        /// / 事件总数
        /// / Count of events
        /// </summary>
        public int nEventCount;
        /// <summary>
        /// / 通道号数组有效个数
        /// Number of valid channel number arrays
        /// </summary>
        public uint nChannelsNum;
        /// <summary>
        /// / 通道号数组
        /// Channel number array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nChannels;
        /// <summary>
        /// / 是否不下发 Age 字段
        /// UnEnable Support Age
        /// </summary>
        public bool bUnEnableSupportAge;
        /// <summary>
        /// / 是否不下发 HasBag 字段
        /// UnEnable Support HasBag
        /// </summary>
        public bool bUnEnableSupportHasBag;
        /// <summary>
        /// / 是否不下发 HasHat 字段
        /// UnEnable Support HasHat
        /// </summary>
        public bool bUnEnableSupportHasHat;
    }

    /// <summary>
    /// 查询到的人体检测相关信息
    /// the human trait info be found
    /// </summary>
    public struct NET_A_HUMAN_TRAIT_INFO
    {
        /// <summary>
        /// 上衣颜色
        /// coat color
        /// </summary>
        public EM_CLOTHES_COLOR emCoatColor;
        /// <summary>
        /// 裤子颜色
        /// trousers color
        /// </summary>
        public EM_CLOTHES_COLOR emTrousersColor;
        /// <summary>
        /// 上衣类型
        /// coat type
        /// </summary>
        public EM_COAT_TYPE emCoatType;
        /// <summary>
        /// 裤子类型
        /// trousers type
        /// </summary>
        public EM_TROUSERS_TYPE emTrousersType;
        /// <summary>
        /// 是否戴帽子
        /// has hat or not
        /// </summary>
        public EM_HAS_HAT emHasHat;
        /// <summary>
        /// 是否带包
        /// has bag or not
        /// </summary>
        public EM_HAS_BAG emHasBag;
        /// <summary>
        /// 性别
        /// sex
        /// </summary>
        public EM_SEX_TYPE emSex;
        /// <summary>
        /// 年龄
        /// age
        /// </summary>
        public uint nAge;
        /// <summary>
        /// 头发样式
        /// hair style
        /// </summary>
        public EM_HAIR_STYLE emHairStyle;
        /// <summary>
        /// 是否打伞
        /// has umbrella or not
        /// </summary>
        public EM_HAS_UMBRELLA emHasUmbrella;
        /// <summary>
        /// 包类型
        /// bag type
        /// </summary>
        public EM_BAG_TYPE emBagType;
        /// <summary>
        /// 帽子类型
        /// cap type
        /// </summary>
        public EM_CAP_TYPE emCapType;
        /// <summary>
        /// 保留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 查询到的目标属性信息
    /// galss state
    /// Target attribute be found
    /// </summary>
    public struct NET_HUMAN_FACE_ATTRIBUTE
    {
        /// <summary>
        /// 性别
        /// sex
        /// </summary>
        public EM_SEX_TYPE emSex;
        /// <summary>
        /// 年龄
        /// age
        /// </summary>
        public int nAge;
        /// <summary>
        /// 口罩状态
        /// mask state
        /// </summary>
        public EM_MASK_STATE_TYPE emMask;
        /// <summary>
        /// 胡子状态
        /// beard state
        /// </summary>
        public EM_BEARD_STATE_TYPE emBeard;
        /// <summary>
        /// 是否戴眼镜
        /// has glasses
        /// </summary>
        public EM_HAS_GLASS emHasGlass;
        /// <summary>
        /// 表情
        /// emotion
        /// </summary>
        public EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE emEmotion;
        /// <summary>
        /// 保留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// FILE_QUERY_HUMAN_TRAIT人体检测对应FINDNEXT查询返回参数
    /// the record file info(corresponding to FILE_QUERY_HUMAN_TRAIT)
    /// </summary>
    public struct NET_A_MEDIAFILE_HUMAN_TRAIT_INFO
    {
        /// <summary>
        /// 结构体大小
        /// the size of this struct
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道
        /// channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 开始时间
        /// start time
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// 结束时间
        /// end time
        /// </summary>
        public NET_TIME stEndTime;
        /// <summary>
        /// 文件路径
        /// file path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFilePath;
        /// <summary>
        /// 文件大小
        /// file size
        /// </summary>
        public int nFileSize;
        /// <summary>
        /// 目标小图路径
        /// Target image path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFacePath;
        /// <summary>
        /// 目标小图对应的全景图路径
        /// Target scene image path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFaceScenePath;
        /// <summary>
        /// 人体小图路径
        /// human image path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szHumanPath;
        /// <summary>
        /// 人体小图对应的全景图路径
        /// human scene image path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szHumanSceneImage;
        /// <summary>
        /// 目标小图大小, 单位: 字节
        /// Target image size, unit:byte
        /// </summary>
        public uint nFaceImageLength;
        /// <summary>
        /// 目标小图对应的全景图大小, 单位: 字节
        /// Target scene image size, unit:byte
        /// </summary>
        public uint nFaceSceneImageLength;
        /// <summary>
        /// 人体小图大小, 单位: 字节
        /// human image size, unit:byte
        /// </summary>
        public uint nHumanImageLength;
        /// <summary>
        /// 人体小图对应的全景图大小, 单位: 字节
        /// human scene image size, unit:byte
        /// </summary>
        public uint nHumanSceneImageLength;
        /// <summary>
        /// 人体检测信息
        /// human trait info be found
        /// </summary>
        public NET_A_HUMAN_TRAIT_INFO stuHumanTrait;
        /// <summary>
        /// 目标属性信息
        /// Target attribute be found
        /// </summary>
        public NET_HUMAN_FACE_ATTRIBUTE stuFaceAttribute;
        /// <summary>
        /// 目标型心(不是包围盒中心), 0-8191相对坐标, 相对于小图
        /// Center of Target(not center of bounding box), 0-8191 relative coordinates, relative to small graph
        /// </summary>
        public NET_POINT stuFaceCenter;
        /// <summary>
        /// 人体型心(不是包围盒中心), 0-8191相对坐标, 相对于小图
        /// Center of human(not center of bounding box), 0-8191 relative coordinates, relative to small graph
        /// </summary>
        public NET_POINT stuHumanCenter;
        /// <summary>
        /// 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stStartTime和stEndTime有效(仅使用stStartTime和stEndTime)
        /// TRUE means only stuStartTimeRealUTC and stuEndTimeRealUTC are valid (only stuStartTimeRealUTC and stuEndTimeRealUTC are used), FALSE means only stStartTime and stEndTime are valid (only stStartTime and stEndTime are used)
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
		/// <summary>
		/// 离线补传字段，唯一标识一个事件
        /// EventUUID String
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szEventUUIDStr;
    }

    /// <summary>
    /// 三代协议新增
    /// 录像模式
    /// The 3rd protocol newly added contents
    /// Record mode
    /// </summary>
    public struct NET_AV_CFG_RecordMode
    {
        public int nStructSize;
        /// <summary>
        /// 录像模式, 0-自动录像，1-手动录像，2-关闭录像
        /// record mode, 0-schedule, 1- manual, 2- off
        /// </summary>
        public int nMode;
        /// <summary>
        /// 辅码流1录像模式, 0-自动录像，1-手动录像，2-关闭录像
        /// Sub stream1 record mode, 0-auto, 1-manual, 2-OFF
        /// </summary>
        public int nModeExtra1;
        /// <summary>
        /// 辅码流2录像模式, 0-自动录像，1-手动录像，2-关闭录像
        /// Sub stream2 record mode, 0-auto, 1-manual, 2-OFF
        /// </summary>
        public int nModeExtra2;
    }

    /// <summary>
    /// 车位灯色
    /// Light color of parking space
    /// </summary>
    public struct NET_PARKINGSPACELIGHT_INFO
    {
        /// <summary>
        /// 红灯: -1:无效, 0/灭, 1/亮, 2/闪烁
        /// Red: -1:invalid, 0/destory, 1/bright, 2/twinkle
        /// </summary>
        public int nRed;
        /// <summary>
        /// 黄灯: -1:无效, 0/灭, 1/亮, 2/闪烁
        /// Yellow: -1:invalid, 0/destory, 1/bright, 2/twinkle
        /// </summary>
        public int nYellow;
        /// <summary>
        /// 蓝灯: -1:无效, 0/灭, 1/亮, 2/闪烁
        /// Blue: -1:invalid, 0/destory, 1/bright, 2/twinkle
        /// </summary>
        public int nBlue;
        /// <summary>
        /// 绿灯: -1:无效, 0/灭, 1/亮, 2/闪烁
        /// Green: -1:invalid, 0/destory, 1/bright, 2/twinkle
        /// </summary>
        public int nGreen;
        /// <summary>
        /// 紫灯: -1:无效, 0/灭, 1/亮, 2/闪烁
        /// Purple: -1:invalid, 0/destory, 1/bright, 2/twinkle
        /// </summary>
        public int nPurple;
        /// <summary>
        /// 白灯: -1:无效, 0/灭, 1/亮, 2/闪烁
        /// White: -1:invalid, 0/destory, 1/bright, 2/twinkle
        /// </summary>
        public int nWhite;
        /// <summary>
        /// 粉等: -1:无效, 0/灭, 1/亮, 2/闪烁
        /// Pink: -1:invalid, 0/destory, 1/bright, 2/twinkle
        /// </summary>
        public int nPink;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 网络异常状态灯色
    /// Network abnormal state lamp color
    /// </summary>
    public struct NET_NETWORK_EXCEPTION_INFO
    {
        /// <summary>
        /// 网口断开状态灯色
        /// Light color of opening state of net mouth
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public NET_PARKINGSPACELIGHT_INFO[] stNetPortAbortInfo;
        /// <summary>
        /// 实际返回的个数
        /// Actual return number
        /// </summary>
        public int nRetNetPortAbortNum;
        /// <summary>
        /// 车位专用状态灯色
        /// Special state lamp color of parking space
        /// </summary>
        public NET_PARKINGSPACELIGHT_INFO stuSpaceSpecialInfo;
        /// <summary>
        /// 充电车位状态灯色
        /// State lamp color of rechargeable car
        /// </summary>
        public NET_PARKINGSPACELIGHT_INFO stuSpaceChargingInfo;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

	/// <summary>
    /// Device abnormal alarm status light color control
    /// </summary>
    public struct NET_ABNORMAL_ALARM_INFO
    {
        /// <summary>
        /// / Video occlusion status light color
        /// </summary>
        public NET_PARKINGSPACELIGHT_INFO stuVideoBlind;
        /// <summary>
        /// / Smoke and flame status light color
        /// </summary>
        public NET_PARKINGSPACELIGHT_INFO stuSmokeFire;
        /// <summary>
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 车位状态对应的车位指示灯色 对应 NET_EM_CFG_PARKINGSPACELIGHT_STATE
    /// Parking position corresponding to parking indicator light color, corresponding NET_EM_CFG_PARKINGSPACELIGHT_STATE
    /// </summary>
    public struct NET_PARKINGSPACELIGHT_STATE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// 车位空闲状态灯色
        /// Parking space idle state lamp color
        /// </summary>
        public NET_PARKINGSPACELIGHT_INFO stuSpaceFreeInfo;
        /// <summary>
        /// 车位占满状态灯色
        /// Light color of parking space occupying full state
        /// </summary>
        public NET_PARKINGSPACELIGHT_INFO stuSpaceFullInfo;
        /// <summary>
        /// 车位压线状态灯色
        /// Light color of pressure line in parking space
        /// </summary>
        public NET_PARKINGSPACELIGHT_INFO stuSpaceOverLineInfo;
        /// <summary>
        /// 车位预定状态灯色
        /// Seat reservation state lamp color
        /// </summary>
        public NET_PARKINGSPACELIGHT_INFO stuSpaceOrderInfo;
        /// <summary>
        /// 网络异常状态灯色
        /// Network abnormal state lamp color
        /// </summary>
        public NET_NETWORK_EXCEPTION_INFO stuNetWorkExceptionInfo;
		/// <summary>
        /// / Device abnormal alarm status light color control
        /// </summary>
        public NET_ABNORMAL_ALARM_INFO stuAbnormalAlarmInfo;
        /// <summary>
        /// / Parking space alarm status light color
        /// </summary>
        public NET_PARKINGSPACELIGHT_INFO stuSpaceAlarmInfo;
    }

    /// <summary>
    /// 事件的上报类型
    /// Report type
    /// </summary>
    public enum EM_REPORT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_REPORT_TYPE_UNKNOWN,
        /// <summary>
        /// 定时上报
        /// Regular reporting
        /// </summary>
        EM_REPORT_TYPE_TIMING,
        /// <summary>
        /// 报警上报
        /// Alarm reporting
        /// </summary>
        EM_REPORT_TYPE_ALARM,
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_ALARM_METHANE_ALARM (甲烷报警事件)对应的数据块描述信息
    /// The description information of the data block corresponding to the event type EVENT_IVS_ALARM_METHANE_ALARM (methane alarm event)
    /// </summary>
    public struct NET_DEV_EVENT_METHANE_ALARM_INFO
    {
        /// <summary>
        /// 通道号
        /// channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件动作, 0:脉冲 1:开始 2:停止
        /// Event action 0:pulse,1:start, 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件发生的时间,带时区偏差
        /// Time of occurrence
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// 报警时的甲烷浓度，单位ppm.m
        /// concentration of methane,unit:ppm.m
        /// </summary>
        public uint nConcentration;
        /// <summary>
        /// 报警阈值，超过该值报警，单位ppm.m
        /// Concentration Threshold,unit:ppm.m
        /// </summary>
        public uint nConcentrationThreshold;
        /// <summary>
        /// 上报类型
        /// Report type
        /// </summary>
        public EM_REPORT_TYPE emReportType;
        /// <summary>
        /// 报警时的预置点ID
        /// Preset ID
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 报警时的预置点名称
        /// Preset Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// 报警时的甲烷浓度，单位%LEL.m
        /// Methane concentration, in units: %LEL.m
        /// </summary>
        public double dbConcentrationLEL;
        /// <summary>
        /// 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 936)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_PTZStartTour 接口输入参数
    /// CLIENT_PTZStartTour input parameters
    /// </summary>
    public struct NET_IN_PTZ_START_TOUR
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号, 范围 0~设备通道数
        /// Channel number, range 0~device channel number
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 巡航线路编号
        /// Tour line number
        /// </summary>
        public int nIndex;
    }

    /// <summary>
    /// CLIENT_PTZStartTour 接口输出参数
    /// CLIENT_PTZStartTour output parameters
    /// </summary>
    public struct NET_OUT_PTZ_START_TOUR
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_PTZStopTour 接口输入参数
    /// CLIENT_PTZStopTour input parameters
    /// </summary>
    public struct NET_IN_PTZ_STOP_TOUR
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号, 范围 0~设备通道数
        /// Channel number, range 0~device channel number
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 巡航线路编号
        /// Tour line number
        /// </summary>
        public int nIndex;
    }

    /// <summary>
    /// CLIENT_PTZStopTour 接口输出参数
    /// CLIENT_PTZStopTour output parameters
    /// </summary>
    public struct NET_OUT_PTZ_STOP_TOUR
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 用户列表
    /// user list
    /// </summary>
    public struct NET_A_CFG_ACTIVEUSER_INFO
    {
        public int nStructSize;
        /// <summary>
        /// 活动用户ID，一般是会话ID
        /// Active user ID, normally dialogue ID
        /// </summary>
        public int nUserID;
        /// <summary>
        /// 用户名
        /// Username
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szUser;
        /// <summary>
        /// 用户所在组名
        /// Group name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupName;
        /// <summary>
        /// 用户所在组等级
        /// Group level
        /// </summary>
        public int nGroupLevel;
        /// <summary>
        /// 客户端类型
        /// Client-end type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szClientType;
        /// <summary>
        /// 客户端IP地址
        /// Client-end IP address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szClientAddr;
        /// <summary>
        /// 用户登入时间
        /// Login time
        /// </summary>
        public NET_CFG_NET_TIME stuLoginTime;
    }

    /// <summary>
    /// 得到所有活动的用户信息
    /// Get all active user info
    /// </summary>
    public struct NET_A_CFG_ACTIVEALLUSER_INFO
    {
        public int nStructSize;
        /// <summary>
        /// 有效数组个数
        /// Valid group number
        /// </summary>
        public int nCount;
        /// <summary>
        /// 最大活动用户列表
        /// Max active user list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_A_CFG_ACTIVEUSER_INFO[] stuActiveUserInfo;
    }

    /// <summary>
    /// 用户信息扩展,权限数组增加
    /// user info expand,dwRights size is 3072
    /// </summary>
    public struct NET_USER_INFO_NEW_EX
    {
        public uint dwSize;
        /// <summary>
        /// 用户ID
        /// user ID
        /// </summary>
        public uint dwID;
        /// <summary>
        /// 用户所属的用户组ID
        /// user group ID
        /// </summary>
        public uint dwGroupID;
        /// <summary>
        /// 用户名称
        /// user name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 用户密码
        /// password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPassWord;
        /// <summary>
        /// 用户权限个数
        /// right count
        /// </summary>
        public uint dwRightNum;
        /// <summary>
        /// 用户权限列表
        /// user right list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3072)]
        public uint[] dwRights;
        /// <summary>
        /// 用户信息备注
        /// memo
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szMemo;
        /// <summary>
        /// 掩码,0x00000001 - 支持用户复用
        /// Sub mask,0x00000001 - Support account reusable
        /// </summary>
        public uint dwFouctionMask;
        /// <summary>
        /// 最后修改时间
        /// Last Revise Time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// 是否可以匿名登录, 0:不可匿名登录, 1: 可以匿名登录
        /// Whether Can Be Anonymous Login,0=Can't Be Anonymous Login,1=Can be Anonymous Login
        /// </summary>
        public byte byIsAnonymous;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserve;
    }

    /// <summary>
    /// 具体抓拍信息
    /// Specific capture information
    /// </summary>
    public struct NET_MANUALSNAP_BY_EVENT_INFO
    {
        /// <summary>
        /// 事件触发的预置点号，从1开始, 0表示未知
        /// The preset point number triggered by the event, starting from 1, where 0 indicates unknown
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 0:ShopSignAbnormal店招异常事件 1:ChangeDetection变化事件
        /// 0:ShopSignAbnormal 1:ChangeDetection
        /// </summary>
        public int nEventCode;
        /// <summary>
        /// 抓拍张数
        /// Number of Snapshots
        /// </summary>
        public uint nTimes;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 124)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_ManualSnapByEvent 入参
    /// CLIENT_ManualSnapByEvent input paramters
    /// </summary>
    public struct NET_IN_MANUALSNAP_BY_EVENT_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// 具体抓拍信息
        /// Specific capture information
        /// </summary>
        public NET_MANUALSNAP_BY_EVENT_INFO stuInfo;
    }

    /// <summary>
    /// CLIENT_ManualSnapByEvent 出参
    /// CLIENT_ManualSnapByEvent output paramters
    /// </summary>
    public struct NET_OUT_MANUALSNAP_BY_EVENT_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 图片信息扩展
    /// Picture information extension
    /// </summary>
    public struct NET_A_IMAGE_INFO_EX
    {
        /// <summary>
        /// 在上传图片数据中的图片序号
        /// The serial number of the picture in the uploaded picture data
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// 在二进制数据块中的偏移
        /// Offset in the binary data block
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// 图片大小,单位:字节
        /// Picture size, unit: byte
        /// </summary>
        public uint nLength;
        /// <summary>
        /// 图片类型
        /// Picture type
        /// </summary>
        public EM_IMAGE_TYPE emType;
    }

    /// <summary>
    /// 报警事件类型 EVENT_ALARM_VIDEOBLIND(视频遮挡报警)
    /// the describe of EVENT_ALARM_VIDEOBLIND's data
    /// </summary>
    public struct NET_A_DEV_EVENT_ALARM_VIDEOBLIND
    {
        /// <summary>
        /// 通道号
        /// channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// evnent name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 保留字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string Reserved;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// evnet ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件发生的时间, (设备时间, 不一定是utc时间)
        /// Action happens time,accurate to seconds
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// 司机ID
        /// driver ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDriverID;
        /// <summary>
        /// GPS信息
        /// GPS
        /// </summary>
        public NET_GPS_STATUS_INFO stuGPSStatus;
        /// <summary>
        /// 违章关联视频FTP上传路径
        /// ftp path for assocated video
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szVideoPath;
        /// <summary>
        /// 图片信息扩展
        /// Picture information extension
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_A_IMAGE_INFO_EX[] stuImageInfo;
        /// <summary>
        /// 图片信息扩展的个数
        /// The number of image information extensions
        /// </summary>
        public int nImageInfo;
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfoEx2;
        /// <summary>
        /// 图片信息个数
        /// Number of image information
        /// </summary>
        public int nImageInfoEx2Num;
        /// <summary>
        /// 违章关联的多个视频信息个数
        /// Number of multiple video information associated with violation
        /// </summary>
        public int nRelatingVideoInfoNum;
        /// <summary>
        /// 违章关联的多个视频信息数组，最多支持16个视频
        /// Multiple video information arrays associated with violations, supporting up to 16 videos
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_RELATING_VIDEO_INFO[] stuRelatingVideoInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// event action, 0 means impulse event,1 means continuous event start,2 means continuous event end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1023)]
        public string byReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_CHANGE_DETECTION (差异检测事件) 对应的数据块描述信息
    /// Description of the data block corresponding to the event type EVENT_IVS_CHANGE_DETECTION (Change Detect Event)
    /// </summary>
    public struct NET_DEV_EVENT_CHANGE_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// Event action 0:pulse,1:start, 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// The class to which the smart event belongs
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// relative event timestamp, (unit is milliseconds)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// The time of the event
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件时间毫秒数
        /// event time in milliseconds
        /// </summary>
        public int nUTCMS;
        /// <summary>
        /// 事件组ID，同一物体抓拍过程内GroupID相同
        /// group ID, which is the same in the process of capturing the same object
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// 一个事件组内的抓拍张数
        /// CountInGroup Number of snapshots in an event group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// 一个事件组内的抓拍序号, 从1开始
        /// IndexInGroup Capture sequence number in an event group,Start with 1
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 检测到的多个物体信息
        /// detected objects
        /// </summary>
        public IntPtr pstObjects;
        /// <summary>
        /// 检测到的多个物体个数
        /// detected objects numbers
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetStorageBoundTime 接口入参
    /// CLIENT_GetStorageBoundTime Indicates interface entry
    /// </summary>
    public struct NET_IN_GET_STORAGE_BOUND_TIME_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号列表数组大小
        /// Channel number list array size
        /// </summary>
        public int nChannelListNum;
        /// <summary>
        /// 通道号列表, 需要由用户申请内存，内存空间大小为sizeof(UINT)*nChannelListNum
        /// Channel ID list. The memory needs to be allocated by the user. The memory size is sizeof(UINT) x nChannelListNum
        /// </summary>
        public IntPtr pnChannelList;
    }

    /// <summary>
    /// 获取的录像时间范围
    /// Time range obtained
    /// </summary>
    public struct NET_STORAGE_BOUND_TIME
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// 开始时间
        /// Start time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 结束时间
        /// End time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// 保留字段
        /// Reserve the field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetStorageBoundTime 接口出参
    /// CLIENT_GetStorageBoundTime Indicates the interface outbound parameter
    /// </summary>
    public struct NET_OUT_GET_STORAGE_BOUND_TIME_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 获取的录像时间范围数组有效个数, 申请的个数应与 NET_IN_GET_STORAGE_BOUND_TIME_INFO 中的 nChannelListNum 一致
        /// The obtained valid number of the recording time range array. The requested number must be the same as nChannelListNum in NET_IN_GET_STORAGE_BOUND_TIME_INFO
        /// </summary>
        public int nBoundTimeNum;
        /// <summary>
        /// 获取的录像时间范围, 需要由用户申请内存，内存空间大小为sizeof(NET_STORAGE_BOUND_TIME)*nBoundTimeNum
        /// The memory must be allocated by the user. The memory space size is sizeof(NET_STORAGE_BOUND_TIME)*nBoundTimeNum
        /// </summary>
        public IntPtr pstuBoundTime;
        /// <summary>
        /// 设备返回的录像时间范围个数
        /// Number of recording time ranges returned by the device
        /// </summary>
        public int nRetBoundTimeNum;
        /// <summary>
        /// 字节对齐
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_TOUCH_ELECTROSTATIC_BALL (触摸静电球事件)对应的数据块描述信息
    /// EVENT_IVS_TOUCH_ELECTROSTATIC_BALL (touch electrostatic ball)
    /// </summary>
    public struct NET_A_DEV_EVENT_TOUCH_ELECTROSTATIC_BALL_INFO
    {
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐,非保留字节
        /// rReserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// UTC
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 1:开始 2:停止
        /// action
        /// </summary>
        public int nAction;
        /// <summary>
        /// 检测到的物体
        /// object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 全景广角图
        /// Scene Image
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 静电球区域坐标框
        /// Electrostatic ball area coordinate frame
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// 静电球区域坐标框个数
        /// count of Electrostatic ball area coordinate frame
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// 上拌线坐标
        /// top line coordinates
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuUpstairsLine;
        /// <summary>
        /// 上拌线坐标个数
        /// count of top line coordinates
        /// </summary>
        public int nUpstairsLineNum;
        /// <summary>
        /// 下拌线坐标
        /// Bottom line coordinates
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDownstairsLine;
        /// <summary>
        /// 下拌线坐标个数
        /// count of Bottom line coordinates
        /// </summary>
        public int nDownstairsLineNum;
        /// <summary>
        /// 保留字节,留待扩展
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_OBJECT_NUM_DETECTION (区域内计数事件)对应的数据块描述信息( 注意该事件不支持单独使用，仅配合“开放智能事件(EVENT_IVS_OPEN_INTELLI)”使用)
    /// The data block description information corresponding to the event type EVENT_IVS_OBJECT_NUM_DETECTION (counting events in the area) (note that this event does not support separate use, only used with "Open Intelligent Event (EVENT_IVS_OPEN_INTELLI)")
    /// </summary>
    public struct NET_A_DEV_EVENT_OBJECT_NUM_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// 0: pulse, 1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// The class to which the smart event belongs
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// 相对事件时间戳,(单位是毫秒)
        /// relative event timestamp, (unit is milliseconds)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// the time the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件时间毫秒数
        /// event time in milliseconds
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 区域ID, 没有该字段或者为0，为单区域
        /// Area ID, if there is no such field or 0, it is a single area
        /// </summary>
        public uint nAreaID;
        /// <summary>
        /// 事件触发的预置点号，从1开始
        /// The preset point number triggered by the event, starting from 1
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 表示区域内物体的个数
        /// Indicates the number of objects in the area
        /// </summary>
        public int nNumber;
        /// <summary>
        /// 全景广角图(仅nIndexInData, nOffSet, nLength字段有效)
        /// Panoramic wide-angle image (only nIndexInData, nOffSet, nLength fields are valid)
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 预留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 统计方向查询条件
    /// direction
    /// </summary>
    public enum EM_STAT_DIRECTION
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_STAT_DIRECTION_UNKNOWN,
        /// <summary>
        /// 左到右
        /// left to right
        /// </summary>
        EM_STAT_DIRECTION_LEFTTORIGHT,
        /// <summary>
        /// 右到左
        /// right to left
        /// </summary>
        EM_STAT_DIRECTION_RIGHTTOLEFT,
        /// <summary>
        /// 全部
        /// both
        /// </summary>
        EM_STAT_DIRECTION_BOTH,
    }


    /// <summary>
    /// 属性组合
    /// Attribute combination
    /// </summary>
    public struct NET_STAT_ATTRMAP
    {
        /// <summary>
        /// 属性索引
        /// Type ID
        /// </summary>
        public int nAttrTypeID;
        /// <summary>
        /// 属性值索引
        /// Value ID
        /// </summary>
        public int nValueID;
        /// <summary>
        /// 属性名称
        /// Attr Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAttrType;
        /// <summary>
        /// 属性值
        /// Value
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szValue;
        /// <summary>
        /// 预留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// 属性计数信息
    /// Attribute count information
    /// </summary>
    public struct NET_STAT_ATTRIBUTE
    {
        /// <summary>
        /// 目标及属性组合的计数
        /// Number
        /// </summary>
        public int nNumber;
        /// <summary>
        /// 属性组合个数
        /// Attribute Map count
        /// </summary>
        public int nAttrMapNumber;
        /// <summary>
        /// 属性组合
        /// Attribute Map
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_STAT_ATTRMAP[] stuAttrMap;
        /// <summary>
        /// 预留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// 详细计数信息
    /// Detailed count information
    /// </summary>
    public struct NET_STAT_DETAIL
    {
        /// <summary>
        /// 目标类型名称
        /// Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szType;
        /// <summary>
        /// 目标类型索引
        /// Type ID
        /// </summary>
        public int nTypeID;
        /// <summary>
        /// 目标类型总数
        /// Number
        /// </summary>
        public int nNumber;
        /// <summary>
        /// 属性计数信息
        /// Attribute
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_STAT_ATTRIBUTE[] stuAttribute;
        /// <summary>
        /// 属性计数信息个数
        /// Attribute Count
        /// </summary>
        public int nAttributeNumber;
        /// <summary>
        /// 预留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 124)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_CROSSLINE_STAT (绊线计数事件)对应的数据块描述信息( 注意该事件暂时不支持单独使用，仅配合“开放智能事件(EVENT_IVS_OPEN_INTELLI)”使用)
    /// The data block description information corresponding to the event type EVENT_IVS_CROSSLINE_STAT (Crossline stat event) (note that this event does not support separate use, only used with "Open Intelligent Event (EVENT_IVS_OPEN_INTELLI)")
    /// </summary>
    public struct NET_DEV_EVENT_CROSSLINE_STAT_INFO
    {
        /// <summary>
        /// 通道号
        /// channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// 0: pulse, 1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 事件发生的时间
        /// the time the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// The class to which the smart event belongs
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// 相对事件时间戳,(单位是毫秒)
        /// relative event timestamp, (unit is milliseconds)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件时间毫秒数
        /// event time in milliseconds
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// 智能事件规则编号
        /// Smart event rule number, used to mark which rule triggered the event
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 区域ID
        /// area ID
        /// </summary>
        public uint nAreaID;
        /// <summary>
        /// 绊线方向
        /// Direction
        /// </summary>
        public EM_STAT_DIRECTION emDirection;
        /// <summary>
        /// 目标绊线总数
        /// Number
        /// </summary>
        public int nNumber;
        /// <summary>
        /// 详细计数信息个数
        /// Detailed information count
        /// </summary>
        public int nStatDetailNum;
        /// <summary>
        /// 详细计数信息
        /// Detailed information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_STAT_DETAIL[] stuStatDetail;
        /// <summary>
        /// 预留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_REGIONNUM_STAT (域内计数事件)对应的数据块描述信息( 注意该事件暂时不支持单独使用，仅配合“开放智能事件(EVENT_IVS_OPEN_INTELLI)”使用)
    /// The data block description information corresponding to the event type EVENT_IVS_REGIONNUM_STAT (Regionnum stat) (note that this event does not support separate use, only used with "Open Intelligent Event (EVENT_IVS_OPEN_INTELLI)")
    /// </summary>
    public struct NET_DEV_EVENT_REGIONNUM_STAT_INFO
    {
        /// <summary>
        /// 通道号
        /// channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// 0: pulse, 1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 扩展协议字段
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 事件发生的时间
        /// the time the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// The class to which the smart event belongs
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// 相对事件时间戳,(单位是毫秒)
        /// relative event timestamp, (unit is milliseconds)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件时间毫秒数
        /// event time in milliseconds
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// 智能事件规则编号
        /// Smart event rule number, used to mark which rule triggered the event
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// 区域ID
        /// area ID
        /// </summary>
        public uint nAreaID;
        /// <summary>
        /// 绊线方向
        /// Direction
        /// </summary>
        public EM_STAT_DIRECTION emDirection;
        /// <summary>
        /// 目标绊线总数
        /// Number
        /// </summary>
        public int nNumber;
        /// <summary>
        /// 详细计数信息个数
        /// Detailed information count
        /// </summary>
        public int nStatDetailNum;
        /// <summary>
        /// 详细计数信息
        /// Detailed information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_STAT_DETAIL[] stuStatDetail;
        /// <summary>
        /// 预留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 姿态类型
    /// Attitude Type
    /// </summary>
    public enum EM_A_NET_EM_ATTITUDE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        NET_EM_ATTITUDE_TYPE_UNKNOWN,
        /// <summary>
        /// 单手递接
        /// OneHand
        /// </summary>
        NET_EM_ATTITUDE_TYPE_ONE_HAND,
        /// <summary>
        /// 叉腰
        /// Akimbo
        /// </summary>
        NET_EM_ATTITUDE_TYPE_AKIMBO,
        /// <summary>
        /// 双手抱头
        /// HandSonHead
        /// </summary>
        NET_EM_ATTITUDE_TYPE_HAND_SON_HEAD,
        /// <summary>
        /// 双手抱胸
        /// HandSonChest
        /// </summary>
        NET_EM_ATTITUDE_TYPE_HAND_SON_CHEST,
        /// <summary>
        /// 撞墙
        /// HitWall
        /// </summary>
        NET_EM_ATTITUDE_TYPE_HIT_WALL,
        /// <summary>
        /// 弯腰
        /// Bend
        /// </summary>
        NET_EM_ATTITUDE_TYPE_BEND,
        /// <summary>
        /// 坐状态
        /// Sitting
        /// </summary>
        NET_EM_ATTITUDE_TYPE_SITTING,
        /// <summary>
        /// 站状态
        /// Standing
        /// </summary>
        NET_EM_ATTITUDE_TYPE_STANDING,
        /// <summary>
        /// 坐下
        /// SitDown
        /// </summary>
        NET_EM_ATTITUDE_TYPE_SIT_DOWN,
        /// <summary>
        /// 起立
        /// StandUp
        /// </summary>
        NET_EM_ATTITUDE_TYPE_STAND_UP,
        /// <summary>
        /// 趴桌子
        /// OnTable
        /// </summary>
        NET_EM_ATTITUDE_TYPE_ON_TABLE,
        /// <summary>
        /// 回头
        /// LookBack
        /// </summary>
        NET_EM_ATTITUDE_TYPE_LOOK_BACK,
        /// <summary>
        /// 传递
        /// Delivery
        /// </summary>
        NET_EM_ATTITUDE_TYPE_DELIVERY,
        /// <summary>
        /// 东张西望
        /// GazeAround
        /// </summary>
        NET_EM_ATTITUDE_TYPE_GAZE_AROUND,
        /// <summary>
        /// 手放桌下偷看
        /// HandDownPeep
        /// </summary>
        NET_EM_ATTITUDE_TYPE_HAND_DOWN_PEEP,
        /// <summary>
        /// 捡东西
        /// PickUp
        /// </summary>
        NET_EM_ATTITUDE_TYPE_PICK_UP,
        /// <summary>
        /// 举手
        /// HandUp
        /// </summary>
        NET_EM_ATTITUDE_TYPE_HAND_UP,
        /// <summary>
        /// 书写
        /// Write
        /// </summary>
        NET_EM_ATTITUDE_TYPE_WRITE,
        /// <summary>
        /// 挥手
        /// WaveHand
        /// </summary>
        NET_EM_ATTITUDE_TYPE_WAVE_HAND,
        /// <summary>
        /// OK手势
        /// HandPoseOk
        /// </summary>
        NET_EM_ATTITUDE_TYPE_HAND_POSE_OK,
        /// <summary>
        /// 比耶手势
        /// Victory
        /// </summary>
        NET_EM_ATTITUDE_TYPE_VICTORY,
        /// <summary>
        /// 点赞手势
        /// Good
        /// </summary>
        NET_EM_ATTITUDE_TYPE_GOOD,
        /// <summary>
        /// 双手举过头顶(求救)
        /// Help
        /// </summary>
        NET_EM_ATTITUDE_TYPE_HELP,
        /// <summary>
        /// 触摸文物
        /// TouchCulturalRelic
        /// </summary>
        NET_EM_ATTITUDE_TYPE_TOUCH_CULTURAL_RELIC,

    }
    /// <summary>
    /// 事件类型EVENT_IVS_GENEAL_ATTITUDE (通用姿态行为事件)对应的数据块描述信息
    /// The description of the data block corresponding to the event type EVENT_IVS_GENEAL_ATTITUDE
    /// </summary>
    public struct NET_A_DEV_EVENT_GENEAL_ATTITUDE_INFO
    {
        /// <summary>
        /// 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// Action, 0:pulse,1:start, 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// UTC
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件ID
        /// EventID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 智能事件所属大类
        /// Class Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// 事件时间毫秒数
        /// UTCMS
        /// </summary>
        public int nUTCMS;
        /// <summary>
        /// 检测目标的物体个数
        /// Object Count
        /// </summary>
        public int nObjectCount;
        /// <summary>
        /// 检测目标的物体信息
        /// Objects Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 全景广角图
        /// Scene Image
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 姿态类型
        /// Attitude Type
        /// </summary>
        public EM_A_NET_EM_ATTITUDE_TYPE emAttitudeType;
        /// <summary>
        /// 智能事件规则编号
        /// Rule ID
        /// </summary>
        public int nRuleID;
        /// <summary>
        /// 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 图片信息数组
        /// Picture information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// 保留字节,留待扩展
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016 - 8)]
        public sbyte[] szReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016 - 4)]
        public sbyte[] szReserved;
#endif
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_AUDIO_MUTATION (声强突变事件)对应的数据块描述信息
    /// Event type EVENT_IVS_AUDIO_MUTATION (Audio Mutation Event) corresponding data description information
    /// </summary>
    public struct NET_DEV_EVENT_AUDIO_MUTATION_INFO
    {
        /// <summary>
        /// 通道号
        /// channel number,start with 0
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// Action, 0:pulse, 1:start, 2:stop;
        /// </summary>
        public int nAction;
        /// <summary>
        /// 扩展协议字段
        /// Extended Protocol Fields
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 事件别名
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
        /// <summary>
        /// 开始时间
        /// Start Time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// 事件的确认ID
        /// Confirmation ID of the event
        /// </summary>
        public uint nACK;
        /// <summary>
        /// GroupID事件组ID
        /// Group ID
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// 相对事件时间戳,单位毫秒
        /// Relative event timestamp in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生时间
        /// Event occurrence time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件编号
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 声音类型
        /// Audio Type
        /// </summary>
        public EM_AUDIO_MUTATION_ALARM_TYPE emAudioType;
        /// <summary>
        /// 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 过滤条件，筛选出符合条件的人员
    /// Filters the conditions and selects the personnel that meet the conditions
    /// </summary>
    public struct NET_DELETE_FILTER_CONDITION
    {
        /// <summary>
        /// 性别
        /// Gender
        /// </summary>
        public EM_SEX_TYPE emSex;
        /// <summary>
        /// 建模状态
        /// Modeling state
        /// </summary>
        public EM_PERSON_FEATURE_STATE emFeatureState;
        /// <summary>
        /// 姓名条件
        /// Name condition
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 证件类型
        /// Document type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCertificateType;
        /// <summary>
        /// 人员证件编号
        /// Personnel ID number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szID;
        /// <summary>
        /// 国籍, 符合ISO3166规范
        /// Nationality, in accordance with ISO3166
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szCountry;
        /// <summary>
        /// 保留字段
        /// Reserve the field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_DeletePersonByCondition 接口入参
    /// CLIENT_DeletePersonByCondition Indicates incoming interface parameters
    /// </summary>
    public struct NET_IN_DELETE_PERSON_BY_CONDITION_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 过滤条件，筛选出符合条件的人员
        /// Filter the conditions and select the qualified personnel
        /// </summary>
        public NET_DELETE_FILTER_CONDITION stuFilterCondition;
        /// <summary>
        /// 人员组ID
        /// Personnel group ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupID;
        /// <summary>
        /// 人员唯一标识符列表，对指定人员不进行删除
        /// List of unique identifiers for a person. The specified person is not deleted
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024 * 32)]
        public string szUID;
        /// <summary>
        /// 人员唯一标识符列表个数
        /// Number of personnel unique identifiers list
        /// </summary>
        public int nUIDNum;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_DeletePersonByCondition 接口出参
    /// CLIENT_DeletePersonByCondition Indicates an outgoing interface
    /// </summary>
    public struct NET_OUT_DELETE_PERSON_BY_CONDITION_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_TRAFFIC_PARKING_BACKING (出入口倒车驶离事件)对应的数据块描述信息
    /// The description of the data block corresponding to the event type EVENT_IVS_TRAFFIC_PARKING_BACKING
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_PARKING_BACKING_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲
        /// 0: pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (unit is milliseconds)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// Time when the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// nGroupID事件组ID,同一物体抓拍过程内nGroupID相同
        /// Event Group ID
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// nCountInGroup一个事件组内的抓拍张数
        /// The count of snap in a event group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// IndexInGroup一个事件组内的抓拍序号
        /// The index of snap in a event group
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// 车牌信息
        /// The information of plate
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// 车身信息
        /// The information of vehicle
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// TriggerType:触发类型,0车检器,1雷达,2视频
        /// Trigger type: 0-Car inspection device,1-Dadar,2-Video
        /// </summary>
        public EM_TRIGGER_TYPE emTriggerType;
        /// <summary>
        /// 底层产生的触发抓拍帧标记
        /// Mark capture frame
        /// </summary>
        public int nMark;
        /// <summary>
        /// 视频分析帧序号
        /// Video analysis frame No
        /// </summary>
        public int nFrameSequence;
        /// <summary>
        /// 对应车道号
        /// Lane ID
        /// </summary>
        public int nLane;
        /// <summary>
        /// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// Snap sequence,like 3,2,1. 1 means snap end,0 means error
        /// </summary>
        public int nSequence;
        /// <summary>
        /// 车速，单位km/h
        /// Vehicle speed(Unit: km / h)
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// 交通车辆信息
        /// The information of Traffic car
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;
        /// <summary>
        /// 公共信息
        /// The information of Common
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// 保留字节,留待扩展
        /// Reserved bytes, reserved for expansion
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }
    /// <summary>
    /// 订阅类型
    /// Subscrbie info
    /// </summary>
    public enum EM_ATTACH_TOPICS
    {
        /// <summary>
        /// "*" 表示订阅所有属性和事件
        /// "*" all
        /// </summary>
        EM_ATTACH_TOPICS_ALL,
        /// <summary>
        /// "Props" 表示订阅设备属性上报
        /// "Props" Properties
        /// </summary>
        EM_ATTACH_TOPICS_PROPS,
        /// <summary>
        /// "Events" 标识订阅设备事件上报
        /// "Events" Events
        /// </summary>
        EM_ATTACH_TOPICS_EVENTS,
    }

    /// <summary>
    /// 属性值类型
    /// Properties value type
    /// </summary>
    public enum EM_PROPERTIES_VALUE_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_PROPERTIES_VALUE_UNKNOWN,
        /// <summary>
        /// int类型,1,100,1000
        /// int,1,100,1000
        /// </summary>
        EM_PROPERTIES_VALUE_INT,
        /// <summary>
        /// bool类型,true,false
        /// bool,true,false
        /// </summary>
        EM_PROPERTIES_VALUE_BOOL,
        /// <summary>
        /// string类型,"1","100","1000"
        /// string,"1","100","1000"
        /// </summary>
        EM_PROPERTIES_VALUE_STRING,
        /// <summary>
        /// int数组类型,"[1,2,3]"
        /// int+array,"[1,2,3]"
        /// </summary>
        EM_PROPERTIES_VALUE_INTARRAY,
    }

    /// <summary>
    /// int+Array值
    /// int+Array
    /// </summary>
    public struct NET_PROPERTIES_INTARRAY_VALUE
    {
        /// <summary>
        /// Value：1,2,3
        /// Value:1,2,3
        /// </summary>
        public int nValue;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReserved;
    }

    /// <summary>
    /// 物模型属性信息
    /// Properties info
    /// </summary>
    public struct NET_CB_THINGS_PROPER_INFO
    {
        /// <summary>
        /// DQZT、FHZYY、Action等
        /// DQZT,FHZYY,Action etc.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szKey;
        /// <summary>
        /// 1,true,"normal"等
        /// "1","true","normal" etc.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szValue;
        /// <summary>
        /// szValue对应的类型；有int,bool,string类型
        /// szValue type(int,bool,string)
        /// </summary>
        public EM_PROPERTIES_VALUE_TYPE emValueType;
        /// <summary>
        /// stuIntArrayValue实际个数
        /// stuIntArrayValue count
        /// </summary>
        public int nIntArrayValueNum;
        /// <summary>
        /// int+Array值，当emValueType为EM_PROPERTIES_VALUE_INTARRAY
        /// int+Array,when emValueType = EM_PROPERTIES_VALUE_INTARRAY
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_PROPERTIES_INTARRAY_VALUE[] stuIntArrayValue;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 物模型属性订阅回调信息
    /// fThingsCallBack param
    /// </summary>
    public struct NET_CB_THINGS_INFO
    {
        /// <summary>
        /// 订阅类型
        /// Subscrbie info
        /// </summary>
        public EM_ATTACH_TOPICS emTopics;
        /// <summary>
        /// sid
        /// sid
        /// </summary>
        public int nSID;
        /// <summary>
        /// 产品ID，全网唯一
        /// Product ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID，产品下唯一
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// 当Topics为events时，必须携带, 具体内容由物模型定义决定
        /// When Topics is events, Required
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szEventID;
        /// <summary>
        /// 事件触发时间
        /// event time
        /// </summary>
        public NET_TIME_EX stuEventTime;
        /// <summary>
        /// 物模型属性信息或事件参数数组, 内存由sdk 内部申请和释放
        /// Properties info, memoryis applied by sdk internally, released by sdk intenally
        /// </summary>
        public IntPtr pstuProperInfo;
        /// <summary>
        /// 实际返回的物模型属性信息数量, 即pstuProperInfo 数组中有效的元素个数
        /// pstuProperInfo actual quantity, search to get
        /// </summary>
        public uint nRetProperInfoNum;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserve;
    }

    /// <summary>
    /// CLIENT_AttachThingsInfo接口输入参数
    /// CLIENT_AttachThingsInfo input param
    /// </summary>
    public struct NET_IN_THINGS_ATTACH
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 订阅类型
        /// Subscrbie info
        /// </summary>
        public EM_ATTACH_TOPICS emTopics;
        /// <summary>
        /// 产品ID，全网唯一
        /// Product ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID，产品下唯一
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
        /// <summary>
        /// 物模型属性信息回调
        /// state callback function pointer
        /// </summary>
        public fThingsCallBack cbThingsInfo;
        /// <summary>
        /// 用户数据
        /// user data
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// CLIENT_AttachThingsInfo接口输出参数
    /// CLIENT_AttachThingsInfo output param
    /// </summary>
    public struct NET_OUT_THINGS_ATTACH
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_GetThingsDevList接口输入参数
    /// CLIENT_GetThingsDevList input param
    /// </summary>
    public struct NET_IN_THINGS_GET_DEVLIST
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 设备列表
    /// device list
    /// </summary>
    public struct NET_THINGS_DEVLIST_INFO
    {
        /// <summary>
        /// "1","2"等
        /// "1","2" etc.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDevID;
        /// <summary>
        /// "001","002"等
        /// "001","002" etc.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDevClass;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetThingsDevList接口输出参数
    /// CLIENT_GetThingsDevList output param
    /// </summary>
    public struct NET_OUT_THINGS_GET_DEVLIST
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 用户分配的pstuDevListInfo个数
        /// pstuDevListInfo max quantity, user input
        /// </summary>
        public int nMaxDevListCount;
        /// <summary>
        /// 实际返回的pstuDevListInfo个数
        /// pstuDevListInfo actual quantity, search to get
        /// </summary>
        public int nRetDevListCount;
        /// <summary>
        /// 设备列表信息，用户分配内存,大小为sizeof(NET_THINGS_DEVLIST_INFO)*nMaxDevListCount
        /// device list info,the space application by the user, applt to (NET_THINGS_DEVLIST_INFO)*nMaxDevListCount
        /// </summary>
        public IntPtr pstuDevListInfo;
    }

    /// <summary>
    /// CLIENT_GetThingsCaps接口输入参数
    /// CLIENT_GetThingsCaps input param
    /// </summary>
    public struct NET_IN_THINGS_GET_CAPS
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 设备ID，产品下唯一
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
    }

    /// <summary>
    /// 物模型标识
    /// Properties name
    /// </summary>
    public struct NET_PROPERTIES_NAME
    {
        /// <summary>
        /// "*","BJPZ_DDBJLDMS"、"SBJCXX_CPLX"、"SBJCXX_SBLX"等
        /// "*","BJPZ_DDBJLDMS", "SBJCXX_CPLX", "SBJCXX_SBLX"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPropertiesName;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetThingsCaps接口输出参数
    /// CLIENT_GetThingsCaps output param
    /// </summary>
    public struct NET_OUT_THINGS_GET_CAPS
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 用户分配的pstuGetCapsProperName个数
        /// pstuGetCapsProperName pstuGetOutProperInfo max quantity, user input
        /// </summary>
        public int nMaxProperCount;
        /// <summary>
        /// 实际返回的pstuGetCapsProperName个数
        /// pstuGetCapsProperName actual quantity, search to get
        /// </summary>
        public int nRetProperCount;
        /// <summary>
        /// 物模型标识符，用户分配内存,大小为sizeof(NET_PROPERTIES_NAME)*nMaxProperCount
        /// Properties name, the space application by the user, applt to (NET_PROPERTIES_NAME)*nMaxProperCount
        /// </summary>
        public IntPtr pstuGetCapsProperName;
    }

    /// <summary>
    /// CLIENT_GetThingsConfig 接口输入参数
    /// CLIENT_GetThingsConfig input param
    /// </summary>
    public struct NET_IN_THINGS_GET
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 产品ID，全网唯一
        /// Product ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID，产品下唯一
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// pstuGetInProperName个数
        /// number of pstuGetInProperName
        /// </summary>
        public int nProperCount;
        /// <summary>
        /// 物模型标志，需要查询的物模型标志名称
        /// 用户分配内存,大小为sizeof(NET_PROPERTIES_NAME)*nPropertiesCount
        /// Properties name
        /// the space application by the user, applt to sizeof(NET_PROPERTIES_NAME)*nPropertiesCount
        /// </summary>
        public IntPtr pstuGetInProperName;
    }

    /// <summary>
    /// 属性值信息
    /// Properties info
    /// </summary>
    public struct NET_PROPERTIES_INFO
    {
        /// <summary>
        /// BJPZ_DDBJLDMS、SBJCXX_CPLX、SBJCXX_SBLX等
        /// BJPZ_DDBJLDMS, SBJCXX_CPLX, SBJCXX_SBLX
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szKey;
        /// <summary>
        /// 1,true,"normal"等
        /// 1,true,"normal"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szValue;
        /// <summary>
        /// szValue对应的类型；有int,bool,string类型
        /// szValue type(int,bool,string)
        /// </summary>
        public EM_PROPERTIES_VALUE_TYPE emValueType;
        /// <summary>
        /// stuIntArrayValue实际个数
        /// stuIntArrayValue actual quantity
        /// </summary>
        public int nIntArrayValueNum;
        /// <summary>
        /// int+Array值，当emValueType为EM_PROPERTIES_VALUE_INTARRAY
        /// int+Array,when emValueType = EM_PROPERTIES_VALUE_INTARRAY
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_PROPERTIES_INTARRAY_VALUE[] stuIntArrayValue;
        /// <summary>
        /// 预留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetThingsConfig 接口输出参数
    /// CLIENT_GetThingsConfig output param
    /// </summary>
    public struct NET_OUT_THINGS_GET
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 产品ID，全网唯一
        /// Product ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID，产品下唯一
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// 实际返回的pstuGetOutProperInfo个数
        /// pstuGetOutProperInfo actual quantity, search to get
        /// </summary>
        public int nRetPropertiesCount;
        /// <summary>
        /// 用户分配的pstuGetOutProperInfo个数
        /// pstuGetOutProperInfo max quantity, user input
        /// </summary>
        public int nMaxPropertiesCount;
        /// <summary>
        /// 属性值，具体内容由物模型协议决定, Key，Value，ValueType均有效
        /// 用户分配内存,大小为sizeof(NET_PROPERTIES_INFO)*nMaxPropertiesCount
        /// Properties info
        /// the space application by the user, applt to (NET_PROPERTIES_INFO)*nMaxPropertiesCount
        /// </summary>
        public IntPtr pstuGetOutProperInfo;
    }

    /// <summary>
    /// CLIENT_SetThingsConfig 接口输入参数
    /// CLIENT_SetThingsConfig input param
    /// </summary>
    public struct NET_IN_THINGS_SET
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 产品ID，全网唯一
        /// Product ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID，产品下唯一
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// pstuSetInProperInfo个数
        /// number of pstuSetInProperInfo
        /// </summary>
        public int nProperCount;
        /// <summary>
        /// 属性值，具体内容由物模型协议决定, Key，Value，ValueType均需要填写
        /// 用户分配内存,大小为sizeof(NET_PROPERTIES_INFO)*nPropertiesCount
        /// Properties info
        /// the space application by the user, applt to (NET_PROPERTIES_INFO)*nPropertiesCount
        /// </summary>
        public IntPtr pstuSetInProperInfo;
    }

    /// <summary>
    /// CLIENT_SetThingsConfig 接口输出参数
    /// CLIENT_SetThingsConfig output param
    /// </summary>
    public struct NET_OUT_THINGS_SET
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 连接远程设备协议
    /// Connect remote device protocol
    /// </summary>
    public enum EM_REMOTE_DEV_PROTOCOL_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_REMOTE_DEV_PROTOCOL_TYPE_UNKNOWN,
        EM_REMOTE_DEV_PROTOCOL_TYPE_DAHUA,
        /// <summary>
        /// Onvif接入设备
        /// Onvif access device
        /// </summary>
        EM_REMOTE_DEV_PROTOCOL_TYPE_ONVIF,
    }

    /// <summary>
    /// 远程通道信息
    /// Remote channel information
    /// </summary>
    public struct NET_REMOTE_UPGRADE_CHNL_INFO
    {
        /// <summary>
        /// 远程通道号
        /// Channel Id
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// 远程设备ID, RemoteDevice 配置
        /// Remote Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceID;
        /// <summary>
        /// 连接远程设备协议
        /// Connect remote device protocol
        /// </summary>
        public EM_REMOTE_DEV_PROTOCOL_TYPE emProtocolType;
        /// <summary>
        /// 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 380)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 远程升级回调类型
    /// RemoteUpgrade callback type
    /// </summary>
    public enum EM_REMOTE_UPGRADE_CB_TYPE
    {
        /// <summary>
        /// 推送回调 nParam1 文件总大小 nParam2 已发送大小
        /// appending callback nParam1:total file size, nParam2:send file size
        /// </summary>
        EM_REMOTE_UPGRADE_CB_TYPE_APPENDING,
        /// <summary>
        /// 完成回调 nParam1 错误码
        /// execute callback nParam1 result of execute
        /// </summary>
        EM_REMOTE_UPGRADE_CB_TYPE_EXECUTE,
        /// <summary>
        /// 失败回调 nParam1 错误码
        /// failed callback nParam1 error code
        /// </summary>
        EM_REMOTE_UPGRADE_CB_TYPE_FAILED,
        /// <summary>
        /// 用户取消
        /// cancel callback
        /// </summary>
        EM_REMOTE_UPGRADE_CB_TYPE_CANCEL,
    }

    /// <summary>
    /// CLIENT_StartRemoteUpgrade-输入参数
    /// CLIENT_StartRemoteUpgrade-input param
    /// </summary>
    public struct NET_IN_START_REMOTE_UPGRADE_INFO
    {
        /// <summary>
        /// 此结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 需要升级的远程通道个数
        /// The number of list
        /// </summary>
        public uint nListNum;
        /// <summary>
        /// 需要升级的远程通道信息
        /// The list of channel information which need to upgrade
        /// </summary>
        public IntPtr pstuList;
        /// <summary>
        /// 字节对齐
        /// Reserved
        /// </summary>
        public IntPtr pReserved;
        /// <summary>
        /// 升级文件名称
        /// The file path name of upgrade
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFileName;
        /// <summary>
        /// 升级进度回调函数
        /// The callback of remote upgrade
        /// </summary>
        public fRemoteUpgradeCallBack cbRemoteUpgrade;
        /// <summary>
        /// 用户数据
        /// User data
        /// </summary>
        public IntPtr dwUser;
        /// <summary>
        /// 每次分包发送大小，为0默认为16K
        /// The size of each packet sent, 0 defaults to 16K
        /// </summary>
        public uint nPacketSize;
    }

    /// <summary>
    /// CLIENT_StartRemoteUpgrade-输出参数
    /// CLIENT_StartRemoteUpgrade-output param
    /// </summary>
    public struct NET_OUT_START_REMOTE_UPGRADE_INFO
    {
        /// <summary>
        /// 此结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 物模型服务类型
    /// Service type
    /// </summary>
    public enum EM_THINGS_SERVICE_TYPE
    {
        /// <summary>
        /// 阀门控制,入参:NET_IN_THINGS_SERVICE_VALVECONTROL,出参:NET_OUT_THINGS_SERVICE_VALVECONTROL
        /// valvecontrol,input:NET_IN_THINGS_SERVICE_VALVECONTROL,output:NET_OUT_THINGS_SERVICE_VALVECONTROL
        /// </summary>
        EM_THINGS_SERVICE_TYPE_VALVECONTROL,
        /// <summary>
        /// 电量清零,入参:NET_IN_THINGS_SERVICE_CHARGECLEAR,出参:NET_OUT_THINGS_SERVICE_CHARGECLEAR
        /// chargeClear,input:NET_IN_THINGS_SERVICE_CHARGECLEAR,output:NET_OUT_THINGS_SERVICE_CHARGECLEAR
        /// </summary>
        EM_THINGS_SERVICE_TYPE_CHARGECLEAR,
        /// <summary>
        /// 漏电自检,入参:NET_IN_THINGS_SERVICE_LEAKCURTPOST,出参:NET_OUT_THINGS_SERVICE_LEAKCURTPOST
        /// leakCurtPost,input:NET_IN_THINGS_SERVICE_LEAKCURTPOST,output:NET_OUT_THINGS_SERVICE_LEAKCURTPOST
        /// </summary>
        EM_THINGS_SERVICE_TYPE_LEAKCURTPOST,
        /// <summary>
        /// 漏电自检异步,入参:NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC,出参:NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC
        /// leakCurtPostAsync,input:NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC,output:NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC
        /// </summary>
        EM_THINGS_SERVICE_TYPE_LEAKCURTPOSTASYNC,
        /// <summary>
        /// 空开红蓝灯闪烁(寻找空开),入参:NET_IN_THINGS_SERVICE_AIRSWITHFIND,出参:NET_OUT_THINGS_SERVICE_AIRSWITHFIND
        /// airswithFind,input:NET_IN_THINGS_SERVICE_AIRSWITHFIND,output:NET_OUT_THINGS_SERVICE_AIRSWITHFIND
        /// </summary>
        EM_THINGS_SERVICE_TYPE_AIRSWITHFIND,
        /// <summary>
        /// 空开恢复出厂设置,入参:NET_IN_THINGS_SERVICE_AIRSWITHRESET,出参:NET_OUT_THINGS_SERVICE_AIRSWITHRESET
        /// airswithReset,input:NET_IN_THINGS_SERVICE_AIRSWITHRESET,output:NET_OUT_THINGS_SERVICE_AIRSWITHRESET
        /// </summary>
        EM_THINGS_SERVICE_TYPE_AIRSWITHRESET,
        /// <summary>
        /// 添加联动规则,入参:NET_IN_THINGS_SERVICE_ADDRULE,出参:NET_OUT_THINGS_SERVICE_ADDRULE
        /// addRule,input:NET_IN_THINGS_SERVICE_ADDRULE,output:NET_OUT_THINGS_SERVICE_ADDRULE
        /// </summary>
        EM_THINGS_SERVICE_TYPE_ADDRULE,
        /// <summary>
        /// 删除联动规则,入参:NET_IN_THINGS_SERVICE_DELRULE,出参:NET_OUT_THINGS_SERVICE_DELRULE
        /// delRule,input:NET_IN_THINGS_SERVICE_DELRULE,output:NET_OUT_THINGS_SERVICE_DELRULE
        /// </summary>
        EM_THINGS_SERVICE_TYPE_DELRULE,
        /// <summary>
        /// 修改联动规则,入参:NET_IN_THINGS_SERVICE_MODRULE,出参:NET_OUT_THINGS_SERVICE_MODRULE
        /// modRule,input:NET_IN_THINGS_SERVICE_MODRULE,output:NET_OUT_THINGS_SERVICE_MODRULE
        /// </summary>
        EM_THINGS_SERVICE_TYPE_MODRULE,
        /// <summary>
        /// 查询联动规则,入参:NET_IN_THINGS_SERVICE_QUERULE,出参:NET_OUT_THINGS_SERVICE_QUERULE
        /// queRule,input:NET_IN_THINGS_SERVICE_QUERULE,output:NET_OUT_THINGS_SERVICE_QUERULE
        /// </summary>
        EM_THINGS_SERVICE_TYPE_QUERULE,
        /// <summary>
        /// 使能联动规则,入参:NET_IN_THINGS_SERVICE_ENABLE,出参:NET_OUT_THINGS_SERVICE_ENABLE
        /// enableRule,input:NET_IN_THINGS_SERVICE_ENABLE,output:NET_OUT_THINGS_SERVICE_ENABLE
        /// </summary>
        EM_THINGS_SERVICE_TYPE_ENABLERULE,
        /// <summary>
        /// 添加设备,入参:NET_IN_THINGS_SERVICE_ADDDEVICE,出参:NET_OUT_THINGS_SERVICE_ADDDEVICE
        /// addDevice,input:NET_IN_THINGS_SERVICE_ADDDEVICE,output:NET_OUT_THINGS_SERVICE_ADDDEVICE
        /// </summary>
        EM_THINGS_SERVICE_TYPE_ADDDEVICE,
        /// <summary>
        /// 删除子设备,入参:NET_IN_THINGS_SERVICE_DELDEVICE,出参:NET_OUT_THINGS_SERVICE_DELDEVICE
        /// delDevice,input:NET_IN_THINGS_SERVICE_DELDEVICE,output:NET_OUT_THINGS_SERVICE_DELDEVICE
        /// </summary>
        EM_THINGS_SERVICE_TYPE_DELDEVICE,
        /// <summary>
        /// 子设备替换,入参:NET_IN_THINGS_SERVICE_DEVREPLACE,出参:NET_OUT_THINGS_SERVICE_DEVREPLACE
        /// devReplace,input:NET_IN_THINGS_SERVICE_DEVREPLACE,output:NET_OUT_THINGS_SERVICE_DEVREPLACE
        /// </summary>
        EM_THINGS_SERVICE_TYPE_DEVREPLACE,
        /// <summary>
        /// 离线日志清除,入参:NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN,出参:NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN
        /// offlinelogClean,input:NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN,output:NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN
        /// </summary>
        EM_THINGS_SERVICE_TYPE_OFFLINELOGCLEAN,
        /// <summary>
        /// 获取所有空开当前报警状态,入参:NET_IN_THINGS_SERVICE_CURRENTSTATUSGET,出参:NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET
        /// currentstatusGet,input:NET_IN_THINGS_SERVICE_CURRENTSTATUSGET,output:NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET
        /// </summary>
        EM_THINGS_SERVICE_TYPE_CURRENTSTATUSGET,
    }

    /// <summary>
    /// 场景规则类型
    /// rule type
    /// </summary>
    public enum EM_THINGS_RULECONTENT_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_THINGS_RULECONTENT_TYPE_UNKNOWN,
        /// <summary>
        /// IFTTT类型
        /// IFTTT
        /// </summary>
        EM_THINGS_RULECONTENT_TYPE_IFTTT,
    }

    /// <summary>
    /// 场景的触发类型
    /// Trigger type
    /// </summary>
    public enum EM_THINGS_TRIGGER_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_THINGS_TRIGGER_TYPE_UNKNOWN,
        /// <summary>
        /// "trigger/timer" 定时触发，对应结构体NET_THINGS_RULECONTENT_TRIGGER_TIMER
        /// "trigger/timer", Corresponding to NET_THINGS_RULECONTENT_TRIGGER_TIMER
        /// </summary>
        EM_THINGS_TRIGGER_TYPE_TRIGGER_TIMER,
        /// <summary>
        /// "trigger/device/property" 设备属性触发，对应结构体NET_THINGS_RULECONTENT_TRIGGER_PROPERTY
        /// "trigger/device/property", Corresponding to NET_THINGS_RULECONTENT_TRIGGER_PROPERTY
        /// </summary>
        EM_THINGS_TRIGGER_TYPE_TRIGGER_PROPERTY,
    }

    /// <summary>
    /// 定时触发类型Cron内容
    /// Cron information
    /// </summary>
    public struct NET_THINGS_TRIGGER_TIMER_CORN
    {
        /// <summary>
        /// 秒，值：0~59的整数以及特殊4个字符, - * /
        /// Seconds: 0 ~ 59 integers and special 4 characters(, - * /)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szSeconds;
        /// <summary>
        /// 分，值：0~59的整数以及特殊4个字符, - * /
        /// Minutes: 0 ~ 59 integers and special 4 characters(, - * /)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szMinutes;
        /// <summary>
        /// 时，值：0~23的整数以及特殊4个字符, - * /
        /// Hours: 0 ~ 23 integers and special 4 characters(, - * /)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szHours;
        /// <summary>
        /// 日期，值：1~31的整数（但是你需要考虑你月的天数）以及特殊8个字符, - * ? / L W C
        /// Day of Month: Integer from 1 to 31 (but you need to consider the number of days in your month) and special 8 characters(, - * ? / L W C)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szDayofMonth;
        /// <summary>
        /// 月份，值：1~12的整数或者 JAN-DEC以及特殊4个字符, - * /
        /// Month: 1 ~ 12 integers or Jan-Dec and special 4 characters(, - * /)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szMonth;
        /// <summary>
        /// 星期，值：1~7的整数或者 SUN-SAT以及特殊8个字符, - * ? / L W C
        /// Day of Week: 1 ~ 7 integer or sun-sat and special 8 characters(, - * ? / L W C)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szDayofWeek;
        /// <summary>
        /// 年，值：1970~2099的整数以及特殊4个字符, - * /
        /// Year: 1970 ~ 2099 integers and special 4 characters(, - * /)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szYear;
        /// <summary>
        /// 保留字节
        /// reserve
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserve;
    }

    /// <summary>
    /// 定时触发类型内容表达式类型
    /// Timing trigger type content expression type
    /// </summary>
    public enum EM_THINGS_TRIGGER_TIMER_CORN_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_THINGS_TRIGGER_TIMER_CORN_TYPE_UNKNOWN,
        /// <summary>
        /// "quartz_cron" 表达式结构：$second $minute $hour $dayofmonth $month $dayofweek $year
        /// "quartz_cron":$second $minute $hour $dayofmonth $month $dayofweek $year
        /// </summary>
        EM_THINGS_TRIGGER_TIMER_CORN_TYPE_QUARTZCORN,
        /// <summary>
        /// "linux" 表达式结构：$minute $hour $day of month $month $dayofweek
        /// "linux":$minute $hour $day of month $month $dayofweek
        /// </summary>
        EM_THINGS_TRIGGER_TIMER_CORN_TYPE_LINUX,
    }

    /// <summary>
    /// 定时触发类型内容(对应EM_THINGS_TRIGGER_TYPE_TRIGGER_TIMER)
    /// Timing trigger type content(Corresponding to EM_THINGS_TRIGGER_TYPE_TRIGGER_TIMER)
    /// </summary>
    public struct NET_THINGS_RULECONTENT_TRIGGER_TIMER
    {
        /// <summary>
        /// Cron时间格式
        /// Cron Time format
        /// </summary>
        public NET_THINGS_TRIGGER_TIMER_CORN stuCron;
        /// <summary>
        /// Corn表达式类
        /// Corn Expression format
        /// </summary>
        public EM_THINGS_TRIGGER_TIMER_CORN_TYPE emCronType;
        /// <summary>
        /// 时区，示例：Asia/Shanghai
        /// Timezone:Asia/Shanghai
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szTimezoneID;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserve;
    }

    /// <summary>
    /// 设备属性触发类型内容(对应EM_THINGS_TRIGGER_TYPE_TRIGGER_PROPERTY)
    /// Device attribute trigger type content(Corresponding to EM_THINGS_TRIGGER_TYPE_TRIGGER_PROPERTY)
    /// </summary>
    public struct NET_THINGS_RULECONTENT_TRIGGER_PROPERTY
    {
        /// <summary>
        /// 设备类型
        /// ProductId
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductId;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDeviceName;
        /// <summary>
        /// 属性名称
        /// PropertyName
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPropertyName;
        /// <summary>
        /// 对比格式：< ==等
        /// CompareType:< == etc.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szCompareType;
        /// <summary>
        /// 对比值
        /// CompareValue
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCompareValue;
        /// <summary>
        /// 对比值类型
        /// CompareValue type
        /// </summary>
        public EM_PROPERTIES_VALUE_TYPE emCompareValueType;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserve;
    }

    /// <summary>
    /// 场景的触发器
    /// Trigger of scene
    /// </summary>
    public struct NET_THINGS_SERVICE_RULECONTENT_TRIGGER
    {
        /// <summary>
        /// 场景的触发类型,见EM_THINGS_TRIGGER_TYPE
        /// Trigger Uri(Corresponding to EM_THINGS_TRIGGER_TYPE)
        /// </summary>
        public EM_THINGS_TRIGGER_TYPE emUri;
        /// <summary>
        /// 定时触发，emUri为EM_THINGS_TRIGGER_TYPE_TRIGGER_TIMER有效
        /// Trigger Timer, when emUri = EM_THINGS_TRIGGER_TYPE_TRIGGER_TIMER
        /// </summary>
        public NET_THINGS_RULECONTENT_TRIGGER_TIMER stuTriggerTimer;
        /// <summary>
        /// 设备属性触发，emUri为EM_THINGS_TRIGGER_TYPE_TRIGGER_PROPERTY有效
        /// Trigger Property, when emUri = EM_THINGS_TRIGGER_TYPE_TRIGGER_PROPERTY
        /// </summary>
        public NET_THINGS_RULECONTENT_TRIGGER_PROPERTY stuTriggerProperty;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserve;
    }

    /// <summary>
    /// 场景触发执行动作类型
    /// trigger action type
    /// </summary>
    public enum EM_THINGS_ACTION_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_THINGS_ACTION_TYPE_UNKNOWN,
        /// <summary>
        /// "action/device/setProperty" 设置设备属性，对应结构体NET_THINGS_RULECONTENT_ACTION_SETPROPERTY
        /// "action/device/setProperty", Corresponding to NET_THINGS_RULECONTENT_ACTION_SETPROPERTY
        /// </summary>
        EM_THINGS_ACTION_TYPE_SETPROPERTY,
    }

    /// <summary>
    /// 设置设备属性类型内容(对应EM_THINGS_ACTION_TYPE_SETPROPERTY)
    /// Set device attribute type content(Corresponding to EM_THINGS_ACTION_TYPE_SETPROPERTY)
    /// </summary>
    public struct NET_THINGS_RULECONTENT_ACTION_SETPROPERTY
    {
        /// <summary>
        /// 设备类型
        /// Product Id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductId;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDeviceName;
        /// <summary>
        /// 属性名称
        /// Property Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPropertyName;
        /// <summary>
        /// 属性值
        /// Property Value
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPropertyValue;
        /// <summary>
        /// 属性值类型
        /// Property Value type
        /// </summary>
        public EM_PROPERTIES_VALUE_TYPE emPropertyValueType;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserve;
    }

    /// <summary>
    /// 场景触发执行动作
    /// trigger execution action
    /// </summary>
    public struct NET_THINGS_SERVICE_RULECONTENT_ACTION
    {
        /// <summary>
        /// 场景触发执行动作类型,见EM_THINGS_ACTION_TYPE
        /// action type(EM_THINGS_ACTION_TYPE)
        /// </summary>
        public EM_THINGS_ACTION_TYPE emActionUri;
        /// <summary>
        /// 设置设备属性，emUri为EM_THINGS_ACTION_TYPE_SETPROPERTY有效
        /// Action Property, when emUri = EM_THINGS_ACTION_TYPE_SETPROPERTY
        /// </summary>
        public NET_THINGS_RULECONTENT_ACTION_SETPROPERTY stuActionSetProperty;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserve;
    }

    /// <summary>
    /// 场景触发过滤条件类型
    /// trigger filter condition type
    /// </summary>
    public enum EM_THINGS_CONDITION_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_THINGS_CONDITION_TYPE_UNKNOWN,
        /// <summary>
        /// "condition/timeRange" 比较当前时间是否在一个区间内，对应结构体
        /// "condition/timeRange", Corresponding to NET_THINGS_RULECONTENT_CONDITION_TIMER
        /// </summary>
        EM_THINGS_CONDITION_TYPE_TIMERANGE,
        /// <summary>
        /// "condition/device/property" 设备属性过滤，对应结构体
        /// "condition/device/property", Corresponding to NET_THINGS_RULECONTENT_CONDITION_PROPERTY
        /// </summary>
        EM_THINGS_CONDITION_TYPE_PROPERTY,
    }

    /// <summary>
    /// 设备属性过滤内容(对应EM_THINGS_CONDITION_TYPE_PROPERTY)
    /// Device attribute filter content(Corresponding to EM_THINGS_CONDITION_TYPE_PROPERTY)
    /// </summary>
    public struct NET_THINGS_RULECONTENT_CONDITION_PROPERTY
    {
        /// <summary>
        /// 设备类型
        /// Product Id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductId;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDeviceName;
        /// <summary>
        /// 属性名称
        /// Property Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPropertyName;
        /// <summary>
        /// 对比格式：< ==等
        /// Compare Type: < == etc.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szCompareType;
        /// <summary>
        /// 对比值
        /// CompareValue
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCompareValue;
        /// <summary>
        /// 对比值类型
        /// CompareValue type
        /// </summary>
        public EM_PROPERTIES_VALUE_TYPE emCompareValueType;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserve;
    }

    /// <summary>
    /// 场景触发过滤条件
    /// trigger filter condition
    /// </summary>
    public struct NET_THINGS_SERVICE_RULECONTENT_CONDITION
    {
        /// <summary>
        /// 场景触发过滤条件类型,见EM_THINGS_CONDITION_TYPE
        /// trigger filter condition type(Corresponding to EM_THINGS_CONDITION_TYPE)
        /// </summary>
        public EM_THINGS_CONDITION_TYPE emConditionUri;
        /// <summary>
        /// 比较当前时间是否在一个区间内，emConditionUri为EM_THINGS_CONDITION_TYPE_TIMERANGE有效
        /// Compare whether the current time is within an interval(emConditionUri = EM_THINGS_CONDITION_TYPE_TIMERANGE)
        /// </summary>
        public NET_THINGS_RULECONTENT_TRIGGER_TIMER stuTriggerTimer;
        /// <summary>
        /// 设置设备属性，emConditionUri为EM_THINGS_CONDITION_TYPE_PROPERTY有效
        /// Set device properties(emConditionUri = EM_THINGS_CONDITION_TYPE_PROPERTY)
        /// </summary>
        public NET_THINGS_RULECONTENT_CONDITION_PROPERTY stuConditionProperty;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserve;
    }

    /// <summary>
    /// 联动规则
    /// Rule Content
    /// </summary>
    public struct NET_THINGS_SERVICE_RULECONTENT
    {
        /// <summary>
        /// 场景规则类型
        /// rule type
        /// </summary>
        public EM_THINGS_RULECONTENT_TYPE emRuleContentType;
        /// <summary>
        /// 场景触发个数
        /// number of pstuTrigger
        /// </summary>
        public int nTriggerNum;
        /// <summary>
        /// 场景的触发器，用户分配内存,大小为nTriggerNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_TRIGGER)
        /// Trigger of scene, the space application by the user, applt to nTriggerNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_TRIGGER)
        /// </summary>
        public IntPtr pstuTrigger;
        /// <summary>
        /// 场景触发执行动作，用户分配内存,大小为nActionNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_ACTION)
        /// trigger execution action, the space application by the user, applt to nActionNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_ACTION)
        /// </summary>
        public IntPtr pstuAction;
        /// <summary>
        /// 场景触发执行动作个数
        /// number of pstuAction
        /// </summary>
        public int nActionNum;
        /// <summary>
        /// 场景触发过滤条件个数
        /// number of pstuCondition
        /// </summary>
        public int nConditionNum;
        /// <summary>
        /// 场景触发过滤条件，用户分配内存,大小为nConditionNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_CONDITION)
        /// trigger filter condition, the space application by the user, applt to nConditionNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_CONDITION)
        /// </summary>
        public IntPtr pstuCondition;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserve;
    }

    /// <summary>
    /// 添加联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_ADDRULE)
    /// addRule input param(Corresponding to EM_THINGS_SERVICE_TYPE_ADDRULE)
    /// </summary>
    public struct NET_IN_THINGS_SERVICE_ADDRULE
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 产品ID，全网唯一
        /// Product ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
        /// <summary>
        /// 类型名称“timer”、“alarm”
        /// Class Name:, timer, , , alarm,
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szClassName;
        /// <summary>
        /// 联动规则内容
        /// Rule Content
        /// </summary>
        public NET_THINGS_SERVICE_RULECONTENT stuRuleContent;
    }

    /// <summary>
    /// 添加联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_ADDRULE)
    /// addRule output param(Corresponding to EM_THINGS_SERVICE_TYPE_ADDRULE)
    /// </summary>
    public struct NET_OUT_THINGS_SERVICE_ADDRULE
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 物模型协议错误码定义
        /// error code
        /// </summary>
        public int nErrcode;
        /// <summary>
        /// 产品ID
        /// ProductID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
        /// <summary>
        /// 规则ID
        /// Rule ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szRuleID;
    }

    /// <summary>
    /// 删除联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_DELRULE)
    /// delRule input param(Corresponding to EM_THINGS_SERVICE_TYPE_DELRULE)
    /// </summary>
    public struct NET_IN_THINGS_SERVICE_DELRULE
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 产品ID，全网唯一
        /// Product ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
        /// <summary>
        /// 规则ID
        /// Rule ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szRuleID;
        /// <summary>
        /// 类型名称“timer”、“alarm”
        /// Class Name:"timer","alarm"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szClassName;
    }

    /// <summary>
    /// 删除联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_DELRULE)
    /// delRule output param(Corresponding to EM_THINGS_SERVICE_TYPE_DELRULE)
    /// </summary>
    public struct NET_OUT_THINGS_SERVICE_DELRULE
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 物模型协议错误码定义
        /// error code
        /// </summary>
        public int nErrcode;
        /// <summary>
        /// 产品ID
        /// ProductID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
    }

    /// <summary>
    /// 修改联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_MODRULE)
    /// modRule input param(Corresponding to EM_THINGS_SERVICE_TYPE_MODRULE)
    /// </summary>
    public struct NET_IN_THINGS_SERVICE_MODRULE
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 产品ID，全网唯一
        /// Product ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
        /// <summary>
        /// 规则ID
        /// Rule ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szRuleID;
        /// <summary>
        /// 类型名称“timer”、“alarm”
        /// Class Name:"timer","alarm"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szClassName;
        /// <summary>
        /// 规则内容类型"Action"
        /// Rule Content Type:"Action"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szRuleContentType;
        /// <summary>
        /// 联动规则内容
        /// Rule Content
        /// </summary>
        public NET_THINGS_SERVICE_RULECONTENT stuRuleContent;
    }

    /// <summary>
    /// 修改联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_MODRULE)
    /// modRule output param(Corresponding to EM_THINGS_SERVICE_TYPE_MODRULE)
    /// </summary>
    public struct NET_OUT_THINGS_SERVICE_MODRULE
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 物模型协议错误码定义
        /// error code
        /// </summary>
        public int nErrcode;
        /// <summary>
        /// 产品ID
        /// ProductID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
    }

    /// <summary>
    /// 查询联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_QUERULE)
    /// queRule input param(Corresponding to EM_THINGS_SERVICE_TYPE_QUERULE)
    /// </summary>
    public struct NET_IN_THINGS_SERVICE_QUERULE
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 产品ID，全网唯一
        /// Product ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
        /// <summary>
        /// 每一页的数据大小
        /// Data size per page
        /// </summary>
        public int nPageSize;
        /// <summary>
        /// 按页查询
        /// page
        /// </summary>
        public int nPage;
        /// <summary>
        /// 类型名称“timer”、“alarm”
        /// Class Name:"timer","alarm"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szClassName;
    }

    /// <summary>
    /// 联动规则
    /// Rule Content
    /// </summary>
    public struct NET_THINGS_SERVICE_QUERULE_RULECONTENT
    {
        /// <summary>
        /// 场景规则类型
        /// rule type
        /// </summary>
        public EM_THINGS_RULECONTENT_TYPE emRuleContentType;
        /// <summary>
        /// 用户分配的pstuTrigger个数
        /// pstuTrigger max quantity, user input
        /// </summary>
        public int nMaxTriggerNum;
        /// <summary>
        /// 实际返回的pstuTrigger个数
        /// pstuTrigger actual quantity, search to get
        /// </summary>
        public int nRetTriggerNum;
        /// <summary>
        /// 场景的触发器，用户分配内存,大小为nMaxTriggerNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_TRIGGER)
        /// Trigger, the space application by the user, applt to nMaxTriggerNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_TRIGGER)
        /// </summary>
        public IntPtr pstuTrigger;
        /// <summary>
        /// 用户分配的pstuAction个数
        /// pstuAction max quantity, user input
        /// </summary>
        public int nMaxActionNum;
        /// <summary>
        /// 实际返回的pstuAction个数
        /// pstuAction actual quantity, search to get
        /// </summary>
        public int nRetActionNum;
        /// <summary>
        /// 场景触发执行动作，用户分配内存,大小为nMaxActionNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_ACTION)
        /// Action, the space application by the user, applt to nMaxActionNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_ACTION)
        /// </summary>
        public IntPtr pstuAction;
        /// <summary>
        /// 用户分配的pstuCondition个数
        /// pstuCondition max quantity, user input
        /// </summary>
        public int nMaxConditionNum;
        /// <summary>
        /// 实际返回的pstuCondition个数
        /// pstuCondition actual quantity, search to get
        /// </summary>
        public int nRetConditionNum;
        /// <summary>
        /// 场景触发过滤条件，用户分配内存,大小为nMaxConditionNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_CONDITION)
        /// Condition, the space application by the user, applt to nMaxConditionNum * sizeof(NET_THINGS_SERVICE_RULECONTENT_CONDITION)
        /// </summary>
        public IntPtr pstuCondition;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserve;
    }

    /// <summary>
    /// 规则详情
    /// Rule details
    /// </summary>
    public struct NET_THINGS_SERVICE_QUERULE_RULES
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 使能
        /// enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 规则ID
        /// Rule ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szRuleID;
        /// <summary>
        /// 联动规则内容
        /// Rule Content
        /// </summary>
        public NET_THINGS_SERVICE_QUERULE_RULECONTENT stuRuleContent;
    }

    /// <summary>
    /// 查询联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_QUERULE)
    /// queRule output param(Corresponding to EM_THINGS_SERVICE_TYPE_QUERULE)
    /// </summary>
    public struct NET_OUT_THINGS_SERVICE_QUERULE
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 物模型协议错误码定义
        /// error code
        /// </summary>
        public int nErrcode;
        /// <summary>
        /// 产品ID
        /// ProductID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
        /// <summary>
        /// 页个数
        /// Number of pages
        /// </summary>
        public int nPageCount;
        /// <summary>
        /// 每一页的数据大小
        /// Data size per page
        /// </summary>
        public int nPageSize;
        /// <summary>
        /// 总数
        /// total
        /// </summary>
        public int nTotal;
        /// <summary>
        /// 按页查询
        /// Page
        /// </summary>
        public int nPage;
        /// <summary>
        /// 实际返回的pstuRules个数
        /// pstuRules actual quantity, search to get
        /// </summary>
        public int nRetRulesNum;
        /// <summary>
        /// 用户分配的pstuRules个数
        /// pstuRules max quantity, user input
        /// </summary>
        public int nMaxRulesNum;
        /// <summary>
        /// 规则详情，用户分配内存,大小为 nMaxRulesNum * sizeof(NET_THINGS_SERVICE_QUERULE_RULES)
        /// Rule details, the space application by the user, applt to nMaxRulesNum * sizeof(NET_THINGS_SERVICE_QUERULE_RULES)
        /// </summary>
        public IntPtr pstuRules;
    }

    /// <summary>
    /// 使能联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_ENABLERULE)
    /// enableRule input param(Corresponding to EM_THINGS_SERVICE_TYPE_ENABLERULE)
    /// </summary>
    public struct NET_IN_THINGS_SERVICE_ENABLE
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 产品ID，全网唯一
        /// Product ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
        /// <summary>
        /// 使能
        /// enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 规则ID
        /// Rule ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szRuleID;
        /// <summary>
        /// 类型名称“timer”、“alarm”
        /// Class Name, timer, alarm,
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szClassName;
    }

    /// <summary>
    /// 使能联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_ENABLERULE)
    /// enableRule output param(Corresponding to EM_THINGS_SERVICE_TYPE_ENABLERULE)
    /// </summary>
    public struct NET_OUT_THINGS_SERVICE_ENABLE
    {
        /// <summary>
        /// 结构体大小, 调用者必须初始化该字段
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 物模型协议错误码定义
        /// error code
        /// </summary>
        public int nErrcode;
        /// <summary>
        /// 产品ID
        /// ProductID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProductID;
        /// <summary>
        /// 设备ID
        /// Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceID;
    }

    /// <summary>
    /// CLIENT_RadiometryGetRandomRegionTemper 入参
    /// CLIENT_RadiometryGetRandomRegionTemper input parameter
    /// </summary>
    public struct NET_IN_RADIOMETRY_RANDOM_REGION_TEMPER
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 通道号
        /// channel number
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 有效坐标个数
        /// Point Count
        /// </summary>
        public int nPointNum;
        /// <summary>
        /// 测温区域的坐标, 8192坐标系
        /// The coordinates of the Temperature Monitoring area, 8192 coordinate system
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_POINT[] stuPolygon;
    }

    /// <summary>
    /// 随机测温区域的温度信息
    /// Temperature information of the Temperature Monitoring area
    /// </summary>
    public struct NET_RADIOMETRY_REGION_TEMP_INFO
    {
        /// <summary>
        /// 温度单位
        /// Temperature Unit
        /// </summary>
        public EM_TEMPERATURE_UNIT emTemperatureUnit;
        /// <summary>
        /// 获取测温区域平均温度的参数值,精度为0.01,扩大100倍
        /// The average temperature of the Temperature Monitoring area, the accuracy is 0.01, and the expansion is 100 times
        /// </summary>
        public int nTemperAver;
        /// <summary>
        /// 获取测温区域最高的温度的参数值,精度为0.01,扩大100倍
        /// The maximum temperature in the Temperature Monitoring area, with an accuracy of 0.01, which is enlarged by 100 times
        /// </summary>
        public int nTemperMax;
        /// <summary>
        /// 获取测温区域最低的温度的参数值,精度为0.01,扩大100倍
        /// The minimum temperature in the Temperature Monitoring area, with an accuracy of 0.01, which is expanded by 100 times
        /// </summary>
        public int nTemperMin;
        /// <summary>
        /// 随机区域内最高的温度的点的坐标,8192坐标系
        /// The coordinates of the point of maximum temperature in the area, 8192 coordinate system
        /// </summary>
        public NET_POINT stuTemperMaxPoint;
        /// <summary>
        /// 随机区域内最低的温度的点的坐标,8192坐标系
        /// The coordinates of the point with the lowest temperature in the area, 8192 coordinate system
        /// </summary>
        public NET_POINT stuTemperMinPoint;
        /// <summary>
        /// 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_RadiometryGetRandomRegionTemper 出参
    /// CLIENT_RadiometryGetRandomRegionTemper output parameter
    /// </summary>
    public struct NET_OUT_RADIOMETRY_RANDOM_REGION_TEMPER
    {
        /// <summary>
        /// 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 随机测温区域的温度信息
        /// Temperature information of the Temperature Monitoring area
        /// </summary>
        public NET_RADIOMETRY_REGION_TEMP_INFO stuRegionTempInfo;
    }

    /// <summary>
    /// 重置镜头电机的结果
    /// The result of resetting the lens motor
    /// </summary>
    public enum EM_RESET_RESULT
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_RESET_RESULT_UNKNOW,
        /// <summary>
        /// 重置成功
        /// Reset successful
        /// </summary>
        EM_RESET_RESULT_SUCCESS,
        /// <summary>
        /// 重置失败
        /// Reset failed
        /// </summary>
        EM_RESET_RESULT_FAILED,
    }

    /// <summary>
    /// 镜头聚焦状态信息
    /// cap focus info
    /// </summary>
    public struct NET_A_CFG_CAP_FOCUS_STATUS
    {
        /// <summary>
        /// 当前AF峰值 辅助聚焦模式下有效
        /// peak crrent AF, auxiliary focus on effective
        /// </summary>
        public int nAutofocusPeak;
        /// <summary>
        /// 聚焦位置 归一化到0~1
        /// focus position,normalized to 0~1
        /// </summary>
        public double dFocus;
        /// <summary>
        /// 放大倍数 归一化到0~1
        /// magnification,normalized to 0~1
        /// </summary>
        public double dZoom;
        /// <summary>
        /// 聚焦状态, 0 正常状态 1 正在自动聚焦
        /// focus status, 0 able 1 is af
        /// </summary>
        public int nStatus;
        /// <summary>
        /// 变倍电机总步长，对采用步进电机的设备有效
        /// Multiplying the total step size of the motor is effective for devices using stepper motors
        /// </summary>
        public uint nZoomMotorSteps;
        /// <summary>
        /// 聚焦电机总步长，对采用步进电机的设备有效
        /// Focusing on the total step size of the motor, effective for devices using stepper motors
        /// </summary>
        public uint nFocusMotorSteps;
        /// <summary>
        /// 重置镜头电机的结果，只在重置操作时有效
        /// The result of resetting the lens motor is only valid during the reset operation
        /// </summary>
        public EM_RESET_RESULT emResetResult;
        /// <summary>
        /// 聚焦模式: 1 混合，即普通聚焦, 2 人脸，即景深聚焦：针对人脸, 无此字段为普通聚焦
        /// Focusing mode: 1 mixed, i.e. normal focusing, 2 faces, i.e. depth of field focusing: for faces, without this field, it is normal focusing
        /// </summary>
        public uint nFocusMode;
        /// <summary>
        /// 预留字节
        /// Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 温度单位
    /// temperature unit
    /// </summary>
    public enum EM_A_NET_TEMPERATURE_UNIT
    {
        NET_TEMPERATURE_UNIT_UNKNOWN,
        /// <summary>
        /// 摄氏度
        /// Centigrade
        /// </summary>
        NET_TEMPERATURE_UNIT_CENTIGRADE,
        /// <summary>
        /// 华氏度
        /// Fahrenheit
        /// </summary>
        NET_TEMPERATURE_UNIT_FAHRENHEIT,
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_HOTSPOT_WARNING (热点异常报警事件) 对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_DEPOSIT_DETECTION
    /// </summary>
    public struct NET_A_DEV_EVENT_HOTSPOT_WARNING_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// 0:Pulse 1:Start 2:Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件对应文件信息
        /// Event corresponding to file information
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 热点的坐标,坐标值 0~8191
        /// Hot spot coordinate,Range: range: [0,8191]
        /// </summary>
        public NET_POINT stuPoint;
        /// <summary>
        /// 热点温度值
        /// Spot temprature
        /// </summary>
        public float fHotSpotValue;
        /// <summary>
        /// 温度单位(当前配置的温度单位)
        /// Temperature unit
        /// </summary>
        public EM_A_NET_TEMPERATURE_UNIT nTemperatureUnit;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_HEAT_IMAGING_TEMPER对应的数据描述信息
    /// event type EVENT_IVS_HEAT_IMAGING_TEMPER corresponding to data block description info
    /// </summary>
    public struct NET_A_DEV_EVENT_HEAT_IMAGING_TEMPER_INFO
    {
        /// <summary>
        /// 温度异常点名称 从测温规则配置项中选择
        /// temperature abnormal spot name, select from the Temperature Monitoring rule config
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 报警项编号
        /// alarm number
        /// </summary>
        public int nAlarmId;
        /// <summary>
        /// 报警结果值 fTemperatureValue 的类型
        /// alarm result value nValue type
        /// </summary>
        public NET_RADIOMETRY_RESULT emResult;
        /// <summary>
        /// 报警条件
        /// alarm condition
        /// </summary>
        public NET_RADIOMETRY_ALARMCONTION emAlarmContion;
        /// <summary>
        /// 报警温度值
        /// alarm temperature value
        /// </summary>
        public float fTemperatureValue;
        /// <summary>
        /// 温度单位(当前配置的温度单位)
        /// temperature unit (currently configured temperature unit)
        /// </summary>
        public EM_A_NET_TEMPERATURE_UNIT emTemperatureUnit;
        /// <summary>
        /// 报警点的坐标 相对坐标体系,取值均为0~8191
        /// alarm spot coordinate, relative coordinate system, value is range: [0,8191]
        /// </summary>
        public NET_POINT stCoordinate;
        /// <summary>
        /// 预置点
        /// preset
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 通道号
        /// channel number
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// 0:脉冲 1:开始 2:停止
        /// Event action, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 报警坐标, 其类型可以是点，线或多边形。替换stCoordinate字段
        /// alarm coordinates, the type is spot or line or polygon. replace stCoordinate field
        /// </summary>
        public NET_POLY_POINTS stuAlarmCoordinates;
        /// <summary>
        /// szNameEx 是否有效，为TRUE时，使用szNameEx字段
        /// Whether szNameEx is valid. If TRUE, the szNameEx field is used
        /// </summary>
        public bool bUseNameEx;
        /// <summary>
        /// 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string reserved1;
        /// <summary>
        /// 温度异常点名称扩展
        /// temperature abnormal spot name extensions
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szNameEx;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 报警阈值温度/温度斜率
        /// alarm threshold temperature/temperature slope
        /// </summary>
        public float fThreshold;
        /// <summary>
        /// 温度斜率周期
        /// temperature slope period
        /// </summary>
        public int nSlopePeriod;
        /// <summary>
        /// 温度斜率突变值
        /// abrupt change in temperature slope
        /// </summary>
        public float fSlopeMutation;
        /// <summary>
        /// 本地通道号
        /// Local channelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 预置点名称
        /// / Name of preset point
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// / 测温报警编号，从1开始加的（每发生一次事件+1），根据这个编号来判断是否丢失事件
        /// / Temperature alarm number, added from 1
        /// </summary>
        public int nSequenceNum;
        /// <summary>
        /// / 字节对齐
        /// / byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szResvered1;
        /// <summary>
        /// / 报警最高温度值
        /// / Alarm maximum temperature value
        /// </summary>
        public float fMaxValue;
        /// <summary>
        /// / 报警最低温度值
        /// / Alarm minimum temperature value
        /// </summary>
        public float fMinValue;
        /// <summary>
        /// / 最高温坐标点，相对坐标系，范围[0,8191]
        /// / Maximum temperature coordinate point, relative coordinate system, range [0,8191]
        /// </summary>
        public NET_POINT_EX2 stHotPoint;
        /// <summary>
        /// / 最低温坐标点，相对坐标系，范围[0,8191]
        /// / Lowest temperature coordinate point, relative coordinate system, range [0,8191]
        /// </summary>
        public NET_POINT_EX2 stColdPoint;
        /// <summary>
        /// / 设备本地时间
        /// / Device local time
        /// </summary>
        public NET_TIME stuLocaleTime;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 748)]
        public string reserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_MULTI_MAN_NUM_DETECTION (讯问会见室人数报警事件)对应的数据块描述信息
    /// Event type EVENT_IVS_MULTI_MAN_NUM_DETECTION Specifies the data block description corresponding to the number of interrogation room alarm event
    /// </summary>
    public struct NET_DEV_EVENT_MULTI_MAN_NUM_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// 0: pulse,1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 扩展协议字段
        /// Extended protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// Intelligent events belong to a category
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// 相对事件时间戳,(单位是毫秒)
        /// Relative event timestamp, in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件发生的时间
        /// The time of the event
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 实际有效目标检测信息个数
        /// Number of actual effective target detection information
        /// </summary>
        public int nObjectsRealNum;
        /// <summary>
        /// 检测目标的物体信息
        /// Detect the object information of the target
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// 检测区域信息
        /// Detection Region information
        /// </summary>
        public IntPtr pstuDetectRegionInfo;
        /// <summary>
        /// 检测区域信息个数
        /// Number of detection region info
        /// </summary>
        public int nDetectRegionInfoCount;
        /// <summary>
        /// 预留字节
        /// The reserved bytes
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020 - 8)]
        public sbyte[] szReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020 - 4)]
        public sbyte[] szReserved;
#endif
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_VIDEOABNORMALDETECTION(视频异常事件)对应的数据块描述信息
    /// the describe of EVENT_IVS_VIDEOABNORMALDETECTION's data
    /// </summary>
    public struct NET_DEV_EVENT_VIDEOABNORMALDETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// 异常类型, 255-无意义（通常是设备了返回错误值）0-视频丢失, 1-视频冻结, 2-摄像头遮挡, 3-摄像头移动（场景变化）, 4-过暗, 5-过亮, 6-图像偏色, 7-噪声干扰
        /// 8-条纹检测 , 9-视频模糊检测 , 10-对比度异常检测 11-视频运动 , 12-视频闪烁 , 13-视频颜色 , 14-虚焦检测 , 15-过曝检测, 16-场景巨变 17-雪花噪声,18-无码流数据
        /// type, 0-video lost, 1-video freeze, 2-video blind, 3-camera moving, 4-too dark, 5-too light, 6-image unbalance, 7-Noise
        /// 8-Striation, 9-video blur detect, 10-constrast abnormal 11-video motion, 12-video flash , 13-video color , 14- UnFocus, 15-over expose, 16-Scene change, 17-SnowNoise,18-No stream data
        /// </summary>
        public byte bType;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
        public byte[] byReserved;
        /// <summary>
        /// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// 事件源设备上的index,-1表示数据无效
        /// the source device's index,-1 means data in invalid
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// the source device's sign(exclusive),field said local device does not exist or is empty
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// 事件触发累计次数
        /// event trigger accumilated times
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// 全景广角图信息
        /// Panoramic wide-angle image information
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// the number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved2;
    }

    public enum EM_OCR_DETECTION_DETECT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_OCR_DETECTION_DETECT_TYPE_UNKNOWN,
        /// <summary>
        /// 温度
        /// temperature
        /// </summary>
        EM_OCR_DETECTION_DETECT_TYPE_TEMPERATURE,
        /// <summary>
        /// 称重
        /// weigh
        /// </summary>
        EM_OCR_DETECTION_DETECT_TYPE_WEIGH,
    }

    /// <summary>
    /// 检测事件类型
    /// Detection event type
    /// </summary>
    public enum EM_OCR_DETECTION_TRIGGER_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknown
        /// </summary>
        EM_OCR_DETECTION_TRIGGER_TYPE_UNKNOWN = -1,
        /// <summary>
        /// 大于上限
        /// Greater than upper limit
        /// </summary>
        EM_OCR_DETECTION_TRIGGER_TYPE_GREATER_THAN_TOPLIMIT,
        /// <summary>
        /// 小于下限
        /// Less than lower limit
        /// </summary>
        EM_OCR_DETECTION_TRIGGER_TYPE_LESS_THAN_LOWERLIMIT,
        /// <summary>
        /// 等于阈值
        /// Equal to threshold
        /// </summary>
        EM_OCR_DETECTION_TRIGGER_TYPE_EQUAL_TO_THRESHOLD,
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_OCR_DETECTION (OCR检测事件)对应的数据块描述信息
    /// The description of the data block corresponding to the event type EVENT_IVS_OCR_DETECTION
    /// </summary>
    public struct NET_A_DEV_EVENT_OCR_DETECTION_INFO
    {
        /// <summary>
        /// 通道号
        /// Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 0:脉冲,1:开始, 2:停止
        /// Action, 0:pulse,1:start, 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// 事件名称
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 智能事件所属大类
        /// Category of intelligent events
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// 智能事件规则编号，用于标示哪个规则触发的事件
        /// Intelligent event rule number, used to indicate which rule triggers the event
        /// </summary>
        public uint nRuleId;
        /// <summary>
        /// GroupID事件组ID，同一物体抓拍过程内GroupID相同
        /// group ID, which is the same in the process of capturing the same object
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// CountInGroup一个事件组内的抓拍张数
        /// CountInGroup Number of snapshots in an event group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// IndexInGroup一个事件组内的抓拍序号，从1开始
        /// IndexInGroup Capture sequence number in an event group,Start with 1
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// 事件发生时间，带时区偏差的UTC时间，单位：秒
        /// Time of occurrence
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// 事件时间毫秒数
        /// Time of occurrence in milliseconds
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// 相对事件时间戳，单位毫秒
        /// Relative event timestamp in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// 事件编号，用来唯一标志一个事件
        /// Event ID,Used to uniquely mark an event
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// 事件触发的预置点号，从1开始 没有该字段，表示预置点未知
        /// Preset point number triggered by the event,Start with 1
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// 识别内容
        /// Identification content
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szContent;
        /// <summary>
        /// 检测类型
        /// Detection type
        /// </summary>
        public EM_OCR_DETECTION_DETECT_TYPE emDetectType;
        /// <summary>
        /// 检测事件类型
        /// Detection event type
        /// </summary>
        public EM_OCR_DETECTION_TRIGGER_TYPE emTriggerType;
        /// <summary>
        /// 全景广角图，仅IndexInData字段有效
        /// Panoramic wide-angle map
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// 图片信息个数
        /// Number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// 物体信息数
        /// Object num
        /// </summary>
        public uint nObjectNum;
        /// <summary>
        /// 物体信息数据
        /// Object info
        /// </summary>
        public IntPtr pstuObjectInfo;
        /// <summary>
        /// 预留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016 - 8)]
        public sbyte[] szReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1016 - 4)]
        public sbyte[] szReserved;
#endif
    }

    public struct NET_A_CFG_LIGHTATTRIBUTE_V2
    {
        /// <summary>
        /// 当前交通灯是否有效，与车辆通行无关的交通需要设置无效
        /// Instruct the current traffic light's effectiveness
        /// </summary>
        public bool bEnable;
        public int nTypeNum;
        /// <summary>
        /// 当前交通灯显现内容（包括:红-Red,黄-Yellow,绿-Green,倒计时-Countdown），如某交通灯可以显示红黄绿三种颜色，某交通灯只显示倒计时
        /// Current light display(include:Red,Yellow,Green,Countdown),for example some traffic light has red, yellow, green three color, and other only can only display countdown
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 128)]
        public string szLightType;
        public int nDirectionNum;
        /// <summary>
        /// 交通灯指示的行车方向,"Straight": 直行，"TurnLeft":左转，"TurnRight":右转，"U-Turn": 掉头
        /// The direction of traffic light display,"Straight","TurnLeft","TurnRight","U-Turn"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 128)]
        public string szDirection;
        /// <summary>
        /// 黄灯亮时间
        /// Yellow light on time
        /// </summary>
        public int nYellowTime;
        /// <summary>
        /// 该灯对应的外接网络红绿灯信号检测器上的端口
        /// Detector port
        /// </summary>
        public uint nDetectorPort;
        /// <summary>
        /// 信号灯主体类型
        /// Signal light body type
        /// </summary>
        public int nGroupType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szReserved;
    }

    /// <summary>
    /// 交通灯组配置信息 扩展
    /// Traffic light configuration extern
    /// </summary>
    public struct NET_A_CFG_LIGHTGROUPS_V2
    {
        /// <summary>
        /// 灯组编号
        /// Light group id
        /// </summary>
        public int nLightGroupId;
        /// <summary>
        /// 灯组坐标
        /// Light group location
        /// </summary>
        public NET_CFG_RECT stuLightLocation;
        /// <summary>
        /// 灯组的方向,1- 灯组水平向,2- 灯组垂直向
        /// Light group direction,1- horizontal,2- vertical
        /// </summary>
        public int nDirection;
        /// <summary>
        /// 是否为外接红绿灯信号,当外接红绿灯时，以外界信号为判断依据。外界信号每次跳变时通知
        /// Instruct whether circumscribe traffic light signal; when be true, it will be trigger rule while the signal changed
        /// </summary>
        public bool bExternalDetection;
        /// <summary>
        /// 是否支持自适应灯组摇摆检测,在风吹或者容易震动的场景下，位置会进行一定的浮动偏差。如果由算法自行检测，会增加检测时间
        /// Whether support self-adaptation light swing detect, when be in a sence that easy to swing, the light location will be lillte changed, it will cost a longer time that let the algorithm do the detect
        /// </summary>
        public bool bSwingDetection;
        /// <summary>
        /// 灯组中交通灯的数量
        /// The number of light in the group
        /// </summary>
        public int nLightNum;
        /// <summary>
        /// 灯组中各交通灯的属性
        /// Each light's attribute
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_A_CFG_LIGHTATTRIBUTE_V2[] stuLightAtrributes;
        /// <summary>
        /// 通行依据"RedOff": 红灯灭 "GreenOn":绿灯亮
        /// Basis of passage RedOff: Red light off; GreenOn: Green light on
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPassType;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// 视频分析全局配置
    /// Video analyse global configration
    /// </summary>
    public struct NET_A_CFG_ANALYSEGLOBAL_EX_INFO
    {
        /// <summary>
        /// 应用场景,详见"支持的场景列表"
        /// 交通场景信息
        /// Scene,see "supported scene list"
        /// Traffic scene info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSceneType;
        /// <summary>
        /// 摄像头离地高度 单位：米
        /// Camera height, meter
        /// </summary>
        public double CameraHeight;
        /// <summary>
        /// 摄像头离地面检测区域中心的水平距离 单位：米
        /// Camera distance, meter
        /// </summary>
        public double CameraDistance;
        /// <summary>
        /// 近景检测点
        /// Near Detect Points
        /// </summary>
        public NET_CFG_POLYGON stuNearDetectPoint;
        /// <summary>
        /// 远景检测点
        /// Far Dectect Points
        /// </summary>
        public NET_CFG_POLYGON stuFarDectectPoint;
        /// <summary>
        /// NearDetectPoint,转换到实际场景中时,离摄像头垂直线的水平距离
        /// The distance between NearDetectPoint and camera
        /// </summary>
        public int nNearDistance;
        /// <summary>
        /// FarDectectPoint,转换到实际场景中时,离摄像头垂直线的水平距离
        /// The distance between FarDectectPoint and camera
        /// </summary>
        public int nFarDistance;
        /// <summary>
        /// 交通场景的子类型,"Gate",卡口类型,"Junction" 路口类型,"ParkingSpace" 车位检测类型, "ParkingStatistics":车位统计类型
        /// Traffic sence's sub type, such as "Gate","Junction"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSubType;
        /// <summary>
        /// 车道数
        /// Road numberC
        /// </summary>
        public int nLaneNum;
        /// <summary>
        /// 车道信息
        /// Road info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CFG_LANE[] stuLanes;
        /// <summary>
        /// 车牌字符暗示个数
        /// Plant hints chars number
        /// </summary>
        public int nPlateHintNum;
        /// <summary>
        /// 车牌字符暗示数组，在拍摄图片质量较差车牌识别不确定时，根据此数组中的字符进行匹配，数组下标越小，匹配优先级越高
        /// Plant hints char info,when the pictrue was bad to recognize the plant,then it will use these hints for the plant,the litter index, the higher priority
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 128)]
        public string szPlateHints;
        /// <summary>
        /// 灯组数
        /// Light group number
        /// </summary>
        public int nLightGroupNum;
        /// <summary>
        /// 灯组配置信息
        /// Light group info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_CFG_LIGHTGROUPS[] stLightGroups;
        /// <summary>
        /// 是否识别挂字车牌
        /// whether recognize work plate
        /// </summary>
        public bool bHangingWordPlate;
        /// <summary>
        /// 是否识别非标准警牌
        /// whether recognize non-standard police plate
        /// </summary>
        public bool bNonStdPolicePlate;
        /// <summary>
        /// 是否识别黄牌字母
        /// whether recognize yellow plate letter
        /// </summary>
        public bool bYellowPlateLetter;
        /// <summary>
        /// 上报模式，0：未定义，1：上报所有违章车辆，2：上报车牌识别成功的违章车辆
        /// report mode, 0:undefined, 1:report all violation vehicles, 2: report plate successfully recognized violation vehicle
        /// </summary>
        public int nReportMode;
        /// <summary>
        /// 车牌匹配率，0~100，多次识别车牌使用,表示重复识别车牌和前一次识别车牌的一致性要求
        /// plate matching rate. 0~100, multi-recognition of plate use, means required identification of repeated plate recognition and previous plate recognition
        /// </summary>
        public int nPlateMatch;
        /// <summary>
        /// 违章判定依据，0：未定义，1：按车道，2：按行驶方向，3：按车道和行驶方向
        /// violation judgment basis, 0: undefined, 1: by lane, 2:by driving direction, 3: by lane and driving direction
        /// </summary>
        public int nJudgment;
        /// <summary>
        /// 左转弯分界线点数
        /// left turn boundary point
        /// </summary>
        public int nLeftDivisionPtCount;
        /// <summary>
        /// 左转弯分界线
        /// left turn boundary line
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stLeftDivisionLine;
        /// <summary>
        /// 右转弯分界线点数
        /// right turn boundary point
        /// </summary>
        public int nRightDivisionPtCount;
        /// <summary>
        /// 右转弯分界线
        /// right turn boundary line
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stRightDivisionLine;
        /// <summary>
        /// 交通灯颜色校正配置
        /// traffic light color correction config
        /// </summary>
        public NET_CFG_ADJUST_LIGHT_COLOR stAdjustLightColor;
        /// <summary>
        /// 车位数
        /// parking number
        /// </summary>
        public int nParkingSpaceNum;
        /// <summary>
        /// 车位配置信息,每个元素代表一个车位
        /// 一般场景信息
        /// parking config info, each element represents a parking
        /// norml scene info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_CFG_PARKING_SPACE[] stParkingSpaces;
        /// <summary>
        /// 标尺数
        /// Staff number
        /// </summary>
        public int nStaffNum;
        /// <summary>
        /// 标尺
        /// Staff
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_STAFF[] stuStaffs;
        /// <summary>
        /// 标定区域数
        /// Calibrate Area Number
        /// </summary>
        public uint nCalibrateAreaNum;
        /// <summary>
        /// 标定区域(若该字段不存在，则以整幅场景为标定区域)
        /// The calibrate area(if there is no calibrate area, then the whole sence will be the calibrate area)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEAREA_INFO[] stuCalibrateArea;
        /// <summary>
        /// 目标识别场景是否有效
        /// </summary>
        public bool bFaceRecognition;
        /// <summary>
        /// 目标识别场景
        /// Target recognition info
        /// </summary>
        public NET_CFG_FACERECOGNITION_SCENCE_INFO stuFaceRecognitionScene;
        public byte abJitter;
        public byte abDejitter;
        /// <summary>
        /// 保留字段
        /// Reserved field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// 摄像机抖动率 : 摄像机抖动率，取值0-100，反应静止摄像机抖动程度，抖动越厉害，值越大。
        /// Camera jitter frequency,0-100. It is to reflect camera's jitter level, more jitter, higher value
        /// </summary>
        public int nJitter;
        /// <summary>
        /// 是否开启去抖动模块 目前不实现
        /// Turn on dejitter module or not unrealistic for now
        /// </summary>
        public bool bDejitter;
        public bool abCompatibleMode;
        /// <summary>
        /// 0:"OldTrafficRule" : 交通老规则兼容模式;1:"NewTrafficRule" : 交通新规则兼容模式;-1:字符串错误
        /// 0:"OldTrafficRule" : Previous traffic rule compatible mode;1:"NewTrafficRule" : new traffic rule compatible mode:-1:string error
        /// </summary>
        public int nCompatibleMode;
        /// <summary>
        /// 实际数据长度，不能大于1024
        /// Real data length, less than 1024
        /// </summary>
        public int nCustomDataLen;
        /// <summary>
        /// 第三方自定义配置数据
        /// Config data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byCustomData;
        /// <summary>
        /// 摄像头与垂方向的夹角
        /// Camera angle
        /// </summary>
        public double CameraAngle;
        /// <summary>
        /// 地平线线段起始点(点的坐标坐标归一化到[0,8192)区间。)
        /// Start land line,in [0,8192)
        /// </summary>
        public NET_CFG_POLYGON stuLandLineStart;
        /// <summary>
        /// 地平线线段终止点(点的坐标坐标归一化到[0,8192)区间。)
        /// End land line,in [0,8192)
        /// </summary>
        public NET_CFG_POLYGON stuLandLineEnd;
        /// <summary>
        /// 目标检测场景是否有效
        /// Target detection efficiency or not
        /// </summary>
        public bool bFaceDetection;
        /// <summary>
        /// 目标检测场景
        /// Target detection scene
        /// </summary>
        public NET_CFG_FACEDETECTION_SCENCE_INFO stuFaceDetectionScene;
        /// <summary>
        /// 标定白天的时间段.(8,20),表示从8点到晚上20点为白天
        /// Calibrate Time of Day.(8,20),Indicate from 8am to 8pm is daytime
        /// </summary>
        public NET_CFG_TIME_PERIOD stuDayTimePeriod;
        /// <summary>
        /// 标定黑夜的时间段.(20,7)，表示从晚8点到凌晨7点为黑夜
        /// Calibrate Time of Night.(20,7), Indicate from 8 pm to 7am is night
        /// </summary>
        public NET_CFG_TIME_PERIOD stuNightTimePeriod;
        /// <summary>
        /// 多场景标定白天和黑夜时间段
        /// MultiScenario Calibrate Day and night time
        /// </summary>
        public NET_CFG_TIME_PERIOD_SCENE_INFO stuTimePeriodSceneInfo;
        /// <summary>
        /// 多场景标定区域配置信息
        /// MultiScenario Calibrate Area Configuration
        /// </summary>
        public NET_CFG_CALIBRATEAREA_SCENE_INFO stuCalibrateAreaSceneInfo;
        /// <summary>
        /// 昼夜算法切换模式,详见CFG_TIMEPERIOD_SWITCH_MODE
        /// Day and Night Algorithm Switching Mode,See CFG_TIMEPERIOD_SWITCH_MODE
        /// </summary>
        public EM_CFG_TIMEPERIOD_SWITCH_MODE emSwitchMode;
        /// <summary>
        /// 场景数, >0时表示支持多场景, stuMultiScene有效
        /// Scene Number, When >0 ,indicate that it support Mult-Scene, stuMultiScenario effective
        /// </summary>
        public int nSceneNum;
        /// <summary>
        /// 多场景配置
        /// MultiScenario Configuration
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_CFG_ANALYSEGLOBAL_SCENE[] stuMultiScene;
        /// <summary>
        /// 实际场景个数
        /// the count of scene
        /// </summary>
        public int nSceneCount;
        /// <summary>
        /// 场景列别，同一视频通道下启用多个场景时，表示第2个之后的方案(可选)
        /// the list of scene
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 16)]
        public string szSceneTypeList;
        /// <summary>
        /// 画面景深
        /// the depth of scene
        /// </summary>
        public EM_DEPTH_TYPE emDepthType;
        /// <summary>
        /// 云台预置点编号，0~255
        /// PTZ preset Id 0~255
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 经度 单位百万分之一度
        /// longitude company:one in a million
        /// </summary>
        public uint unLongitude;
        /// <summary>
        /// 纬度 单位百万分之一度
        /// dimension company:one in a million
        /// </summary>
        public uint unLatitude;
        /// <summary>
        /// szSceneTypeListEx 是否有效，当为TRUE时，使用 szSceneTypeListEx；否则使用 szSceneTypeList
        /// whether szSceneTypeListEx is valid: TRUE, use szSceneTypeListEx
        /// </summary>
        public bool bSceneTypeListEx;
        /// <summary>
        /// 实际场景个数扩展，szSceneTypeListEx 的有效个数
        /// the valid num of szSceneTypeListEx
        /// </summary>
        public int nSceneCountEx;
        /// <summary>
        /// 场景列表扩展，szSceneTypeList 扩展字段
        /// extend of szSceneTypeList
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32 * 128)]
        public string szSceneTypeListEx;
        /// <summary>
        /// 人体测温场景配置
        /// The scene of measure body temperature
        /// </summary>
        public NET_CFG_ANATOMYTEMP_SCENCE_INFO stuAnatomyTempScene;
        /// <summary>
        /// 规则相关检测区域信息
        /// Rule related detection area information
        /// </summary>
        public IntPtr pstuDetectRegionsInfo;
        /// <summary>
        /// 最大规则相关检测区域个数,内存由客户申请
        /// The maximum number of rule related detection areas, and the memory is requested by the customer
        /// </summary>
        public int nMaxDetectRegions;
        /// <summary>
        /// 规则相关检测区域信息个数
        /// Number of rule related detection area information
        /// </summary>
        public int nDetectRegionsNum;
        /// <summary>
        /// 驾驶辅助场景配置
        /// Driver assistance scene configuration
        /// </summary>
        public NET_CFG_DETAIL_DRIVEASSISTANT_INFO stuDriveAssistant;
        /// <summary>
        /// 车位变更使能 FALSE：不使能 TRUE:使能
        /// Parking space change enable false: not enable true: Enable
        /// </summary>
        public bool bParkingSpaceChangeEnable;
        /// <summary>
        /// szSceneType的枚举形式
        /// Enumeration form of szscenetype
        /// </summary>
        public EM_SCENE_TYPE emSceneType;
        /// <summary>
        /// SceneTypeList数量
        /// Number of SceneTypeList
        /// </summary>
        public int nSceneCountEm;
        /// <summary>
        /// szSceneTypeList的枚举形式
        /// Enumeration form of SceneTypeList
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_SCENE_TYPE[] emSceneTypeList;
        /// <summary>
        /// 车位统计场景配置信息, szSubType为ParkingStatistics时有效
        /// Parking statistics configuration, Valid when szSubType is ParkingStatistics
        /// </summary>
        public NET_A_CFG_PARKING_STATISTICS_INFO stuParkingStatistics;
        /// <summary>
        /// 车位数，为nParkingSpaceNum的扩展字段，后续使用此字段
        /// The number of cars is an extension field of nParkingSpaceNum, which will be used later
        /// </summary>
        public int nParkingSpaceNumEx;
        /// <summary>
        /// 车位配置信息,每个元素代表一个车位，为stParkingSpaces的扩展字段，后续使用此字段
        /// Parking space configuration information. Each element represents a parking space, which is an extension field of stParkingSpaces. This field will be used later
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_CFG_PARKING_SPACE[] stParkingSpacesEx;
        /// <summary>
        /// 灯组数 为nLightGroupNum的扩展字段，后续使用此字段
        /// An extension field with nLightGroupNum as the number of light groups, which will be used in the future
        /// </summary>
        public int nLightGroupNumEx;
        /// <summary>
        /// 灯组配置信息, 为stLightGroups的扩展字段，后续使用此字段
        /// The light group configuration information is an extension field of stLightGroups, which will be used in the future
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_A_CFG_LIGHTGROUPS_V2[] stLightGroupsEx;
        /// <summary>
        /// 外设抓拍物体匹配线
        /// Peripheral snap object matching line
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stuPositionMatchLine;
        /// <summary>
        /// 外设抓拍物体匹配线个数
        /// Number of matching lines for capturing objects with peripheral devices
        /// </summary>
        public int nPositionMatchLineNum;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szResvered;
    }

    /// <summary>
    /// 预览类型,对应CLIENT_RealPlayEx接口
    /// Preview type.Corresponding to CLIENT_RealPlayEx
    /// </summary>
    public enum EM_A_RealPlayType
    {
        /// <summary>
        /// 实时预览
        /// Real-time preview
        /// </summary>
        EM_A_RType_Realplay = 0,
        /// <summary>
        /// 多画面预览
        /// Multiple-channel preview
        /// </summary>
        EM_A_RType_Multiplay,
        /// <summary>
        /// 实时预览-主码流,等同于RType_Realplay
        /// Real-time monitor-main stream. It is the same as RType_Realplay
        /// </summary>
        EM_A_RType_Realplay_0,
        /// <summary>
        /// 实时预览-从码流1
        /// 1 Real-time monitor -- extra stream 1
        /// </summary>
        EM_A_RType_Realplay_1,
        /// <summary>
        /// 实时预览-从码流2
        /// 2 Real-time monitor -- extra stream 2
        /// </summary>
        EM_A_RType_Realplay_2,
        /// <summary>
        /// 实时预览-从码流3
        /// 3 Real-time monitor -- extra stream 3
        /// </summary>
        EM_A_RType_Realplay_3,
        /// <summary>
        /// 多画面预览－1画面
        /// Multiple-channel preview--1-window
        /// </summary>
        EM_A_RType_Multiplay_1,
        /// <summary>
        /// 多画面预览－4画面
        /// Multiple-channel preview--4-window
        /// </summary>
        EM_A_RType_Multiplay_4,
        /// <summary>
        /// 多画面预览－8画面
        /// Multiple-channel preview--8-window
        /// </summary>
        EM_A_RType_Multiplay_8,
        /// <summary>
        /// 多画面预览－9画面
        /// Multiple-channel preview--9-window
        /// </summary>
        EM_A_RType_Multiplay_9,
        /// <summary>
        /// 多画面预览－16画面
        /// Multiple-channel preview--16-window
        /// </summary>
        EM_A_RType_Multiplay_16,
        /// <summary>
        /// 多画面预览－6画面
        /// Multiple-channel preview--6-window
        /// </summary>
        EM_A_RType_Multiplay_6,
        /// <summary>
        /// 多画面预览－12画面
        /// Multiple-channel preview--12-window
        /// </summary>
        EM_A_RType_Multiplay_12,
        /// <summary>
        /// 多画面预览－25画面
        /// Multi-window tour--25-windows
        /// </summary>
        EM_A_RType_Multiplay_25,
        /// <summary>
        /// 多画面预览－36画面
        /// Multi-window preview--36-windows
        /// </summary>
        EM_A_RType_Multiplay_36,
        /// <summary>
        /// 多画面预览－64画面
        /// Multi-window preview--64-windows
        /// </summary>
        EM_A_RType_Multiplay_64,
        /// <summary>
        /// 不修改当前预览通道数
        /// Do not modify the current preview channel number
        /// </summary>
        EM_A_RType_Multiplay_255,
        /// <summary>
        /// 只拉音频, 非通用
        /// Only Audio, custom
        /// </summary>
        EM_A_RType_Realplay_Audio,
        /// <summary>
        /// 带宽测试码流
        /// test stream
        /// </summary>
        EM_A_RType_Realplay_Test = 255,
    }

    /// <summary>
    /// 算法方案
    /// Algorithm type
    /// </summary>
    public enum EM_AI_SOLUTION_ALGORITHM_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknow
        /// </summary>
        EM_AI_SOLUTION_ALGORITHM_TYPE_UNKNOWN = 0,
        /// <summary>
        /// 目标检测算法
        /// Target detection algorithm
        /// </summary>
        EM_AI_SOLUTION_ALGORITHM_TYPE_ODSOLUTION,
        /// <summary>
        /// 图像多属性分类算法
        /// Image multi attribute classification algorithm
        /// </summary>
        EM_AI_SOLUTION_ALGORITHM_TYPE_OCSOLUTION,
        /// <summary>
        /// 检测及多属性分类混合算法
        /// Hybrid algorithm for detection and multi attribute classification
        /// </summary>
        EM_AI_SOLUTION_ALGORITHM_TYPE_OD_OC_SOLUTION,
        /// <summary>
        /// 视频行为分析算法
        /// Video Behavior Analysis Algorithm
        /// </summary>
        EM_AI_SOLUTION_ALGORITHM_TYPE_BDSOLUTION,
        /// <summary>
        /// 图像文本识别算法
        /// Image text recognition algorithm
        /// </summary>
        EM_AI_SOLUTION_ALGORITHM_TYPE_OCRSOLUTION,
        /// <summary>
        /// 检索对比算法
        /// Search comparison algorithm
        /// </summary>
        EM_AI_SOLUTION_ALGORITHM_TYPE_IRSOLUTION,
    }

    /// <summary>
    /// 标签限制
    /// Label Restrictions
    /// </summary>
    public struct NET_LABEL_LIMIT_INFO
    {
        /// <summary>
        /// 第一级标签，训练的最小类别数量，-1表示不限制
        /// The first level label, the minimum number of categories for training, -1 represents unlimited
        /// </summary>
        public uint nMinNumMarkTypeLevel1;
        /// <summary>
        /// 第一级标签，训练的最大类别数量，-1表示不限制
        /// First level label, maximum number of categories trained, -1 indicates no limit
        /// </summary>
        public uint nMaxNumMarkTypeLevel1;
        /// <summary>
        /// 第二级标签，训练的最小类别数量，-1表示不限制
        /// The second level label, the minimum number of categories for training, -1 represents unlimited
        /// </summary>
        public uint nMinNumMarkTypeLevel2;
        /// <summary>
        /// 第二级标签，训练的最大类别数量，-1表示不限制
        /// The second level label, the maximum number of categories trained, -1 indicates no limit
        /// </summary>
        public uint nMaxNumMarkTypeLevel2;
        /// <summary>
        /// 第三级标签，训练的最小类别数量，-1表示不限制
        /// The third level label, the minimum number of categories for training, -1 represents unlimited
        /// </summary>
        public uint nMinNumMarkTypeLevel3;
        /// <summary>
        /// 第三级标签，训练的最大类别数量，-1表示不限制
        /// The third level label, the maximum number of categories for training, -1 represents unlimited
        /// </summary>
        public uint nMaxNumMarkTypeLevel3;
        /// <summary>
        /// 保留字节
        /// Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 240)]
        public string szResvered;
    }

    /// <summary>
    /// 训练检测
    /// Train Check
    /// </summary>
    public struct NET_PRE_TRAIN_CHECK_INFO
    {
        /// <summary>
        /// 标注图片格式要求数组大小
        /// Label image format requires array size
        /// </summary>
        public int nImgFormatNum;
        /// <summary>
        /// 标注图片格式要求
        /// Format requirements for annotated images
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10 * 10)]
        public string szImgFormat;
        /// <summary>
        /// 标签限制
        /// Label Restrictions
        /// </summary>
        public NET_LABEL_LIMIT_INFO stulabelLimit;
        /// <summary>
        /// 标注图片支持的最大图像尺寸
        /// Maximum image size supported by annotated images
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public uint[] nMaxImgSize;
        /// <summary>
        /// 标注图片支持的最小图像尺寸
        /// Minimum image size supported by annotated images
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public uint[] nMinImgSize;
        /// <summary>
        /// 最后一级标签数据量至少n个，即各个属性中各属性值的图片数至少n个
        /// The last level label has at least n data, which means that there are at least n images of each attribute value in each attribute
        /// </summary>
        public uint nMinObjNum;
        /// <summary>
        /// 训练图片数量至少n张
        /// At least n training images
        /// </summary>
        public uint nminTrainDataListLen;
        /// <summary>
        /// 0:不可以使用负样本 1:可以使用负样本
        /// 0: Negative samples cannot be used 1: Negative samples can be used
        /// </summary>
        public int nNegativeSampleEnable;
        /// <summary>
        /// 保留字节
        /// Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szResvered;
    }

    /// <summary>
    /// 方案配置信息
    /// Scheme configuration information
    /// </summary>
    public struct NET_CLASSIFY_RESOURCE_INFO
    {
        /// <summary>
        /// 算法方案，具体取值使用枚举类型AlgorithmTypeEnum
        /// Algorithm scheme, specific values using enumeration type AlgorithmTypeEnum
        /// </summary>
        public EM_AI_SOLUTION_ALGORITHM_TYPE emAlgorithmType;
        /// <summary>
        /// OD返回1，OC和OD+OC返回3
        /// OD returns 1, OC and OD+OC return 3
        /// </summary>
        public uint nMarkTypeLevel;
        /// <summary>
        /// 训练检测
        /// Train Check
        /// </summary>
        public NET_PRE_TRAIN_CHECK_INFO stupreTrainCheck;
        /// <summary>
        /// 支持的标注类型形状数组大小
        /// Supported annotation types, shape array sizes
        /// </summary>
        public int nSupportMarkTypeShapeNum;
        /// <summary>
        /// 支持的标注类型形状rect、poly、line、point、circular、ellipse、rotatingRectangle、parallelogram
        /// Supported annotation type shapes rect,poly,line,point,circular,ellipse,rotatingRectangle,parallelogram
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64 * 64)]
        public string szSupportMarkTypeShape;
        /// <summary>
        /// 训练所需的卡数量(GPU)
        /// Number of cards required for training (GPU)
        /// </summary>
        public uint nTrain;
        /// <summary>
        /// 核验所需的卡数量(GPU)
        /// Number of cards required for verification (GPU)
        /// </summary>
        public uint nVerify;
        /// <summary>
        /// 保留字节
        /// Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szResvered;
    }

    /// <summary>
    /// 方案信息
    /// scheme information
    /// </summary>
    public struct NET_RESULT_INFO
    {
        /// <summary>
        /// 方案ID
        /// scheme ID
        /// </summary>
        public uint nClassifyId;
        /// <summary>
        /// 方案名称
        /// scheme name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 方案配置包Url
        /// scheme Configuration Package Url
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szConfigureUrl;
        /// <summary>
        /// 方案封面图片Url
        /// Scheme Cover Image Url
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szCoverImageUrl;
        /// <summary>
        /// 方案能否被删除，1能被删除，0不能被删除
        /// Can the scheme be deleted? 1 can be deleted, 0 cannot be deleted
        /// </summary>
        public uint nDeleteEnable;
        /// <summary>
        /// 标注描述文档Url
        /// Annotation Description Document Url
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szIllustrationInfo;
        /// <summary>
        /// 方案描述信息
        /// Scheme description information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szInfo;
        /// <summary>
        /// 方案状态（0表示未知，1表示升级中，2表示正常，3表示升级失败）
        /// Scheme status (0 indicates unknown, 1 indicates upgrade in progress, 2 indicates normal, and 3 indicates upgrade failure)
        /// </summary>
        public uint nStatus;
        /// <summary>
        /// 方案配置信息
        /// Scheme configuration information
        /// </summary>
        public NET_CLASSIFY_RESOURCE_INFO stuClassifyResource;
        /// <summary>
        /// 方案训练包的名称
        /// Name of the training package for the plan
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szFileName;
        /// <summary>
        /// 训练要求url
        /// Training Requirements URL
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szTrainingRequireUrl;
        /// <summary>
        /// 方案包MD5值
        /// Solution Package MD5 Value
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szMD5;
        /// <summary>
        /// 方案包版本
        /// Solution Package Version
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVersion;
        /// <summary>
        /// 方案大类分类Id
        /// Scheme Category Classification Id
        /// </summary>
        public uint nGroupId;
        /// <summary>
        /// 保留字节
        /// Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szResvered;
    }

    /// <summary>
    /// CLIENT_GetClassify 接口入参
    /// CLIENT_GetClassify input parameter
    /// </summary>
    public struct NET_IN_GET_CLASSIFY_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_GetClassify 接口出参
    /// CLIENT_GetClassify Output parameter
    /// </summary>
    public struct NET_OUT_GET_CLASSIFY_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 方案信息个数
        /// Number of scheme information
        /// </summary>
        public int nResultNum;
        /// <summary>
        /// 实际返回方案信息个数
        /// Actual number of returned scheme information
        /// </summary>
        public int nRetResultNum;
        /// <summary>
        /// 方案信息，需由用户申请，申请内存大小为sizeof(NET_RESULT_INFO)*nResultNum
        /// scheme information
        /// </summary>
        public IntPtr pstuResult;
    }

    /// <summary>
    /// 查询条件
    /// query criteria
    /// </summary>
    public struct NET_TASK_CONDITION_INFO
    {
        /// <summary>
        /// 训练任务名称
        /// Training Task Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 训练任务模型所属模型仓库
        /// Training task model belongs to the model warehouse
        /// </summary>
        public uint nModelStoreId;
        /// <summary>
        /// 方案ID
        /// Scheme ID
        /// </summary>
        public uint nClassifyId;
        /// <summary>
        /// 保留字节
        /// Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szResvered;
    }

    /// <summary>
    /// CLIENT_FindTrainingTask 接口入参
    /// CLIENT_FindTrainingTask input parameter
    /// </summary>
    public struct NET_IN_FIND_TRAININGTASK_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 查询条件
        /// query criteria
        /// </summary>
        public NET_TASK_CONDITION_INFO stuCondition;
        /// <summary>
        /// 查询起始序号，表示从begin条记录开始，取count条记录返回
        /// Query the starting sequence number, which means starting from the beginning record and returning from the count record
        /// </summary>
        public uint nBegin;
        /// <summary>
        /// 每次查询的数据结果条数
        /// Number of data results per query
        /// </summary>
        public uint nCount;
    }

    /// <summary>
    /// 属性信息
    /// Attribute Information
    /// </summary>
    public struct NET_TASK_PROPERTIES_INFO
    {
        /// <summary>
        /// 属性
        /// Property
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szProperty;
        /// <summary>
        /// 属性值个数
        /// the number of Property value
        /// </summary>
        public int nPropertyValueNum;
        /// <summary>
        /// 属性值
        /// Property value
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 30 * 64)]
        public string szPropertyValue;
        /// <summary>
        /// 保留字节
        /// Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szResvered;
    }

    /// <summary>
    /// 训练标签列表
    /// Training Tag List
    /// </summary>
    public struct NET_TASK_LABEL_LIST_INFO
    {
        /// <summary>
        /// 标签目标类型
        /// Label Target Type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szMarkType;
        /// <summary>
        /// 训练标签列表个数
        /// Number of training tag lists
        /// </summary>
        public int nPropertiesNum;
        /// <summary>
        /// 训练标签列表
        /// Training Tag List
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]
        public NET_TASK_PROPERTIES_INFO[] stuProperties;
        /// <summary>
        /// 保留字节
        /// Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szResvered;
    }

    /// <summary>
    /// 标注任务信息
    /// Annotate task information
    /// </summary>
    public struct NET_MASK_TASK_INFO
    {
        /// <summary>
        /// 标注任务ID
        /// Annotation Task ID
        /// </summary>
        public uint nID;
        /// <summary>
        /// 标注任务名称
        /// Label Task Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// 保留字节
        /// Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szResvered;
    }

    /// <summary>
    /// 训练任务信息
    /// Training Task Information
    /// </summary>
    public struct NET_RESULT_TASK_INFO
    {
        /// <summary>
        /// / 训练任务ID
        /// Training Task ID
        /// </summary>
        public uint nID;
        /// <summary>
        /// / 训练任务名称
        /// Training Task Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// / 创建用户ID
        /// Create User ID
        /// </summary>
        public uint nUserId;
        /// <summary>
        /// / 分类ID
        /// Classification ID
        /// </summary>
        public uint nClassifyId;
        /// <summary>
        /// / "HH:mm:ss",训练任务计划开始时间
        /// "HH:mm:ss",Training task plan start time
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szStart;
        /// <summary>
        /// / "HH:mm:ss",训练任务计划结束时间
        /// "HH:mm:ss",Training Task Plan End Time
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szEnd;
        /// <summary>
        /// / 真正开始运行时间戳，单位秒,若无则为0
        /// Real start timestamp, in seconds, if none, it is 0
        /// </summary>
        public ulong nStartTime;
        /// <summary>
        /// / 运行时间，单位秒,若无则为0
        /// Running time, in seconds, if none, it is 0
        /// </summary>
        public uint nRunningTime;
        /// <summary>
        /// / 总迭代次数
        /// Total Iterations
        /// </summary>
        public uint nTotalIterationNumber;
        /// <summary>
        /// / 已完成迭代次数
        /// Completed Iterations
        /// </summary>
        public uint nFinishedIterationNumber;
        /// <summary>
        /// / 任务状态，0表示未知，1表示任务已完成，2表示任务等待中，3表示任务执行中，4表示任务失败，5表示任务暂停
        /// Task status, 0 indicates unknown, 1 indicates task completed, 2 indicates task waiting, 3 indicates task executing, 4 indicates task failed, and 5 indicates task paused
        /// </summary>
        public uint nStatus;
        /// <summary>
        /// / 预置模型
        /// Preset model
        /// </summary>
        public uint nBaseModelId;
        /// <summary>
        /// / 预估训练时间
        /// Estimated training time
        /// </summary>
        public uint nEstimateTrainTime;
        /// <summary>
        /// / 训练标签列表个数
        /// Number of training tag lists
        /// </summary>
        public int nLabelListNum;
        /// <summary>
        /// / 实际返回有效训练标签列表个数
        /// The actual number of valid training label lists returned
        /// </summary>
        public int nRetLabelListNum;
        /// <summary>
        /// / 训练标签列表,需由用户申请，申请内存大小为sizeof(NET_TASK_LABEL_LIST_INFO)*nLabelListNum
        /// The list of training tags needs to be applied by the user, and the requested memory size is sizeof(NET_TASK_LABEL_LIST_INFO)*nLabelListNum
        /// </summary>
        public IntPtr pstuLabelList;
        /// <summary>
        /// / 标注任务信息个数
        /// Number of annotation task information
        /// </summary>
        public int nMaskTaskInfoNum;
        /// <summary>
        /// / 标注任务信息
        /// Annotate task information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 99)]
        public NET_MASK_TASK_INFO[] stuMaskTaskInfo;
        /// <summary>
        /// / 模型仓库ID
        /// Model Warehouse ID
        /// </summary>
        public uint nModelStoreId;
        /// <summary>
        /// /错误信息
        /// error message
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szErrorMsg;
        /// <summary>
        /// / 保留字节
        /// Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szResvered;
    }

    /// <summary>
    /// CLIENT_FindTrainingTask 接口出参
    /// CLIENT_FindTrainingTask Output parameter
    /// </summary>
    public struct NET_OUT_FIND_TRAININGTASK_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 符合此次查询条件的结果总条数
        /// The total number of results that meet the query criteria for this query
        /// </summary>
        public uint nTotal;
        /// <summary>
        /// / 训练任务信息个数
        /// Number of training task information
        /// </summary>
        public int nResultNum;
        /// <summary>
        /// / 训练任务信息实际返回个数
        /// Actual number of returned training task information
        /// </summary>
        public int nRetResultNum;
        /// <summary>
        /// / 训练任务信息，需由用户申请，申请内存大小为sizeof(NET_RESULT_TASK_INFO)*nResultNum
        /// Training task information needs to be applied by the user, with a memory size of sizeof(NET_RESULT_TASK_INFO)*nResultNum
        /// </summary>
        public IntPtr pstuResult;
    }

    /// <summary>
    /// 训练任务状态变更信息
    /// Training task status change information
    /// </summary>
    public struct NET_NOTIFY_TRAIN_TASK_INFO
    {
        /// <summary>
        /// 训练任务id
        /// Training Task ID
        /// </summary>
        public uint nTaskId;
        /// <summary>
        /// 训练任务状态0未知。1已完成。2等待中。3执行中。4任务失败。5任务暂停，客户操作的暂停
        /// The training task status 0 is unknown. 1 completed. Waiting. 3 is in progress. Task 4 failed. 5 Task suspension, suspension of customer actions
        /// </summary>
        public uint nStatus;
        /// <summary>
        /// 总迭代次数，（当status是3：执行中，1：已完成。时返回改字段。其余状态不返回）
        /// The total number of iterations, (when the status is 3: in progress, 1: completed, the change field is returned. Other statuses are not returned)
        /// </summary>
        public uint nTotalIterationNumber;
        /// <summary>
        /// 已完成迭代次数，（当status是3：执行中，1：已完成时。返回改字段。其余状态不返回）
        /// The number of iterations completed, (when the status is 3: In progress, 1: Completed. Returns the change field. Other statuses are not returned)
        /// </summary>
        public uint nFinishedIterationNumber;
        /// <summary>
        /// 运行时间，单位秒
        /// Run time in seconds
        /// </summary>
        public uint nRunningTime;
        /// <summary>
        /// 0：模型转化运行中，1：模型转化成功，2：模型转化失败，3：模型转化等待中，4. 模型转化取消。
        /// 0: Model conversion running, 1: Model conversion successful, 2: Model conversion failed, 3: Model conversion waiting, 4 Model conversion cancelled.
        /// </summary>
        public uint nModelStatus;
        /// <summary>
        /// 保留字段
        /// Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szResvered;
    }

    /// <summary>
    /// CLIENT_AttachTrainTask 接口入参
    /// CLIENT_AttachTrainTask input parameter
    /// </summary>
    public struct NET_IN_ATTACH_TRAIN_TASK_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 训练任务id数组大小
        /// Training task ID array sizes
        /// </summary>
        public int nTaskIdNum;
        /// <summary>
        /// 训练任务id(数组内只要有一个任务真实存在就订阅成功，不存在的任务默认忽略)
        /// Training task ID (as long as there is a real task in the array, the subscription is successful, and tasks that do not exist are ignored by default)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public uint[] nTaskId;
        /// <summary>
        /// 回调函数
        /// callback
        /// </summary>
        public fNotifyTrainTaskdata cbNotifyTrainTaskdata;
        /// <summary>
        /// 用户自定义参数
        /// User defined parameters
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// CLIENT_AttachTrainTask 接口出参
    /// CLIENT_AttachTrainTask Output parameter
    /// </summary>
    public struct NET_OUT_ATTACH_TRAIN_TASK_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_GetUserInfo接口入参
    /// CLIENT_GetUserInfo input parameter
    /// </summary>
    public struct NET_IN_GET_USER_ALL_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 主权限类型
    /// the main authority
    /// </summary>
    public enum EM_AUTHORITY_MAIN_TYPE
    {
        /// <summary>
        /// Unknown
        /// Unknown
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_UNKNOWN,
        /// <summary>
        /// 用户管理
        /// user manage
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_USER_MAG,
        /// <summary>
        /// 系统管理
        /// system config
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_SYS_CFG,
        /// <summary>
        /// 屏蔽用户
        /// offline user
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_OFFLINE_USER,
        /// <summary>
        /// 默认&升级
        /// default and update
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_DF_UD,
        /// <summary>
        /// 云台控制
        /// ptz control
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_PTZ_CTR,
        /// <summary>
        /// 系统信息
        /// system info
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_SYS_INFO,
        /// <summary>
        /// 手动控制
        /// manual control
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_MANU_CTR,
        /// <summary>
        /// 文件备份
        /// back up file
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_BACKUP,
        /// <summary>
        /// 图像颜色
        /// color set
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_COLOR_SET,
        /// <summary>
        /// 存储管理
        /// store config
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_STORE_CFG,
        /// <summary>
        /// 事件设置
        /// event config
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_EVENT_CFG,
        /// <summary>
        /// 网络设置
        /// net config
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_NET_CFG,
        /// <summary>
        /// 摄像头相关
        /// remote device
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_RMT_DEVICE,
        /// <summary>
        /// 删除日志
        /// delete log
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_DEL_LOG,
        /// <summary>
        /// 关闭设备
        /// shut down device
        /// </summary>
        EM_AUTHORITY_MAIN_TYPE_AUTH_SHUTDOWN,
    }

    /// <summary>
    /// 用户信息
    /// user information
    /// </summary>
    public struct NET_USER_INFO
    {
        /// <summary>
        /// 用户ID
        /// user ID
        /// </summary>
        public int nID;
        /// <summary>
        /// 用户名
        /// username
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// 密码
        /// password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPassword;
        /// <summary>
        /// 用户类型, 使用者自定义
        /// user type, User defined
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szType;
        /// <summary>
        /// 描述
        /// describe
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szMemo;
        /// <summary>
        /// 所在组
        /// Group
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szGroup;
        /// <summary>
        /// 用户权限数量
        /// Number of user permissions
        /// </summary>
        public uint nAuthorityCount;
        /// <summary>
        /// 用户权限列表
        /// User Permission List
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public EM_AUTHORITY_MAIN_TYPE[] emAuthorityList;
        /// <summary>
        /// 是否为保留用户, 保留用户不能删除
        /// Is it a reserved user? Reserved users cannot be deleted
        /// </summary>
        public bool bReserved;
        /// <summary>
        /// 是否可以多处登陆
        /// Can I log in multiple places
        /// </summary>
        public bool bSharable;
        /// <summary>
        /// 等级, 1~10，1最高, 10最低
        /// Level, 1-10, 1 highest, 10 lowest
        /// </summary>
        public int nLevel;
        /// <summary>
        /// 最大允许预览通道数, -1不限制, 0不允许...
        /// Maximum allowed preview channels, -1 not limited, 0 not allowed
        /// </summary>
        public int nMaxMonitorChannels;
        /// <summary>
        /// 匿名登录
        /// anonymous login
        /// </summary>
        public bool bAnonymous;
        /// <summary>
        /// 保留字节
        /// Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetUserInfo接口出参
    /// CLIENT_GetUserInfo Output parameter
    /// </summary>
    public struct NET_OUT_GET_USER_ALL_INFO
    {
        /// <summary>
        /// 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 用户信息个数
        /// the nuamber of user information
        /// </summary>
        public int nUserNum;
        /// <summary>
        /// 实际返回用户信息个数
        /// Actual number of returned user information
        /// </summary>
        public int nRetUserNum;
        /// <summary>
        /// 用户信息
        /// user information
        /// </summary>
        public IntPtr pstuUserInfo;
    }

    /// <summary>
    /// CLIENT_StartFindAccessFingerprint 接口入参
    /// CLIENT_StartFindAccessFingerprint 接口入参
    /// </summary>
    public struct NET_IN_FINGERPRINT_START_FIND_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// 此结构体大小,必须赋值
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 查询条件，数据库查询对象
        /// 查询条件，数据库查询对象
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCondition;
    }

    /// <summary>
    /// CLIENT_StartFindAccessFingerprint 接口出参
    /// CLIENT_StartFindAccessFingerprint 接口出参
    /// </summary>
    public struct NET_OUT_FINGERPRINT_START_FIND_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// 此结构体大小,必须赋值
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 查找到的总条数
        /// 查找到的总条数
        /// </summary>
        public uint nTotal;
        /// <summary>
        /// 查询能力
        /// 查询能力
        /// </summary>
        public uint nCaps;
    }

    /// <summary>
    /// CLIENT_DoFindAccessFingerprint 接口入参
    /// CLIENT_DoFindAccessFingerprint 接口入参
    /// </summary>
    public struct NET_IN_FINGERPRINT_DO_FIND_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// 此结构体大小,必须赋值
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 起始序号
        /// 起始序号
        /// </summary>
        public uint nStartNo;
        /// <summary>
        /// 本次查询需要获取的条数
        /// 本次查询需要获取的条数
        /// </summary>
        public uint nCount;
    }

    /// <summary>
    /// 指纹信息
    /// 指纹信息
    /// </summary>
    public struct NET_FINGERPRINT_NEW_INFO
    {
        /// <summary>
        /// 创建时间
        /// 创建时间
        /// </summary>
        public NET_TIME stuCreateTime;
        /// <summary>
        /// UTC时间
        /// UTC时间
        /// </summary>
        public NET_TIME_EX stuCreateTimeRealUTC;
        /// <summary>
        /// 指纹ID(候选码，唯一)
        /// 指纹ID(候选码，唯一)
        /// </summary>
        public int nFingerprintID;
        /// <summary>
        /// 胁迫指纹字段，0表示普通指纹，1表示胁迫指纹
        /// 胁迫指纹字段，0表示普通指纹，1表示胁迫指纹
        /// </summary>
        public int nForce;
        /// <summary>
        /// 指纹名称
        /// 指纹名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFingerPrintName;
        /// <summary>
        /// 用户ID
        /// 用户ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// 指纹数据，base64格式
        /// 指纹数据，base64格式
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1200)]
        public string szFingerPrintData;
        /// <summary>
        /// 预留字节
        /// 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserverd;
    }

    /// <summary>
    /// CLIENT_DoFindAccessFingerprint 接口出参
    /// CLIENT_DoFindAccessFingerprint 接口出参
    /// </summary>
    public struct NET_OUT_FINGERPRINT_DO_FIND_INFO
    {
        /// <summary>
        /// 此结构体大小,必须赋值
        /// 此结构体大小,必须赋值
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 本次查询到的个数
        /// 本次查询到的个数
        /// </summary>
        public uint nRetNum;
        /// <summary>
        /// 指纹信息列表
        /// 指纹信息列表
        /// </summary>
        public IntPtr pstuInfo;
        /// <summary>
        /// 指纹信息个数
        /// 指纹信息个数
        /// </summary>
        public uint nMaxNum;
    }

    /// <summary>
    /// 结构体(NET_IN_SNAPSHOT)成员 闪关灯调节控制是一个数组,每个元素对应一个闪光灯配置
    /// correlate with NET_IN_SNAPSHOT, flash control,array,each element corresponding to a flash light configuration
    /// </summary>
    public struct NET_FLASHCONTROL
    {
        /// <summary>
        /// 此结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 工作模式 0-禁止闪光,1-始终闪光,2-自动闪光
        /// work mode 0-no flash,1-always flash,2-auto flash
        /// </summary>
        public int nMode;
    }

    /// <summary>
    /// 抓拍客户端类型
    /// Capture client type
    /// </summary>
    public enum EM_A_SNAP_CLIENT_TYPE
    {
        /// <summary>
        /// 对应"Common"类型, 默认类型
        /// Corresponding to "Common" type, the default type
        /// </summary>
        SNAP_CLIENT_TYPE_COMMON,
        /// <summary>
        /// 对应"ParkingSpace"类型, 停车场
        /// Correspondence "ParkingSpace" type, parking
        /// </summary>
        SNAP_CLIENT_TYPE_PARKINGSPACE,
    }

    /// <summary>
    /// 事件上报携带卡片信息
    /// Incidents reported to carry the card information
    /// </summary>
    public struct NET_A_EVENT_CARD_INFO
    {
        /// <summary>
        /// 卡片序号字符串
        /// Card number string
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string szCardNumber;
        /// <summary>
        /// 保留字节,留待扩展.
        /// Reserved bytes, leave extended
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] bReserved;
    }

    /// <summary>
    /// nTriggerType==2时 客户端触发抓拍参数
    /// when nTriggerType==2, client snap info
    /// </summary>
    public struct NET_CLIENT_SNAP_INFO
    {
        /// <summary>
        /// 此结构体大小
        /// struct info
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 帧序号
        /// frame sequence
        /// </summary>
        public uint nFrameSequence;
        /// <summary>
        /// 时间戳,64位毫秒时间戳
        /// pts,64 bit
        /// </summary>
        public double PTS;
        /// <summary>
        /// 字符串,客户端自定义,"\0"结尾
        /// String, custom client, "\ 0" at the end
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szUserDefinedInfo;
        /// <summary>
        /// 客户端类型
        /// Client Type
        /// </summary>
        public EM_A_SNAP_CLIENT_TYPE emSNAP_CLIENT_TYPE;
        /// <summary>
        /// 卡片个数
        /// card amount
        /// </summary>
        public uint dwRetCardNumber;
        /// <summary>
        /// 卡片信息
        /// card information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_A_EVENT_CARD_INFO[] stuCardInfo;
    }

    /// <summary>
    /// 接口(CLIENT_TrafficSnapByNetwork)输入参数
    /// CLIENT_TrafficSnapByNetwork's input param
    /// </summary>
    public struct NET_IN_SNAPSHOT
    {
        /// <summary>
        /// 此结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 触发类型
        /// trigger type
        /// </summary>
        public int nTriggerType;
        /// <summary>
        /// 车道号
        /// lane id
        /// </summary>
        public int nLaneID;
        /// <summary>
        /// 组序号
        /// group id
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// 抓拍图片数量
        /// picture number
        /// </summary>
        public int nGrabTimes;
        /// <summary>
        /// 第一张图片开始序号
        /// the start picture id
        /// </summary>
        public int nStartPicNum;
        /// <summary>
        /// 车道方向（车开往的方向） 0-北 1-东北 2-东 3-东南 4-南 5-西南 6-西 7-西北 8-未知
        /// NET_GRAB_WAITTIME stGrabWaitTime;  多张图片之间抓拍间隔
        /// road direction 0-north 1-east north 2-east 3-east south 4-south 5-west south 6-west 7-west north 8-unknown
        /// </summary>
        public int nDirection;
        /// <summary>
        /// pGrabWaitTime数组成员个数
        /// pGrabWaitTime group member number
        /// </summary>
        public int nGrabWaitTime;
        /// <summary>
        /// 多张图片之间抓拍间隔,由用户申请内存，大小为nGrabWaitTime
        /// interval time between two picture, the space is nGrabWaitTime by the user
        /// </summary>
        public IntPtr pGrabWaitTime;
        /// <summary>
        /// 速度下限,单位km/h
        /// lower speed limit, km/h
        /// </summary>
        public int nLowerSpeedLimit;
        /// <summary>
        /// 速度下限,单位km/h
        /// upper speed limit, km/h
        /// </summary>
        public int nUpperSpeedLimit;
        /// <summary>
        /// 车速,单位km/h
        /// speed, km/h
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// 违法编号 0-未违法
        /// 1-禁止名单
        /// 2-超速不超过50%
        /// 3-超速在50%到100%之间
        /// 4-超速超过100%
        /// 5-逆行
        /// 6-闯红灯
        /// 7-低于限速
        /// 8-禁行,不按车道行驶
        /// violation number 0-not transgress
        /// 1-black shit
        /// 2-over speed not over 50%
        /// 3-over speed between 50% and 100%
        /// 4-over speed over 100%
        /// 5-retrograde
        /// 6-run red
        /// 7-under speed
        /// 8-no passing,wrong route
        /// </summary>
        public int nViolationNo;
        /// <summary>
        /// 红灯时间,即红灯点亮多少时间后触发抓拍,单位秒
        /// NET_FLASHCONTROL stFlashControl;  闪关灯调节控制
        /// red light time,s
        /// </summary>
        public int nRedLightTime;
        /// <summary>
        /// pFlashControl数组个数
        /// pFlashControl group member number
        /// </summary>
        public int nFlashControl;
        /// <summary>
        /// 闪关灯调节控制,由用户申请内存，大小为sizeof(NET_FLASHCONTROL)*nFlashControl
        /// flash control,the space is sizeof(NET_FLASHCONTROL)*nFlashControl by the user
        /// </summary>
        public IntPtr pFlashControl;
        /// <summary>
        /// 用户数据 NSP
        /// user data
        /// </summary>
        public uint dwUser;
        /// <summary>
        /// 客户端触发时传入的抓拍参数
        /// the incoming snap parameter
        /// </summary>
        public NET_CLIENT_SNAP_INFO stClientInfo;
        /// <summary>
        /// 抓拍序号，上传图片时返回
        /// Capture sequence number, return when uploading images
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSerialNo;
    }

    /// <summary>
    /// 接口(CLIENT_TrafficSnapByNetwork)输出参数
    /// CLIENT_TrafficSnapByNetwork's output param
    /// </summary>
    public struct NET_OUT_SNAPSHOT
    {
        /// <summary>
        /// 此结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 远程设备信息扩展
    /// info of remote device extend
    /// </summary>
    public struct NET_REMOTE_DEVICE_EX
    {
        /// <summary>
        /// / 密码
        /// password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPwdEx2;
        /// <summary>
        /// / 是否使用szPwdEx2密码
        /// use szPwdEx2 password
        /// </summary>
        public bool bUsePwdEx2;
        /// <summary>
        /// / IP
        /// IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szIpEx;
        /// <summary>
        /// / 是否使用szIpEx IP
        /// use szIpEx IP
        /// </summary>
        public bool bUseIpEx;
        /// <summary>
        /// / 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 952)]
        public string szReserved;
    }

    /// <summary>
    /// CIENT_SetSplitWindowsInfo接口输入参数
    /// CIENT_SetSplitWindowsInfo Interface input parameters
    /// </summary>
    public struct NET_IN_SPLIT_SET_WINDOWS_INFO
    {
        public uint dwSize;
        /// <summary>
        /// / 画面分割所在的视频输出通道
        /// / The video output channel where the screen segmentation is located
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// / 拼接屏ID
        /// / Splice screen ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCompositeID;
        /// <summary>
        /// / 窗口信息
        /// / Window information
        /// </summary>
        public NET_BLOCK_COLLECTION stuInfos;
    }

    /// <summary>
    /// CIENT_SetSplitWindowsInfo接口输出参数
    /// CIENT_SetSplitWindowsInfo Interface output parameters
    /// </summary>
    public struct NET_OUT_SPLIT_SET_WINDOWS_INFO
    {
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_SetSplitTopWindow接口输入参数(设置窗口次序)
    /// CLIENT_SetSplitTopWindow's interface input param(setting window order)
    /// </summary>
    public struct NET_IN_SPLIT_SET_TOP_WINDOW
    {
        public uint dwSize;
        /// <summary>
        /// / 通道号(屏号)
        /// channel ID
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 窗口序号
        /// windown ID
        /// </summary>
        public int nWindowID;
    }

    /// <summary>
    /// 窗口层叠次序
    /// window layer order
    /// </summary>
    public struct NET_WND_ZORDER
    {
        public uint dwSize;
        /// <summary>
        /// / 窗口序号
        /// window no.
        /// </summary>
        public uint nWindowID;
        /// <summary>
        /// / Z次序
        /// Z order
        /// </summary>
        public uint nZOrder;
    }

    /// <summary>
    /// CLIENT_SetSplitTopWindow接口输出参数(设置窗口次序)
    /// CLIENT_SetSplitTopWindow's interface output param(setting window order)
    /// </summary>
    public struct NET_OUT_SPLIT_SET_TOP_WINDOW
    {
        public uint dwSize;
        /// <summary>
        /// / 窗口次序数组,由用户申请内存,大小为sizeof(WND_ZORDER)*nMaxWndCount
        /// window order array,the space application by the user,apply to sizeof(WND_ZORDER)*nMaxWndCount
        /// </summary>
        public IntPtr pZOders;
        /// <summary>
        /// / 窗口次序数组大小
        /// window order array size
        /// </summary>
        public int nMaxWndCount;
        /// <summary>
        /// / 返回的窗口数量
        /// count of returned window
        /// </summary>
        public int nWndCount;
    }

    /// <summary>
    /// CLIENT_CloseSplitWindow接口输入参数(关窗)
    /// CLIENT_CloseSplitWindow's interface input param(close window)
    /// </summary>
    public struct NET_IN_SPLIT_CLOSE_WINDOW
    {
        public uint dwSize;
        /// <summary>
        /// / 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效
        /// channel ID
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 窗口序号
        /// window order
        /// </summary>
        public uint nWindowID;
        /// <summary>
        /// / 融合屏ID
        /// multi-screen display ID
        /// </summary>
        public IntPtr pszCompositeID;
    }

    /// <summary>
    /// CLIENT_CloseSplitWindow接口输出参数(关窗)
    /// CLIENT_CloseSplitWindow's interface output param(close window)
    /// </summary>
    public struct NET_OUT_SPLIT_CLOSE_WINDOW
    {
        public uint dwSize;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_FIREDETECTION(火警事件)对应的数据块描述信息
    /// the describe of EVENT_IVS_FIREDETECTION's data
    /// </summary>
    public struct NET_DEV_EVENT_FIRE_INFO
    {
        /// <summary>
        /// / 通道号
        /// ChannelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// / 事件发生的时间
        /// the event happen time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// / 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / 检测到的物体
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// / 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// / 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action,0 means pulse event,1 means continuous event's begin,2means continuous event's end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// / 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved;
        /// <summary>
        /// / 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// / 规则检测区域顶点数
        /// detect region point
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// / 规则检测区域
        /// detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// / 抓图标志(按位),具体见 NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// / 事件源设备上的index,-1表示数据无效
        /// the source device's index,-1 means data in invalid
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// / 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// the source device's sign(exclusive),field said local device does not exist or is empty
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// / 事件触发累计次数
        /// event trigger accumilated times
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// / 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// / stuSceneImage 是否有效
        /// Whether stuSceneImage is valid
        /// </summary>
        public bool bSceneImage;
        /// <summary>
        /// / 全景广角图
        /// Global scene iamge
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// / 车身信息
        /// vehicle info
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// / 触发类型
        /// Trigger type
        /// </summary>
        public EM_TRIGGER_TYPE emTriggerType;
        /// <summary>
        /// / 抓拍过程
        /// Capture process
        /// </summary>
        public EM_CAPTURE_PROCESS_END_TYPE emCaptureProcess;
        /// <summary>
        /// / 标记抓拍帧
        /// Used to mark capture frames
        /// </summary>
        public int nMark;
        /// <summary>
        /// / 视频分析的数据源地址
        /// Data source address of the video analysis
        /// </summary>
        public int nSource;
        /// <summary>
        /// / 视频分析帧序号
        /// Video analysis frame number
        /// </summary>
        public int nFrameSequence;
        /// <summary>
        /// / 交通车辆信息
        /// Traffic vehicle info
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
        /// <summary>
        /// / 公共信息
        /// public info
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// / 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// / 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 预置点ID,如果普通IPC则为0
        /// Preset point ID, if it is a regular IPC, then it will be 0.
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// / 字节对齐
        /// Align Byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szAlign;
        /// <summary>
        /// / 事件触发的预置点名称
        /// Preset point name triggered by the event.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// / 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 堆积物点阵图信息
    /// Mask info of floating object
    /// </summary>
    public struct NET_FLOATINGOBJECT_MASK_INFO
    {
        /// <summary>
        /// / 点阵列数
        /// Column number
        /// </summary>
        public uint nColNum;
        /// <summary>
        /// / 偏移
        /// Offset
        /// </summary>
        public uint nOffset;
        /// <summary>
        /// / 长度
        /// Length
        /// </summary>
        public uint nLength;
        /// <summary>
        /// / 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 漂浮物检测场景
    /// Floating object detection scene
    /// </summary>
    public enum EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE
    {
        /// <summary>
        /// / 未知
        /// UNknown
        /// </summary>
        EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE_UNKNOWN,
        /// <summary>
        /// / 普通漂浮物检测
        /// Common floating object detection
        /// </summary>
        EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE_NOMAL,
        /// <summary>
        /// / 泡沫检测
        /// Foam detection
        /// </summary>
        EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE_BUBBLE,
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_FLOATINGOBJECT_DETECTION (漂浮物检测事件) 对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_FLOATINGOBJECT_DETECTION (FloatingObjectDetection)
    /// </summary>
    public struct NET_A_DEV_EVENT_FLOATINGOBJECT_DETECTION_INFO
    {
        /// <summary>
        /// / 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 事件名称
        /// Evnet name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// / 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// / 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / 事件对应文件信息
        /// Event corresponding to file information
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// / 规则检测区域
        /// The point list of rule detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] DetectRegion;
        /// <summary>
        /// / 规则检测区域顶点数
        /// The point number of rule detect region
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// / 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public int nImageIndex;
        /// <summary>
        /// / 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// snapshot mark (by bit), see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// / 事件源设备上的index,-1表示数据无效
        /// the source device's index,-1 means data in invalid
        /// </summary>
        public int nSourceIndex;
        /// <summary>
        /// / 事件源设备唯一标识,字段不存在或者为空表示本地设备
        /// the source device's sign(exclusive),field said local device does not exist or is empty
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szSourceDevice;
        /// <summary>
        /// / 事件触发累计次数
        /// event trigger accumilated times
        /// </summary>
        public uint nOccurrenceCount;
        /// <summary>
        /// / 检测到的物体个数
        /// have being detected objects number
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// / 检测到的物体
        /// have being detected objects
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// / 智能事件公共信息
        /// Intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// / 事件触发的预置名称
        /// Preset name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// / 是否存在漂浮物
        /// Whether there is floating object?
        /// </summary>
        public bool bExistFloatingObject;
        /// <summary>
        /// / 事件数据类型
        /// Data type
        /// </summary>
        public NET_EM_EVENT_DATA_TYPE emEventType;
        /// <summary>
        /// / 漂浮物当前占比（相对于检测区域）单位:%, 取值范围[0, 100]
        /// The current proportion of flotage(relative to detection area) Unit:%, Range[0, 100]
        /// </summary>
        public float fCurrentRatio;
        /// <summary>
        /// / 报警阈值。漂浮物相对于检测区域的占比, 取值范围[0, 100]
        /// The alarm threshold of proportion, Range[0, 100]
        /// </summary>
        public float fAlarmThreshold;
        /// <summary>
        /// / 原始图
        /// Original image information
        /// </summary>
        public NET_INTELLIGENCE_IMAGE_INFO stuOriginalImage;
        /// <summary>
        /// / 球机变到最小倍下的抓图
        /// Scene image information
        /// </summary>
        public NET_INTELLIGENCE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// / 堆积物点阵图信息
        /// Mask info of floating object
        /// </summary>
        public NET_FLOATINGOBJECT_MASK_INFO stuObjectMaskInfo;
        /// <summary>
        /// / 区分是普通漂浮物场景还是泡沫检测场景
        /// Distinguish between ordinary floating object scene and foam detection scene
        /// </summary>
        public EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE emDetectSenceType;
        /// <summary>
        /// / 图片信息个数
        /// Picture number
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// / 图片信息数组
        /// Picture information
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// / 保留字节,留待扩展.
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3428 - 8)]
        public byte[] byReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3428 - 4)]
        public byte[] byReserved;
#endif
    }

    /// <summary>
    /// 回调YUV数据的参数结构体
    /// YUV Data
    /// </summary>
    public struct NET_CBYUVDataParam
    {
        /// <summary>
        /// / 图象的宽
        /// Width
        /// </summary>
        public int nWidth;
        /// <summary>
        /// / 图象的高
        /// Height
        /// </summary>
        public int nHeight;
        /// <summary>
        /// / 码流中的时间
        /// Time
        /// </summary>
        public NET_TIME stNetTime;
        /// <summary>
        /// / 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public uint[] reserved;
    }

    /// <summary>
    /// 时间段信息
    /// Period information
    /// </summary>
    public struct NET_CFG_TIME_SECTION
    {
        /// <summary>
        /// 录像掩码，按位分别为Bit0-动态检测录像、Bit1-报警录像、Bit2-定时录像、Bit3-动检和报警同时触发时才录像、Bit4-卡号录像、Bit5-智能录像、Bit6-POS录像、Bit7~Bit15保留
        /// Record subnet mask. Bit0-motion detection recording, Bit1-alarm recording, Bit2-timing recording, Bit3-motion detection and alarm triggered simultaneously, Bit4-card number recording, Bit5-smart recording, Bit6-POS recording, Bit7~Bit15 reserved
        /// </summary>
        public uint dwRecordMask;
        public int nBeginHour;
        public int nBeginMin;
        public int nBeginSec;
        public int nEndHour;
        public int nEndMin;
        public int nEndSec;
    }

    /// <summary>
    /// 时间表信息
    /// Schedule Information
    /// </summary>
    public struct NET_A_CFG_TIME_SCHEDULE
    {
        /// <summary>
        /// 是否支持节假日配置，默认为不支持，除非获取配置后返回为TRUE，不要使能假日配置
        /// whether holiday config is enabled, default value is FALSE, DO NOT enable it unless you get TRUE after get config
        /// </summary>
        public bool bEnableHoliday;
        /// <summary>
        /// 第一维前7个元素对应每周7天，第8个元素对应节假日，每天最多6个时间段
        /// The First Dimension Before the 7 Elements Corresponding 7 Days a week, Eighth Elements Corresponding Holiday, Up to Six Time Periods Per Day
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8 * 6)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
    }

    /// <summary>
    /// 定时功能类型
    /// Timing Function Type
    /// </summary>
    public enum EM_A_CFG_PTZ_FUNC_TYPE
    {
        /// <summary>
        /// 巡航
        /// Tour
        /// </summary>
        FUNC_TYPE_TOUR = 0,
        /// <summary>
        /// 自动巡迹
        /// Pattern
        /// </summary>
        FUNC_TYPE_PATTERN,
        /// <summary>
        /// 预置点
        /// Preset
        /// </summary>
        FUNC_TYPE_PRE,
        /// <summary>
        /// 自动线扫
        /// Scan
        /// </summary>
        FUNC_TYPE_SCAN,
        FUNC_TYPE_MAX,
    }

    /// <summary>
    /// 自动归位
    /// Auto Homing
    /// </summary>
    public struct NET_A_CFG_AUTO_HOMING
    {
        /// <summary>
        /// 自动归位开关
        /// Auto Homing Switch
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 空闲时间,表示空闲的时间，单位为秒
        /// Free Time,indicate Free Time , Unit is Second
        /// </summary>
        public int nTime;
    }

    /// <summary>
    /// 定时动作配置
    /// Regular Action Configuration
    /// </summary>
    public struct NET_A_CFG_PTZ_PER_AUTOMOVE_INFO
    {
        /// <summary>
        /// 定时动作开关标志 TRUE 开，FALSE 关
        /// Regular action Switch Mark TRUE open, FALSE close
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 时间表类型
        /// Schedule Type
        /// </summary>
        public NET_A_CFG_TIME_SCHEDULE stTimeSchedule;
        /// <summary>
        /// 定时功能
        /// Timing Function
        /// </summary>
        public EM_A_CFG_PTZ_FUNC_TYPE emFuncType;
        /// <summary>
        /// 巡航编号, 范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wTourMin和wTourMax
        /// Tour ID, Range refer CFG_PTZ_PROTOCOL_CAPS_INFO of wTourMin and wTourMax
        /// </summary>
        public int nTourId;
        /// <summary>
        /// 自动巡迹编号, 范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wPatternMin和wPatternMax
        /// Pattern ID, Range refer CFG_PTZ_PROTOCOL_CAPS_INFO of wPatternMin and wPatternMax
        /// </summary>
        public int nPatternId;
        /// <summary>
        /// 预置点编号, 范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wPresetMin和wPresetMax
        /// Preset ID, Range refer CFG_PTZ_PROTOCOL_CAPS_INFO of wPresetMin and wPresetMax
        /// </summary>
        public int nPresetId;
        /// <summary>
        /// 自动线扫编号, 范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wAutoScanMin和wAutoScanMax
        /// Scan ID, Range refer CFG_PTZ_PROTOCOL_CAPS_INFO of wAutoScanMin and wAutoScanMax
        /// </summary>
        public int nScanId;
        /// <summary>
        /// 自动归位,一段时间不操作云台，自动归位到该时间段内的动作
        /// AutoHoming,Period of time does not operate PTZ, Automatic homing to the period of the action
        /// </summary>
        public NET_A_CFG_AUTO_HOMING stAutoHoming;
        /// <summary>
        /// 预置点快照使能,只有当emFuncType为FUNC_TYPE_PRE时才有效
        /// Snapshot enable
        /// </summary>
        public bool bSnapshotEnable;
        /// <summary>
        /// 预置点抓拍延时时间,单位秒,只有当emFuncType为FUNC_TYPE_PRE时才有效
        /// The delaytime of Snapshot
        /// </summary>
        public int nSnapshortDelayTime;
        /// <summary>
        /// 是否启用szSpecialTime字段
        /// Enable szSpecialTime
        /// </summary>
        public bool bEnableSpecialTime;
        /// <summary>
        /// 指定日期的工作时间段数量
        /// Number of working time periods for specified dates
        /// </summary>
        public int nSpecialTimeNum;
        /// <summary>
        /// 指定日期的工作时间 如："2023-05-05 00:00:00-08:00:00"表示2023年5月5号0点到8点生效
        /// The working hours on the specified date, such as "2023-05-05 00:00:00-08:00:00", indicate that it will take effect from 0:00 to 8:00 on May 5th, 2023
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64 * 32)]
        public string szSpecialTime;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 云台的配置信息
    /// PTZ Configuration Information
    /// </summary>
    public struct NET_A_CFG_PTZ_ALL_AUTOMOVE_INFO
    {
        /// <summary>
        /// 配置信息
        /// Configuration Information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_A_CFG_PTZ_PER_AUTOMOVE_INFO[] stPTZPerInfo;
        /// <summary>
        /// 获取到的配置个数
        /// Get the Number of Configuration
        /// </summary>
        public int nCfgNum;
    }

    /// <summary>
    /// 云台定时动作配置，注意，此结构针对设备
    /// PTZ configuration timed action, Attention, This Structure for the Device
    /// </summary>
    public struct NET_A_CFG_PTZ_AUTOMOVE_INFO
    {
        /// <summary>
        /// 云台的配置信息
        /// PTZ Configuration Information
        /// </summary>
        public IntPtr pstPTZAutoConfig;
        /// <summary>
        /// 结构体申请的云台个数(对于多通道查询，申请不小于设备通数，对于单通道查询，一个就够了)
        /// Structure PTZ Application Number(For Multi -Channel Query, Apply for not less than Equipment Number, For Single-channel Queries, One is Enough)
        /// </summary>
        public int nMaxPTZNum;
        /// <summary>
        /// 设备返回的云台个数(一般为设备通道数)
        /// The Number of PTZ Device Return(General is Device Channels)
        /// </summary>
        public int nReturnPTZNum;
    }

    /// <summary>
    /// GPS工作模式
    /// GPSOperating mode
    /// </summary>
    public enum EM_CFG_GPS_MODE
    {
        EM_CFG_GPS_MODE_UNKNOWN,
        /// <summary>
        /// GPS
        /// GPS
        /// </summary>
        EM_CFG_GPS_MODE_GPS,
        /// <summary>
        /// BEIDOU
        /// BEIDOU
        /// </summary>
        EM_CFG_GPS_MODE_BEIDOU,
        /// <summary>
        /// GLONASS
        /// GLONASS
        /// </summary>
        EM_CFG_GPS_MODE_GLONASS,
        /// <summary>
        /// MIX
        /// MIX
        /// </summary>
        EM_CFG_GPS_MODE_MIX,
        /// <summary>
        /// 仅用于标识总数
        /// used to mark sum
        /// </summary>
        EM_CFG_GPS_MODE_END = 5,
    }

    /// <summary>
    /// 平台类型
    /// Platform Type
    /// </summary>
    public enum EM_CFG_TRANSFER_PLATFORM
    {
        EM_CFG_TRANSFER_PLATFORM_UNKNOWN,
        /// <summary>
        /// DSS
        /// DSS
        /// </summary>
        EM_CFG_TRANSFER_PLATFORM_DSS,
        /// <summary>
        /// JTBB
        /// JTBB
        /// </summary>
        EM_CFG_TRANSFER_PLATFORM_JTBB,
        /// <summary>
        /// 仅用于标识总数
        /// used to mark sum
        /// </summary>
        EM_CFG_TRANSFER_PLATFORM_END = 3,
    }

    /// <summary>
    /// 单个GPS配置
    /// single GPS config
    /// </summary>
    public struct NET_A_CFG_GPS_INFO
    {
        /// <summary>
        /// 是否使能
        /// enable or not
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 硬件采集周期, 单位毫秒
        /// hardware collection period, unit is ms
        /// </summary>
        public int nSampleInterval;
        /// <summary>
        /// 应用程序通知周期, 单位毫秒
        /// application program notice period, unit is ms
        /// </summary>
        public int nNotifyInterval;
        /// <summary>
        /// 是否将GPS时间同步到设备
        /// sync GPS to device
        /// </summary>
        public bool bSyncTime;
        /// <summary>
        /// 模块当前工作模式
        /// module current work mode
        /// </summary>
        public EM_CFG_GPS_MODE emCurMode;
        /// <summary>
        /// 支持的定位模式数量
        /// support positioning mode quantity
        /// </summary>
        public int nSupportModes;
        /// <summary>
        /// 模块支持的定位模式
        /// module support positioning mode
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
        public EM_CFG_GPS_MODE[] emSupportModes;
        /// <summary>
        /// 当前模块类型标志
        /// current module manufacturer type mark
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCurModule;
        /// <summary>
        /// 是否支持地理位置显示
        /// support geographic position display
        /// </summary>
        public bool bShowLocation;
        /// <summary>
        /// GPS保存天数，用于补传, 单位：天，范围：0-365
        /// GPS storage day, used to send as compensation, unit:day, range: 0-365
        /// </summary>
        public int nSaveDays;
        /// <summary>
        /// 支持补传的平台数量
        /// support compensation platform quantity
        /// </summary>
        public int nTransferPlatform;
        /// <summary>
        /// 支持补传的平台，数据接收方
        /// support compensation platform, data receiver
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public EM_CFG_TRANSFER_PLATFORM[] emTransferPlatform;
    }

    /// <summary>
    /// GPS配置
    /// GPS config
    /// </summary>
    public struct NET_A_CFG_GPS_INFO_ALL
    {
        /// <summary>
        /// GPS个数
        /// GPS number
        /// </summary>
        public int nGps;
        /// <summary>
        /// GPS配置, 每个GPS设备对应一个配置
        /// GPS config, each GPS device corresponding to one config
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_A_CFG_GPS_INFO[] stGps;
    }

    /// <summary>
    /// 串口基本属性
    /// Basic properties of serial port
    /// </summary>
    public struct NET_CFG_COMM_ATTR
    {
        /// <summary>
        /// / 波特率：1200，2400，4800，9600，19200，38400，57600，115200
        /// BAUD：1200，2400，4800，9600，19200，38400，57600，115200
        /// </summary>
        public uint nBaudRate;
        /// <summary>
        /// / 数据位：5，6，7，8
        /// Data bits：5，6，7，8
        /// </summary>
        public uint nDataBit;
        /// <summary>
        /// / 校验模式："Even", "Mark", "None", "Odd", "Space"
        /// Verify Mode："Even", "Mark", "None", "Odd", "Space"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szParity;
        /// <summary>
        /// / 停止位："1", "1.5", "2"
        /// stop bit："1", "1.5", "2"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szStopBit;
        /// <summary>
        /// / 预留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 串口管理器组件串口属性配置信息
    /// Serial Port Manager Component Serial Port Property Configuration Information
    /// </summary>
    public struct NET_COMMPORT_COMM_INFO
    {
        /// <summary>
        /// / 使能项，默认值为true，表示此串口被打开，无此项时设备默认打开串口
        /// Enable option, with a default value of true, indicating that this serial port is enabled. If this option is not present, the device defaults to opening the serial port
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 设备地址，如果串口上挂了多个串口设备，通过地址区分
        /// Device address, if multiple serial devices are attached to the serial port, distinguish by address
        /// </summary>
        public int nAddress;
        /// <summary>
        /// / 串口协议
        /// serial port protocol
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szProtocolName;
        /// <summary>
        /// / 串口工作模式
        /// Serial port working mode
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szMode;
        /// <summary>
        /// / 串口功能: "None":无 "Phone":车载电话 "ICCard":IC卡 "Pad":Pad功能 "LightBox":车载灯盒 "Radar":雷达，对应配置表Radar "Detector":线圈车检器（卡口使用）...
        /// Serial port function: "None": no "Phone": car phone "ICCard": IC card "Pad": Pad function "LightBox": car light box "Radar": radar, corresponding configuration table Radar "Detector": coil car detector (used for card port)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szFuncName;
        /// <summary>
        /// / 接入设备ID
        /// Access device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDeviceID;
        /// <summary>
        /// / 当选择485时，数据的读写方向 读：“Read” 写：“Write”
        /// When 485 is selected, the reading and writing direction of the data reads: "Read" and writes: "Write"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDirection;
        /// <summary>
        /// / 串口属性
        /// Serial Port Properties
        /// </summary>
        public NET_CFG_COMM_ATTR stAttribute;
        /// <summary>
        /// / 预留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 串口管理器组件串口属性配置
    /// Serial Port Manager Component Serial Port Property Configuration
    /// </summary>
    public struct NET_CFG_COMMPORT_COMM_INFO
    {
        /// <summary>
        /// / 结构体大小, 必须赋值
        /// Structure size, must be assigned a value
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 配置数量
        /// Configuration quantity
        /// </summary>
        public uint nCommPortCommInfoNum;
        /// <summary>
        /// / 串口管理器组件串口属性配置信息
        /// Serial Port Manager Component Serial Port Property Configuration Information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_COMMPORT_COMM_INFO[] stCommPortInfos;
    }

    /// <summary>
    /// 各种物体特定的过滤器
    /// Filter for all specified objects
    /// </summary>
    public struct NET_A_CFG_OBJECT_SIZEFILTER_INFO
    {
        /// <summary>
        /// 物体类型
        /// Object type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szObjectType;
        /// <summary>
        /// 对应的尺寸过滤器
        /// Corresponding size filter
        /// </summary>
        public NET_A_CFG_SIZEFILTER_INFO stSizeFilter;
    }


    /// <summary>
    /// 过滤类型
    /// Filter type
    /// </summary>
    public enum EM_A_CFG_FILTER_HEIGHT_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknow
        /// </summary>
        CFG_FILTER_HEIGHT_TYPE_UNKNOW,
        /// <summary>
        /// 高度
        /// Height
        /// </summary>
        CFG_FILTER_HEIGHT_TYPE_BYHEIGHT,
    }

    /// <summary>
    /// 特殊检测区，是指从检测区中区分出来，有特殊检测属性的区域
    /// Special detect region, refers to distinguish from the testing area, with special detection properties area
    /// </summary>
    public struct NET_A_CFG_SPECIALDETECT_INFO
    {
        /// <summary>
        /// 检测区域顶点数
        /// Detect num
        /// </summary>
        public int nDetectNum;
        /// <summary>
        /// 检测区域
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stDetectRegion;
        /// <summary>
        /// 特殊检测区属性个数
        /// Special detect attribute num
        /// </summary>
        public int nPropertyNum;
        /// <summary>
        /// 特殊检测区属性
        /// Special detect attribute
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public int[] nPropertys;
    }

    /// <summary>
    /// 计量方式
    /// Measure mode
    /// </summary>
    public enum EM_CFG_MEASURE_MODE_TYPE
    {
        /// <summary>
        /// 未知
        /// Unknow
        /// </summary>
        EM_CFG_NEASURE_MODE_TYPE_UNKNOW,
        /// <summary>
        /// 像素
        /// Pixel
        /// </summary>
        EM_CFG_NEASURE_MODE_TYPE_PIXEL,
        /// <summary>
        /// 实际长度
        /// Metric
        /// </summary>
        EM_CFG_NEASURE_MODE_TYPE_METRIC,
    }


    /// <summary>
    /// 物体类型长度过滤器
    /// Length filter
    /// </summary>
    public struct NET_A_CFG_LENGTH_FILETER_INFO
    {
        /// <summary>
        /// 计量方式
        /// Measure mode
        /// </summary>
        public EM_CFG_MEASURE_MODE_TYPE emMeasureMode;
        /// <summary>
        /// 过滤类型
        /// Filter type
        /// </summary>
        public EM_A_CFG_FILTER_HEIGHT_TYPE emFilterType;
        /// <summary>
        /// 0:大于且小于 1:大于或等于且小于或等于 2:大于且小于或等于 3:大于或等于且小于
        /// 0:greater than and less than 1:greater than or equal to or lessthan or equal to 2:greater than and less than or equal to 3:greater than or equal to or less than
        /// </summary>
        public int nDetectType;
        /// <summary>
        /// 最小检测长度，单位：cm
        /// Min length, company:cm
        /// </summary>
        public int nMinLen;
        /// <summary>
        /// 最大检测长度，单位：cm
        /// Max length, company:cm
        /// </summary>
        public int nMaxLen;
    }

    /// <summary>
    /// 不同区域各种类型物体的检测模块配置
    /// Different region all kinds of module type's configuration
    /// </summary>
    public struct NET_A_CFG_MODULE_INFO
    {
        /// <summary>
        /// 默认物体类型,详见"支持的检测物体类型列表"
        /// Module type,see "supported detect module type list"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szObjectType;
        /// <summary>
        /// 是否对识别物体抓图
        /// Enable snap shot
        /// </summary>
        public byte bSnapShot;
        /// <summary>
        /// 灵敏度,取值1-10，值越小灵敏度越低
        /// Sensitivity, 0-2,little value instruct high sensitivity
        /// </summary>
        public byte bSensitivity;
        /// <summary>
        /// 计量方式参数是否有效
        /// Measure mode enable
        /// </summary>
        public byte bMeasureModeEnable;
        /// <summary>
        /// 计量方式,0-像素，不需要远端、近端标定, 1-实际长度，单位：米, 2-远端近端标定后的像素
        /// Measure mode,0-pixel,1-actual lenth, meter, 2- pixel that has set the near point and far point
        /// </summary>
        public byte bMeasureMode;
        /// <summary>
        /// 检测区域顶点数
        /// Detect region point number
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区域
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 跟踪区域顶点数
        /// Track region point number
        /// </summary>
        public int nTrackRegionPoint;
        /// <summary>
        /// 跟踪区域
        /// Track region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuTrackRegion;
        /// <summary>
        /// 过滤类型参数是否有效
        /// ByArea,ByRatio仅作兼容，使用独立的ByArea和ByRatio选项代替 2012/03/06
        /// Filter type enable
        /// </summary>
        public byte bFilterTypeEnable;
        /// <summary>
        /// 过滤类型:0:"ByLength",1:"ByArea", 2:"ByWidthHeight", 3:"ByRatio": 按照宽高比，宽度除以高度的结果小于某个值或者大于某个值的问题将被过滤掉。
        /// Filter type:0:"ByLength",1:"ByArea", 2"ByWidthHeight"
        /// </summary>
        public byte nFilterType;
        /// <summary>
        /// 区域的背景类型参数是否有效
        /// Back ground enable
        /// </summary>
        public byte bBackgroudEnable;
        /// <summary>
        /// 区域的背景类型, 0-普通类型, 1-高光类型
        /// Back ground type, 0-normal, 1- high light
        /// </summary>
        public byte bBackgroud;
        /// <summary>
        /// 长宽过滤使能参数是否有效
        /// Valid filter by size enabled parameter or not
        /// </summary>
        public byte abBySize;
        /// <summary>
        /// 长宽过滤使能
        /// Filter by size enabled
        /// </summary>
        public byte bBySize;
        /// <summary>
        /// 物体最小尺寸参数是否有效
        /// Module minmal size enable
        /// </summary>
        public byte bFilterMinSizeEnable;
        /// <summary>
        /// 物体最大尺寸参数是否有效
        /// Module maxmal size enable
        /// </summary>
        public byte bFilterMaxSizeEnable;
        /// <summary>
        /// 物体最小尺寸 "ByLength"模式下表示宽高的尺寸，"ByArea"模式下宽表示面积，高无效。
        /// Module minmal size "ByLength": indecate width and height,"ByArea"width indecate area,height indecate nothing
        /// </summary>
        public NET_CFG_SIZE stuFilterMinSize;
        /// <summary>
        /// 物体最大尺寸 "ByLength"模式下表示宽高的尺寸，"ByArea"模式下宽表示面积，高无效。
        /// Module maxmal size "ByLength": indecate width and height,"ByArea"width indecate area,height indecate nothing
        /// </summary>
        public NET_CFG_SIZE stuFilterMaxSize;
        /// <summary>
        /// 排除区域数
        /// Exclude region number
        /// </summary>
        public int nExcludeRegionNum;
        /// <summary>
        /// 排除区域
        /// Exclude region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_REGION[] stuExcludeRegion;
        /// <summary>
        /// 校准框个数
        /// Calibrate box number
        /// </summary>
        public int nCalibrateBoxNum;
        /// <summary>
        /// 校准框(远端近端标定模式下有效)
        /// calibrate box
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEBOX_INFO[] stuCalibrateBoxs;
        /// <summary>
        /// 检测精度是否有效
        /// Test accuracy enable
        /// </summary>
        public byte bAccuracy;
        /// <summary>
        /// 检测精度
        /// Test accuracy
        /// </summary>
        public byte byAccuracy;
        /// <summary>
        /// 算法移动步长是否有效
        /// Moving step enable
        /// </summary>
        public byte bMovingStep;
        /// <summary>
        /// 算法移动步长
        /// Moving step
        /// </summary>
        public byte byMovingStep;
        /// <summary>
        /// 算法缩放因子是否有效
        /// Scaling factor enable
        /// </summary>
        public byte bScalingFactor;
        /// <summary>
        /// 算法缩放因子
        /// Scaling factor
        /// </summary>
        public byte byScalingFactor;
        /// <summary>
        /// 保留字段
        /// Reserved field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
        public byte[] bReserved2;
        /// <summary>
        /// 漏检和误检平衡参数是否有效
        /// Miss detect and error detect balance paramter is valid or not. parameter or not
        /// </summary>
        public byte abDetectBalance;
        /// <summary>
        /// 漏检和误检平衡 0-折中模式(默认)1-漏检更少2-误检更少
        /// Miss detect and error detect balance 0-compromise mode (default) 1-less miss detection 2- less error detection
        /// </summary>
        public int nDetectBalance;
        public byte abByRatio;
        public byte abMinRatio;
        public byte abMaxRatio;
        public byte abMinAreaSize;
        public byte abMaxAreaSize;
        /// <summary>
        /// 是否按宽高比过滤 通过能力ComplexSizeFilter判断是否可用 可以和nFilterType复用
        /// Filter by W/H ratio or not. You can use ComplexSizeFilte to see it works or not. You can use nFilterType at the same time.
        /// </summary>
        public byte bByRatio;
        /// <summary>
        /// 车辆检测低灵敏度, 取值1~100
        /// Vehicle detection low sensitivity, the value is 1~100
        /// </summary>
        public byte byLowDetectSensitivity;
        /// <summary>
        /// 车辆检测高灵敏度, 取值1~100
        /// Vehicle detection high sensitivity, the value is 1~100
        /// </summary>
        public byte byHighDetectSensitivity;
        /// <summary>
        /// 最小宽高比
        /// Min W/H ratio
        /// </summary>
        public double dMinRatio;
        /// <summary>
        /// 最大宽高比
        /// Max W/H ratio
        /// </summary>
        public double dMaxRatio;
        /// <summary>
        /// 最小面积矩形框尺寸 "计量方式"为"像素"时，表示最小面积矩形框的宽高尺寸；"计量方式"为"远端近端标定模式"时，表示基准框的最小宽高尺寸；
        /// Min area rectangle box When "measurement method" is "pixel", it represents its sizes of lengths; when "measurement method" is "far and near-end calibration mode", it represents the min sizes of lengths of standard box
        /// </summary>
        public NET_CFG_SIZE stuMinAreaSize;
        /// <summary>
        /// 最大面积矩形框尺寸, 同上
        /// Max area rectangle box, same as above
        /// </summary>
        public NET_CFG_SIZE stuMaxAreaSize;
        public byte abByArea;
        public byte abMinArea;
        public byte abMaxArea;
        public byte abMinRatioSize;
        public byte abMaxRatioSize;
        /// <summary>
        /// 是否按面积过滤 通过能力ComplexSizeFilter判断是否可用 可以和nFilterType复用
        /// Filter by area ratio or not.You can use ComplexSizeFilte to see it works or not. You can use nFilterType at the same time.
        /// </summary>
        public byte bByArea;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved3;
        /// <summary>
        /// 最小面积
        /// Min area
        /// </summary>
        public float nMinArea;
        /// <summary>
        /// 最大面积
        /// Max area
        /// </summary>
        public float nMaxArea;
        /// <summary>
        /// 最小宽高比矩形框尺寸，最小宽高比对应矩形框的宽高尺寸。
        /// Min W/H ratio rectangle box size, min W/H ratio corresponding to sizes of lengths of rectangle box
        /// </summary>
        public NET_CFG_SIZE stuMinRatioSize;
        /// <summary>
        /// 最大宽高比矩形框尺寸，同上
        /// Max W/H ratio rectangle box size
        /// </summary>
        public NET_CFG_SIZE stuMaxRatioSize;
        /// <summary>
        /// 面积校准框个数
        /// Area calibration box number
        /// </summary>
        public int nAreaCalibrateBoxNum;
        /// <summary>
        /// 面积校准框
        /// Area calibration pane
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEBOX_INFO[] stuAreaCalibrateBoxs;
        /// <summary>
        /// 比例校准框个数
        /// Ratio calibration pane number
        /// </summary>
        public int nRatioCalibrateBoxs;
        /// <summary>
        /// 比例校准框个数
        /// Ratio calibration pane number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_CFG_CALIBRATEBOX_INFO[] stuRatioCalibrateBoxs;
        /// <summary>
        /// 是否开启去扰动模块
        /// Turn on anti-disturbance module or not
        /// </summary>
        public byte bAntiDisturbance;
        /// <summary>
        /// 是否有逆光
        /// There is backlight or not
        /// </summary>
        public byte bBacklight;
        /// <summary>
        /// 是否有阴影
        /// There is shadow or not
        /// </summary>
        public byte bShadow;
        /// <summary>
        /// 是否开启轮廓辅助跟踪，例：在目标识别时可以通过跟踪人体来辅助识别目标
        /// Turn on contour assistant track or not For example, for facial identification, it can identify Target by tracking human body
        /// </summary>
        public byte bContourAssistantTrack;
        /// <summary>
        /// 云台预置点，0~255，0表示固定场景，忽略预置点。大于0表示在此预置点时模块有效
        /// PTZ preset, 0~255, 0=stationary scene, ignored preset.
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 物体特定的过滤器个数
        /// Object specified filter number
        /// </summary>
        public int nObjectFilterNum;
        /// <summary>
        /// 物体特定的过滤器信息
        /// Object specified filter info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_A_CFG_OBJECT_SIZEFILTER_INFO[] stObjectFilter;
        public bool abObjectImageSize;
        /// <summary>
        /// 保证物体图像尺寸相同,单位是像素,不支持小数，取值：>=0, 0 表示自动调整大小
        /// Ensure same size of object image, unit is pixel, nonsupport of decimal, take: >=0, 0 is automatic adjustion
        /// </summary>
        public NET_CFG_SIZE stObjectImageSize;
        /// <summary>
        /// 特殊检测区域个数
        /// Special detect num
        /// </summary>
        public int nSpecailDetectNum;
        /// <summary>
        /// 特殊检测区信息
        /// Special detect region info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
        public NET_A_CFG_SPECIALDETECT_INFO[] stSpecialDetectRegions;
        /// <summary>
        /// 需要识别物体的属性个数
        /// Number of attributes in the need to identitu objects
        /// </summary>
        public uint nAttribute;
        /// <summary>
        /// 需要识别物体的属性列表，“Category” 物体子类；“Size” 物体大小；“Color” 物体颜色；“Speed” 物体速度；“Sign” 物体标志，对车辆而言，指车标；“Action” 物体动作
        /// need to identify the object's attribute list,"Category" "Size" "Color" "Speed" "Sign" ,"Action"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szAttributes;
        /// <summary>
        /// nPlateAnalyseMode是否有效
        /// nPlateAnalyseMode enable
        /// </summary>
        public bool abPlateAnalyseMode;
        /// <summary>
        /// 车牌识别模式，0-只识别车头牌照 1-只识别车尾牌照 2-车头牌照优先（场景中大部分车均是车头牌照）3-车尾牌照优先（场景中大部分车均是车尾牌照）
        /// szAttributes属性存在"Category"时生效
        /// License plate recognition model,0-only identify car license plate 1-only identify the rear license plate, 2-car license plate is preferred,3-the rear license plate is preferred
        /// /@brief szAttributes properties work when stored in "Category"
        /// </summary>
        public int nPlateAnalyseMode;
        /// <summary>
        /// 需要识别物体的子类型总数
        /// The total number of category types CFG_CATEGORY_TYPE emCategoryType[MAX_CATEGORY_TYPE_NUMBER];  Sub type information
        /// </summary>
        public uint nCategoryNum;
        /// <summary>
        /// 子类型信息
        /// Category type
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public EM_CFG_CATEGORY_TYPE[] emCategoryType;
        /// <summary>
        /// 检测区参数用于的场景类型
        /// the type of scene
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szSceneType;
        /// <summary>
        /// 物体类型过滤器，如果指定新的过滤器以新的为准
        /// Object type Length Filter, if new filter is specified, whichever is new
        /// </summary>
        public NET_A_CFG_LENGTH_FILETER_INFO stuLengthFilter;
        /// <summary>
        /// szSceneTypeEx 是否有效
        /// whether szSceneTypeEx is valid: TRUE, use szSceneTypeListEx
        /// </summary>
        public bool bSceneTypeEx;
        /// <summary>
        /// 检测区参数用于的场景类型扩展
        /// extend of szSceneType
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szSceneTypeEx;
        /// <summary>
        /// 辅助线模式，开关门检测智能大类使用 0:未知 1:中线 2:边线
        /// Auxiliary ilne mode 0:unknown 1:midcourt line 2:side boundary
        /// </summary>
        public int nDetectLineMode;
        /// <summary>
        /// 警戒线数量
        /// nDeviceLine num
        /// </summary>
        public int nDetectLineNum;
        /// <summary>
        /// 警戒线折线类型，折线中每个端点的坐标归一化到[0,8192)区间。
        /// Caution line type,borser[0,8192]
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectLine;
        /// <summary>
        /// / 摩托车是否作为机动车处理
        /// / Is a motorcycle treated as a motor vehicle
        /// </summary>
        public bool bMotorcycleAsMotor;
        /// <summary>
        /// 预留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 模块配置
    /// Module configuration
    /// </summary>
    public struct NET_CFG_ANALYSEMODULES_INFO
    {
        /// <summary>
        /// 检测模块数
        /// Detect module number
        /// </summary>
        public int nMoudlesNum;
        /// <summary>
        /// 每个视频输入通道对应的各种类型物体的检测模块配置
        /// Each video channel's kinds of object's configration of detect module
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_A_CFG_MODULE_INFO[] stuModuleInfo;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_WRONGROUTE (不按车道行驶事件)对应的规则配置
    /// 事件类型 EVENT_IVS_TRAFFIC_CROSSLANE (变道)对应的规则配置
    /// 事件类型 EVENT_IVS_TRAFFIC_OVERLINE (压车道线)对应的规则配置
    /// 事件类型 EVENT_IVS_TRAFFIC_TURNLEFT (左转事件)对应的规则配置
    /// 事件类型 EVENT_IVS_TRAFFIC_TURNRIGHT (右转)对应的规则配置
    /// 事件类型 EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE (黄牌车占道事件)对应的规则配置
    /// 事件类型 EVENT_IVS_TRAFFIC_VEHICLEINROUTE (有车占道事件)对应的规则配置
    /// 事件类型 EVENT_IVS_TRAFFIC_BACKING (倒车事件)对应的规则配置
    /// Rule type EVENT_IVS_TRAFFIC_WRONGROUTE configuration
    /// Rule type EVENT_IVS_TRAFFIC_CROSSLANE configuration
    /// Rule type EVENT_IVS_TRAFFIC_OVERLINE configuration
    /// Rule type EVENT_IVS_TRAFFIC_TURNLEFT configuration
    /// Rule type EVENT_IVS_TRAFFIC_TURNRIGHT configuration
    /// Rule type EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE configuration
    /// Rule type EVENT_IVS_TRAFFIC_VEHICLEINROUTE configuration
    /// Rule type EVENT_IVS_TRAFFIC_BACKING configuration
    /// </summary>
    public struct NET_A_CFG_TRAFFIC_WRONGROUTE_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name,different rule mast have different name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 灵敏度，取值1-10，数值越大代表灵敏度越高
        /// Sensitivity(value 1-10)the higher the value the higher the sensitivity
        /// </summary>
        public byte bSensitivity;
        /// <summary>
        /// 触发跟踪使能,对绊线,入侵的物体跟踪
        /// trigger tracking enable, for tripwire, intrusion object tracking
        /// </summary>
        public byte bTrackEnable;
        /// <summary>
        /// 保留字段
        /// reserved field
        /// </summary>
        public byte bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset Id 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 车道编号
        /// Road number
        /// </summary>
        public int nLane;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 检测区顶点数
        /// Detection zone top
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区
        /// Detection zone
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 正常行驶方向顶点数
        /// Normal driving direction top
        /// </summary>
        public int nDirectionLinPoint;
        /// <summary>
        /// 正常行驶方向，第一个点是起点，最后一个点是终点
        /// Normal driving direction, first point is starting point, last point is end point
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stuDirectionLine;
        /// <summary>
        /// 报警延时时间，单位：秒
        /// Alarm delay time Unit: seconds
        /// </summary>
        public uint nDelayTime;
        /// <summary>
        /// 是否抓拍白实线 0：不抓拍 1：抓拍
        /// Capture white solid line 0: no capture 1: capture
        /// </summary>
        public uint nSnapWhiteSolidLine;
        /// <summary>
        /// 该字段只在TrafficBacking规则中设置 倒车位移，默认1024坐标系， 范围是1-1023 单位是像素， 若无该字段或该字段配置为0时，算法设置默认值
        /// This field can only be set in the TrafficBacking rule. Reverse displacement, the default 1024 coordinate system, the range is 1-1023, the unit is pixel, if there is no such field or the field is configured to 0, the algorithm sets the default value
        /// </summary>
        public uint nBackCarDisplacement;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_RETROGRADE (逆行事件)对应的规则配置
    /// Rule type EVENT_IVS_TRAFFIC_RETROGRADE configuration
    /// </summary>
    public struct NET_A_CFG_TRAFFIC_RETROGRADE_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name,different rule mast have different name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 触发跟踪使能,对绊线,入侵的物体跟踪
        /// Trigger tracking enabled for tripwire, invasion of object tracking
        /// </summary>
        public byte bTrackEnable;
        /// <summary>
        /// 保留字段
        /// Reserved field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset Id 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 车道编号
        /// Road number
        /// </summary>
        public int nLane;
        /// <summary>
        /// TRUE: 逆行合法;FALSE:逆行不合法
        /// TRUE: Legel opposition;FALSE:Illegal opposition
        /// </summary>
        public bool bLegal;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 检测区域顶点数
        /// Detect region point
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区域
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 正常行驶方向顶点数
        /// Normal driving direction point
        /// </summary>
        public int nDirectionLinPoint;
        /// <summary>
        /// 正常行驶方向，第一个点是起点，最后一个点是终点
        /// Normal driving direction,the first point is starting,the last point is the end
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stuDirectionLine;
        /// <summary>
        /// 最短触发时间 单位：秒
        /// Minimum Triggering Time, Unit: Second
        /// </summary>
        public int nMinDuration;
        /// <summary>
        /// 逆行位移，默认1024坐标系， 范围是1-1023 单位是像素， 若无该字段或该字段配置为0时，算法设置默认值
        /// Retrograde displacement, the default 1024 coordinate system, the range is 1-1023, the unit is pixel, if there is no such field or the field is configured to 0, the algorithm sets the default value
        /// </summary>
        public uint nReverseDisplacement;
    }

    /// <summary>
    /// 事件类型EVENT_IVS_TRAFFIC_TOLLGATE(交通卡口新规则事件)对应的规则配置
    /// Event type EVENT_IVS_TRAFFIC_TOLLGATE ( Traffic ANPR new rule event) Corresponding rule configuration
    /// </summary>
    public struct NET_A_CFG_TRAFFICTOLLGATE_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name, different name apply to seperate rule
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 车辆行驶方向个数
        /// Number of vehicle driving directions
        /// </summary>
        public byte nDirectionNum;
        /// <summary>
        /// 相对车道方向需要上报的车辆行驶方向, 0:未知, 1:正向, 2:反向
        /// The direction of vehicle travel that needs to be reported relative to the lane direction, 0: unknown, 1: forward, 2: reverse
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] nDirection;
        /// <summary>
        /// 相应物体类型个数
        /// Corresponding object type
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Corresponding object type list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset (0~65535)
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 车道编号
        /// Lane number
        /// </summary>
        public int nLane;
        /// <summary>
        /// 卡口报警线顶点数
        /// ANPR alarm acme amount
        /// </summary>
        public int nDetectLinePoint;
        /// <summary>
        /// 卡口报警线
        /// ANPR alarm line
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYLINE[] stuDetectLine;
        /// <summary>
        /// 报警联动
        /// Alarm linkage
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond period
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_OVERSPEED (交通违章-超速)对应的规则配置
    /// Rule type EVENT_IVS_TRAFFIC_OVERSPEED configuration
    /// </summary>
    public struct NET_A_CFG_TRAFFIC_OVERSPEED_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name,different rule mast have different name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset Id 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 车道编号
        /// Road number
        /// </summary>
        public int nLane;
        /// <summary>
        /// 速度上限
        /// Speed Upper Limit
        /// </summary>
        public int nSpeedUpperLimit;
        /// <summary>
        /// 速度下限
        /// Speed Lower Limit
        /// </summary>
        public int nSpeedLowerLimit;
        /// <summary>
        /// 最短触发时间 单位：秒
        /// Minimum Triggering Time, Unit: Second
        /// </summary>
        public int nMinDuration;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 是否启用大小车限速
        /// Whether the speed limit of large and small vehicles is enabled
        /// </summary>
        public byte bSpeedLimitForSize;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved1;
        /// <summary>
        /// 小型车速度上限
        /// Small vehicles speed upper limit
        /// </summary>
        public int nSmallCarSpeedUpperLimit;
        /// <summary>
        /// 小型车速度下限
        /// Small vehicles speed lower limit
        /// </summary>
        public int nSmallCarSpeedLowerLimit;
        /// <summary>
        /// 大车限低速宽限值
        /// Big vehicles low speed margin
        /// </summary>
        public int nBigCarUnderSpeedMargin;
        /// <summary>
        /// 大车限高速宽限值
        /// Big vehicles high speed margin
        /// </summary>
        public int nBigCarOverSpeedMargin;
        /// <summary>
        /// 小车限低速宽限值
        /// Small vehicles low speed margin
        /// </summary>
        public int nUnderSpeedMargin;
        /// <summary>
        /// 小车限高速宽限值
        /// Small vehicles high speed margin
        /// </summary>
        public int nOverSpeedMargin;
        /// <summary>
        /// 大车车速度上限
        /// Big vehicles speed upper limit
        /// </summary>
        public int nBigCarSpeedUpperLimit;
        /// <summary>
        /// 大车车速度下限
        /// Big vehicles speed lower limit
        /// </summary>
        public int nBigCarSpeedLowerLimit;
        /// <summary>
        /// 黄牌车限速上限
        /// Yellow card vehicles speed upper limit
        /// </summary>
        public int nYellowSpeedUpperLimit;
        /// <summary>
        /// 黄牌车限速下限
        /// Yellow card vehicles speed lower limit
        /// </summary>
        public int nYellowSpeedLowerLimit;
        /// <summary>
        /// 是否抓拍摩托车
        /// Whether to snap the motorcycle
        /// </summary>
        public byte bSnapMotorcycle;
        /// <summary>
        /// 是否抓拍无牌机动车,0为不抓拍无牌机动车,1为抓拍无牌机动车,默认为0
        /// Whether to capture unlicensed vehicles, 0 refers to not snapping unlicensed vehicles, 1 refers to snapping unlicensed vehicles, default to 0
        /// </summary>
        public byte bSnapNoPlateMotor;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved2;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_UNDERSPEED (欠速)对应的规则配置
    /// Rule type EVENT_IVS_TRAFFIC_UNDERSPEED configuration
    /// </summary>
    public struct NET_A_CFG_TRAFFIC_UNDERSPEED_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name,different rule mast have different name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 保留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Current object's number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Current object list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset Id 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 车道编号
        /// Road number
        /// </summary>
        public int nLane;
        /// <summary>
        /// 速度上限
        /// Speed Upper Limit
        /// </summary>
        public int nSpeedUpperLimit;
        /// <summary>
        /// 速度下限
        /// Speed Lower Limit
        /// </summary>
        public int nSpeedLowerLimit;
        /// <summary>
        /// 最短触发时间 单位：秒
        /// Minimum Triggering Time, Unit: Second
        /// </summary>
        public int nMinDuration;
        /// <summary>
        /// 报警联动
        /// Alarm event handler
        /// </summary>
        public NET_CFG_ALARM_MSG_HANDLE_EX stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time section
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_CFG_TIME_SECTION[] stuTimeSection;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_FISHING_DETECTION (钓鱼检测事件)对应的数据块描述信息
    /// The description of the data block corresponding to the event type EVENT_IVS_FISHING_DETECTION
    /// </summary>
    public struct NET_A_DEV_EVENT_FISHING_DETECTION_INFO
    {
        /// <summary>
        /// / 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲,1:开始, 2:停止
        /// Action, 0:Pulse, 1:start, 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 事件名称
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// PTS
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 事件发生的时间
        /// UTC
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件ID 协议是uint32
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 智能事件所属大类
        /// Class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// / GroupID事件组ID，同一物体抓拍过程内GroupID相同
        /// GroupID, Groupid is the same in the process of capturing the same object
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// / CountInGroup一个事件组内的抓拍张数
        /// Number of snapshots in an event group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// / IndexInGroup一个事件组内的抓拍序号，从1开始
        /// Capture sequence number in an event group, starting from 1
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// / 事件时间毫秒数
        /// Event time milliseconds
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// / 检测目标物体的个数
        /// Object Count
        /// </summary>
        public int nObjectCount;
        /// <summary>
        /// / 检测目标的物体信息
        /// Object Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_A_MSG_OBJECT_EX2[] stuObjects;
        /// <summary>
        /// / 检测区个数
        /// Detect Region Count
        /// </summary>
        public int nDetectRegionCount;
        /// <summary>
        /// / 表示配置的规则区域
        /// Detect Region Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// / 事件触发的预置点号，从1开始
        /// Preset ID, starting from 1
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// / 全景广角图
        /// Scene Image
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// / 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 租赁规则配置, 对应枚举 NET_EM_CFG_LEASE_RULES
    /// Lease Rules Configuration, Corresponding to NET_EM_CFG_LEASE_RULES
    /// </summary>
    public struct NET_CFG_LEASE_RULES_INFO
    {
        /// <summary>
        /// / 结构体大小, 必须赋值
        /// The size of the structure, must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 租赁规则使能
        /// Lease Rules Enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 提醒时间;在租期到期前这个天数内属于提醒范围
        /// Reminder time; within this number of days before the lease expires, it belongs to the reminder range
        /// </summary>
        public int nReminderTime;
        /// <summary>
        /// / 缓冲时间;在租期到期后这个天数内属于缓冲范围
        /// Buffer time; within this number of days after the lease expires, it belongs to the buffer range
        /// </summary>
        public int nPaddingTime;
    }

    /// <summary>
    /// 报警事件详情
    /// Alarm Event Details
    /// </summary>
    public struct NET_IVSEVENT_DATA
    {
        /// <summary>
        /// / 事件类型,参见智能事件类型，如 EVENT_IVS_ALL
        /// Event type, see Intelligent Event Type, such as EVENT_ IVS_ ALL
        /// </summary>
        public uint dwAlarmType;
        /// <summary>
        /// / 智能事件枚举对应的结构体大小
        /// Structure size corresponding to intelligent event enumeration
        /// </summary>
        public int datalen;
        /// <summary>
        /// / 智能事件枚举对应的结构体指针
        /// Structure pointer corresponding to intelligent event enumeration
        /// </summary>
        public IntPtr data;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szReserved;
    }
    public struct NET_IVSEVENT_DETAIL_INFO
    {
        /// <summary>
        /// / 报警事件详情
        /// Alarm Event infomation
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IVSEVENT_DATA[] stuEventInfo;
        /// <summary>
        /// / 报警事件数量
        /// Number of alarm Event infomation
        /// </summary>
        public int nEventInfoNum;
        /// <summary>
        /// / 图片信息数组数量
        /// Number of image information arrays
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// / 图片信息数组,该接口只有emType、szPath两个字段有效
        /// Image information array, this interface only has two valid fields: emType and szPath
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// / 报警录像rtsp地址
        /// Alarm recording rtsp address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szVideoRtsp;
        /// <summary>
        /// / 报警事件录像下载地址url
        /// Alarm event recording download address URL
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szVideoDownload;
        /// <summary>
        /// / 报警音频rtsp地址
        /// Alarm audio rtsp address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAudioRtsp;
        /// <summary>
        /// / 报警事件音频下载地址url
        /// Alarm event audio download address URL
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAudioDownload;
        /// <summary>
        /// / 报警事件物联网数据下载地址url
        /// Alarm Event IoT Data Download Address URL
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szIotDownload;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 返回的事件详细信息
    /// Event details returned
    /// </summary>
    public struct NET_NOTIFY_IVSEVENT_DETAIL_INFO
    {
        /// <summary>
        /// /返回的事件数据指针，事件下标与传入数据id数组下标一一对应
        /// The returned event data corresponds one-to-one with the index of the input data ID array
        /// </summary>
        public IntPtr pstuIVSEventDetailInfo;
        /// <summary>
        /// / 返回的事件数据数量
        /// Number of event data returned
        /// </summary>
        public int nIVSEventDetailInfoNum;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetIVSEventDetail接口入参
    /// CLIENT_GetIVSEventDetail input parameter
    /// </summary>
    public struct NET_IN_GET_IVSEVENT_DETAIL_INFO
    {
        /// <summary>
        /// / 此结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 待查询事件ID数量
        /// Number of event IDs to be queried
        /// </summary>
        public int nIdNum;
        /// <summary>
        /// / 待查询事件ID列表
        /// List of event IDs to be queried
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public uint[] nId;
        /// <summary>
        /// / 回调函数
        /// callback
        /// </summary>
        public fNotifyIVSEventDetail cbNotifyIVSEventDetail;
        /// <summary>
        /// / 用户自定义参数
        /// user information
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// CLIENT_GetIVSEventDetail接口出参
    /// CLIENT_GetIVSEventDetail output parameter
    /// </summary>
    public struct NET_OUT_GET_IVSEVENT_DETAIL_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_DownloadPieceFile 接口输入参数（文件下载）
    /// CLIENT_DownloadPieceFile input param
    /// </summary>
    public struct NET_IN_DOWNLOAD_PIECE_FILE
    {
        public uint dwSize;
        /// <summary>
        /// / 需要下载的文件名,支持全路径
        /// File name,support full path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szFileName;
        /// <summary>
        /// / 下载偏移,单位字节
        /// / 如果文件总长度为50KB,每次请求下载数据量为32KB,那么第一次请求时,nOffSet为0,第二次请求nOffSet为32KB
        /// Offset,unit:BYTE
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// / 请求下载数据量,单位字节，建议为32KB,最大不超过4MB
        /// need length,unit:BYTE, suggest value is 32KB, not over 4MB
        /// </summary>
        public uint nNeedLength;
    }

    /// <summary>
    /// CLIENT_DownloadPieceFile 接口输出参数（文件下载）
    /// CLIENT_DownloadPieceFile output param
    /// </summary>
    public struct NET_OUT_DOWNLOAD_PIECE_FILE
    {
        public uint dwSize;
        /// <summary>
        /// / 文件总长度
        /// file length
        /// </summary>
        public uint nFileLength;
        /// <summary>
        /// / 本次返回的数据长度,单位字节,建议为32KB,最大不超过4MB
        /// binary data length this time, unit:BYTE,suggest value is 32KB, not over 4MB
        /// </summary>
        public uint nPacketLength;
        /// <summary>
        /// / 本次请求的文件数据,由用户申请内存,大小为nBufferLen
        /// file buffer,the space application by the user,size is nBufferLen
        /// </summary>
        public IntPtr szBuffer;
        /// <summary>
        /// / 本次请求的文件数据长度,单位字节
        /// buffer len,unit:BYTE,the same to nNeedLength of NET_IN_DOWNLOAD_PIECE_FILE
        /// </summary>
        public uint nBufferLen;
    }

    /// <summary>
    /// CLIENT_GetHeatMapsDirectly 入参
    /// CLIENT_GetHeatMapsDirectly input parameter
    /// </summary>
    public struct NET_IN_GET_HEATMAPS_INFO
    {
        /// <summary>
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 通道号
        /// Channel id
        /// </summary>
        public int nChannel;
    }

    /// <summary>
    /// CLIENT_GetHeatMapsDirectly 出参
    /// CLIENT_GetHeatMapsDirectly output parameter
    /// </summary>
    public struct NET_OUT_GET_HEATMAPS_INFO
    {
        public uint dwSize;
        /// <summary>
        /// / 元数据
        /// Meta data
        /// </summary>
        public NET_RADIOMETRY_METADATA stMetaData;
        /// <summary>
        /// / 热图数据缓存区 pbDataBuf 的大小, 由用户指定
        /// The size of pbDataBuf, allocated by user
        /// </summary>
        public uint dwMaxDataBufLen;
        /// <summary>
        /// / 热图数据缓冲区(压缩过的数据,里面是每个像素点的温度数据,可以使用元数据信息解压),需要用户分配空间
        /// The buffer of heatmap data(The data has been compressed, each pixel represents temperature,can extract the data use meta data), allocated by user
        /// </summary>
        public IntPtr pbDataBuf;
        /// <summary>
        /// / 缓存区中返回的实际文件数据大小
        /// The actual data size
        /// </summary>
        public uint dwRetDataBufLen;
        /// <summary>
        /// / 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 添加任务后的反馈类型
    /// add feedback type after task
    /// </summary>
    public enum EM_A_NET_MISSION_FEEDBACK_TYPE
    {
        /// <summary>
        /// / 不需要反馈
        /// no feedback needed
        /// </summary>
        NET_MISSION_FEEDBACK_NO = 0,
        /// <summary>
        /// / 需要对方反馈, 对方应当回复ALARM_MISSION_CONFIRM任务确认事件
        /// need feedback, shall replay ALARM_MISSION_CONFIRM task confirmed event
        /// </summary>
        NET_MISSION_FEEDBACK_YES,
    }

    /// <summary>
    /// 消息类型(车载)
    /// message type (mobile)
    /// </summary>
    public enum EM_A_NET_MISSION_MESSAGE_TYPE
    {
        /// <summary>
        /// /文本消息
        /// text info
        /// </summary>
        NET_MISSION_MESSAGE_TEXT = 0,
        /// <summary>
        /// /广告信息
        /// ad info
        /// </summary>
        NET_MISSION_MESSAGE_AD,
        /// <summary>
        /// /广播消息
        /// broadcast info
        /// </summary>
        NET_MISSION_MESSAGE_BROAD,
        /// <summary>
        /// /司机消息
        /// driver info
        /// </summary>
        NET_MISSION_MESSAGE_DRIVER,
        /// <summary>
        /// /调度指令
        /// dispatch command
        /// </summary>
        NET_MISSION_MESSAGE_DISPATCH,
        /// <summary>
        /// /透明数据
        /// transparent data
        /// </summary>
        NET_MISSION_MESSAGE_TRANSPARENT,
        /// <summary>
        /// /紧急事件
        /// emergency
        /// </summary>
        NET_MISSION_MESSAGE_URGENT,
        /// <summary>
        /// /呼叫类型
        /// Call Type
        /// </summary>
        NET_MISSION_MESSAGE_CALL = 7,
        /// <summary>
        /// / 通用报警类型
        /// General alarm type
        /// </summary>
        NET_MISSION_MESSAGE_GENERAL_ALARM,
        /// <summary>
        /// / 门禁一键报警
        /// One-key alarm for access control
        /// </summary>
        NET_MISSION_MESSAGE_ACCESS_ONE_KEY_ALARM,
        /// <summary>
        /// / 人体测温异常报警
        /// Abnormal human body TM alarm
        /// </summary>
        NET_MISSION_MESSAGE_ABNORMAL_HUMAN_BODY_TEMPERATURE_MEASUREMENT_ALARM,
        /// <summary>
        /// / 未测温报警
        /// No TM alarm
        /// </summary>
        NET_MISSION_MESSAGE_NO_TEMPERATURE_MEASUREMENT_ALARM,
        /// <summary>
        /// / 呼吸异常
        /// Abnormal breathing
        /// </summary>
        NET_MISSION_MESSAGE_ABNORMAL_BREATH,
        /// <summary>
        /// / 心跳异常
        /// Abnormal heartbeat
        /// </summary>
        NET_MISSION_MESSAGE_ABNORMAL_HEARTBEAT,
        /// <summary>
        /// / 在离床异常
        /// Abnormal in getting out of bed
        /// </summary>
        NET_MISSION_MESSAGE_ABNORMAL_GET_OUT_BED,
        /// <summary>
        /// / 人数异常
        /// Abnormal number of people
        /// </summary>
        NET_MISSION_MESSAGE_ABNORMAL_PEOPLE_NUMBER,
        /// <summary>
        /// / 跌倒
        /// Falls
        /// </summary>
        NET_MISSION_MESSAGE_FALL = 16,
        /// <summary>
        /// / 换药请求
        /// Dressing change request
        /// </summary>
        NET_MISSION_MESSAGE_DRESSING_CHANGE_REQUEST,
        /// <summary>
        /// / 请求支援
        /// Request support
        /// </summary>
        NET_MISSION_MESSAGE_REQUEST_SUPPORT,
        /// <summary>
        /// / 护理请求
        /// Nursing request
        /// </summary>
        NET_MISSION_MESSAGE_NURSING_REQUEST,
        /// <summary>
        /// / 门灯控制
        /// Door light control
        /// </summary>
        NET_MISSION_MESSAGE_DOOR_LIGHT_CONTROL,
        /// <summary>
        /// / 手柄掉线报警
        /// Handle disconnected alarm
        /// </summary>
        NET_MISSION_MESSAGE_HANDLE_DISCONNECTED_ALARM,
        /// <summary>
        /// / 警车数据
        /// Police Vehicle Data
        /// </summary>
        NET_MISSION_MESSAGE_POLICECAR,
        /// <summary>
        /// / 服务评价
        /// / Service evaluation
        /// </summary>
        NET_MISSION_MESSAGE_SERVICE_EVALUATION,
        NET_MISSION_MESSAGE_MAX,
    }

    /// <summary>
    /// 医护对讲报警、护理任务信息
    /// Medical intercom alarm, nursing task information
    /// </summary>
    public struct NET_HOSPITAL_ALARM_DATA
    {
        /// <summary>
        /// / 病房信息
        /// RoomNumber
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szRoomNumber;
        /// <summary>
        /// / 病床信息
        /// BedNumber
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szBedNumber;
        /// <summary>
        /// / 发生事件的设备编号
        /// Device Code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceCode;
        /// <summary>
        /// / 事件时间
        /// Event time
        /// </summary>
        public uint nUTC;
        /// <summary>
        /// / 触发事件设备的呼叫号码
        /// The call number of the device
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCallNumber;
        /// <summary>
        /// / 门灯颜色及模式控制, 0:不亮, 1:红色(特级护理), 2:黄色(一级护理), 3:蓝色(二级护理), 4:绿色(三级护理), 5:红色闪烁(一键报警)
        /// Door light color and mode control, 0: off, 1: red (superior care), 2: yellow (primary care), 3: blue (secondary care), 4: green (tertiary care), 5: Red flashing (one-key alarm)
        /// </summary>
        public int nLightMode;
        /// <summary>
        /// / 是否使用szRoomNumberEx(病房信息拓展字段)
        /// Whether to use szRoomNumberEx(Ward Information Extension field)
        /// </summary>
        public bool bIsUsingRoomNumberEx;
        /// <summary>
        /// / 病房信息(拓展)
        /// Ward Information (Expansion)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRoomNumberEx;
        /// <summary>
        /// / 保留字节
        /// Reserve bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 84)]
        public string szReserved;
    }

    /// <summary>
    /// 警车基础数据
    /// Basic data of police vehicles
    /// </summary>
    public struct NET_POLICE_VEHICLE_DATA
    {
        /// <summary>
        /// / 车辆ID
        /// car ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szTerminalSn;
        /// <summary>
        /// / 用户ID
        /// user ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUid;
        /// <summary>
        /// / 用户姓名
        /// username
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserName;
        /// <summary>
        /// / 基地标识
        /// Base identification
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szGroupId;
        /// <summary>
        /// / VTR订单号
        /// VTR order number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVtrNumber;
        /// <summary>
        /// / BOPM编号
        /// BOPM number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szBopmNumber;
        /// <summary>
        /// / 事件代码
        /// event code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCaseCode;
        /// <summary>
        /// / 事件分类
        /// Event classification
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCaseType;
        /// <summary>
        /// / 视频叠加
        /// video overlay
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAdditionalInfo;
        /// <summary>
        /// / MD5值
        /// MD5
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szMd5;
        /// <summary>
        /// / 其他内容1
        /// other1
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserveA;
        /// <summary>
        /// / 其他内容2
        /// other2
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserveB;
        /// <summary>
        /// / 其他内容3
        /// other3
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserveC;
        /// <summary>
        /// / 录像开始时间（带本地时区）
        /// / Recording start time (with local time zone)
        /// </summary>
        public uint nRecordStartTime;
        /// <summary>
        /// / 事件时间，录像结束时间（带本地时区）
        /// / Event time, recording end time (with local time zone)
        /// </summary>
        public uint nEventTime;
        /// <summary>
        /// / 录制开始时间（录像开始时间-时区）
        /// / Recording start time (recording start time time time time zone)
        /// </summary>
        public uint nRecordStartUTC;
        /// <summary>
        /// / 录制结束时间（录像结束时间-时区）
        /// / Recording End Time (Recording End Time Time Time Zone)
        /// </summary>
        public uint nRecordEndUTC;
        /// <summary>
        /// / 附件上传开始时间戳
        /// / Attachment upload start timestamp
        /// </summary>
        public uint nUploadStartUTC;
        /// <summary>
        /// / 附件上传结束时间戳
        /// / Attachment upload end timestamp
        /// </summary>
        public uint nUploadEndUTC;
        /// <summary>
        /// / 文件大小，单位：字节
        /// / File size, in bytes
        /// </summary>
        public uint nFileLength;
        /// <summary>
        /// / 本地数据存储标识
        /// / Local data storage identification
        /// </summary>
        public uint nRecNo;
        /// <summary>
        /// / 文件类型，"txt","mp4"
        /// / File types, "txt", "mp4"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFileType;
        /// <summary>
        /// / 分辨率，"720P","480P"
        /// / Resolution, 720P, 480P
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVideoResolution;
        /// <summary>
        /// / 标注类型，"Alarm","Normal"
        /// / Annotation type, "Alarm", "Normal"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szRecordType;
        /// <summary>
        /// / 本地存储位置
        /// / Local storage location
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szLocalPath;
        /// <summary>
        /// / ftp证据文件下载地址
        /// / FTP evidence file download address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFtpUrl;
        /// <summary>
        /// / 是否上传标识，"YES","NO"
        /// / Upload identification, "YES", "NO"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUploadState;
        /// <summary>
        /// / 事件发生时的经度
        /// / Longitude at the time of event occurrence
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szLongitude;
        /// <summary>
        /// / 事件发生时的纬度
        /// / The latitude at which the event occurred
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szLatitude;
        /// <summary>
        /// / 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 288)]
        public string szReserved;
    }

    /// <summary>
    /// 评价列表拓展信息
    /// Appraise Lists info
    /// </summary>
    public struct NET_HOSPITAL_APPRAISE_LISTS_INFO
    {
        /// <summary>
        /// / 评价项的编号
        /// / Appraise ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szAppraiseID;
        /// <summary>
        /// / 评价项的问题
        /// / Appraise Question
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szAppraiseQuestion;
        /// <summary>
        /// / 评价项总分值
        /// / Total Score
        /// </summary>
        public int nTotalScore;
        /// <summary>
        /// / 评价项得分
        /// / Evaluation Score
        /// </summary>
        public int nEvaluationScore;
        /// <summary>
        /// / 保留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szReserved;
    }

    /// <summary>
    /// 医护对讲，病人体征数据
    /// Hospital, Patient Signs
    /// </summary>
    public struct NET_HOSPITAL_PATIENT_SIGNS_DATA
    {
        /// <summary>
        /// / 病房信息
        /// / Room Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRoomNumber;
        /// <summary>
        /// / 病床信息
        /// / Bed Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szBedNumber;
        /// <summary>
        /// / 发生事件的设备编号
        /// / Device Code
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceCode;
        /// <summary>
        /// / 事件的时间
        /// / Time
        /// </summary>
        public NET_TIME stuUTC;
        /// <summary>
        /// / 心跳频率
        /// / Heartbeat Rate
        /// </summary>
        public int nHeartbeatRate;
        /// <summary>
        /// / 呼吸频率
        /// / Breathing Rate
        /// </summary>
        public int nBreathingRate;
        /// <summary>
        /// / 是否离床
        /// / Departure Data
        /// </summary>
        public bool bDepartureData;
        /// <summary>
        /// / 保留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szReserved;
    }

    /// <summary>
    /// 医护对讲，评价内容列表
    /// Hospital Appraise Data
    /// </summary>
    public struct NET_HOSPITAL_APPRAISE_DATA
    {
        /// <summary>
        /// / 设备编号
        /// / Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDevID;
        /// <summary>
        /// / 服务评价的状态信息, 0:未知, 1:未完成评价, 2:已完成评价, 3:评价问卷失效
        /// / Status information of service evaluation, 0: unknown, 1: incomplete evaluation, 2: completed evaluation, 3: invalid evaluation questionnaire
        /// </summary>
        public int nStatus;
        /// <summary>
        /// / 评价请求的任务ID
        /// / Appraise Request ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAppraiseRequestID;
        /// <summary>
        /// / 完成评价的utc时间
        /// / Time to complete evaluation
        /// </summary>
        public NET_TIME stuAppraiseUTC;
        /// <summary>
        /// / 下发评价的utc时间
        /// / Date of issuing evaluation
        /// </summary>
        public NET_TIME stuDeliveryUTC;
        /// <summary>
        /// / 评价模板的编号
        /// / Template ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szTemplateID;
        /// <summary>
        /// / 评价列表拓展信息个数
        /// / Count of Appraise Lists info
        /// </summary>
        public int nAppraiseListsCount;
        /// <summary>
        /// / 评价列表拓展信息
        /// / Appraise Lists info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_HOSPITAL_APPRAISE_LISTS_INFO[] stuAppraiseLists;
        /// <summary>
        /// / 保留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 病人医疗信息
    /// Patient Medical Info
    /// </summary>
    public struct NET_HOSPITAL_PATIENT_MEDICAL_INFO
    {
        /// <summary>
        /// / 设备编号
        /// / Device ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDevID;
        /// <summary>
        /// / 任务ID
        /// / Patient Medical ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPatientMedicalID;
        /// <summary>
        /// / 平台下发的数据内容
        /// / Data comment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4096)]
        public string szData;
        /// <summary>
        /// / 任务发起的utc时间
        /// / Patient Medical UTC Time
        /// </summary>
        public NET_TIME stuPatientMedicalUTC;
        /// <summary>
        /// / 医疗信息的类型, 0:未知, 1：缴费信息, 2：检查信息, 3：检验信息, 4：医嘱信息,大于0时有效
        /// / Patient Medical Event Type, 0:Unkown, 1:Payment Information, 2:Examination Information, 3:Test Information, 4:Medical Advice Information
        /// </summary>
        public int nPatientMedicalEventType;
        /// <summary>
        /// / 消息的分页id
        /// / Message Page Id
        /// </summary>
        public uint nPageId;
        /// <summary>
        /// / 每一页最大的消息数量
        /// / Message Max Size of Page
        /// </summary>
        public uint nPageMaxSize;
        /// <summary>
        /// / 消息的分页总数
        /// / Message Total Pages
        /// </summary>
        public uint nTotalPages;
        /// <summary>
        /// / 是否含有下一页
        /// / Whether Has Next Pages
        /// </summary>
        public bool bHasNext;
        /// <summary>
        /// / 保留字节
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 196)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_AddMission()接口输入参数
    /// CLIENT_AddMission()port input parameter
    /// </summary>
    public struct NET_IN_ADD_MISSION
    {
        public uint dwSize;
        /// <summary>
        /// / 任务名称
        /// task name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szTitle;
        /// <summary>
        /// / 任务ID
        /// task ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szMissionID;
        /// <summary>
        /// / 回复内容
        /// replay content
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szComment;
        /// <summary>
        /// / 添加后反馈类型
        /// feedback type after adding
        /// </summary>
        public EM_A_NET_MISSION_FEEDBACK_TYPE emFeedBack;
        /// <summary>
        /// / 消息类型
        /// message type
        /// </summary>
        public EM_A_NET_MISSION_MESSAGE_TYPE emMessageType;
        /// <summary>
        /// / FALSE时，szComment有效；TRUE时，szCommentEx有效
        /// FALSE, szComment is walid, TRUE, szCommentEx is valid
        /// </summary>
        public bool bComment;
        /// <summary>
        /// / 回复内容，不可以为空
        /// replay content, no null
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2048)]
        public string szCommentEx;
        /// <summary>
        /// / 在哪几个通道进行叠加，支持多通道同时叠加
        /// In which several channels are superimposed, Supports multi-channel simultaneous stacking
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public int[] nChannel;
        /// <summary>
        /// / 叠加显示时长，0表示一直叠加至下一次协议下发，其它数字表示显示时长，单位秒
        /// Overlay display duration, Unit:second; 0 indicates that it has been stacked until the next time
        /// </summary>
        public int nDuration;
        /// <summary>
        /// / nChannel实际长度
        /// nChannel length
        /// </summary>
        public int nCount;
        /// <summary>
        /// / 任务内容列表个数
        /// number of task content lists
        /// </summary>
        public int nHospitalAlarmsCount;
        /// <summary>
        /// / 任务内容列表
        /// task content list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_HOSPITAL_ALARM_DATA[] stuHospitalAlarms;
        /// <summary>
        /// / 警车基础数据,emMessageType=22有效
        /// Basic data of police vehicles, emMessage Type=22 valid
        /// </summary>
        public NET_POLICE_VEHICLE_DATA stuPoliceVehicleData;
        /// <summary>
        /// / 评价内容列表
        /// / Hospital Appraises info
        /// </summary>
        public NET_HOSPITAL_APPRAISE_DATA stuHospitalAppraises;
        /// <summary>
        /// / 病人体征数据个数
        /// / Number of patient physical sign data
        /// </summary>
        public int nPatientSignsCount;
        /// <summary>
        /// / 病人体征数据
        /// / Patient physical sign data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_HOSPITAL_PATIENT_SIGNS_DATA[] stuPatientSigns;
        /// <summary>
        /// / 病人医疗信息数组实际个数
        /// / Patient Medical Info Count
        /// </summary>
        public int nPatientMedicalCount;
        /// <summary>
        /// / 病人医疗信息数组最大个数
        /// / Patient Medical Info Max Count
        /// </summary>
        public int nPatientMedicalMaxCount;
        /// <summary>
        /// / 病人医疗信息列表指针，由用户申请释放，申请内存大小为sizeof(NET_HOSPITAL_PATIENT_MEDICAL_INFO)*nPatientMedicalMaxCount
        /// / Patient Medical Info list, user apply and release, size is sizeof(NET_HOSPITAL_PATIENT_MEDICAL_INFO)*nPatientMedicalMaxCount
        /// </summary>
        public IntPtr pstuPatientMedical;
    }

    /// <summary>
    /// CLIENT_AddMission()接口输出参数
    /// CLIENT_AddMission() port output parameter
    /// </summary>
    public struct NET_OUT_ADD_MISSION
    {
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_QueryNetStat接口,查询类型为NET_APP_DATA_STAT时的输入参数(获取协议栈统计数据)
    /// CLIENT_QueryNetStat Port, input parameter when the Types of queries is NET_APP_DATA_STAT (statistics for protocol stack)
    /// </summary>
    public struct NET_IN_NETAPP_NET_DATA_STAT
    {
        public uint dwSize;
        /// <summary>
        /// /网卡名
        /// The network card name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szEthName;
    }

    /// <summary>
    /// 接收相关统计数据,意义与ifconfig同
    /// Receive relevant statistics, same meaning with the ifconfig
    /// </summary>
    public struct NET_NETAPP_RECEIVE_STAT
    {
        public uint dwSize;
        public uint dwPackets;
        public uint dwBytes;
        public uint dwErrors;
        public uint dwDroped;
        public uint dwOverruns;
        public uint dwFrame;
        /// <summary>
        /// / 下行流量速度
        /// Downflow speed
        /// </summary>
        public uint dwSpeed;
    }

    /// <summary>
    /// 传输相关统计数据,意义与ifconfig同
    /// Transport statistics,same meaning with the ifconfig
    /// </summary>
    public struct NET_NETAPP_TRANSMIT_STAT
    {
        public uint dwSize;
        public uint dwPackets;
        public uint dwBytes;
        public uint dwErrors;
        public uint dwDroped;
        public uint dwOverruns;
        public uint dwCarrier;
        public uint dwCollisions;
        public uint dwTxQueue;
        /// <summary>
        /// / 上行流量速度
        /// Upstream flow speed
        /// </summary>
        public uint dwSpeed;
    }

    /// <summary>
    /// CLIENT_QueryNetStat接口,查询类型为NET_APP_DATA_STAT时的输出参数(获取协议栈统计数据)
    /// CLIENT_QueryNetStat Port, output parameter when the Types of queries is NET_APP_DATA_STAT (statistics for protocol stack)
    /// </summary>
    public struct NET_OUT_NETAPP_NET_DATA_STAT
    {
        public uint dwSize;
        /// <summary>
        /// / 接收相关统计数据,意义与ifconfig同
        /// Receive relevant statistics,same meaning with the ifconfig
        /// </summary>
        public NET_NETAPP_RECEIVE_STAT stuReceiveStat;
        /// <summary>
        /// / 传输相关统计数据,意义与ifconfig同
        /// Transport statistics,same meaning with the ifconfig
        /// </summary>
        public NET_NETAPP_TRANSMIT_STAT stuTransmitStat;
        /// <summary>
        /// / 网卡速度,单位Mbps
        /// Network speed, unit is Mbps
        /// </summary>
        public int nSpeed;
    }

    /// <summary>
    /// CLIENT_QueryNetStat接口,查询类型为NET_APP_LINK_STAT 时的输入参数(获取物理链路状态)
    /// CLIENT_QueryNetStatPort, input parameter when the Types of queries is NET_APP_DATA_STAT(access to physical link state)
    /// </summary>
    public struct NET_IN_NETAPP_LINK_STATUS
    {
        public uint dwSize;
        /// <summary>
        /// /网卡名
        /// Network Card Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szEthName;
    }

    /// <summary>
    /// CLIENT_QueryNetStat接口,查询类型为NET_APP_LINK_STAT 时的输出参数(获取物理链路状态)
    /// CLIENT_QueryNetStatPort, output parameter when the Types of queries is NET_APP_DATA_STAT(access to physical link state)
    /// </summary>
    public struct NET_OUT_NETAPP_LINK_STATUS
    {
        public uint dwSize;
        /// <summary>
        /// / 是否正在工作
        /// Whether working
        /// </summary>
        public bool bWorking;
        /// <summary>
        /// / IP是否冲突
        /// Whether IP conflict
        /// </summary>
        public bool bIPConflict;
    }

    /// 获取网卡信息类型 CLIENT_QueryNetStat 接口使用
    /// Card information types CLIENT_QueryNetStat interface using
    /// </summary>
    public enum EM_NET_QUERY_TYPE
    {
        /// <summary>
        /// / 获取协议栈统计数据,(输入结构体NET_IN_NETAPP_NET_DATA_STAT,输出结构体NET_OUT_NETAPP_NET_DATA_STAT)
        /// Statistics for protocol stack,(input struct NET_IN_NETAPP_NET_DATA_STAT,output struct NET_OUT_NETAPP_NET_DATA_STAT)
        /// </summary>
        NET_APP_DATA_STAT,
        /// <summary>
        /// / 获取物理链路状态,(输入结构体NET_IN_NETAPP_LINK_STATUS,输出结构体NET_OUT_NETAPP_LINK_STATUS)
        /// Access to physical link state,(input struct NET_IN_NETAPP_LINK_STATUS,output struct NET_OUT_NETAPP_LINK_STATUS)
        /// </summary>
        NET_APP_LINK_STAT,
    }

    /// <summary>
    /// 报警事件类型 ALARM_AUDIO_DETECT (音频检测事件)对应的数据描述信息
    /// Corresponding data description info of alarm event type (alarm event type) ALARM_AUDIO_DETECT (audio detect event)
    /// </summary>
    public struct NET_ALARM_AUDIO_DETECT
    {
        /// <summary>
        /// / 事件动作, 1:Start, 2:Stop
        /// Event operation, 1:Start, 2:Stop
        /// </summary>
        public uint dwAction;
        /// <summary>
        /// / 音频通道号
        /// Audio channel No.
        /// </summary>
        public uint dwChannelID;
        /// <summary>
        /// / 保留
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string reserved;
    }

    /// <summary>
    /// 报警联动信息
    /// Alarm activation information
    /// </summary>
    public struct NET_A_CFG_ALARM_MSG_HANDLE
    {
        public byte abRecordMask;
        public byte abRecordEnable;
        public byte abRecordLatch;
        public byte abAlarmOutMask;
        public byte abAlarmOutEn;
        public byte abAlarmOutLatch;
        public byte abExAlarmOutMask;
        public byte abExAlarmOutEn;
        public byte abPtzLinkEn;
        public byte abTourMask;
        public byte abTourEnable;
        public byte abSnapshot;
        public byte abSnapshotEn;
        public byte abSnapshotPeriod;
        public byte abSnapshotTimes;
        public byte abTipEnable;
        public byte abMailEnable;
        public byte abMessageEnable;
        public byte abBeepEnable;
        public byte abVoiceEnable;
        public byte abMatrixMask;
        public byte abMatrixEnable;
        public byte abEventLatch;
        public byte abLogEnable;
        public byte abDelay;
        public byte abVideoMessageEn;
        public byte abMMSEnable;
        public byte abMessageToNetEn;
        public byte abTourSplit;
        public byte abSnapshotTitleEn;
        public byte abChannelCount;
        public byte abAlarmOutCount;
        public byte abPtzLinkEx;
        public byte abSnapshotTitle;
        public byte abMailDetail;
        public byte abVideoTitleEn;
        public byte abVideoTitle;
        public byte abTour;
        public byte abDBKeys;
        public byte abJpegSummary;
        public byte abFlashEn;
        public byte abFlashLatch;
        /// <summary>
        /// 补齐
        /// 信息
        /// For align
        /// Information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved1;
        /// <summary>
        /// 设备的视频通道数
        /// The video channel of the device
        /// </summary>
        public int nChannelCount;
        /// <summary>
        /// 设备的报警输出个数
        /// The alarm output amount of the device
        /// </summary>
        public int nAlarmOutCount;
        /// <summary>
        /// 录像通道掩码(按位)
        /// Subnet mask of the recording channel(use the bit to represent)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwRecordMask;
        /// <summary>
        /// 录像使能
        /// Record enable
        /// </summary>
        public bool bRecordEnable;
        /// <summary>
        /// 录像延时时间(秒)
        /// Record delay time(s)
        /// </summary>
        public int nRecordLatch;
        /// <summary>
        /// 报警输出通道掩码
        /// Subnet mask of alarm output channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwAlarmOutMask;
        /// <summary>
        /// 报警输出使能
        /// Alarm output enable
        /// </summary>
        public bool bAlarmOutEn;
        /// <summary>
        /// 报警输出延时时间(秒)
        /// Alarm output delay time (s)
        /// </summary>
        public int nAlarmOutLatch;
        /// <summary>
        /// 扩展报警输出通道掩码
        /// Subnet mask of extension alarm output channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwExAlarmOutMask;
        /// <summary>
        /// 扩展报警输出使能
        /// Extension alarm output enable
        /// </summary>
        public bool bExAlarmOutEn;
        /// <summary>
        /// 云台联动项
        /// PTZ activation item
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_PTZ_LINK[] stuPtzLink;
        /// <summary>
        /// 云台联动使能
        /// PTZ activation enable
        /// </summary>
        public bool bPtzLinkEn;
        /// <summary>
        /// 轮询通道掩码
        /// Subnet mask of tour channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwTourMask;
        /// <summary>
        /// 轮询使能
        /// Tour enable
        /// </summary>
        public bool bTourEnable;
        /// <summary>
        /// 快照通道号掩码
        /// Snapshot channel subnet mask
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwSnapshot;
        /// <summary>
        /// 快照使能
        /// Snapshot enable
        /// </summary>
        public bool bSnapshotEn;
        /// <summary>
        /// 连拍周期(秒)
        /// Snapshot period(s)
        /// </summary>
        public int nSnapshotPeriod;
        /// <summary>
        /// 连拍次数
        /// Snapshot times
        /// </summary>
        public int nSnapshotTimes;
        /// <summary>
        /// 本地消息框提示
        /// Local prompt dialogue box
        /// </summary>
        public bool bTipEnable;
        /// <summary>
        /// 发送邮件，如果有图片，作为附件
        /// Send out emali. The image is sent out as the attachment.
        /// </summary>
        public bool bMailEnable;
        /// <summary>
        /// 上传到报警服务器
        /// Upload to the alarm server
        /// </summary>
        public bool bMessageEnable;
        /// <summary>
        /// 蜂鸣
        /// Buzzer
        /// </summary>
        public bool bBeepEnable;
        /// <summary>
        /// 语音提示
        /// Audio prompt
        /// </summary>
        public bool bVoiceEnable;
        /// <summary>
        /// 联动视频矩阵通道掩码
        /// Subnet mask of the activated video channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public uint[] dwMatrixMask;
        /// <summary>
        /// 联动视频矩阵
        /// Activate the video matrix
        /// </summary>
        public bool bMatrixEnable;
        /// <summary>
        /// 联动开始延时时间(秒)，0－15
        /// Activation delay time (s),0-15
        /// </summary>
        public int nEventLatch;
        /// <summary>
        /// 是否记录日志
        /// Record log or not
        /// </summary>
        public bool bLogEnable;
        /// <summary>
        /// 设置时先延时再生效，单位为秒
        /// Delay first and then becomes valid when set. Unit is second.
        /// </summary>
        public int nDelay;
        /// <summary>
        /// 叠加提示字幕到视频。叠加的字幕包括事件类型，通道号，秒计时。
        /// Overlay the prompt character to the video. The overlay character includes the event type, channel number. The unit is second.
        /// </summary>
        public bool bVideoMessageEn;
        /// <summary>
        /// 发送彩信使能
        /// Enable MMS
        /// </summary>
        public bool bMMSEnable;
        /// <summary>
        /// 消息上传给网络使能
        /// Send the message to the network enable
        /// </summary>
        public bool bMessageToNetEn;
        /// <summary>
        /// 轮巡时的分割模式 0: 1画面; 1: 8画面
        /// Tour split mod 0: 1tour; 1: 8tour
        /// </summary>
        public int nTourSplit;
        /// <summary>
        /// 是否叠加图片标题
        /// Enble osd
        /// </summary>
        public bool bSnapshotTitleEn;
        /// <summary>
        /// 云台配置数
        /// PTZ link configuration number
        /// </summary>
        public int nPtzLinkExNum;
        /// <summary>
        /// 扩展云台信息
        /// PTZ extend information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_PTZ_LINK_EX[] stuPtzLinkEx;
        /// <summary>
        /// 图片标题内容数
        /// Number of picture title
        /// </summary>
        public int nSnapTitleNum;
        /// <summary>
        /// 图片标题内容
        /// Picture title content
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_EVENT_TITLE_NEW[] stuSnapshotTitle;
        /// <summary>
        /// 邮件详细内容
        /// Mail detial
        /// </summary>
        public NET_CFG_MAIL_DETAIL stuMailDetail;
        /// <summary>
        /// 是否叠加视频标题，主要指主码流
        /// Whether overlay video title, mainly refers to the main stream
        /// </summary>
        public bool bVideoTitleEn;
        /// <summary>
        /// 视频标题内容数目
        /// Video title num
        /// </summary>
        public int nVideoTitleNum;
        /// <summary>
        /// 视频标题内容
        /// Video title
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_EVENT_TITLE_NEW[] stuVideoTitle;
        /// <summary>
        /// 轮询联动数目
        /// Tour num
        /// </summary>
        public int nTourNum;
        /// <summary>
        /// 轮询联动配置
        /// Tour configuration
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFG_TOURLINK[] stuTour;
        /// <summary>
        /// 指定数据库关键字的有效数
        /// Specify the db keyword on the number of effective
        /// </summary>
        public int nDBKeysNum;
        /// <summary>
        /// 指定事件详细信息里需要写到数据库的关键字
        /// The specify event detail information need write the BD keyword
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64 * 64)]
        public string szDBKeys;
        /// <summary>
        /// 叠加到JPEG图片的摘要信息
        /// The summary information of the jpeg image
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byJpegSummary;
        /// <summary>
        /// 是否使能补光灯
        /// Whether enable flash
        /// </summary>
        public bool bFlashEnable;
        /// <summary>
        /// 补光灯延时时间(秒),延时时间范围：[10,300]
        /// Flash delay time (s),the time range:[10,300]
        /// </summary>
        public int nFlashLatch;
        public byte abAudioFileName;
        public byte abAlarmBellEn;
        public byte abAccessControlEn;
        public byte abAccessControl;
        /// <summary>
        /// 联动语音文件绝对路径
        /// The Absolute Path to the Linkage Audio Files
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szAudioFileName;
        /// <summary>
        /// 警号使能
        /// Warning Signal Enable
        /// </summary>
        public bool bAlarmBellEn;
        /// <summary>
        /// 门禁使能
        /// Entrance Guard Enable
        /// </summary>
        public bool bAccessControlEn;
        /// <summary>
        /// 门禁组数
        /// Class Number of Entrance Guard
        /// </summary>
        public uint dwAccessControl;
        /// <summary>
        /// 门禁联动操作信息
        /// Entrance Guard Linkage Operation Information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public EM_CFG_ACCESSCONTROLTYPE[] emAccessControlType;
        public byte abTalkBack;
        /// <summary>
        /// 补齐
        /// For align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved2;
        /// <summary>
        /// 语音呼叫联动信息
        /// Voice Call Linkage Information
        /// </summary>
        public NET_CFG_TALKBACK_INFO stuTalkback;
        public byte abPSTNAlarmServer;
        /// <summary>
        /// 补齐
        /// For align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] byReserved3;
        /// <summary>
        /// 电话报警中心联动信息
        /// Telephone Alarm Center Linkage Information
        /// </summary>
        public NET_CFG_PSTN_ALARM_SERVER stuPSTNAlarmServer;
        /// <summary>
        /// 事件响应时间表
        /// Event Response Timetable
        /// </summary>
        public NET_A_CFG_TIME_SCHEDULE stuTimeSection;
        public byte abAlarmBellLatch;
        /// <summary>
        /// 日程ID是否有效
        /// Is the schedule ID valid
        /// </summary>
        public byte abScheduleID;
        /// <summary>
        /// 日程ID
        /// Schedule ID
        /// </summary>
        public short nScheduleID;
        /// <summary>
        /// 警号输出延时时间(10-300秒)
        /// Police no. output delay time(10-300 s)
        /// </summary>
        public int nAlarmBellLatch;
        public byte abAudioPlayTimes;
        public byte abAudioLinkTime;
        /// <summary>
        /// 补齐
        /// For align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] byReserved5;
        /// <summary>
        /// 联动语音播放次数
        /// times of linkage voice play
        /// </summary>
        public uint nAudioPlayTimes;
        /// <summary>
        /// 联动语音播放的时间, 单位：秒
        /// time of linkage voice play, uint:s
        /// </summary>
        public uint nAudioLinkTime;
        /// <summary>
        /// nAlarmOutTime 是否有效
        /// is nAlarmOutTime valid
        /// </summary>
        public byte abAlarmOutTime;
        /// <summary>
        /// 报警输出持续时间,单位秒, 如果无此字段，按设备原来的方式实现
        /// alarm timeout,unit:second
        /// </summary>
        public int nAlarmOutTime;
        /// <summary>
        /// nBeepTime 是否有效
        /// is nBeepTime valid
        /// </summary>
        public byte abBeepTime;
        /// <summary>
        /// 蜂鸣时长，单位秒，最大值为3600，0代表持续蜂鸣
        /// beep time,unit:second,max value is 3600,0 means beep continuely
        /// </summary>
        public int nBeepTime;
    }

    /// <summary>
    /// 音频检测报警配置(CFG_CMD_AUDIODETECT)
    /// Audio detection alarm config(CFG_CMD_AUDIODETECT)
    /// </summary>
    public struct NET_CFG_AUDIO_DETECT_INFO
    {
        /// <summary>
        /// 是否使能，TRUE使能，FALSE不使能
        /// Enable or not, TRUE enable, FALSE unable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 音量下限
        /// Min Volume
        /// </summary>
        public int nMinVolume;
        /// <summary>
        /// 音量上限
        /// Max Volume
        /// </summary>
        public int nMaxVolume;
        /// <summary>
        /// 声音异常检测使能
        /// Sound abnormal detection enable
        /// </summary>
        public bool bAnomalyDetect;
        /// <summary>
        /// 声音异常检测灵敏度值 取值范围1~100
        /// Sound abnormal detection sensitivity value range 1~100
        /// </summary>
        public int nAnomalySensitive;
        /// <summary>
        /// 声强突变检测使能
        /// Sound intensity detection enable
        /// </summary>
        public bool bMutationDetect;
        /// <summary>
        /// 声强突变检测阈值 取值范围1~100
        /// Sound intensity detection threshold value range 1~100
        /// </summary>
        public int nMutationThreold;
        /// <summary>
        /// 联动配置
        /// Link config
        /// </summary>
        public NET_A_CFG_ALARM_MSG_HANDLE stuEventHandler;
        /// <summary>
        /// 音频强度检测使能
        /// Audio intensity detection enable
        /// </summary>
        public bool bIntensityDetect;
        /// <summary>
        /// 音频强度检测分贝阈值, 单位分贝, 取值范围0~90
        /// Audio intensity detection value, rang 0~90
        /// </summary>
        public uint nIntensityDecibelGate;
    }

    /// <summary>
    /// 获取配置的操作类型
    /// config partly type
    /// </summary>
    public enum NET_EM_CFGPARTLY_OPERATE_TYPE
    {
        /// <summary>
        /// 视频分析规则配置, 对应结构体 NET_CFGPARTLY_VIDEOANALYSE_RULE_INFO
        /// videoanalyse rule, corresponding structure  NET_CFGPARTLY_VIDEOANALYSE_RULE_INFO
        /// </summary>
        NET_EM_CFGPARTLY_VIDEOANALYSE_RULE,
        /// <summary>
        /// 远程视频分析规则配置,对应结构体 NET_CFGPARTLY_REMOTE_VIDEOANALYSE_RULE_INFO
        /// remote videoanalyse rule,corresponding structure  NET_CFGPARTLY_REMOTE_VIDEOANALYSE_RULE_INFO
        /// </summary>
        NET_EM_CFGPARTLY_REMOTE_VIDEOANALYSE_RULE,
    }

    /// <summary>
    /// 过滤规则
    /// filter
    /// </summary>
    public struct NET_CFGPARTLY_OPERATE_FILTER
    {
        /// <summary>
        /// 通道号，-1表示全通道
        /// chanel id，-1 represents full channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 规则序号,一个通道下有多条规则，-1表示所有规则
        /// Rule number, there are multiple rules in one channel, -1 represents all rules
        /// </summary>
        public int nRuleID;
        /// <summary>
        /// 是否获取规则使能状态
        /// Whether to obtain the rule enable status
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 是否获取规则类型
        /// Whether to obtain the rule type
        /// </summary>
        public bool bType;
        /// <summary>
        /// 是否获取规则所属的大类业务
        /// Whether to obtain the category of business to which the rule belongs
        /// </summary>
        public bool bClass;
        /// <summary>
        /// 保留字段
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 返回过滤规则的信息，与NET_CFGPARTLY_OPERATE_FILTER内容对应
    /// Return information on filtering rules, in conjunction with NET_CFGPARTLY_OPERATE_FILTER Content Correspondence
    /// </summary>
    public struct NET_CFGPARTLY_FILTER_INFO
    {
        /// <summary>
        /// 规则使能状态
        /// Rule Enable Status
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 智能事件所属大类
        /// Class Type
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// 规则类型
        /// Rule Type
        /// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szType;
        /// <summary>
        /// 保留字段
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 获取视频分析规则配置部分信息
    /// Obtain information on video analysis rule configuration section
    /// </summary>
    public struct NET_CFGPARTLY_VIDEOANALYSE_RULE_INFO
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 每个通道下的规则数量
        /// Number of Rule Information
        /// </summary>
        public int nFilterCount;
        /// <summary>
        /// 规则信息
        /// Rule Information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFGPARTLY_FILTER_INFO[] stuFilterInfo;
    }

    /// <summary>
    /// 获取远程视频分析规则配置部分信息
    /// Obtain information on remote video analysis rule configuration section
    /// </summary>
    public struct NET_CFGPARTLY_REMOTE_VIDEOANALYSE_RULE_INFO
    {
        /// <summary>
        /// 结构体大小
        /// structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// 每个通道下的规则数量
        /// Number of Rule Information
        /// </summary>
        public int nFilterCount;
        /// <summary>
        /// 规则信息
        /// Rule Information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public NET_CFGPARTLY_FILTER_INFO[] stuFilterInfo;
    }

    /// <summary>
    /// 门口机类型
    /// VTO type
    /// </summary>
    public enum EM_CFG_VTO_TYPE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_CFG_VTO_TYPE_UNKNOW = 0,
        /// <summary>
        /// 单元门口机
        /// unit VTO
        /// </summary>
        EM_CFG_VTO_TYPE_VTO,
        /// <summary>
        /// 围墙机
        /// fence station
        /// </summary>
        EM_CFG_VTO_TYPE_WALL,
        EM_CFG_VTO_TYPE_MAX,
    }

    /// <summary>
    /// 门口机信息
    /// VTO info
    /// </summary>
    public struct NET_CFG_VTO_INFO
    {
        /// <summary>
        /// 使能
        /// enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// 门口机标识
        /// VTO mark
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szID;
        /// <summary>
        /// IP地址
        /// IP address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szIP;
        /// <summary>
        /// 端口
        /// port
        /// </summary>
        public uint nPort;
        /// <summary>
        /// 门口机类型
        /// VTO type
        /// </summary>
        public EM_CFG_VTO_TYPE emType;
        /// <summary>
        /// 门口机中号
        /// VTO middle no.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szMidNum;
        /// <summary>
        /// 门口机所处位置
        /// VTO location
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szMachineAddress;
        /// <summary>
        /// 三代登录用户名
        /// login name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szLoginUsername;
        /// <summary>
        /// 三代登录密码
        /// login password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szLoginPassWord;
        /// <summary>
        /// 门口机呼叫室内机，室内机的铃声文件
        /// Ringtone files for indoor machines
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szRingFile;
        /// <summary>
        /// 室内机的铃声大小
        /// Ring volume
        /// </summary>
        public int nRingVolume;
        /// <summary>
        /// 用于字节对齐
        /// Reserved bytes for byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// 扩展的用户名和密码是否有效
        /// Whether the extension of user name and password is valid
        /// </summary>
        public bool bUseEx;
        /// <summary>
        /// 三代登录用户名扩展，设备当前最大支持32位长度且不包含'\0'，改动是为了兼容设备
        /// Extension of user name .The device currently supports a maximum 32-bit length and does not contain '\ 0'. The change is for compatibility with the device
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szLoginUsernameEx;
        /// <summary>
        /// 三代登录密码扩展，设备当前最大支持32位长度且不包含'\0'，改动是为了兼容设备
        /// Extension of password.The device currently supports a maximum 32-bit length and does not contain '\ 0'. The change is for compatibility with the device
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szLoginPassWordEx;
    }

    /// <summary>
    /// 门口机信息列表
    /// VTO info list
    /// </summary>
    public struct NET_CFG_VTO_LIST
    {
        /// <summary>
        /// 门口机数量
        /// VTO quantity
        /// </summary>
        public int nVTONum;
        /// <summary>
        /// 门口机信息
        /// VTO info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_CFG_VTO_INFO[] stuVTOInfos;
    }

    /// <summary>
    /// 呼叫类型
    /// call type
    /// </summary>
    public enum EM_VIDEO_TALK_LOG_CALLTYPE
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_VIDEO_TALK_LOG_CALLTYPE_UNKNOWN = 0,
        /// <summary>
        /// / 呼入
        /// call in
        /// </summary>
        EM_VIDEO_TALK_LOG_CALLTYPE_INCOMING,
        /// <summary>
        /// / 呼出
        /// call out
        /// </summary>
        EM_VIDEO_TALK_LOG_CALLTYPE_OUTGOING,
        /// <summary>
        /// /
        /// </summary>
        EM_VIDEO_TALK_LOG_CALLTYPE_MAX,
    }

    /// <summary>
    /// 最终状态
    /// terminal status
    /// </summary>
    public enum EM_VIDEO_TALK_LOG_ENDSTATE
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_VIDEO_TALK_LOG_ENDSTATE_UNKNOWN = 0,
        /// <summary>
        /// / 未接
        /// missed
        /// </summary>
        EM_VIDEO_TALK_LOG_ENDSTATE_MISSED,
        /// <summary>
        /// / 已接
        /// answered
        /// </summary>
        EM_VIDEO_TALK_LOG_ENDSTATE_RECEIVED,
        /// <summary>
        /// /
        /// </summary>
        EM_VIDEO_TALK_LOG_ENDSTATE_MAX,
    }

    /// <summary>
    /// 对方类型
    /// opposite type
    /// </summary>
    public enum EM_VIDEO_TALK_LOG_PEERTYPE
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_VIDEO_TALK_LOG_PEERTYPE_UNKNOWN = 0,
        /// <summary>
        /// / 门口机
        /// VTO
        /// </summary>
        EM_VIDEO_TALK_LOG_PEERTYPE_VTO,
        /// <summary>
        /// / 室内机
        /// VTH
        /// </summary>
        EM_VIDEO_TALK_LOG_PEERTYPE_VTH,
        /// <summary>
        /// / 管理中心
        /// management centre server
        /// </summary>
        EM_VIDEO_TALK_LOG_PEERTYPE_VTS,
    }

    /// <summary>
    /// 平台呼出类型
    /// Call type
    /// </summary>
    public enum EM_A_NET_EM_OFFLINE_CALL_TYPE
    {
        /// <summary>
        /// / 未知
        /// Unknown
        /// </summary>
        NET_EM_OFFLINE_CALL_UNKNOWN = -1,
        /// <summary>
        /// / 在线呼出
        /// Online
        /// </summary>
        NET_EM_OFFLINE_CALL_ONLINECALL,
        /// <summary>
        /// / 断线呼出
        /// Offline
        /// </summary>
        NET_EM_OFFLINE_CALL_OFFLINECALL,
        /// <summary>
        /// / 其他
        /// Other
        /// </summary>
        NET_EM_OFFLINE_CALL_NONE = 255,
    }

    /// <summary>
    /// 通话记录记录集信息
    /// video talk record set log
    /// </summary>
    public struct NET_RECORD_VIDEO_TALK_LOG
    {
        public uint dwSize;
        /// <summary>
        /// / 记录集编号,只读
        /// record set no., read-only
        /// </summary>
        public int nRecNo;
        /// <summary>
        /// / 开始时间
        /// start time
        /// </summary>
        public NET_TIME stuCreateTime;
        /// <summary>
        /// / 呼叫类型
        /// call type
        /// </summary>
        public EM_VIDEO_TALK_LOG_CALLTYPE emCallType;
        /// <summary>
        /// / 最终状态
        /// terminal status
        /// </summary>
        public EM_VIDEO_TALK_LOG_ENDSTATE emEndState;
        /// <summary>
        /// / 对方号码 可以是短号,中号或长号
        /// opposite number may be short no. or middle no., long no.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPeerNumber;
        /// <summary>
        /// / 对方类型
        /// opposite type
        /// </summary>
        public EM_VIDEO_TALK_LOG_PEERTYPE emPeerType;
        /// <summary>
        /// / 本机号码 可以是短号,中号或长号
        /// local no. may be short no. or middle no., long no.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szLocalNumber;
        /// <summary>
        /// / 通话时间 单位秒
        /// talk time unit second
        /// </summary>
        public int nTalkTime;
        /// <summary>
        /// / 留言时间 单位秒
        /// message time unit second
        /// </summary>
        public int nMessageTime;
        /// <summary>
        /// / 照片路径
        /// Picture path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPicturePath;
        /// <summary>
        /// / 平台断线是否呼出
        /// Call type
        /// </summary>
        public EM_A_NET_EM_OFFLINE_CALL_TYPE emOfflineCall;
        /// <summary>
        /// / 真实UTC开始时间
        /// Real UTC start time
        /// </summary>
        public NET_TIME_EX stuCreateTimeRealUTC;
    }

    /// <summary>
    /// 通话记录查询条件
    /// call record search criteria
    /// </summary>
    public struct NET_FIND_RECORD_VIDEO_TALK_LOG_CONDITION
    {
        public uint dwSize;
        /// <summary>
        /// / 呼叫类型查询条件是否有效
        /// call type search criteria valid or not
        /// </summary>
        public bool bCallTypeEnable;
        /// <summary>
        /// / 对应 emCallTypeList 中有效枚举个数
        /// corresponding to emCallTypeList valid enumeration number
        /// </summary>
        public int nCallTypeListNum;
        /// <summary>
        /// / 呼叫类型使能列表
        /// call type enable list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_VIDEO_TALK_LOG_CALLTYPE[] emCallTypeList;
        /// <summary>
        /// / 最终状态查询条件是否有效
        /// final status search criteria isvalid or not
        /// </summary>
        public bool bEndStateEnable;
        /// <summary>
        /// / 对应 emEndStateList 中有效枚举个数
        /// corresponding to emEndStateList valid enumeration number
        /// </summary>
        public int nEndStateListNum;
        /// <summary>
        /// / 最终状态使能列表
        /// final status enable list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public EM_VIDEO_TALK_LOG_ENDSTATE[] emEndStateList;
        /// <summary>
        /// / 启用时间段查询
        /// Time enable
        /// </summary>
        public bool bTimeEnable;
        /// <summary>
        /// / 起始时间
        /// Start Time
        /// </summary>
        public NET_TIME stStartTime;
        /// <summary>
        /// / 结束时间
        /// End Time
        /// </summary>
        public NET_TIME stEndTime;
    }

    /// <summary>
    /// 接口 CLIENT_GetHygrothermographInfo 的输入参数
    /// interface CLIENT_GetHygrothermographInfo input parameters
    /// </summary>
    public struct NET_IN_GET_HYGROTHERMOGRAPH_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 温湿度信息
    /// Hygrothermograph Infos
    /// </summary>
    public struct NET_HYGROTHERMOGRAPH_INFOS
    {
        /// <summary>
        /// / 在线状态
        /// / online
        /// </summary>
        public bool bOnline;
        /// <summary>
        /// / 温度阈值,默认值为80.0,单位：℃
        /// / Temperature threshold, default value is 80.0, unit: ℃
        /// </summary>
        public float fTemperatureAlarm;
        /// <summary>
        /// / 湿度阈值,默认值为99.0,单位：%RH(相对湿度百分比)
        /// / Humidity threshold, default value is 99.0, unit:% RH (relative humidity percentage)
        /// </summary>
        public float fHumidityAlarm;
        /// <summary>
        /// / 当前温度,默认值为0.0,单位：℃
        /// / Current temperature, default value is 0.0, unit: ℃
        /// </summary>
        public float fCurrentTemperature;
        /// <summary>
        /// / 当前湿度,默认值为0.0,单位：%RH(相对湿度百分比)
        /// / Current humidity, default value is 0.0, unit:% RH (relative humidity percentage)
        /// </summary>
        public float fCurrentHumidity;
        /// <summary>
        /// / 保留字节
        /// / reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szResvered;
    }

    /// <summary>
    /// 接口 CLIENT_GetHygrothermographInfo 的输出参数
    /// interface CLIENT_GetHygrothermographInfo output parameters
    /// </summary>
    public struct NET_OUT_GET_HYGROTHERMOGRAPH_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 温湿度信息返回个数
        /// / Hygrothermograph Infos count
        /// </summary>
        public int nInfoNum;
        /// <summary>
        /// / 温湿度信息
        /// / Hygrothermograph Infos
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_HYGROTHERMOGRAPH_INFOS[] stuHygrothermographInfos;
    }

    /// <summary>
    /// 分组人员统计--获取摘要信息 输入参数
    /// NumberStatGroup--Get summary info input
    /// </summary>
    public struct NET_IN_NUMBERSTATGROUPSUMMARY_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / GroupID
        /// GroupID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupID;
    }

    /// <summary>
    /// 统计小计信息
    /// Subtotal info
    /// </summary>
    public struct NET_NUMBERSTATGROUP_SUBTOTAL
    {
        /// <summary>
        /// / 设备运行后人数统计总数
        /// count since device operation
        /// </summary>
        public int nTotal;
        /// <summary>
        /// / 小时内的总人数
        /// count in the last hour
        /// </summary>
        public int nHour;
        /// <summary>
        /// / 当天的总人数, 不可手动清除
        /// count for today
        /// </summary>
        public int nToday;
        /// <summary>
        /// / IPC专用，如果不执行clearSectionStat操作，等同于Today人数
        /// if do not call "clearSectionStat", just same as "nToday"
        /// </summary>
        public int nTotalInTimeSection;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 分组客流统计数据
    /// summary info
    /// </summary>
    public struct NET_NUMBERSTATGROUP_SUMMARY
    {
        /// <summary>
        /// / 组ID
        /// Group ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupID;
        /// <summary>
        /// / 组名
        /// Group name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szGroupName;
        /// <summary>
        /// / 通道号数
        /// The number of Channels
        /// </summary>
        public int nChannelNum;
        /// <summary>
        /// / 通道号列表
        /// Channels list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public int[] arChannelList;
        /// <summary>
        /// / 统计时间秒数，已包含时区偏移
        /// Statistical time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 时区索引号
        /// TimeZone index
        /// </summary>
        public int nTimeZone;
        /// <summary>
        /// / 进入小计
        /// Entered Subtotal
        /// </summary>
        public NET_NUMBERSTATGROUP_SUBTOTAL stuEnteredSubtotal;
        /// <summary>
        /// / 出去小计
        /// Exited Subtotal
        /// </summary>
        public NET_NUMBERSTATGROUP_SUBTOTAL stuExitedSubtotal;
        /// <summary>
        /// / 区域内人数
        /// Inside Subtotal
        /// </summary>
        public int nInsideSubtotal;
        /// <summary>
        /// / 保留
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 分组人员统计--获取摘要信息 输出参数
    /// NumberStatGroup--Get summary info output
    /// </summary>
    public struct NET_OUT_NUMBERSTATGROUPSUMMARY_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 摘要信息
        /// summary info
        /// </summary>
        public NET_NUMBERSTATGROUP_SUMMARY stuSummary;
    }

    /// <summary>
    /// 物体对应图片文件信息
    /// picture info
    /// </summary>
    public struct NET_A_PIC_INFO
    {
        /// <summary>
        /// / 文件在二进制数据块中的偏移位置, 单位:字节
        /// current picture file's offset in the binary file, byte
        /// </summary>
        public uint dwOffSet;
        /// <summary>
        /// / 文件大小, 单位:字节
        /// current picture file's size, byte
        /// </summary>
        public uint dwFileLenth;
        /// <summary>
        /// / 图片宽度, 单位:像素
        /// picture width, pixel
        /// </summary>
        public ushort wWidth;
        /// <summary>
        /// / 图片高度, 单位:像素
        /// picture high, pixel
        /// </summary>
        public ushort wHeight;
        /// <summary>
        /// / 鉴于历史原因,该成员只在事件上报时有效
        /// / 文件路径
        /// / 用户使用该字段时需要自行申请空间进行拷贝保存
        /// File path
        /// User use this field need to apply for space for copy and storage
        /// </summary>
        public IntPtr pszFilePath;
        /// <summary>
        /// / 图片是否算法检测出来的检测过的提交识别服务器时,
        /// / 则不需要再时检测定位抠图,1:检测过的,0:没有检测过
        /// When submit to the server, the algorithm has checked the image or not
        /// </summary>
        public byte bIsDetected;
        /// <summary>
        /// / 预留字节数
        /// reserved data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public byte[] bReserved;
        /// <summary>
        /// / 目标抓拍质量分数, 0-100
        /// Quality score of target capture, range: 0-100
        /// </summary>
        public byte byQulityScore;
        /// <summary>
        /// / 文件路径长度 既pszFilePath 用户申请的大小
        /// File path Len of pszFilePath
        /// </summary>
        public int nFilePathLen;
        /// <summary>
        /// / 小图左上角在大图的位置，使用绝对坐标系
        /// The upper left corner of the figure is in the big picture. Absolute coordinates are used
        /// </summary>
        public NET_POINT stuPoint;
        /// <summary>
        /// / 在上传图片数据中的图片序号
        /// The serial number of the picture in the uploaded picture data
        /// </summary>
        public uint nIndexInData;
    }

    /// <summary>
    /// 门状态异常报警
    /// Door status abnormal alarm
    /// </summary>
    public struct NET_DOOR_STATE_ABNORMAL_INFO
    {
        /// <summary>
        /// / 门状态的报警指定时间段，在指定时间段开门或关门为异常，产生报警
        /// The alarm of door status is within the specified time period. If the door is opened or closed within the specified time period, it is abnormal and an alarm is generated
        /// </summary>
        public NET_CFG_TIME_SCHEDULE stuDSTimeSection;
        /// <summary>
        /// / 门的状态，开门状态1表示，关门状态0表示
        /// The state of the door. The opening state is 1 and the closing state is 0
        /// </summary>
        public uint nDoorState;
        /// <summary>
        /// / 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 124)]
        public string szReserved;
    }

    /// <summary>
    /// 开门状态异常报警
    /// Door opening status abnormal alarm
    /// </summary>
    public struct NET_OPEN_DOOR_ABNORMAL_INFO
    {
        /// <summary>
        /// / 开门状态的报警指定时间段，在指定时间段开门达到nLongTime，产生报警
        /// The alarm in the state of opening the door is within the specified time period. When the door reaches nLongtime within the specified time period, an alarm will be generated
        /// </summary>
        public NET_CFG_TIME_SCHEDULE stuODTimeSection;
        /// <summary>
        /// / 开门过长时间/min
        /// Opening time too long / min
        /// </summary>
        public uint nLongTime;
        /// <summary>
        /// / 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 124)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 ALARM_DOOR_STATE_DETECTION (开关门检测事件)对应的数据块描述信息
    /// The description information of the data block corresponding to the event type ALARM_DOOR_STATE_DETECTION(Door State Detection event)
    /// </summary>
    public struct NET_ALARM_DOOR_STATE_DETECTION_INFO
    {
        /// <summary>
        /// / 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件类型 0:脉冲,1:开始, 2:停止
        /// Event action 0:pulse,1:start, 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 事件名称
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 智能事件所属大类
        /// Category of intelligent events
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// / 智能事件规则编号
        /// Rule ID
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// / GroupID事件组ID，同一物体抓拍过程内GroupID相同
        /// Group ID
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// / CountInGroup一个事件组内的抓拍张数
        /// Count In Group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// / IndexInGroup一个事件组内的抓拍序号，从1开始
        /// Index In Group
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// / 相对事件时间戳,(单位是毫秒)
        /// Relative event timestamp in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 事件发生的时间
        /// Time of occurrence
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件ID
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 事件触发的预置点号，从1开始没有该字段，表示预置点未知
        /// The preset point number triggered by the event. There is no such field from 1, indicating that the preset point is unknown
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// / 检测区个数
        /// Number of detection areas
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// / 检测区
        /// Detection area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// / 全景广角图
        /// Panoramic wide-angle map
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// / 报警类型 门状态异常或开门异常
        /// Alarm type: abnormal door status or abnormal door opening
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAlarmType;
        /// <summary>
        /// / 门状态异常报警
        /// Door status abnormal alarm
        /// </summary>
        public NET_DOOR_STATE_ABNORMAL_INFO stuDoorStateAbnormal;
        /// <summary>
        /// / 开门状态异常报警
        /// Door opening status abnormal alarm
        /// </summary>
        public NET_OPEN_DOOR_ABNORMAL_INFO stuOpenDoorAbnormal;
        /// <summary>
        /// / 检测目标的物体信息
        /// Detect object information of the target
        /// </summary>
        public IntPtr pstuObjects;
        /// <summary>
        /// / 检测目标的物体信息个数
        /// Number of object information detected by the target
        /// </summary>
        public int nObjectsNum;
        /// <summary>
        /// / 预留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020 - 8)]
        public sbyte[] szReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020 - 4)]
        public sbyte[] szReserved;
#endif
    }

    /// <summary>
    /// 事件类型 ALARM_TRAPPED_IN_LIFT_DETECTION (电梯困人检测)对应的数据块描述信息
    /// event type ALARM_TRAPPED_IN_LIFT_DETECTION (Trapped In Lift Detection event) Data block description
    /// </summary>
    public struct NET_ALARM_TRAPPED_IN_LIFT_DETECTION_INFO
    {
        /// <summary>
        /// / 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲,1:开始, 2:停止
        /// 0: Pulse,1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 扩展协议字段
        /// Extend the protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件发生时间
        /// Time when the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 智能事件规则编号
        /// Intelligent event rule number
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// / 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 智能事件所属大类
        /// Category of intelligent events
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// / 相对事件时间戳,单位毫秒
        /// Relative event timestamp, in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / GroupID事件组ID
        /// GroupID Event group ID
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// / CountInGroup一个事件组内的抓拍张数
        /// CountInGroup Number of snapshots in an event group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// / IndexInGroup一个事件组内的抓拍序号
        /// IndexInGroup Capture number in an event group
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// / 事件编号
        /// Event number
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 事件触发的预置点号, 从1开始, 0表示预置点未知
        /// The preset point number triggered by the event, starting from 1, where 0 indicates that the preset point is unknown
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// / 困人时间, 单位s ,最小10s
        /// Trapped time, in seconds, minimum 10 seconds
        /// </summary>
        public uint nTrappedTime;
        /// <summary>
        /// / 当前电梯内人数
        /// Current number of people in the elevator
        /// </summary>
        public uint nCurrentNumber;
        /// <summary>
        /// / 电梯运行状态,0:未知, 1:电梯停止, 2:电梯上行, 3:电梯下行
        /// Elevator operation status, 0: unknown, 1: elevator stopped, 2: elevator up, 3: elevator down
        /// </summary>
        public uint nElevatorWorkState;
        /// <summary>
        /// / 电梯所在的楼层,最大值255
        /// The floor where the elevator is located, with a maximum value of 255
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szElevatorFloor;
        /// <summary>
        /// / 规则区域
        /// Detect Region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT_EX[] stuDetectRegion;
        /// <summary>
        /// / 规则区域个数
        /// Detect Region Number
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// / 检测目标的物体信息个数
        /// Number of object information detected by the target
        /// </summary>
        public int nObjectsNum;
        /// <summary>
        /// / 检测目标的物体信息
        /// Detect object information of the target
        /// </summary>
        public IntPtr pstuObjects;
        /// <summary>
        /// / 全景图
        /// Scene Image
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// / 预留字节
        /// Reserve bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 ALARM_ELEVATOR_WORK (上报电梯运行数据报警)对应的数据块描述信息
    /// Event type ALARM_ELEVATOR_WORK Indicates the description of the data block corresponding to the elevator running data alarm
    /// </summary>
    public struct NET_ALARM_ELEVATOR_WORK_INFO
    {
        /// <summary>
        /// / 通道号
        /// Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲,1:开始, 2:停止
        /// 0: Pulse,1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 事件发生的时间
        /// The time when the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 当前电梯内人数
        /// Number of people currently in the elevator
        /// </summary>
        public uint nCurrentNumber;
        /// <summary>
        /// / 扩展协议字段
        /// Extend the protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 相对事件时间戳,单位毫秒
        /// Relative event timestamp, in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 电梯所在的楼层,最大值255
        /// Elevator floor, maximum 255
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szElevatorFloor;
        /// <summary>
        /// / 电梯运行状态,0 未知，1电梯停止,2 电梯上行,3 电梯下行
        /// Elevator running status,0 unknown, elevator 1 stop, elevator 2 up, elevator 3 down
        /// </summary>
        public uint nElevatorWorkState;
        /// <summary>
        /// / 电梯运行速度，单位mm/s，最大速度为65535mm/s
        /// Elevator operating speed, unit: mm/s, maximum speed: 65535mm/s
        /// </summary>
        public uint nElevatorWorkSpeed;
        /// <summary>
        /// / 基准楼层是否已校准（梯控传感器重启需要重新校准
        /// Whether the reference floor is calibrated (the ladder control sensor needs to be recalibrated after restart
        /// </summary>
        public bool bIsCheckFloor;
        /// <summary>
        /// / 电梯门的状态，0：未知, 1：开、分 ,2：关、合 , 3：半开半合
        /// Elevator door status, 0: unknown, 1: open, open,2: closed, 3: half open and half closed
        /// </summary>
        public uint nDoorState;
        /// <summary>
        /// / 温度单位支持两种类型： "Centigrade" : 摄氏度"Fahrenheit":华氏度
        /// / The temperature unit supports two types: "Centigrade": Celsius "Fahrenheit": Fahrenheit
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szTemperatureUnit;
        /// <summary>
        /// / 电梯内亮度，分为三档 “Strong”，“Medium”，“Weak”，字符串表示
        /// / The brightness inside the elevator is divided into three levels: "Strong", "Medium", and "Black", represented by a string
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szBrightness;
        /// <summary>
        /// / 电梯内的温度值，单位：℃或℉，根据 TemperatureUnit判断
        /// / The temperature value inside the elevator, in ℃ or ℉, determined by TemperatureUnit
        /// </summary>
        public float fTemperature;
        /// <summary>
        /// / 预留字节
        /// Reserve bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 972)]
        public string szReserved;
    }

    /// <summary>
    /// 温度异常报警相关配置信息
    /// Configuration information related to temperature anomaly alarm
    /// </summary>
    public struct NET_CFG_TEMPERATURE_ABNORMAL_INFO
    {
        /// <summary>
        /// / 温度异常报警使能
        /// / Temperature abnormal alarm enable
        /// </summary>
        public bool bEnabled;
        /// <summary>
        /// / 温度报警阈值，单位摄氏度
        /// / Temperature alarm threshold, in degrees Celsius
        /// </summary>
        public int nMaxTemperature;
        /// <summary>
        /// / 重复报警时间
        /// / Repeated alarm time
        /// </summary>
        public int nReportInterval;
        /// <summary>
        /// / 温度校准值，单位摄氏度
        /// / Temperature calibration value in degrees Celsius
        /// </summary>
        public int nTemperatureCalibration;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 超速报警相关配置信息
    /// Configuration information related to overspeed alarm
    /// </summary>
    public struct NET_CFG_OVER_SPEED_INFO
    {
        /// <summary>
        /// / 速度报警阈值,单位m/s
        /// / Speed alarm threshold, in m/s
        /// </summary>
        public double dbSpeedLimit;
        /// <summary>
        /// / 加速度报警阈值，单位m/s^2
        /// / Acceleration alarm threshold, in m/s ^ 2
        /// </summary>
        public double dbAccelerationThreshold;
        /// <summary>
        /// / 超速报警使能
        /// / Enable overspeed alarm
        /// </summary>
        public bool bEnabled;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 晃动检测相关配置信息
    /// Configuration information related to shake detection
    /// </summary>
    public struct NET_CFG_SWAY_ABNORMAL_INFO
    {
        /// <summary>
        /// / 晃动检测使能项
        /// / Shake detection enable item
        /// </summary>
        public bool bEnabled;
        /// <summary>
        /// / 灵敏度
        /// / sensitivity
        /// </summary>
        public int nSensitivity;
        /// <summary>
        /// / 左右晃动检测阈值,单位m/s^2
        /// / Left and right shake detection threshold, unit m/s ^ 2
        /// </summary>
        public double dbLeftAndRightThreshold;
        /// <summary>
        /// / 前后晃动检测阈值,单位m/s^2
        /// / Front and rear shake detection threshold, in m/s ^ 2
        /// </summary>
        public double dbFrontAndBackThreshold;
        /// <summary>
        /// / 左上下晃动检测阈值,单位m/s^2
        /// / Left upper and lower shake detection threshold, unit: m/s ^ 2
        /// </summary>
        public double dbUpAndDownThreshold;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 电梯楼层报警相关配置, 对应枚举 NET_EM_CFG_ELEVATOR_ALARM_CONFIG
    /// Elevator floor alarm related configuration, corresponding to NET_EM_CFG_ELEVATOR_ALARM_CONFIG
    /// </summary>
    public struct NET_CFG_ELEVATOR_ALARM_DEVICE_INFO
    {
        /// <summary>
        /// / 温度异常报警相关配置
        /// / Configuration related to temperature abnormal alarm
        /// </summary>
        public NET_CFG_TEMPERATURE_ABNORMAL_INFO stuTemperatureAbnormal;
        /// <summary>
        /// / 超速报警相关配置
        /// / Configuration related to overspeed alarm
        /// </summary>
        public NET_CFG_OVER_SPEED_INFO stuOverSpeed;
        /// <summary>
        /// / 晃动检测相关配置
        /// / Configuration related to shake detection
        /// </summary>
        public NET_CFG_SWAY_ABNORMAL_INFO stuSwayAbnormal;
        /// <summary>
        /// / 冲顶报警使能
        /// / Top flushing alarm enable
        /// </summary>
        public bool bMoveOverTopEnabled;
        /// <summary>
        /// / 蹲底报警使能
        /// / Squatting alarm enable
        /// </summary>
        public bool bMoveUnderBottomEnabled;
        /// <summary>
        /// / 非平层停梯报警使能
        /// / Non level elevator stop alarm enable
        /// </summary>
        public bool bStopBetweenFloorsEnabled;
        /// <summary>
        /// / 开门走梯报警使能
        /// / Door opening and elevator alarm enable
        /// </summary>
        public bool bOpenDoorMoveEnabled;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 电梯楼层报警相关配置, 对应枚举 NET_EM_CFG_ELEVATOR_ALARM_CONFIG
    /// Elevator floor alarm related configuration, corresponding to NET_EM_CFG_ELEVATOR_ALARM_CONFIG
    /// </summary>
    public struct NET_CFG_ELEVATOR_ALARM_CONFIG_INFO
    {
        /// <summary>
        /// / 结构体大小, 必须赋值
        /// / Structure size, must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 每个通道的配置
        /// / Configuration of each channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_CFG_ELEVATOR_ALARM_DEVICE_INFO[] stuElevatorAlarmDevice;
        /// <summary>
        /// / 通道数量
        /// / Channel number
        /// </summary>
        public int nDeviceNum;
    }

    /// <summary>
    /// 事件类型 ALARM_ELEVATOR_ALARM (电梯异常报警事件)对应的数据块描述信息
    /// Event type ALARM_ELEVATOR_ALARM Indicates data block description
    /// </summary>
    public struct NET_ALARM_ELEVATOR_ALARM_INFO
    {
        /// <summary>
        /// / 通道号
        /// / Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲,1:开始, 2:停止
        /// / 0: pulse,1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 扩展协议字段
        /// / Expand the protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件发生的时间
        /// / Event time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件编号，用来唯一标志一个事件
        /// / Event number, which uniquely identifies an event
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 事件名称
        /// / Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 当前事件触发的报警类型
        /// / Category to which intelligent events belong
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAlarmType;
        /// <summary>
        /// / 相对事件时间戳,单位毫秒
        /// / Relative event timestamp, in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 超速异常使用，最大加速度
        /// / Abnormal use of overspeed, maximum acceleration
        /// </summary>
        public double dbMaxAccel;
        /// <summary>
        /// / 超速异常使用，最大速度 m/s
        /// / Abnormal use of overspeed, maximum speed m/s
        /// </summary>
        public double dbMaxSpeed;
        /// <summary>
        /// / 超速异常使用，当前速度（必须大于最大速度）m/s
        /// / Abnormal use of overspeed, current speed (must be greater than maximum speed) m/s
        /// </summary>
        public double dbSpeed;
        /// <summary>
        /// / 超速异常使用，当前加速度 m/s^2
        /// / Abnormal use of overspeed, current acceleration m/s ^ 2
        /// </summary>
        public double dbAccel;
        /// <summary>
        /// / 非平层停梯使用，楼层名称，下方楼层。如果下方没有楼层显示"Bottom"
        /// / Non level stop elevator use, floor name, lower floor. If there are no floors below that display "Bottom"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUnderFloor;
        /// <summary>
        /// / 非平层停梯使用，楼层名称，上方楼层。如果上方没有楼层显示"Top"
        /// / Non level stop elevator use, floor name, upper floor. If there are no floors above that display "Top"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUpFloor;
        /// <summary>
        /// / 温度异常使用，当前温度，单位摄氏度
        /// / Abnormal temperature usage, current temperature, in degrees Celsius
        /// </summary>
        public int nCurrentTemperature;
        /// <summary>
        /// / 事件触发的预置点号，从1开始没有该字段，表示预置点未知
        /// / The preset point number triggered by the event, without this field starting from 1, indicates that the preset point is unknown
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserverd;
    }

    /// <summary>
    /// 多维度电梯感知信息信息
    /// Multidimensional elevator perception information
    /// </summary>
    public struct NET_NOTIFY_ELEVATOR_FLOOR_COUNTER_INFO
    {
        /// <summary>
        /// / 梯内当前人数
        /// / Current number of people inside the elevator
        /// </summary>
        public int nCurrentNumber;
        /// <summary>
        /// / 电梯运行的速度 单位m/s
        /// / The speed unit of elevator operation is m/s
        /// </summary>
        public double dbSpeed;
        /// <summary>
        /// / 楼层号
        /// / Floor number
        /// </summary>
        public int nFloorNum;
        /// <summary>
        /// / 温度，单位：℃
        /// / Temperature, unit: ℃
        /// </summary>
        public int nTemperature;
        /// <summary>
        /// / 电梯加速度 单位 m/s^2
        /// / Elevator acceleration unit m/s ^ 2
        /// </summary>
        public double dbAcceleration;
        /// <summary>
        /// / 振动加速度，单位m/s^2
        /// / Vibration acceleration, in m/s ^ 2
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public double[] dbVibrationAcceleration;
        /// <summary>
        /// / 电梯内亮度，档次,1 ：弱,2 ：中,3 ：强
        /// / Elevator brightness, grade, 1: weak, 2: medium, 3: strong
        /// </summary>
        public int nBrightness;
        /// <summary>
        /// / 上报数据通道号，中间平台使用，IPC上报不带此字段
        /// / Report data channel number, used by intermediate platform, IPC report does not include this field
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 保留字段
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szResvered;
    }

    /// <summary>
    /// CLIENT_AttachElevatorFloorCounter 接口入参
    /// CLIENT_AttachElevatorFloorCounter input parameter
    /// </summary>
    public struct NET_IN_ATTACH_ELEVATOR_FLOOR_COUNTER_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 订阅通道号；-1代表订阅全通道；
        /// / Subscription channel number- 1 represents subscribing to all channels;
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nChannel;
        /// <summary>
        /// / 通道号个数
        /// / Number of channel numbers
        /// </summary>
        public int nChannelNum;
        /// <summary>
        /// / 回调函数
        /// / callback
        /// </summary>
        public fNotifyElevatorFloorCounterdata cbNotifyElevatorFloorCounterdata;
        /// <summary>
        /// / 用户自定义参数
        /// / User defined parameters
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// CLIENT_AttachElevatorFloorCounter 接口出参
    /// CLIENT_AttachElevatorFloorCounter output parameter
    /// </summary>
    public struct NET_OUT_ATTACH_ELEVATOR_FLOOR_COUNTER_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 联动业务大类选项
    /// Linkage business category options
    /// </summary>
    public struct NET_LINK_CLASS_TYPE
    {
        /// <summary>
        /// / 待级联的业务所在通道号
        /// / The channel number of the business to be cascaded
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 待级联的业务大类
        /// / Business categories to be cascaded
        /// </summary>
        public EM_SCENE_CLASS_TYPE emClassType;
        /// <summary>
        /// / 预留字段
        /// / Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 252)]
        public string szResvered;
    }

    /// <summary>
    /// EVENT_IVS_DOOR_STATE_DETECTION(开关门检测事件)对应的规则配置
    /// Rule configuration corresponding to EVENT INVS DOOR STATE DETECTION (door opening and closing detection event)
    /// </summary>
    public struct NET_CFG_DOOR_STATE_DETECTION_INFO
    {
        /// <summary>
        /// / 此结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 规则名称,不同规则不能重名
        /// / Rule name, different rules cannot have duplicate names
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 规则使能
        /// / Rule Enabling
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 相应物体类型个数
        /// / Number of corresponding object types
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// / 相应物体类型列表
        /// / List of corresponding object types
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// / 报警联动
        /// / Alarm linkage
        /// </summary>
        public NET_ALARM_MSG_HANDLE stuEventHandler;
        /// <summary>
        /// / 云台预置点编号 0~65535
        /// / Pan tilt preset point numbers 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// / 联动业务个数
        /// / Number of linked businesses
        /// </summary>
        public int nLink;
        /// <summary>
        /// / 联动业务大类选项
        /// / Linkage business category options
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_LINK_CLASS_TYPE[] stuLinkClassType;
        /// <summary>
        /// / 跟踪条件规则使能
        /// / Enable tracking condition rules
        /// </summary>
        public bool bTrackEnable;
        /// <summary>
        /// / 检测区顶点数
        /// / Number of top points in the detection area
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// / 检测区
        /// / detection zone
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT_EX[] stuDetectRegion;
        /// <summary>
        /// / 辅助线（两点)
        /// / Auxiliary line (two points)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_POINT_EX[] stuDetectLine;
        /// <summary>
        /// / 规则特定的尺寸过滤器
        /// / Rule specific size filters
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO stuSizeFilter;
        /// <summary>
        /// / 是否开启辅助线。对应DetectLine。
        /// / Is the auxiliary line enabled. Corresponding to DetectLine.
        /// </summary>
        public bool bDetectLineEnable;
        /// <summary>
        /// / 是否开启开关门异常检测
        /// / Is door opening and closing abnormal detection enabled
        /// </summary>
        public bool bDSEnable;
        /// <summary>
        /// / 是否开启开门时间过长检测
        /// / Is the door opening time too long detected
        /// </summary>
        public bool bODEnable;
        /// <summary>
        /// / 最短持续时间, 单位:秒(5s-60s)
        /// / Minimum duration, in seconds (5s-60s)
        /// </summary>
        public uint nMinDuration;
        /// <summary>
        /// / 重复报警时间，单位：秒，范围0-3600
        /// / Repeated alarm time, unit: seconds, range 0-3600
        /// </summary>
        public uint nRepeatAlarmTime;
        /// <summary>
        /// / 灵敏度, 值越小灵敏度越低, 取值1-10
        /// / Sensitivity, the smaller the value, the lower the sensitivity, ranging from 1 to 10
        /// </summary>
        public uint nSensitivity;
        /// <summary>
        /// / 检测门的状态，开门状态1表示，关门状态0表示
        /// / Detect the status of the door, with 1 indicating the opening status and 0 indicating the closing status
        /// </summary>
        public uint nDoorState;
        /// <summary>
        /// / 开门过长时间/s,最小10s
        /// / Opening the door for too long time/s, minimum 10s
        /// </summary>
        public uint nLongTime;
        /// <summary>
        /// / 门状态的报警指定时间段，在指定时间段开门或关门为异常，产生报警
        /// / The alarm for the door status is specified within a specified time period. If the door is opened or closed abnormally during the specified time period, an alarm is generated
        /// </summary>
        public NET_CFG_TIME_SCHEDULE stuDSTimeSection;
        /// <summary>
        /// / 开门状态的报警指定时间段，在指定时间段开门达到LongTime，产生报警
        /// / An alarm is generated when the door is opened for a specified time period and reaches LongTime
        /// </summary>
        public NET_CFG_TIME_SCHEDULE stuODTimeSection;
        /// <summary>
        /// / 保留字节
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// ALARM_OPEN_CLOSE_DOOR_DETECTION(反复开关门检测事件)对应的规则配置
    /// ALARM_OPEN_CLOSE_DOOR_DETECTION(反复开关门检测事件)对应的规则配置
    /// </summary>
    public struct NET_CFG_OPEN_CLOSE_DOOR_DETECTION_INFO
    {
        /// <summary>
        /// / 此结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 规则名称,不同规则不能重名
        /// / Rule name, different rules cannot have duplicate names
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 规则使能
        /// / Rule Enabling
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 相应物体类型个数
        /// / Number of corresponding object types
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// / 相应物体类型列表
        /// / List of corresponding object types
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// / 报警联动
        /// / Alarm linkage
        /// </summary>
        public NET_ALARM_MSG_HANDLE stuEventHandler;
        /// <summary>
        /// / 云台预置点编号 0~65535
        /// / Pan tilt preset point numbers 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// / 联动业务个数
        /// / Number of linked businesses
        /// </summary>
        public int nLink;
        /// <summary>
        /// / 联动业务大类选项
        /// / Linkage business category options
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_LINK_CLASS_TYPE[] stuLinkClassType;
        /// <summary>
        /// / 跟踪条件规则使能
        /// / Enable tracking condition rules
        /// </summary>
        public bool bTrackEnable;
        /// <summary>
        /// / 检测区顶点数
        /// / Number of top points in the detection area
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// / 检测区
        /// / detection zone
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT_EX[] stuDetectRegion;
        /// <summary>
        /// / 辅助线（两点)
        /// / Auxiliary line (two points)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_POINT_EX[] stuDetectLine;
        /// <summary>
        /// / 是否开启辅助线。对应DetectLine。
        /// / Is the auxiliary line enabled. Corresponding to DetectLine.
        /// </summary>
        public bool bDetectLineEnable;
        /// <summary>
        /// / 最短持续时间, 单位:秒(5s-60s)
        /// / mnimum duration, in seconds (5s-60s)
        /// </summary>
        public uint nMinDuration;
        /// <summary>
        /// / 重复报警时间，单位：秒，范围0-3600
        /// / Repeated alarm time, unit: seconds, range 0-3600
        /// </summary>
        public uint nReportInterval;
        /// <summary>
        /// / 灵敏度, 值越小灵敏度越低, 取值1-10
        /// / Sensitivity, the smaller the value, the lower the sensitivity, ranging from 1 to 10
        /// </summary>
        public uint nSensitivity;
        /// <summary>
        /// / 规则特定的尺寸过滤器
        /// / Rule specific size filters
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO stuSizeFilter;
        /// <summary>
        /// / 保留字节
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// EVENT_IVS_TRAPPED_IN_LIFT_DETECTION(电梯困人检测事件)对应的规则配置
    /// EVENT_IVS_TRAPPED_IN_LIFT_DETECTION(电梯困人检测事件)对应的规则配置
    /// </summary>
    public struct NET_CFG_TRAPPED_IN_LIFT_DETECTION_INFO
    {
        /// <summary>
        /// / 此结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 规则名称,不同规则不能重名
        /// / Rule name, different rules cannot have duplicate names
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 规则使能
        /// / Rule Enabling
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 相应物体类型个数
        /// / Number of corresponding object types
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// / 相应物体类型列表
        /// / List of corresponding object types
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// / 报警联动
        /// / Alarm linkage
        /// </summary>
        public NET_ALARM_MSG_HANDLE stuEventHandler;
        /// <summary>
        /// / 云台预置点编号 0~65535
        /// / Pan tilt preset point numbers 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// / 联动业务个数
        /// / Number of linked businesses
        /// </summary>
        public int nLink;
        /// <summary>
        /// / 联动业务大类选项
        /// / Linkage business category options
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_LINK_CLASS_TYPE[] stuLinkClassType;
        /// <summary>
        /// / 跟踪条件规则使能
        /// / Enable tracking condition rules
        /// </summary>
        public bool bTrackEnable;
        /// <summary>
        /// / 检测区顶点数
        /// / Number of top points in the detection area
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// / 检测区
        /// / detection zone
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT_EX[] stuDetectRegion;
        /// <summary>
        /// / 辅助线（两点)
        /// / Auxiliary line (two points)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_POINT_EX[] stuDetectLine;
        /// <summary>
        /// / 是否开启辅助线。对应DetectLine。
        /// / Is the auxiliary line enabled. Corresponding to DetectLine.
        /// </summary>
        public bool bDetectLineEnable;
        /// <summary>
        /// / 最短持续时间, 单位:秒(5s-60s)
        /// / mnimum duration, in seconds (5s-60s)
        /// </summary>
        public uint nMinDuration;
        /// <summary>
        /// / 重复报警间隔,单位：秒
        /// / Repeated alarm time, unit: seconds, range 0-3600
        /// </summary>
        public uint nReportInterval;
        /// <summary>
        /// / 灵敏度, 值越小灵敏度越低, 取值1-10
        /// / Sensitivity, the smaller the value, the lower the sensitivity, ranging from 1 to 10
        /// </summary>
        public uint nSensitivity;
        /// <summary>
        /// / 规则特定的尺寸过滤器
        /// / Rule specific size filters
        /// </summary>
        public NET_CFG_SIZEFILTER_INFO stuSizeFilter;
        /// <summary>
        /// / 保留字节
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_SNAPMANUAL(SnapManual事件)对应数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_SNAPMANUAL(SnapManual time event)
    /// </summary>
    public struct NET_DEV_EVENT_SNAPMANUAL
    {
        /// <summary>
        /// / 通道号
        /// Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// / 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// / 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / 事件对应文件信息
        /// event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// / 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
        /// Serial number of the picture, in the same time (accurate to seconds) may have multiple images, starting from 0
        /// </summary>
        public byte byImageIndex;
        /// <summary>
        /// / 抓图标志(按位),具体见 NET_RESERVED_COMMON
        /// flag(by bit),see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// / 保留字节,留待扩展.
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 视频输出属性
    /// Video output attribute
    /// </summary>
    public struct NET_A_AV_CFG_VideoOutAttr
    {
        public int nStructSize;
        /// <summary>
        /// 左边距, 比率, 0~100
        /// left margin, ratio 0~100
        /// </summary>
        public int nMarginLeft;
        /// <summary>
        /// 上边距, 比率, 0~100
        /// 0~100 upper margin, ratio 0~100
        /// </summary>
        public int nMarginTop;
        /// <summary>
        /// 右边距, 比率, 0~100
        /// right margin, ratio 0~100
        /// </summary>
        public int nMarginRight;
        /// <summary>
        /// 下边距, 比率, 0~100
        /// lower margin, ratio 0~100
        /// </summary>
        public int nMarginBottom;
        /// <summary>
        /// 亮度, 0~100
        /// brightness 0~100
        /// </summary>
        public int nBrightness;
        /// <summary>
        /// 对比度, 0~100
        /// Contrast 0~100
        /// </summary>
        public int nContrast;
        /// <summary>
        /// 饱和度, 0~100
        /// Saturation 0~100
        /// </summary>
        public int nSaturation;
        /// <summary>
        /// 色调, 0~100
        /// Hue 0~100
        /// </summary>
        public int nHue;
        /// <summary>
        /// 水平分辨率
        /// Pan resolution 0~100
        /// </summary>
        public int nWidth;
        /// <summary>
        /// 垂直分辨率
        /// Vertical resolution 0~100
        /// </summary>
        public int nHeight;
        /// <summary>
        /// 颜色深度
        /// Color depth 0~100
        /// </summary>
        public int nBPP;
        /// <summary>
        /// -1-未知, 0-Auto, 1-TV, 2-VGA, 3-DVI, 4-HDMI, 5-SPOT
        /// 0-Auto, 1-TV, 2-VGA, 3-DVI
        /// </summary>
        public int nFormat;
        /// <summary>
        /// 刷新频率
        /// Refresh frequency
        /// </summary>
        public int nRefreshRate;
        /// <summary>
        /// 输出图像增强
        /// Output image enhancement
        /// </summary>
        public bool bIQIMode;
        /// <summary>
        /// 扫描模式, 0-逐行, 1-隔行
        /// Scanning mode, 0 - Progressive ,1 - interlaced
        /// </summary>
        public int nScanFormat;
    }

    /// <summary>
    /// 获取屏幕窗口解码信息CLIENT_MonitorWallGetWindowInfo入参
    /// get monitorwall window info input parameter
    /// </summary>
    public struct NET_IN_MW_GET_WINODW_INFO
    {
        /// <summary>
        /// /结构体大小
        /// dwSize must be initialized,dwSize is sizeof(NET_IN_MW_GET_WINODW_INFO)
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// /电视墙序号
        /// monitor wall ID
        /// </summary>
        public int nMonitorWallID;
        /// <summary>
        /// /拼接屏或者单屏ID
        /// composite ID
        /// </summary>
        public IntPtr pszCompositeID;
    }

    /// <summary>
    /// 解码通道状态
    /// Video channel state
    /// </summary>
    public enum EM_A_NET_VIDEOCHANNEL_STATE
    {
        /// <summary>
        /// / 未知状态
        /// unknown state
        /// </summary>
        NET_VIDEOCHANNEL_STATE_UNKNOWN,
        /// <summary>
        /// / 空闲
        /// idle
        /// </summary>
        NET_VIDEOCHANNEL_STATE_IDLE,
        /// <summary>
        /// / 播放
        /// play
        /// </summary>
        NET_VIDEOCHANNEL_STATE_PLAY,
        /// <summary>
        /// / 预览
        /// monitor
        /// </summary>
        NET_VIDEOCHANNEL_STATE_MONITOR,
        /// <summary>
        /// / 轮询
        /// tour
        /// </summary>
        NET_VIDEOCHANNEL_STATE_TOUR,
    }

    /// <summary>
    /// 码流的编码方式
    /// compression
    /// </summary>
    public enum EM_NET_ENCODE_COMPRESSION
    {
        /// <summary>
        /// /未知
        /// Unknown
        /// </summary>
        EM_NET_ENCODE_COMPRESSION_UNKNOWN,
        /// <summary>
        /// /H264
        /// H264
        /// </summary>
        EM_NET_ENCODE_COMPRESSION_H264,
        /// <summary>
        /// /MPEG4
        /// MPEG4
        /// </summary>
        EM_NET_ENCODE_COMPRESSION_MPEG4,
        /// <summary>
        /// /MJPEG
        /// MJPEG
        /// </summary>
        EM_NET_ENCODE_COMPRESSION_MJPEG,
        /// <summary>
        /// /SVAC
        /// SVAC
        /// </summary>
        EM_NET_ENCODE_COMPRESSION_SVAC,
        /// <summary>
        /// /HIK
        /// HIK
        /// </summary>
        EM_NET_ENCODE_COMPRESSION_HIK,
        /// <summary>
        /// /H265
        /// H265
        /// </summary>
        EM_NET_ENCODE_COMPRESSION_H265,
    }

    /// <summary>
    /// 分辨率枚举,细分到具体分辨率
    /// Resolution enumeration.Subdivide to specific resolution
    /// </summary>
    public enum EM_CAPTURE_SIZE_EX
    {
        /// <summary>
        /// / D1 704*576(PAL) 704*480(NTSC),兼容WWxHH,下同
        /// D1 704*576(PAL) 704*480(NTSC),compatible WWxHH,the same below
        /// </summary>
        EM_CAPTURE_SIZE_EX_D1,
        /// <summary>
        /// / 704*576(PAL)
        /// 704*576(PAL)
        /// </summary>
        EM_CAPTURE_SIZE_EX_D1_PAL,
        /// <summary>
        /// / 704*480(NTSC)
        /// 704*480(NTSC)
        /// </summary>
        EM_CAPTURE_SIZE_EX_D1_NTSC,
        /// <summary>
        /// / HD1 352*576(PAL) 352*480(NTSC)
        /// HD1 352*576(PAL) 352*480(NTSC)
        /// </summary>
        EM_CAPTURE_SIZE_EX_HD1,
        /// <summary>
        /// / 352*576(PAL)
        /// 352*576(PAL)
        /// </summary>
        EM_CAPTURE_SIZE_EX_HD1_PAL,
        /// <summary>
        /// / 352*480(NTSC)
        /// 352*480(NTSC)
        /// </summary>
        EM_CAPTURE_SIZE_EX_HD1_NTSC,
        /// <summary>
        /// / BCIF 704*288(PAL) 704*240(NTSC)
        /// BCIF 704*288(PAL) 704*240(NTSC)
        /// </summary>
        EM_CAPTURE_SIZE_EX_BCIF,
        /// <summary>
        /// / 704*288(PAL)
        /// 704*288(PAL)
        /// </summary>
        EM_CAPTURE_SIZE_EX_BCIF_PAL,
        /// <summary>
        /// / 704*240(NTSC)
        /// 704*240(NTSC)
        /// </summary>
        EM_CAPTURE_SIZE_EX_BCIF_NTSC,
        /// <summary>
        /// / CIF 352*288(PAL) 352*240(NTSC)
        /// CIF 352*288(PAL) 352*240(NTSC)
        /// </summary>
        EM_CAPTURE_SIZE_EX_CIF,
        /// <summary>
        /// / 352*288(PAL)
        /// 352*288(PAL)
        /// </summary>
        EM_CAPTURE_SIZE_EX_CIF_PAL,
        /// <summary>
        /// / 352*240(NTSC)
        /// 352*240(NTSC)
        /// </summary>
        EM_CAPTURE_SIZE_EX_CIF_NTSC,
        /// <summary>
        /// / QCIF 176*144(PAL) 176*120(NTSC)
        /// QCIF 176*144(PAL) 176*120(NTSC)
        /// </summary>
        EM_CAPTURE_SIZE_EX_QCIF,
        /// <summary>
        /// / 176*144(PAL)
        /// 176*144(PAL)
        /// </summary>
        EM_CAPTURE_SIZE_EX_QCIF_PAL,
        /// <summary>
        /// / 176*120(NTSC)
        /// 176*120(NTSC)
        /// </summary>
        EM_CAPTURE_SIZE_EX_QCIF_NTSC,
        /// <summary>
        /// / 640*480
        /// 640*480
        /// </summary>
        EM_CAPTURE_SIZE_EX_VGA,
        /// <summary>
        /// / 320*240
        /// 320*240
        /// </summary>
        EM_CAPTURE_SIZE_EX_QVGA,
        /// <summary>
        /// / 480*480
        /// 480*480
        /// </summary>
        EM_CAPTURE_SIZE_EX_SVCD,
        /// <summary>
        /// / 160*128
        /// 160*128
        /// </summary>
        EM_CAPTURE_SIZE_EX_QQVGA,
        /// <summary>
        /// / 800*592
        /// 800*592
        /// </summary>
        EM_CAPTURE_SIZE_EX_SVGA,
        /// <summary>
        /// / 1024*768
        /// 1024*768
        /// </summary>
        EM_CAPTURE_SIZE_EX_XVGA,
        /// <summary>
        /// / 1280*800
        /// 1280*800
        /// </summary>
        EM_CAPTURE_SIZE_EX_WXGA,
        /// <summary>
        /// / 1280*1024
        /// 1280*1024
        /// </summary>
        EM_CAPTURE_SIZE_EX_SXGA,
        /// <summary>
        /// / 1600*1024
        /// 1600*1024
        /// </summary>
        EM_CAPTURE_SIZE_EX_WSXGA,
        /// <summary>
        /// / 1600*1200
        /// 1600*1200
        /// </summary>
        EM_CAPTURE_SIZE_EX_UXGA,
        /// <summary>
        /// / 1920*1200
        /// 1920*1200
        /// </summary>
        EM_CAPTURE_SIZE_EX_WUXGA,
        /// <summary>
        /// / 240*192,ND1
        /// 240*192,ND1
        /// </summary>
        EM_CAPTURE_SIZE_EX_LTF,
        /// <summary>
        /// / 1280*720
        /// 1280*720
        /// </summary>
        EM_CAPTURE_SIZE_EX_720,
        /// <summary>
        /// / 1920*1080
        /// 1920*1080
        /// </summary>
        EM_CAPTURE_SIZE_EX_1080,
        /// <summary>
        /// / 1280*960
        /// 1280*960
        /// </summary>
        EM_CAPTURE_SIZE_EX_1_3M,
        /// <summary>
        /// / 1872*1408,2_5M
        /// 1872*1408,2_5M
        /// </summary>
        EM_CAPTURE_SIZE_EX_2M,
        /// <summary>
        /// / 3744*1408
        /// 3744*1408
        /// </summary>
        EM_CAPTURE_SIZE_EX_5M,
        /// <summary>
        /// / 2048*1536
        /// 2048*1536
        /// </summary>
        EM_CAPTURE_SIZE_EX_3M,
        /// <summary>
        /// / 2432*2050
        /// 2432*2050
        /// </summary>
        EM_CAPTURE_SIZE_EX_5_0M,
        /// <summary>
        /// / 1216*1024
        /// 1216*1024
        /// </summary>
        EM_CAPTURE_SIZE_EX_1_2M,
        /// <summary>
        /// / 1408*1024
        /// 1408*1024
        /// </summary>
        EM_CAPTURE_SIZE_EX_1408_1024,
        /// <summary>
        /// / 3296*2472
        /// 3296*2472
        /// </summary>
        EM_CAPTURE_SIZE_EX_8M,
        /// <summary>
        /// / 2560*1920(5_1M)
        /// 2560*1920(5_1M)
        /// </summary>
        EM_CAPTURE_SIZE_EX_2560_1920,
        /// <summary>
        /// / 960H 960*576(PAL) 960*480(NTSC)
        /// 960H 960*576(PAL) 960*480(NTSC)
        /// </summary>
        EM_CAPTURE_SIZE_EX_960H,
        /// <summary>
        /// / 960*576(PAL)
        /// 960*576(PAL)
        /// </summary>
        EM_CAPTURE_SIZE_EX_960H_PAL,
        /// <summary>
        /// / 960*480(NTSC)
        /// 960*480(NTSC)
        /// </summary>
        EM_CAPTURE_SIZE_EX_960H_NTSC,
        /// <summary>
        /// / 960*720
        /// 960*720
        /// </summary>
        EM_CAPTURE_SIZE_EX_960_720,
        /// <summary>
        /// / 640*360
        /// 640*360
        /// </summary>
        EM_CAPTURE_SIZE_EX_NHD,
        /// <summary>
        /// / 320*180
        /// 320*180
        /// </summary>
        EM_CAPTURE_SIZE_EX_QNHD,
        /// <summary>
        /// / 160*90
        /// 160*90
        /// </summary>
        EM_CAPTURE_SIZE_EX_QQNHD,
        /// <summary>
        /// / 960*540
        /// 960*540
        /// </summary>
        EM_CAPTURE_SIZE_EX_960_540,
        /// <summary>
        /// / 640*352
        /// 640*352
        /// </summary>
        EM_CAPTURE_SIZE_EX_640_352,
        /// <summary>
        /// / 640*400
        /// 640*400
        /// </summary>
        EM_CAPTURE_SIZE_EX_640_400,
        /// <summary>
        /// / 320*192
        /// 320*192
        /// </summary>
        EM_CAPTURE_SIZE_EX_320_192,
        /// <summary>
        /// / 320*176
        /// 320*176
        /// </summary>
        EM_CAPTURE_SIZE_EX_320_176,
        /// <summary>
        /// / 800*600
        /// 800*600
        /// </summary>
        EM_CAPTURE_SIZE_EX_SVGA1,
        /// <summary>
        /// / 2560*1440
        /// 2560*1440
        /// </summary>
        EM_CAPTURE_SIZE_EX_2560_1440,
        /// <summary>
        /// / 2304*1296
        /// 2304*1296
        /// </summary>
        EM_CAPTURE_SIZE_EX_2304_1296,
        /// <summary>
        /// / 2592*1520
        /// 2592*1520
        /// </summary>
        EM_CAPTURE_SIZE_EX_2592_1520,
        /// <summary>
        /// / 4000*3000
        /// 4000*3000
        /// </summary>
        EM_CAPTURE_SIZE_EX_4000_3000,
        /// <summary>
        /// / 2880*2880
        /// 2880*2880
        /// </summary>
        EM_CAPTURE_SIZE_EX_2880_2880,
        /// <summary>
        /// / 2880*2160
        /// 2880*2160
        /// </summary>
        EM_CAPTURE_SIZE_EX_2880_2160,
        /// <summary>
        /// / 2688*1520
        /// 2688*1520
        /// </summary>
        EM_CAPTURE_SIZE_EX_2688_1520,
        /// <summary>
        /// / 2592*1944
        /// 2592*1944
        /// </summary>
        EM_CAPTURE_SIZE_EX_2592_1944,
        /// <summary>
        /// / 3072*1728
        /// 3072*1728
        /// </summary>
        EM_CAPTURE_SIZE_EX_3072_1728,
        /// <summary>
        /// / 3072*2048
        /// 3072*2048
        /// </summary>
        EM_CAPTURE_SIZE_EX_3072_2048,
        /// <summary>
        /// / 3840*2160
        /// 3840*2160
        /// </summary>
        EM_CAPTURE_SIZE_EX_3840_2160,
        EM_CAPTURE_SIZE_EX_NR = 255,
    }

    /// <summary>
    /// 解码通道信息
    /// video window info
    /// </summary>
    public struct NET_MW_GET_WINDOW_INFO
    {
        /// <summary>
        /// /窗口使能状态
        /// the state of window enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// /窗口解码状态
        /// video window state
        /// </summary>
        public EM_A_NET_VIDEOCHANNEL_STATE emState;
        /// <summary>
        /// /网络流量(单位：kbps)
        /// net flow(unit: kbps)
        /// </summary>
        public uint unNetflow;
        /// <summary>
        /// /码率(单位：kbps)
        /// bit rate(unit: kbps)
        /// </summary>
        public uint unBitrate;
        /// <summary>
        /// /帧率
        /// frame
        /// </summary>
        public uint nFrame;
        /// <summary>
        /// /分辨率
        /// resolution
        /// </summary>
        public EM_A_CAPTURE_SIZE emResolution;
        /// <summary>
        /// /实时统计的帧率
        /// realTime frame
        /// </summary>
        public uint unRealTimeFrame;
        /// <summary>
        /// /码流的编码方式
        /// compression
        /// </summary>
        public EM_NET_ENCODE_COMPRESSION emCompression;
        /// <summary>
        /// /分辨率细分
        /// resolution.subdivide to specific resolution
        /// </summary>
        public EM_CAPTURE_SIZE_EX emResolutionEx;
        /// <summary>
        /// /预留字节
        /// reserve
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 获取屏幕窗口解码信息CLIENT_MonitorWallGetWindowInfo出参
    /// get monitorwall window info output parameter
    /// </summary>
    public struct NET_OUT_MW_GET_WINDOW_INFO
    {
        /// <summary>
        /// /用户使用该结构体时,dwSize 需赋值为 sizeof(NET_OUT_MW_GET_WINDOW_INFO)
        /// dwSize must be initialized,dwSize is sizeof(NET_OUT_MW_GET_WINDOW_INFO)
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// /用户需要获取的解码通道信息个数,从0开始获取,用户指定
        /// the video info num which user need to gain,gain from 0 by user
        /// </summary>
        public int nVideoInfoNum;
        /// <summary>
        /// /解码通道信息列表,用户申请空间,用户申请列表个数和nVideoInfoNum一致,申请内存大小为sizeof(NET_MW_GET_WINDOW_INFO)*nVideoInfoNum
        /// the list of net video channel info,user malloc memory,the list num is in keeping with nVideoInfoNum, memory size is sizeof(NET_MW_GET_WINDOW_INFO)*nVideoInfoNum
        /// </summary>
        public IntPtr pNetVideoChannelInfo;
        /// <summary>
        /// /返回实际获取到的解码通道信息个数,SDK返回
        /// return video info num actually by SDK
        /// </summary>
        public int nRetVideoInfoNum;
    }

    /// <summary>
    /// 视频压缩格式
    /// Video compression format
    /// </summary>
    public enum EM_A_CFG_VIDEO_COMPRESSION
    {
        /// <summary>
        /// MPEG4
        /// MPEG4
        /// </summary>
        VIDEO_FORMAT_MPEG4,
        /// <summary>
        /// MS-MPEG4
        /// MS-MPEG4
        /// </summary>
        VIDEO_FORMAT_MS_MPEG4,
        /// <summary>
        /// MPEG2
        /// MPEG2
        /// </summary>
        VIDEO_FORMAT_MPEG2,
        /// <summary>
        /// MPEG1
        /// MPEG1
        /// </summary>
        VIDEO_FORMAT_MPEG1,
        /// <summary>
        /// H.263
        /// H.263
        /// </summary>
        VIDEO_FORMAT_H263,
        /// <summary>
        /// MJPG
        /// MJPG
        /// </summary>
        VIDEO_FORMAT_MJPG,
        /// <summary>
        /// FCC-MPEG4
        /// FCC-MPEG4
        /// </summary>
        VIDEO_FORMAT_FCC_MPEG4,
        /// <summary>
        /// H.264
        /// H.264
        /// </summary>
        VIDEO_FORMAT_H264,
        /// <summary>
        /// H.265
        /// H.265
        /// </summary>
        VIDEO_FORMAT_H265,
        /// <summary>
        /// SVAC
        /// SVAC
        /// </summary>
        VIDEO_FORMAT_SVAC,
    }

    /// <summary>
    /// 码流控制模式
    /// Bit stream control mode
    /// </summary>
    public enum EM_A_CFG_BITRATE_CONTROL
    {
        /// <summary>
        /// 固定码流
        /// Constant bit rate (CBR)
        /// </summary>
        BITRATE_CBR,
        /// <summary>
        /// 可变码流
        /// Variable bit rate (VBR)
        /// </summary>
        BITRATE_VBR,
    }

    /// <summary>
    /// 画质
    /// Image quality
    /// </summary>
    public enum EM_A_CFG_IMAGE_QUALITY
    {
        /// <summary>
        /// 图像质量10%
        /// Image quality 10%
        /// </summary>
        IMAGE_QUALITY_Q10 = 1,
        /// <summary>
        /// 图像质量30%
        /// Image quality 30%
        /// </summary>
        IMAGE_QUALITY_Q30,
        /// <summary>
        /// 图像质量50%
        /// Image quality 50%
        /// </summary>
        IMAGE_QUALITY_Q50,
        /// <summary>
        /// 图像质量60%
        /// Image quality 60%
        /// </summary>
        IMAGE_QUALITY_Q60,
        /// <summary>
        /// 图像质量80%
        /// Image quality 80%
        /// </summary>
        IMAGE_QUALITY_Q80,
        /// <summary>
        /// 图像质量100%
        /// Image quality 100%
        /// </summary>
        IMAGE_QUALITY_Q100,
    }

    /// <summary>
    /// H264 编码级别
    /// H264 Encode Level
    /// </summary>
    public enum EM_A_CFG_H264_PROFILE_RANK
    {
        /// <summary>
        /// 提供I/P帧，仅支持progressive(逐行扫描)和CAVLC
        /// Offer I/P Frame, Only support progressive(Progressive Scan)and CAVLC
        /// </summary>
        PROFILE_BASELINE = 1,
        /// <summary>
        /// 提供I/P/B帧，支持progressiv和interlaced，提供CAVLC或CABAC
        /// Offer I/P/B Frame, Support progressiv and interlaced, Offer CAVLC or CABAC
        /// </summary>
        PROFILE_MAIN,
        /// <summary>
        /// 提供I/P/B/SP/SI帧，仅支持progressive(逐行扫描)和CAVLC
        /// Offer I/P/B/SP/SI Frame, Only support progressive(Progressive Scan)and CAVLC
        /// </summary>
        PROFILE_EXTENDED,
        /// <summary>
        /// 即FRExt，Main_Profile基础上新增：8x8 intra prediction(8x8 帧内预测)
        /// quant(自定义量化), lossless video coding(无损视频编码), 更多的yuv格式
        /// FRExt, Main_Profile Based on the new: 8x8 intra prediction(8x8 Intra-frame Predicdion
        /// Quant(custom quant ), lossless video coding(lossless video encoding), more yuv format
        /// </summary>
        PROFILE_HIGH,
    }

    /// <summary>
    /// 视频格式
    /// Video format
    /// </summary>
    public struct NET_A_CFG_VIDEO_FORMAT
    {
        public byte abCompression;
        public byte abWidth;
        public byte abHeight;
        public byte abBitRateControl;
        public byte abBitRate;
        public byte abFrameRate;
        public byte abIFrameInterval;
        public byte abImageQuality;
        public byte abFrameType;
        /// <summary>
        /// 信息
        /// Information
        /// </summary>
        public byte abProfile;
        /// <summary>
        /// 视频压缩格式
        /// Video compression mode
        /// </summary>
        public EM_A_CFG_VIDEO_COMPRESSION emCompression;
        /// <summary>
        /// 视频宽度
        /// Video width
        /// </summary>
        public int nWidth;
        /// <summary>
        /// 视频高度
        /// Video height
        /// </summary>
        public int nHeight;
        /// <summary>
        /// 码流控制模式
        /// Bit rate control mode
        /// </summary>
        public EM_A_CFG_BITRATE_CONTROL emBitRateControl;
        /// <summary>
        /// 视频码流(kbps)
        /// Video bit rate (kbps)
        /// </summary>
        public int nBitRate;
        /// <summary>
        /// 视频帧率
        /// Frame Rate
        /// </summary>
        public float nFrameRate;
        /// <summary>
        /// I帧间隔(1-100)，比如50表示每49个B帧或P帧，设置一个I帧。
        /// I frame interval(1-100). For example, 50 means there is I frame in each 49 B frame or P frame.
        /// </summary>
        public int nIFrameInterval;
        /// <summary>
        /// 图像质量
        /// Video quality
        /// </summary>
        public EM_A_CFG_IMAGE_QUALITY emImageQuality;
        /// <summary>
        /// 打包模式，0－DHAV，1－"PS"
        /// Sniffer mode,0-DHAV,1-"PS"
        /// </summary>
        public int nFrameType;
        /// <summary>
        /// H.264编码级别
        /// H.264 Encode level
        /// </summary>
        public EM_A_CFG_H264_PROFILE_RANK emProfile;
        /// <summary>
        /// 最大码流单位是kbps
        /// The maximum stream unit is kbps
        /// </summary>
        public int nMaxBitrate;
        /// <summary>
        /// I-frame interval in group of pictures,1-150
        /// 图像组I帧间隔,1-150
        /// </summary>
        public int nAiGOP;
        /// <summary>
        /// SVC-T layer num
        /// SVC-T层数
        /// </summary>
        public int nSVCTLayer;
        /// <summary>
        /// Custom resolution name
        /// 默认分辨率名称
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szCustomResolutionName;
        /// <summary>
        /// Priority,0: Quality first (default), 1: Bitrate first
        /// 编码优先级,0:画质优先(默认),  1:码率优先
        /// </summary>
        public int nPriority;
        /// <summary>
        /// Quality range:6,100
        /// 图像质量取值范围:6,100
        /// </summary>
        public uint nQualityRange;
        /// <summary>
        /// Limit bit rate,in kbps
        /// 码流控制模式ABR下,瞬时码率上限,kbps为单位
        /// </summary>
        public int nLimitBitRate;
        /// <summary>
        /// Virutual I Frame Enable
        /// 码流控制模式ABR下,是否使能虚拟I帧功能
        /// </summary>
        public bool bVirutualIFrameEnable;
        /// <summary>
        /// Encode type,0:General,1:SmartEncode,2:Aicoding
        /// 0表示General,1表示SmartEncode,2表示Aicoding
        /// </summary>
        public int nEncodeType;
        /// <summary>
        /// Quality,size 1-nQualityRange
        /// 图像质量,范围1-nQualityRange
        /// </summary>
        public int nQualityEx;
        /// <summary>
        /// AiGOP exist
        /// nAiGOP字段是否有效
        /// </summary>
        public byte abAiGOP;
        /// <summary>
        /// SVCTLayer exist
        /// nSVCTLayer字段是否有效
        /// </summary>
        public byte abSVCTLayer;
        /// <summary>
        /// Priority exist
        /// nPriority字段是否有效
        /// </summary>
        public byte abPriority;
        /// <summary>
        /// QualityRange exist
        /// nQualityRange字段是否有效
        /// </summary>
        public byte abQualityRange;
        /// <summary>
        /// LimitBitRate exist
        /// nLimitBitRate字段是否有效
        /// </summary>
        public byte abLimitBitRate;
        /// <summary>
        /// VirutualIFrameEnable exist
        /// bVirutualIFrameEnable字段是否有效
        /// </summary>
        public byte abVirutualIFrameEnable;
        /// <summary>
        /// EncodeType exist
        /// nEncodeType字段是否有效
        /// </summary>
        public byte abEncodeType;
        /// <summary>
        /// CustomResolutionName exist
        /// szCustomResolutionName字段是否有效
        /// </summary>
        public byte abCustomResolutionName;
        /// <summary>
        /// Use nQualityEx
        /// 使用QualityEx字段表示图像质量
        /// </summary>
        public bool bUseQualityEx;
        /// <summary>
        /// Reserved
        /// 保留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 音频编码模式
    /// audio coding mode
    /// </summary>
    public enum EM_A_CFG_AUDIO_FORMAT
    {
        /// <summary>
        /// G711a
        /// G711a
        /// </summary>
        AUDIO_FORMAT_G711A,
        /// <summary>
        /// PCM
        /// PCM
        /// </summary>
        AUDIO_FORMAT_PCM,
        /// <summary>
        /// G711u
        /// G711u
        /// </summary>
        AUDIO_FORMAT_G711U,
        /// <summary>
        /// AMR
        /// AMR
        /// </summary>
        AUDIO_FORMAT_AMR,
        /// <summary>
        /// AAC
        /// AAC
        /// </summary>
        AUDIO_FORMAT_AAC,
        /// <summary>
        /// G.726
        /// G.726
        /// </summary>
        AUDIO_FORMAT_G726,
        /// <summary>
        /// MPEG2-Layer2
        /// MPEG2-Layer2
        /// </summary>
        AUDIO_FORMAT_MPEG2_LAYER2,
        /// <summary>
        /// G.729
        /// G.729
        /// </summary>
        AUDIO_FORMAT_G729,
        /// <summary>
        /// G.722.1
        /// G.722.1
        /// </summary>
        AUDIO_FORMAT_G7221,
    }

    /// <summary>
    /// 音频格式
    /// Audio format
    /// </summary>
    public struct NET_A_CFG_AUDIO_ENCODE_FORMAT
    {
        public byte abCompression;
        public byte abDepth;
        public byte abFrequency;
        public byte abMode;
        public byte abFrameType;
        public byte abPacketPeriod;
        public byte abChannels;
        /// <summary>
        /// 信息
        /// Info
        /// </summary>
        public byte abMix;
        /// <summary>
        /// 音频压缩模式
        /// Audio compression mode
        /// </summary>
        public EM_A_CFG_AUDIO_FORMAT emCompression;
        /// <summary>
        /// 音频采样深度
        /// Audio sampling depth
        /// </summary>
        public int nDepth;
        /// <summary>
        /// 音频采样频率
        /// Audio sampling frequency
        /// </summary>
        public int nFrequency;
        /// <summary>
        /// 音频编码模式
        /// Audio encode mode
        /// </summary>
        public int nMode;
        /// <summary>
        /// 音频打包模式, 0-DHAV, 1-PS
        /// 0-DHAV, 1-PS Audio pack mode
        /// </summary>
        public int nFrameType;
        /// <summary>
        /// 音频打包周期, ms
        /// Audio pack period(ms)
        /// </summary>
        public int nPacketPeriod;
        /// <summary>
        /// 视频通道的伴音通道号列表个数
        /// Sound channels list num of video
        /// </summary>
        public int nChannelsNum;
        /// <summary>
        /// 视频通道的伴音通道号列表
        /// Sound channels list of video
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public uint[] arrChannels;
        /// <summary>
        /// 是否同源
        /// Whether homology
        /// </summary>
        public bool bMix;
    }

    /// <summary>
    /// 视频编码参数
    /// Video encode parameter
    /// </summary>
    public struct NET_A_CFG_VIDEOENC_OPT
    {
        public byte abVideoEnable;
        public byte abAudioEnable;
        public byte abSnapEnable;
        /// <summary>
        /// 音频叠加能力
        /// Audio overlay capacity
        /// </summary>
        public byte abAudioAdd;
        /// <summary>
        /// 信息
        /// Information
        /// </summary>
        public byte abAudioFormat;
        /// <summary>
        /// 视频使能
        /// Video enable
        /// </summary>
        public bool bVideoEnable;
        /// <summary>
        /// 视频格式
        /// Video format
        /// </summary>
        public NET_A_CFG_VIDEO_FORMAT stuVideoFormat;
        /// <summary>
        /// 音频使能
        /// Audio enable
        /// </summary>
        public bool bAudioEnable;
        /// <summary>
        /// 定时抓图使能
        /// Schedule snapshot enable
        /// </summary>
        public bool bSnapEnable;
        /// <summary>
        /// 音频叠加使能
        /// Audio add enable
        /// </summary>
        public bool bAudioAddEnable;
        /// <summary>
        /// 音频格式
        /// Audio format
        /// </summary>
        public NET_A_CFG_AUDIO_ENCODE_FORMAT stuAudioFormat;
    }

    /// <summary>
    /// 区域信息
    /// Zone information
    /// </summary>
    public struct NET_A_CFG_RECT
    {
        public int nLeft;
        public int nTop;
        public int nRight;
        public int nBottom;
    }

    /// <summary>
    /// RGBA信息
    /// RGBA information
    /// </summary>
    public struct NET_A_CFG_RGBA
    {
        public int nRed;
        public int nGreen;
        public int nBlue;
        public int nAlpha;
    }

    /// <summary>
    /// 遮挡信息
    /// Privacy mask information
    /// </summary>
    public struct NET_A_CFG_COVER_INFO
    {
        public byte abBlockType;
        public byte abEncodeBlend;
        /// <summary>
        /// 信息
        /// Information
        /// </summary>
        public byte abPreviewBlend;
        /// <summary>
        /// 覆盖的区域坐标
        /// The position (coordinates) of the mask zone
        /// </summary>
        public NET_A_CFG_RECT stuRect;
        /// <summary>
        /// 覆盖的颜色
        /// The mask color
        /// </summary>
        public NET_A_CFG_RGBA stuColor;
        /// <summary>
        /// 覆盖方式；0－黑块，1－马赛克
        /// The mask mode ;0-block,1-Mosaic
        /// </summary>
        public int nBlockType;
        /// <summary>
        /// 编码级遮挡；1－生效，0－不生效
        /// Encode-level privacy mask;1-enable,0-unable
        /// </summary>
        public int nEncodeBlend;
        /// <summary>
        /// 预览遮挡；1－生效，0－不生效
        /// Preview mask;1-enable,0-unable
        /// </summary>
        public int nPreviewBlend;
    }

    /// <summary>
    /// 多区域遮挡配置
    /// Multiple-zone mask configuration
    /// </summary>
    public struct NET_A_CFG_VIDEO_COVER
    {
        /// <summary>
        /// 支持的遮挡块数
        /// The supported privacy mask zone amount
        /// </summary>
        public int nTotalBlocks;
        /// <summary>
        /// 已设置的块数
        /// The zone amount already set
        /// </summary>
        public int nCurBlocks;
        /// <summary>
        /// 覆盖的区域
        /// The mask zone
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_A_CFG_COVER_INFO[] stuCoverBlock;
    }

    /// <summary>
    /// OSD信息
    /// OSD information
    /// </summary>
    public struct NET_A_CFG_OSD_INFO
    {
        /// <summary>
        /// 信息
        /// Information
        /// </summary>
        public byte abShowEnable;
        /// <summary>
        /// 前景颜色
        /// Front color
        /// </summary>
        public NET_A_CFG_RGBA stuFrontColor;
        /// <summary>
        /// 背景颜色
        /// Background color
        /// </summary>
        public NET_A_CFG_RGBA stuBackColor;
        /// <summary>
        /// 矩形区域
        /// Rectangle zone
        /// </summary>
        public NET_A_CFG_RECT stuRect;
        /// <summary>
        /// 显示使能
        /// Display enbale
        /// </summary>
        public bool bShowEnable;
    }

    /// <summary>
    /// 画面颜色属性
    /// Video color property
    /// </summary>
    public struct NET_A_CFG_COLOR_INFO
    {
        /// <summary>
        /// 亮度(0-100)
        /// Brgihtness(0-100)
        /// </summary>
        public int nBrightness;
        /// <summary>
        /// 对比度(0-100)
        /// Contrast(0-100)
        /// </summary>
        public int nContrast;
        /// <summary>
        /// 饱和度(0-100)
        /// Saturation (0-100)
        /// </summary>
        public int nSaturation;
        /// <summary>
        /// 色度(0-100)
        /// Hue (0-100)
        /// </summary>
        public int nHue;
        /// <summary>
        /// 增益(0-100)
        /// Gain(0-100)
        /// </summary>
        public int nGain;
        /// <summary>
        /// 增益使能
        /// Gain enable
        /// </summary>
        public bool bGainEn;
    }

    /// <summary>
    /// 图像通道属性信息
    /// Video channel property information
    /// </summary>
    public struct NET_A_CFG_ENCODE_INFO
    {
        /// <summary>
        /// 通道号(0开始),获取时，该字段有效；设置时，该字段无效
        /// Channel number(Begins with 0)
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// 无效字段
        /// Channel name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szChnName;
        /// <summary>
        /// 主码流，0－普通录像，1-动检录像，2－报警录像
        /// Main stream,0-General record,1-Motion detect,2-alarm record
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_A_CFG_VIDEOENC_OPT[] stuMainStream;
        /// <summary>
        /// 主码流数组中有效的个数
        /// The valid count of MainStream array
        /// </summary>
        public int nValidCountMainStream;
        /// <summary>
        /// 辅码流，0－辅码流1，1－辅码流2，2－辅码流3
        /// Extra stream,0-Extra stream 1,1-Extra stream 2,2-Extra stream 3
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_A_CFG_VIDEOENC_OPT[] stuExtraStream;
        /// <summary>
        /// 辅码流数组中有效的个数
        /// The valid count of ExtraStream array
        /// </summary>
        public int nValidCountExtraStream;
        /// <summary>
        /// 抓图，0－普通抓图，1－动检抓图，2－报警抓图
        /// Snapshot,0-General snapshot,1-Motion detect snapshot,2-alarm snapshot
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_A_CFG_VIDEOENC_OPT[] stuSnapFormat;
        /// <summary>
        /// 抓图数组中有效的个数
        /// The valid count of SnapFormat array
        /// </summary>
        public int nValidCountSnapFormat;
        /// <summary>
        /// 无效字段
        /// The subnet mask of the privacy mask competence. Use the bit to represent. There are local preview, record and network monitor.
        /// </summary>
        public uint dwCoverAbilityMask;
        /// <summary>
        /// 无效字段
        /// The subnet mask of the privacy mask enable.Use the bit to represent. There are local preview, record and network monitor.
        /// </summary>
        public uint dwCoverEnableMask;
        /// <summary>
        /// 无效字段
        /// Privacy mask
        /// </summary>
        public NET_A_CFG_VIDEO_COVER stuVideoCover;
        /// <summary>
        /// 无效字段
        /// Channel title
        /// </summary>
        public NET_A_CFG_OSD_INFO stuChnTitle;
        /// <summary>
        /// 无效字段
        /// Time title
        /// </summary>
        public NET_A_CFG_OSD_INFO stuTimeTitle;
        /// <summary>
        /// 无效字段
        /// Video color
        /// </summary>
        public NET_A_CFG_COLOR_INFO stuVideoColor;
        /// <summary>
        /// 无效字段
        /// Audio format: 0:G711A,1:PCM,2:G711U,3:AMR,4:AAC
        /// </summary>
        public EM_A_CFG_AUDIO_FORMAT emAudioFormat;
        /// <summary>
        /// 协议版本号, 只读,获取时，该字段有效；设置时，该字段无效
        /// Protocol Version No., read only
        /// </summary>
        public int nProtocolVer;
        /// <summary>
        /// 是否使用辅码流扩展
        /// Whether to use auxiliary code stream extension
        /// </summary>
        public bool bIsUseExtraStreamEx;
        /// <summary>
        /// 辅码流扩展，0－辅码流1，1－辅码流2，2－辅码流3，3－辅码流4，4－辅码流5，5－辅码流6，6－辅码流7，7－辅码流8，8－辅码流9，9－辅码流10，10－辅码流11，11－辅码流12
        /// Auxiliary stream extension, 0- Auxiliary stream 1, 1- Auxiliary stream 2, 2- Auxiliary stream 3, 3- Auxiliary stream 4, 4- Auxiliary stream 5, 5- Auxiliary stream 6, 6- Auxiliary stream 7, 7- Auxiliary stream 8, 8- Auxiliary stream 9, 9- Auxiliary stream 10, 10- Auxiliary stream 11, 11- Auxiliary stream 12
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
        public NET_A_CFG_VIDEOENC_OPT[] stuExtraStreamEx;
        /// <summary>
        /// 辅码流扩展数组中有效的个数
        /// The number of valid elements in the auxiliary code stream extension array
        /// </summary>
        public int nValidCountExtraStreamEx;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 120)]
        public string szReserved;
    }

    /// <summary>
    /// 时间段信息
    /// Period information
    /// </summary>
    public struct NET_A_CFG_TIME_SECTION
    {
        /// <summary>
        /// 录像掩码，按位分别为Bit0-动态检测录像、Bit1-报警录像、Bit2-定时录像、Bit3-动检和报警同时触发时才录像、Bit4-卡号录像、Bit5-智能录像、Bit6-POS录像、Bit7~Bit15保留
        /// Record subnet mask. Bit0-motion detection recording, Bit1-alarm recording, Bit2-timing recording, Bit3-motion detection and alarm triggered simultaneously, Bit4-card number recording, Bit5-smart recording, Bit6-POS recording, Bit7~Bit15 reserved
        /// </summary>
        public uint dwRecordMask;
        public int nBeginHour;
        public int nBeginMin;
        public int nBeginSec;
        public int nEndHour;
        public int nEndMin;
        public int nEndSec;
    }

    /// <summary>
    /// 假期录像计划
    /// video holiday plan
    /// </summary>
    public struct NET_A_CFG_HOLIDAY_SCHEDULE
    {
        public bool bEnable;
        public int nChannel;
        /// <summary>
        /// 每个月的假期安排, 每个元素表示一个月,
        /// 掩码从低到高依次表示每月1-28/29/30/31号是否为假期
        /// 0:不是假期, 1:是假期
        /// every month of the holiday arrangement,each element represents a month
        /// mask from low to high according to each month 1-28/29/30/31 if there is holiday
        /// 0:haven't holiday, 1: have holiday
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
        public uint[] dwMonthSchedule;
        /// <summary>
        /// 录像时间表
        /// video schedule
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public NET_A_CFG_TIME_SECTION[] stuTimeSection;
    }

    /// <summary>
    /// CLIENT_AccessControlCaptureNewCard 输入结构体
    /// input param of CLIENT_AccessControlCaptureNewCard
    /// </summary>
    public struct NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 授权时间
        /// Authorization time
        /// </summary>
        public uint nAllowTime;
    }

    /// <summary>
    /// CLIENT_AccessControlCaptureNewCard 输出结构体
    /// output param of CLIENT_AccessControlCaptureNewCard
    /// </summary>
    public struct NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 比对报警规则
    /// alarm rule type
    /// </summary>
    public enum EM_ALARM_RULE_TYPE
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_ALARM_RULE_UNKNOWN = -1,
        /// <summary>
        /// / 不报警
        /// no alarm
        /// </summary>
        EM_ALARM_RULE_NONE,
        /// <summary>
        /// / 比对成功报警
        /// alarm only after success
        /// </summary>
        EM_ALARM_RULE_SUCCESS,
        /// <summary>
        /// / 比对失败报警
        /// alarm only after fail
        /// </summary>
        EM_ALARM_RULE_FAIL,
    }

    /// <summary>
    /// 联动报警输出通道信息
    /// alarm ou channel info
    /// </summary>
    public struct NET_ALARM_OUT_CHANNEL_INFO
    {
        /// <summary>
        /// / 比对报警规则
        /// alarm rule info
        /// </summary>
        public EM_ALARM_RULE_TYPE emAlarmRuleType;
        /// <summary>
        /// / 报警输出延时, 单位秒, 范围1-300
        /// delay of alarm output, unit:second, value range:1-300
        /// </summary>
        public int nAlarmOutLatch;
        /// <summary>
        /// / 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 目标识别联动报警通道信息
    /// linkage alarm channel info for Target recognition
    /// </summary>
    public struct NET_FACE_RECOGNITION_ALARM_CHANNEL
    {
        /// <summary>
        /// / 目标库ID
        /// group ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupID;
        /// <summary>
        /// / 目标库名称
        /// group name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szGroupName;
        /// <summary>
        /// / 目标识别事件是否联动报警输出
        /// whether Target recognition events link to alarm output
        /// </summary>
        public bool bAlarmOutEnable;
        /// <summary>
        /// / 联动报警输出通道个数
        /// count of alarm output channel
        /// </summary>
        public uint nAlarmChannelNum;
        /// <summary>
        /// / 联动报警输出通道信息
        /// info of linkage alarm output channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_ALARM_OUT_CHANNEL_INFO[] stuAlarmChannel;
        /// <summary>
        /// / 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 目标识别联动报警通道配置, 对应枚举 NET_EM_CFG_FACE_RECOGNITION_ALARM
    /// config of linkage alarm channel for Target recognition, corresponding to NET_EM_CFG_FACE_RECOGNITION_ALARM
    /// </summary>
    public struct NET_FACE_RECOGNITION_ALARM_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 目标识别联动报警通道个数
        /// count of linkage alarm channel for Target recognition
        /// </summary>
        public uint nFaceReconChannelNum;
        /// <summary>
        /// / 目标识别联动报警通道信息
        /// info of linkage alarm channel for Target recognition
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_FACE_RECOGNITION_ALARM_CHANNEL[] stuFaceReconChannel;
    }

    /// <summary>
    /// CLIENT_SetGroupInfoForChannel接口输入参数
    /// CLIENT_SetGroupInfoForChannel port input parameter
    /// </summary>
    public struct NET_IN_SET_GROUPINFO_FOR_CHANNEL
    {
        public uint dwSize;
        /// <summary>
        /// / 通道号
        /// channel no.
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 人员组数
        /// staff group
        /// </summary>
        public int nGroupIdNum;
        /// <summary>
        /// / 人员组ID, 填[""]表示视频通道不布控目标组，此时目标识别退化为目标检测
        /// staff group ID, [""] means that the video channels does not Target the surveillance group, Target recognition for Target detection degradation
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128 * 64)]
        public string szGroupId;
        /// <summary>
        /// / 相似度阈值个数, 与人员组数相同
        /// the number of similary, same as nGroupIdNum
        /// </summary>
        public int nSimilaryNum;
        /// <summary>
        /// / 每个目标组的相似度阈值, 0-100
        /// the similary value, 0-100
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public int[] nSimilary;
    }

    /// <summary>
    /// CLIENT_SetGroupInfoForChannel接口输出参数
    /// CLIENT_SetGroupInfoForChannel port output parameter
    /// </summary>
    public struct NET_OUT_SET_GROUPINFO_FOR_CHANNEL
    {
        public uint dwSize;
    }

    /// <summary>
    /// 开始模式回放 对应EXTPTZ_START_PATTERN_REPLAY枚举
    /// Start Mode Playback, Corresponding to the EXTPTZ_START_PATTERN_REPLAY enumeration
    /// </summary>
    public struct NET_IN_START_PATTERN_REPLAY_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 模式编号
        /// index
        /// </summary>
        public int nIndex;
    }

    /// <summary>
    /// 交通车辆信息扩展
    /// Expansion of Traffic Vehicle Information
    /// </summary>
    public struct NET_TRAFFICCAR_INFO_EXTERN
    {
        /// <summary>
        /// / 记录集装箱编号个数
        /// Number of container numbers
        /// </summary>
        public uint nContainerNumber;
        /// <summary>
        /// / 记录集装箱编号的文本内容数量
        /// Number of text content of container number
        /// </summary>
        public int nContainerTextNum;
        /// <summary>
        /// / 记录集装箱编号的文本内容
        /// Text content of container number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 64)]
        public string szContainerText;
        /// <summary>
        /// / dAverageSpeed字段是否有效
        /// Is the dAverageSpeed field valid
        /// </summary>
        public bool bAverageSpeed;
        /// <summary>
        /// / dSpaceOcpRatio字段是否有效
        /// Is the dSpaceOcpRatio field valid
        /// </summary>
        public bool bSpaceOcpRatio;
        /// <summary>
        /// / 平均车速，单位km/h -1表示无车通过，0表示拥堵
        /// Average speed, in km/h -1 indicates no traffic passing, and 0 indicates congestion
        /// </summary>
        public double dAverageSpeed;
        /// <summary>
        /// / 空间占有率，即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离
        /// Space occupancy rate, which is the sum of vehicle lengths measured as a percentage divided by the average distance traveled by vehicles during time intervals
        /// </summary>
        public double dSpaceOcpRatio;
        /// <summary>
        /// / 表示集装箱的类型，具体取值以算法输出为准
        /// Type of container number
        /// </summary>
        public uint nContainerType;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2020)]
        public string szReserved;
    }

    /// <summary>
    /// 热成像测温点报警结果值类型
    /// thermal Temperature Monitoring spot alarm result value type
    /// </summary>
    public enum EM_A_NET_RADIOMETRY_RESULT
    {
        NET_RADIOMETRY_RESULT_UNKNOWN,
        /// <summary>
        /// / 具体值
        /// concrete value
        /// </summary>
        NET_RADIOMETRY_RESULT_VAL,
        /// <summary>
        /// / 最大
        /// max
        /// </summary>
        NET_RADIOMETRY_RESULT_MAX,
        /// <summary>
        /// / 最小
        /// min
        /// </summary>
        NET_RADIOMETRY_RESULT_MIN,
        /// <summary>
        /// / 平均
        /// average
        /// </summary>
        NET_RADIOMETRY_RESULT_AVR,
        /// <summary>
        /// / 标准
        /// standard
        /// </summary>
        NET_RADIOMETRY_RESULT_STD,
        /// <summary>
        /// / 中间
        /// middle
        /// </summary>
        NET_RADIOMETRY_RESULT_MID,
        /// <summary>
        /// / ISO
        /// ISO
        /// </summary>
        NET_RADIOMETRY_RESULT_ISO,
        /// <summary>
        /// / 温差
        /// difference
        /// </summary>
        NET_RADIOMETRY_RESULT_DIFF,
        /// <summary>
        /// / 斜率
        /// slope
        /// </summary>
        NET_RADIOMETRY_RESULT_SLOPE,
    }

    /// <summary>
    /// 热成像测温点报警条件
    /// thermal Temperature Monitoring spot alarm condition
    /// </summary>
    public enum EM_A_NET_RADIOMETRY_ALARMCONTION
    {
        NET_RADIOMETRY_ALARMCONTION_UNKNOWN,
        /// <summary>
        /// / 小于
        /// below
        /// </summary>
        NET_RADIOMETRY_ALARMCONTION_BELOW,
        /// <summary>
        /// / 等于
        /// equal
        /// </summary>
        NET_RADIOMETRY_ALARMCONTION_MATCH,
        /// <summary>
        /// / 大于
        /// above
        /// </summary>
        NET_RADIOMETRY_ALARMCONTION_ABOVE,
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_HEAT_IMAGING_TEMPER_INFO对应的数据描述信息
    /// event type EVENT_IVS_HEAT_IMAGING_TEMPER_INFO corresponding to data block description info
    /// </summary>
    public struct NET_A_DEV_EVENT_HEAT_IMAGING_TEMPER_INFO_DETAIL
    {
        /// <summary>
        /// / 本地通道号
        /// Local channelId
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲 1:开始 2:停止
        /// Event action, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件发生时间
        /// Event time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 测温报警编号，从1开始加的（每发生一次事件+1），根据这个编号来判断是否丢失事件
        /// Temperature alarm number, added from 1
        /// </summary>
        public int nSequenceNum;
        /// <summary>
        /// / 报警项编号
        /// alarm number
        /// </summary>
        public int nAlarmId;
        /// <summary>
        /// / 温度异常点名称 从测温规则配置项中选择
        /// temperature abnormal spot name, select from the Temperature Monitoring rule config
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 报警结果值 fTemperatureValue 的类型
        /// alarm result value nValue type
        /// </summary>
        public EM_A_NET_RADIOMETRY_RESULT emResult;
        /// <summary>
        /// / 报警条件
        /// alarm condition
        /// </summary>
        public EM_A_NET_RADIOMETRY_ALARMCONTION emAlarmContion;
        /// <summary>
        /// / 温度单位(当前配置的温度单位)
        /// temperature unit (currently configured temperature unit)
        /// </summary>
        public EM_A_NET_TEMPERATURE_UNIT emTemperatureUnit;
        /// <summary>
        /// / 预置点
        /// preset
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// / 通道号
        /// channel number
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// / 报警坐标, 其类型可以是点，线或多边形。替换stCoordinate字段
        /// alarm coordinates, the type is spot or line or polygon. replace stCoordinate field
        /// </summary>
        public NET_POLY_POINTS stuAlarmCoordinates;
        /// <summary>
        /// / 报警温度值
        /// alarm temperature value
        /// </summary>
        public float fTemperatureValue;
        /// <summary>
        /// / 报警阈值温度/温度斜率
        /// alarm threshold temperature/temperature slope
        /// </summary>
        public float fThreshold;
        /// <summary>
        /// / 温度斜率周期
        /// temperature slope period
        /// </summary>
        public int nSlopePeriod;
        /// <summary>
        /// / 温度斜率突变值
        /// abrupt change in temperature slope
        /// </summary>
        public float fSlopeMutation;
        /// <summary>
        /// / 报警最高温度值
        /// Alarm maximum temperature value
        /// </summary>
        public float fMaxValue;
        /// <summary>
        /// / 报警最低温度值
        /// Alarm minimum temperature value
        /// </summary>
        public float fMinValue;
        /// <summary>
        /// / 最高温坐标点，相对坐标系，范围[0,8191]
        /// Maximum temperature coordinate point, relative coordinate system, range [0,8191]
        /// </summary>
        public NET_POINT_EX2 stHotPoint;
        /// <summary>
        /// / 最低温坐标点，相对坐标系，范围[0,8191]
        /// Lowest temperature coordinate point, relative coordinate system, range [0,8191]
        /// </summary>
        public NET_POINT_EX2 stColdPoint;
        /// <summary>
        /// / 设备本地时间
        /// Device local time
        /// </summary>
        public NET_TIME stuLocaleTime;
        /// <summary>
        /// / 预留字节
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string reserved;
    }

    /// <summary>
    /// 二维空间点
    /// 2 dimension point
    /// </summary>
    public struct NET_POINT_EX2
    {
        public int nx;
        public int ny;
    }

    /// <summary>
    /// 标定信息
    /// Calibration information
    /// </summary>
    public struct NET_START_AUTO_CALIBRATE_INFO
    {
        /// <summary>
        /// / 预置点编号，选择标定的预置点
        /// / Pre set point number, select the calibrated pre set point
        /// </summary>
        public int nPresetID;
        /// <summary>
        /// / 标定组号，选择当前需要标定的组
        /// / Calibration group number, select the current group that needs to be calibrated
        /// </summary>
        public int nGroupIndex;
        /// <summary>
        /// / 预留字节
        /// / Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReversed;
    }

    /// <summary>
    /// CLIENT_StartAutoCalibrate 入参
    /// CLIENT_StartAutoCalibrate input parameter
    /// </summary>
    public struct NET_IN_START_AUTO_CALIBRATE
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 当前生效的标定模式，默认是自动标定, "Auto": 自动标定 "Manual": 手动标定
        /// / The current effective calibration mode defaults to automatic calibration, "Auto": Automatic calibration "Manual": Manual calibration
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szMode;
        /// <summary>
        /// / 标定信息
        /// / Calibration information
        /// </summary>
        public NET_START_AUTO_CALIBRATE_INFO stuCalibrateInfo;
    }

    /// <summary>
    /// CLIENT_StartAutoCalibrate 出参
    /// CLIENT_StartAutoCalibrate output parameter
    /// </summary>
    public struct NET_OUT_START_AUTO_CALIBRATE
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 标定状态
    /// Calibration status
    /// </summary>
    public enum EM_CALIBRATE_STATUS
    {
        /// <summary>
        /// / 未知
        /// / unknown
        /// </summary>
        EM_CALIBRATE_STATUS_UNKNOW,
        /// <summary>
        /// / 开始
        /// / start
        /// </summary>
        EM_CALIBRATE_STATUS_START,
        /// <summary>
        /// / 进行中
        /// / doing
        /// </summary>
        EM_CALIBRATE_STATUS_DOING,
        /// <summary>
        /// / 正常结束
        /// / end
        /// </summary>
        EM_CALIBRATE_STATUS_END,
        /// <summary>
        /// / 场景数异常，标定有效的场景数，未达到最小场景数
        /// / Abnormal number of scenes, valid number of calibrated scenes, not reaching the minimum number of scenes
        /// </summary>
        EM_CALIBRATE_STATUS_LACK_SCENE,
    }

    /// <summary>
    /// 标定状态信息
    /// Calibration status information
    /// </summary>
    public struct NET_NOTIFY_CALIBRATE_STATUS_INFO
    {
        /// <summary>
        /// / 标定模式
        /// / Calibration mode
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szMode;
        /// <summary>
        /// / 标定状态
        /// / Calibration status
        /// </summary>
        public EM_CALIBRATE_STATUS emState;
        /// <summary>
        /// / 标定进度, 百分比, 如果状态是"Doing", Progress表示标定的具体进度
        /// / Calibration progress, percentage, if the status is "Doing", Progress represents the specific progress of calibration
        /// </summary>
        public uint nProgress;
        /// <summary>
        /// / 自动标定失败的组号, 标定结束时携带此信息
        /// / Group number for automatic calibration failure, carry this information when calibration is completed
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public uint[] nFailedGroups;
        /// <summary>
        /// / 自动标定失败组号数组有效个数
        /// / Automatic calibration failed, effective number of group number arrays
        /// </summary>
        public uint nFailedGroupsNum;
        /// <summary>
        /// / 主从跟踪组号，从0开始
        /// / Master slave tracking group number, starting from 0
        /// </summary>
        public uint nGroup;
        /// <summary>
        /// / 预留字节
        /// / Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_AttachCalibrateStatus 接口入参
    /// CLIENT_AttachCalibrateStatus Interface input parameter
    /// </summary>
    public struct NET_IN_ATTACH_CALIBRATE_STATUS
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 主从跟踪组号，从0开始
        /// / Master slave tracking group number, starting from 0
        /// </summary>
        public uint nGroup;
        /// <summary>
        /// / 是否订阅所有组
        /// / Do you want to subscribe to all groups
        /// </summary>
        public bool bGroupAll;
        /// <summary>
        /// / 预留字节
        /// / Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved;
        /// <summary>
        /// / 回调函数
        /// / Callback function
        /// </summary>
        public fNotifyCalibrateStatus cbNotifyCalibrateStatus;
        /// <summary>
        /// / 用户自定义参数
        /// / User defined parameters
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// CLIENT_AttachCalibrateStatus 接口出参
    /// CLIENT_AttachCalibrateStatus Interface output parameters
    /// </summary>
    public struct NET_OUT_ATTACH_CALIBRATE_STATUS
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_DetachCalibrateStatus 接口入参
    /// CLIENT_DetachCalibrateStatus Interface input parameter
    /// </summary>
    public struct NET_IN_DETACH_CALIBRATE_STATUS
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 主从跟踪组号，从0开始
        /// / Master slave tracking group number, starting from 0
        /// </summary>
        public uint nGroup;
        /// <summary>
        /// / 是否订阅所有组
        /// / Do you want to subscribe to all groups
        /// </summary>
        public bool bGroupAll;
    }

    /// <summary>
    /// CLIENT_DetachCalibrateStatus 接口出参
    /// CLIENT_DetachCalibrateStatus Interface output parameters
    /// </summary>
    public struct NET_OUT_DETACH_CALIBRATE_STATUS
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_OBJECT_PLACEMENT_DETECTION(物品放置检测事件) 对应数据
    /// Event type EVENT_IVS_OBJECT_PLACEMENT_DETECTION (item placement detection event) corresponding data
    /// </summary>
    public struct NET_A_DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO
    {
        /// <summary>
        /// / 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 通道号
        /// Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲
        /// 0: pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 事件发生的时间
        /// Time of event
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// / 事件时间毫秒数
        /// Event time milliseconds
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// / 事件编号，用来唯一标志一个事件
        /// Event number, used to uniquely identify an event
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 智能事件所属大类
        /// Categories of Smart Events
        /// </summary>
        public EM_CLASS_TYPE emClassType;
        /// <summary>
        /// / 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// Snapshot flag (bitwise), see NET_RESERVED_COMMON for details
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// / 规则编号,用于标示哪个规则触发的事件，缺省时默认为0
        /// Rule number, used to indicate which rule triggered the event, by default it is 0 by default
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// / 预录时长, 单位秒
        /// Pre-recording time
        /// </summary>
        public uint nPreRecord;
        /// <summary>
        /// / 物体信息数据
        /// Object information data
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// / 广角图
        /// Wide angle diagram
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// / 检测目标物体的个数
        /// Number of detected target objects
        /// </summary>
        public int nObjectCount;
        /// <summary>
        /// / 表示检测到的物体信息 有Objects, 以Objects为准，无Objects, 以Object为准，为兼容老的客户端，有Objects的，Object也要填数据
        /// Indicates the detected object information.have Objects, is Objects,no Objects, is Object, In order to be compatible with old clients, if there are objects, the object also needs to fill in data
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_A_MSG_OBJECT_EX2[] stuObjects;
        /// <summary>
        /// / 图片信息数组， 对应 NET_IMAGE_INFO_EX2
        /// Image information array, corresponding to NET_IMAGE_INFO_EX2
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// / 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 保留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1012)]
        public string Reserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_MOTOR_STRICTLY_PROHIBIT_MANNED (违法载人事件)对应的数据块描述信息
    /// The description of the data block corresponding to the event type EVENT_IVS_TRAFFIC_MOTOR_STRICTLY_PROHIBIT_MANNED
    /// </summary>
    public struct NET_A_DEV_EVENT_TRAFFIC_MOTOR_STRICTLY_PROHIBIT_MANNED_INFO
    {
        /// <summary>
        /// / 通道号
        /// Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲
        /// 0: pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// Timestamp (unit is milliseconds)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 事件发生的时间
        /// Time when the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / nGroupID事件组ID,同一物体抓拍过程内nGroupID相同
        /// Event Group ID
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// / nCountInGroup一个事件组内的抓拍张数
        /// The count of snap in a event group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// / IndexInGroup一个事件组内的抓拍序号
        /// The index of snap in a event group
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// / 车牌信息
        /// The information of plate
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// / 车身信息
        /// The information of vehicle
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// / 对应车道号
        /// Lane ID
        /// </summary>
        public int nLane;
        /// <summary>
        /// / 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
        /// Snap sequence,like 3,2,1. 1 means snap end,0 means error
        /// </summary>
        public int nSequence;
        /// <summary>
        /// / 载人数
        /// The number of the manned Human
        /// </summary>
        public int nHumanNum;
        /// <summary>
        /// / 交通车辆信息
        /// The information of Traffic car
        /// </summary>
        public NET_DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;
        /// <summary>
        /// / 公共信息
        /// The information of Common
        /// </summary>
        public NET_EVENT_COMM_INFO stuCommInfo;
        /// <summary>
        /// / 车速，单位km/h
        /// Vehicle speed(Unit: km / h)
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// / 保留字节,留待扩展
        /// Reserved bytes, reserved for expansion
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 获取窗口轮巡状态输入参数, 对应NET_SPLIT_OPERATE_GET_TOUR_STATUS
    /// Get window tour status input parameter, corresponding to NET_SPLIT_OPERATE_GET_TOUR_STATUS
    /// </summary>
    public struct NET_IN_SPLIT_GET_TOUR_STATUS
    {
        public uint dwSize;
        /// <summary>
        /// / 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效
        /// output channel no. or cubeless video wall virtual channel no., pszCompositeID is NULL is valid
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 融合屏ID
        /// cubeless video wall ID
        /// </summary>
        public IntPtr pszCompositeID;
        /// <summary>
        /// / 窗口号, -1表示所有窗口
        /// window no., -1 means all window
        /// </summary>
        public int nWindow;
    }

    /// <summary>
    /// 轮巡状态
    /// tour status
    /// </summary>
    public enum EM_NET_TOUR_STATUS
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        NET_TOUR_UNKNOWN,
        /// <summary>
        /// / 轮巡中
        /// touring
        /// </summary>
        NET_TOUR_START,
        /// <summary>
        /// / 轮巡停止
        /// tour stop
        /// </summary>
        NET_TOUR_STOP,
    }

    /// <summary>
    /// 窗口轮巡状态信息
    /// window tour status info
    /// </summary>
    public struct NET_WINDOW_TOUR_STATUS_INFO
    {
        public uint dwSize;
        /// <summary>
        /// / 窗口号
        /// window no.
        /// </summary>
        public int nWindow;
        /// <summary>
        /// / 状态
        /// status
        /// </summary>
        public EM_NET_TOUR_STATUS emStatus;
    }

    /// <summary>
    /// 获取窗口轮巡状态输出参数, 对应NET_SPLIT_OPERATE_GET_TOUR_STATUS
    /// Get window tour status output parameter, corresponding to NET_SPLIT_OPERATE_GET_TOUR_STATUS
    /// </summary>
    public struct NET_OUT_SPLIT_GET_TOUR_STATUS
    {
        public uint dwSize;
        /// <summary>
        /// / 状态信息指针, 用户分配内存. 查询窗口号为-1时表示多个窗口的信息数组.
        /// status info indicator, user allocation memory. search window no. is -1 means multi-window info group.
        /// </summary>
        public IntPtr pstuStatus;
        /// <summary>
        /// / 状态信息最大数量, 用户输入
        /// status info max quantity, user input
        /// </summary>
        public int nMaxStatusCount;
        /// <summary>
        /// / 状态信息实际数量, 查询得到
        /// status info actual quantity, search to get
        /// </summary>
        public int nRetStatusCount;
    }

    /// <summary>
    /// CLIENT_SetSplitWindowRect输入参数(设置窗口位置)
    /// CLIENT_SetSplitWindowRect's interface input param(setting the window position)
    /// </summary>
    public struct NET_IN_SPLIT_SET_RECT
    {
        public uint dwSize;
        /// <summary>
        /// / 通道号(屏号)
        /// channel ID
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 窗口序号
        /// window order
        /// </summary>
        public uint nWindowID;
        /// <summary>
        /// / 窗口位置, 0~8191
        /// window position, range: [0,8191]
        /// </summary>
        public NET_A_RECT_EX stuRect;
        /// <summary>
        /// / 坐标是否满足直通条件, 直通是指拼接屏方式下,此窗口区域正好为物理屏区域
        /// coordinate whether meet the confitions
        /// </summary>
        public bool bDirectable;
    }

    /// <summary>
    /// CLIENT_SetSplitWindowRect接口输出参数(设置窗口位置)
    /// CLIENT_SetSplitWindowRect's interface output param(setting the window position)
    /// </summary>
    public struct NET_OUT_SPLIT_SET_RECT
    {
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_GetTemporaryToken 接口入参
    /// CLIENT_GetTemporaryToken input param
    /// </summary>
    public struct NET_IN_GET_TEMPORARY_TOKEN
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 请求token的客户端IP. 可为空("")
        /// The client IP of the request token. Can be empty ("")
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szclientIP;
        /// <summary>
        /// / token有效时间, 单位:秒, 范围5-90s
        /// Token valid time, unit: second, range 5-90s
        /// </summary>
        public int nkeepAliveTime;
        /// <summary>
        /// / 获取级联模式Token
        /// Get remote mode Token
        /// </summary>
        public bool bRemoteMode;
        /// <summary>
        /// / 级联设备通道号,从0开始，当bRemoteMode为TRUE时有效
        /// Remote device channel,Start at 0, valid when bRemoteMode is TRUE
        /// </summary>
        public int nChannelID;
    }

    /// <summary>
    /// 临时用户账号信息
    /// Temporary User Information
    /// </summary>
    public struct NET_TEMP_USER_INFO
    {
        /// <summary>
        /// / 生成新的临时用户账号, 与Token绑定使用
        /// Generate a new temporary user account and bind it with Token
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUsername;
        /// <summary>
        /// / 获取临时token, 长度为64
        /// Temporary token, the length is 64
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szToken;
        /// <summary>
        /// / 保留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetTemporaryToken 接口出参
    /// CLIENT_GetTemporaryToken output param
    /// </summary>
    public struct NET_OUT_GET_TEMPORARY_TOKEN
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 临时用户账号信息
        /// Temporary User Information
        /// </summary>
        public NET_TEMP_USER_INFO stuTempUserInfo;
    }

    /// <summary>
    /// CLIENT_GetSubBusinessCaps 接口输入参数
    /// Input param of CLIENT_GetSubBusinessCaps
    /// </summary>
    public struct NET_IN_GET_SUBBIZ_CAPS
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_GetSubBusinessCaps 接口输出参数
    /// Output param of CLIENT_GetSubBusinessCaps
    /// </summary>
    public struct NET_OUT_GET_SUBBIZ_CAPS
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 子(分压)业务能力掩码, 0表示不支持分压, bit0:实时流 bit1:回放流 bit2:图片流, bit3:按文件下载, bit4:私有透传隧道
        /// Sub (partial voltage) service capability mask, 0 means partial voltage is not supported, bit0: real-time stream Bit1: playback stream bit2: picture stream, bit3: Download by file, bit4:private tunnel
        /// </summary>
        public int nBusinessDivision;
    }

    /// <summary>
    /// 子连接连接方式
    /// Type of sub link
    /// </summary>
    public enum EM_SUBLINK_TYPE
    {
        /// <summary>
        /// / 直连方式
        /// Passive
        /// </summary>
        EM_SUBLINK_TYPE_PASSIVE,
        /// <summary>
        /// / 主动注册方式
        /// Port
        /// </summary>
        EM_SUBLINK_TYPE_PORT,
    }

    /// <summary>
    /// 设备网络信息
    /// Network info of device
    /// </summary>
    public struct NET_DEV_NETWORK_INFO
    {
        /// <summary>
        /// / 设备IP
        /// Device IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDevIP;
        /// <summary>
        /// / 设备端口号
        /// Device port
        /// </summary>
        public uint nDevPort;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 516)]
        public string szReserved;
    }

    /// <summary>
    /// 子连接连接业务模式
    /// Sub connection business model
    /// </summary>
    public enum EM_SUBLINK_MODE
    {
        /// <summary>
        /// /通用模式，默认值
        /// General mode, default
        /// </summary>
        EM_SUBLINK_MODE_NORMAL = 0,
        /// <summary>
        /// /低功耗模式
        /// Low power mode
        /// </summary>
        EM_SUBLINK_MODE_LOWPOWER = 1,
    }

    /// <summary>
    /// CLIENT_CreateSubBusinessModule 接口输入参数
    /// Input param of CLIENT_CreateSubBusinessModule
    /// </summary>
    public struct NET_IN_CREAT_SUB_BUSINESS_MDL_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 连接方式
        /// Link type
        /// </summary>
        public EM_SUBLINK_TYPE emLinkType;
        /// <summary>
        /// / bsid
        /// bsid
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szBSID;
        /// <summary>
        /// / 设备网络信息, emLinkType 为 EM_SUBLINK_TYPE_PASSIVE(直连)方式时有效
        /// Network info of device, it is effective when the emLinkType is EM_SUBLINK_TYPE_PASSIVE
        /// </summary>
        public NET_DEV_NETWORK_INFO stuDevNetInfo;
        /// <summary>
        /// / 连接模式
        /// Connection mode
        /// </summary>
        public EM_SUBLINK_MODE emLinkMode;
        /// <summary>
        /// / Access Key
        /// Access Key
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAK;
        /// <summary>
        /// / Secret Access Key
        /// Secret Access Key
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSK;
        /// <summary>
        /// / 哈希算法，目前可填写 MD5
        /// Hash algorithm, e.g. MD5
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szHash;
    }

    /// <summary>
    /// CLIENT_CreateSubBusinessModule 接口输出参数
    /// Output param CLIENT_CreateSubBusinessModule
    /// </summary>
    public struct NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 本地服务网络信息
    /// Network info of local server
    /// </summary>
    public struct NET_LOCAL_SERVER_NET_INFO
    {
        /// <summary>
        /// / 本地服务IP
        /// Local server IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szLocalIp;
        /// <summary>
        /// / 本地服务端口
        /// Local server Port
        /// </summary>
        public uint nLocalPort;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 516)]
        public string szReserved;
    }

    /// <summary>
    /// 子连接状态
    /// Sublink state
    /// </summary>
    public enum EM_SUBLINK_STATE
    {
        /// <summary>
        /// / 未知
        /// Unknown
        /// </summary>
        EM_SUBLINK_STATE_UNKNWON,
        /// <summary>
        /// / 已连接
        /// Connect
        /// </summary>
        EM_SUBLINK_STATE_CONNECT,
        /// <summary>
        /// / 已断开
        /// Disconnect
        /// </summary>
        EM_SUBLINK_STATE_DISCONNECT,
        /// <summary>
        /// / BSID校验失败, 子连接创建失败
        /// Bsid verification failed, sub connection creation failed
        /// </summary>
        EM_SUBLINK_STATE_BSID_ERROR,
    }

    /// <summary>
    /// 子链接监听服务回调信息
    /// Callback info of sub link server
    /// </summary>
    public struct NET_SUBLINK_SERVER_CALLBACK
    {
        /// <summary>
        /// / 子连接状态
        /// Sub link state
        /// </summary>
        public EM_SUBLINK_STATE emSubLinkState;
        /// <summary>
        /// / 设备网络信息
        /// Network info of device
        /// </summary>
        public NET_DEV_NETWORK_INFO stuDevNetInfo;
        /// <summary>
        /// / 用户数据
        /// User data
        /// </summary>
        public IntPtr dwUserData;
    }

    /// <summary>
    /// CLIENT_StartSubLinkListenServer 接口输入参数
    /// Input param of CLIENT_StartSubLinkListenServer
    /// </summary>
    public struct NET_IN_START_SUBLINK_LISTEN_SERVER
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 本地服务信息
        /// Local server info
        /// </summary>
        public NET_LOCAL_SERVER_NET_INFO stuLoaclServerInfo;
        /// <summary>
        /// / 子连接监听服务回调函数
        /// Callbacl function od sublink server
        /// </summary>
        public fSubLinkServiceCallBack cbSubLinkServiceCallBack;
        /// <summary>
        /// / 用户数据
        /// User data
        /// </summary>
        public IntPtr dwUserData;
    }

    /// <summary>
    /// CLIENT_StartSubLinkListenServer 接口输出参数
    /// Output param of CLIENT_StartSubLinkListenServer
    /// </summary>
    public struct NET_OUT_START_SUBLINK_LISTEN_SERVER
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_TransferSubLinkInfo 接口输入参数
    /// Input param of CLIENT_TransferSubLinkInfo
    /// </summary>
    public struct NET_IN_TRANSFER_SUBLINK_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 连接方式
        /// Link type
        /// </summary>
        public EM_SUBLINK_TYPE emLinkType;
        /// <summary>
        /// / 会话ID
        /// BSID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szBSID;
        /// <summary>
        /// / 本地服务信息, emLinkType为EM_SUBCONNECT_TYPE_PORT(主动注册)方式时有效
        /// Local server info, it is effective when the emLinkType is EM_SUBCONNECT_TYPE_PORT
        /// </summary>
        public NET_LOCAL_SERVER_NET_INFO stuLoaclServerInfo;
        /// <summary>
        /// / 连接模式
        /// Bsid Connection mode
        /// </summary>
        public EM_SUBLINK_MODE emLinkMode;
        /// <summary>
        /// / Access Key
        /// Access Key
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szAK;
        /// <summary>
        /// / Secret Access Key
        /// Secret Access Key
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szSK;
        /// <summary>
        /// / 哈希算法，目前可填写 MD5
        /// Hash algorithm, e.g. MD5
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szHash;
    }

    /// <summary>
    /// CLIENT_TransferSubLinkInfo 接口输出参数
    /// Output param of CLIENT_TransferSubLinkInfo
    /// </summary>
    public struct NET_OUT_TRANSFER_SUBLINK_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_SetTransmitTunnelParam 接口输入参数
    /// Input param of CLIENT_SetTransmitTunnelParam
    /// </summary>
    public struct NET_IN_SET_TRANSMITTUNNEL_PARAM
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved;
        /// <summary>
        /// / 本地服务IP
        /// Local server IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szLoaclIP;
        /// <summary>
        /// / 向上侦听端口的最小值和最大值
        /// Upward listen port. nPort[0]:min value, nPort[1]:max value
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public uint[] nPort;
    }

    /// <summary>
    /// CLIENT_SetTransmitTunnelParam 接口输出参数
    /// Output param of CLIENT_SetTransmitTunnelParam
    /// </summary>
    public struct NET_OUT_SET_TRANSMITTUNNEL_PARAM
    {
        /// <summary>
        /// / 结构体大小
        /// / Struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 私有隧道代理类型
    /// Private tunnel proxy type
    /// </summary>
    public enum EM_TRANSMIT_PROXY_TYPE
    {
        /// <summary>
        /// / Web代理。由服务端自动获取web端口，客户端不需要关心
        /// Web proxy. The server automatically obtains the web port, and the client does not need to care
        /// </summary>
        EM_TRANSMIT_PROXY_TYPE_WEB = 1,
        /// <summary>
        /// / 通用端口代理。要求客户端知道服务的端口
        /// General agent. The client is required to know the port of the service.
        /// </summary>
        EM_TRANSMIT_PROXY_TYPE_GENERAL,
    }

    /// <summary>
    /// 私有隧道代理模式
    /// Private tunnel proxy mode
    /// </summary>
    public enum EM_TRANSMIT_PROXY_MODE
    {
        /// <summary>
        /// / 本地代理
        /// Local
        /// </summary>
        EM_TRANSMIT_PROXY_MODE_LOCAL = 1,
        /// <summary>
        /// / 级联代理
        /// Cascade
        /// </summary>
        EM_TRANSMIT_PROXY_MODE_CASCADE,
    }

    /// <summary>
    /// 私有隧道断线原因
    /// Private tunnel disconnect reason
    /// </summary>
    public enum EM_TRANSMIT_DISCONNECT_REASON
    {
        /// <summary>
        /// / 未知
        /// UNKNOWN
        /// </summary>
        EM_TRANSMIT_DISCONNECT_REASON_UNKNOWN,
        /// <summary>
        /// / 隧道超时2分钟断线
        /// Private tunnel 2 min timeout disconnect
        /// </summary>
        EM_TRANSMIT_DISCONNECT_REASON_TIMEOUT,
        /// <summary>
        /// / 设备服务关键信息改变
        /// Service CriticalInfo Change
        /// </summary>
        EM_TRANSMIT_DISCONNECT_REASON_SERVICE_CHANGE,
    }

    /// <summary>
    /// 隧道连接断开回调信息
    /// Disconnect callback info of private tunnel
    /// </summary>
    public struct NET_TRANSMIT_DISCONNECT_CALLBACK
    {
        /// <summary>
        /// / 设备网络信息
        /// Device network info
        /// </summary>
        public NET_DEV_NETWORK_INFO stuDevNetInfo;
        /// <summary>
        /// / 用户数据
        /// User data
        /// </summary>
        public IntPtr dwUserData;
        /// <summary>
        /// / 断线原因
        /// disconnect reason
        /// </summary>
        public EM_TRANSMIT_DISCONNECT_REASON emDisReason;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 分压连接断线回调信息
    /// Disconnect callback info of sub link
    /// </summary>
    public struct NET_SUBBIZ_DISCONNECT_CALLBACK
    {
        /// <summary>
        /// / 设备网络信息
        /// Network info of device
        /// </summary>
        public NET_DEV_NETWORK_INFO stuDevNetInfo;
        /// <summary>
        /// / 用户数据
        /// User data
        /// </summary>
        public IntPtr dwUserData;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_CreateTransmitTunnel 接口输入参数
    /// Input param of CLIENT_CreateTransmitTunnel
    /// </summary>
    public struct NET_IN_CREATE_TRANSMIT_TUNNEL
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 代理类型
        /// Proxy type
        /// </summary>
        public EM_TRANSMIT_PROXY_TYPE emProxyType;
        /// <summary>
        /// / 代理模式
        /// Proxy mode
        /// </summary>
        public EM_TRANSMIT_PROXY_MODE emProxyMode;
        /// <summary>
        /// / 当emProxyType为EM_TRANSMIT_PROXY_TYPE_GENERAL 是有效
        /// / 本地代理时指本地的代理端口。级联代理时指远端的代理端口。默认80
        /// It is valid when emProxyType=EM_TRANSMIT_PROXY_TYPE_GENERAL
        /// Local agent refers to the local agent port. Cascade proxy refers to the remote proxy port. Default 80
        /// </summary>
        public int nPort;
        /// <summary>
        /// / emProxyMode为EM_TRANSMIT_PROXY_MODE_CASCADE时有效，与Port一起，组成需级联代理的服务
        /// It is valid when emProxyMode=EM_TRANSMIT_PROXY_MODE_CASCADE
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved;
        /// <summary>
        /// / 隧道超时2分钟断线回调
        /// Private tunnel 2 min disconnect callback function
        /// </summary>
        public fTransmitDisConnectCallBack cbDisConnectCallBack;
        /// <summary>
        /// / 隧道断线回调
        /// Private tunnel disconnect callback function
        /// </summary>
        public fSubBizDisConnectCallBack cbDisConnectCallBackEx;
        /// <summary>
        /// / 用户数据
        /// User data
        /// </summary>
        public IntPtr dwUserData;
        /// <summary>
        /// / 主动注册设备注册ip
        /// / autoRegister device's destination address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szLocalIp;
        /// <summary>
        /// / 主动注册设备注册端口
        /// / autoRegister device's destination port
        /// </summary>
        public uint nLocalPort;
    }

    /// <summary>
    /// 私有web代理协议类型
    /// Protocol type of web proxy
    /// </summary>
    public enum EM_WEB_TUNNEL_PROTOCOL
    {
        /// <summary>
        /// / 未知
        /// Unknown
        /// </summary>
        EM_WEB_TUNNEL_PROTOCOL_UNKNOWN,
        /// <summary>
        /// / HTTP
        /// HTTP
        /// </summary>
        EM_WEB_TUNNEL_PROTOCOL_HTTP,
        /// <summary>
        /// / THTPS
        /// THTPS
        /// </summary>
        EM_WEB_TUNNEL_PROTOCOL_HTTPS,
    }

    /// <summary>
    /// CLIENT_CreateTransmitTunnel 接口输出参数
    /// Output param of CLIENT_CreateTransmitTunnel
    /// </summary>
    public struct NET_OUT_CREATE_TRANSMIT_TUNNEL
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 对上侦听端口
        /// Upward listen port
        /// </summary>
        public int nPort;
        /// <summary>
        /// / 私有web代理访问协议
        /// Protocol type of web proxy
        /// </summary>
        public EM_WEB_TUNNEL_PROTOCOL emWebProtocol;
        /// <summary>
        /// / 用户名
        /// User Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUserName;
        /// <summary>
        /// / 令牌
        /// token
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szTempToken;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_QUEUENUM_DETECTION（排队人数异常报警事件）对应数据块描述信息
    /// IVS event type EVENT_IVS_QUEUENUM_DETECTION(queue num detection event)data description
    /// </summary>
    public struct NET_DEV_EVENT_QUEUENUM_DETECTION_INFO
    {
        /// <summary>
        /// / 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 字节对齐, 非保留字节
        /// keep align, not reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// / 事件发生的时间
        /// time of occurrence
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// / 事件ID
        /// event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 0:脉冲 1:开始 2:停止
        /// event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 区域ID(一个预置点可以对应多个区域ID)
        /// Area ID(a preset point can correspond to multiple area IDs)
        /// </summary>
        public uint nAreaID;
        /// <summary>
        /// / 区域内检测到的人员个数
        /// Number of persons detected in the area
        /// </summary>
        public int nMaxManListNum;
        /// <summary>
        /// / 区域内人员列表
        /// Number of Regional Personnel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_MAN_NUM_LIST_INFO[] stuManList;
        /// <summary>
        /// / 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// / 事件对应文件信息
        /// Event corresponding to file information
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// / 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// / 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 字节对齐
        /// / Reserved3
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved3;
        /// <summary>
        /// / 全景图
        /// / SceneImage
        /// </summary>
        public IntPtr pstuSceneImage;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1008 - 8)]
        public byte[] byReversed;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1008 - 4)]
        public byte[] byReversed;
#endif
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_QUEUESTAY_DETECTION(排队滞留时间报警事件)对应数据块描述信息
    /// IVS event type EVENT_IVS_QUEUESTAY_DETECTION(queue stay detection event)data description
    /// </summary>
    public struct NET_DEV_EVENT_QUEUESTAY_DETECTION_INFO
    {
        /// <summary>
        /// / 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 字节对齐, 非保留字节
        /// keep align, not reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string bReserved1;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// / 事件发生的时间
        /// time of occurrence
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// / 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / 0:脉冲 1:开始 2:停止
        /// event action, 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 事件组ID，一次检测的多个人体特征nGroupID相同
        /// Event group ID,A detection of multiple human characteristics at the same nGroupID
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// / 一个事件组内的抓拍张数(人体个数),一次检测的多个人体特征nCountInGroup相同
        /// the captured human number within an event group,A detection of multiple human characteristics at the same nCountInGroup
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// / 一个事件组内的抓拍序号，从1开始
        /// capture Index of an event group,starting from 1
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// / 检测到的物体信息
        /// Have been detected object info
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// / 检测到的物体个数
        /// detected objects numbers
        /// </summary>
        public int nObjectNum;
        /// <summary>
        /// / 检测到的多个物体
        /// detected objects
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// / 实际检测到区域个数
        /// Number of actual detected areas
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// / 检测区域
        /// Detect Region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// / 区域ID(一个预置点可以对应多个区域ID)
        /// Area ID(a preset point can correspond to multiple area IDs)
        /// </summary>
        public uint nAreaID;
        /// <summary>
        /// / 事件被触发的次数
        /// Event Attach Count
        /// </summary>
        public int nCount;
        /// <summary>
        /// / 智能事件公共信息
        /// intelli comm info
        /// </summary>
        public NET_EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
        /// <summary>
        /// / 事件对应文件信息
        /// Event corresponding to file information
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// / 图片信息数组
        /// Image information array
        /// </summary>
        public IntPtr pstuImageInfo;
        /// <summary>
        /// / 图片信息个数
        /// Number of picture information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1012)]
        public byte[] byReversed;
    }
    /// <summary>
    /// 获取旁路状态 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_BYPASSMODE
    /// CLIENT_GetAlarmRegionInfo NET_EM_GET_ALARMREGION_INFO_BYPASSMODE input param
    /// </summary>
    public struct NET_IN_GET_BYPASSMODE
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 防区个数
        /// zone number
        /// </summary>
        public int nZoneNum;
        /// <summary>
        /// / 防区号, 从1开始
        /// zone id, start from 1
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 72)]
        public int[] arrZones;
        /// <summary>
        /// / 防区个数扩展
        /// zone number extend
        /// </summary>
        public int nZoneNumEx;
        /// <summary>
        /// / 防区号扩展 超过72使用这个字段
        /// Zone code extension, use this field when it exceeds 72
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] arrZonesEx;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING(车位有车事件)对应的规则配置
    /// Event type EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING(Event of parking space parking)corresponding rule configuration
    /// </summary>
    public struct NET_CFG_TRAFFIC_PARKINGSPACEPARKING_INFO
    {
        /// <summary>
        /// 规则名称,不同规则不能重名
        /// Rule name, different name apply to seperate rule
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRuleName;
        /// <summary>
        /// 规则使能
        /// Rule enable
        /// </summary>
        public byte bRuleEnable;
        /// <summary>
        /// 保留字段
        /// Reserved field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public byte[] bReserved;
        /// <summary>
        /// 相应物体类型个数
        /// Corresponding object type number
        /// </summary>
        public int nObjectTypeNum;
        /// <summary>
        /// 相应物体类型列表
        /// Corresponding object type list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16 * 128)]
        public string szObjectTypes;
        /// <summary>
        /// 云台预置点编号 0~65535
        /// PTZ preset number 0~65535
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// 报警联动
        /// Alarm linkage
        /// </summary>
        public NET_A_CFG_ALARM_MSG_HANDLE stuEventHandler;
        /// <summary>
        /// 事件响应时间段
        /// Event respond time
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7 * 10)]
        public NET_A_CFG_TIME_SECTION[] stuTimeSection;
        /// <summary>
        /// 车位号
        /// Rack num
        /// </summary>
        public int nLane;
        /// <summary>
        /// 检测到报警发生到开始上报的时间, 单位：秒，范围1~65535
        /// Detection to alarm to report the time interval (s),range 1~65535
        /// </summary>
        public int nDelayTime;
        /// <summary>
        /// 检测区域顶点数
        /// Detect region point
        /// </summary>
        public int nDetectRegionPoint;
        /// <summary>
        /// 检测区域
        /// Detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_CFG_POLYGON[] stuDetectRegion;
        /// <summary>
        /// 有牌检测灵敏度(控制抓拍)
        /// with plate car Sensitivity(control capture)
        /// </summary>
        public int nPlateSensitivity;
        /// <summary>
        /// 无牌检测灵敏度（控制抓拍）
        /// with no plate car Sensitivity(control capture)
        /// </summary>
        public int nNoPlateSensitivity;
        /// <summary>
        /// 有牌检测灵敏度（控制车位状态灯）
        /// with plate car Sensitivity,control status light
        /// </summary>
        public int nLightPlateSensitivity;
        /// <summary>
        /// 无牌检测灵敏度（控制车位状态灯）
        /// with no plate car Sensitivity,control status light
        /// </summary>
        public int nLightNoPlateSensitivity;
        /// <summary>
        /// 禁止停车使能 TRUE:禁止 FALSE:未禁止
        /// forble parking enable TRUE:forbid FALSE:not forbid
        /// </summary>
        public bool bForbidParkingEnable;
    }



    /// <summary>
    /// 获取旁路状态 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_BYPASSMODE
    /// CLIENT_GetAlarmRegionInfo NET_EM_GET_ALARMREGION_INFO_BYPASSMODE output param
    /// </summary>
    public struct NET_OUT_GET_BYPASSMODE
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 防区个数
        /// zone number
        /// </summary>
        public int nZoneRet;
        /// <summary>
        /// / 防区工作模式
        /// bypass mode
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 72)]
        public EM_BYPASSMODE_TYPE[] arrModes;
        /// <summary>
        /// / 防区个数扩展
        /// Number of defense zones expanded
        /// </summary>
        public int nZoneRetEx;
        /// <summary>
        /// / 防区号扩展 超过72使用这个字段
        /// Zone code extension Use this field for more than 72
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public EM_BYPASSMODE_TYPE[] arrModesEx;
    }

    /// <summary>
    /// 获取输出状态 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_OUTPUTSTATE
    /// CLIENT_GetAlarmRegionInfo NET_EM_GET_ALARMREGION_INFO_OUTPUTSTATE input param
    /// </summary>
    public struct NET_IN_GET_OUTPUT_STATE
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 通道类型
        /// channel type
        /// </summary>
        public EM_OUTPUT_TYPE emType;
    }

    /// <summary>
    /// 获取输出状态 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_OUTPUTSTATE
    /// CLIENT_GetAlarmRegionInfo NET_EM_GET_ALARMREGION_INFO_OUTPUTSTATE output param
    /// </summary>
    public struct NET_OUT_GET_OUTPUT_STATE
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 状态个数
        /// state number
        /// </summary>
        public int nStateRet;
        /// <summary>
        /// / 状态false:关闭true打开
        /// state false:close true:open
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 82)]
        public byte[] arrStates;
        /// <summary>
        /// / 对齐
        /// align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public byte[] byReserved;
        /// <summary>
        /// / 状态个数扩展 超过82个使用这个字段
        /// The number of states is expanded to more than 82 use this field
        /// </summary>
        public int nStateRetEx;
        /// <summary>
        /// / 状态FLASE:关闭TRUE打开
        /// Status FLASE: closed TRUE open
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public bool[] arrStatesEx;
        /// <summary>
        /// / 对齐
        /// align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved1;
    }

    /// <summary>
    /// 获取设备支持的传感器列表
    /// Get device supported sensor list
    /// </summary>
    public struct NET_SENSOR_LIST
    {
        public uint dwSize;
        /// <summary>
        /// / 返回支持传感器设备类型个数
        /// return sensor device type
        /// </summary>
        public int nSupportSensorNum;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128 * 64)]
        public string szSensorList;
    }

    /// <summary>
    /// 采集类型
    /// Collection type
    /// </summary>
    public enum EM_GATHER_TYPE
    {
        /// <summary>
        /// / 未知类型
        /// Unknown type
        /// </summary>
        EM_GATHER_TYPE_UNKNOWN = 0,
        /// <summary>
        /// / 目标采集
        /// target collection
        /// </summary>
        EM_GATHER_TYPE_FACE,
        /// <summary>
        /// / 证件采集
        /// ID card collection
        /// </summary>
        EM_GATHER_TYPE_IDCARD,
    }

    /// <summary>
    /// CLIENT_AccessControlCaptureCmd 输入结构体
    /// input param of CLIENT_AccessControlCaptureCmd
    /// </summary>
    public struct NET_IN_ACCESSCONTROL_CAPTURE_CMD
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 采集类型 (EM_COLLECTION_TYPE已被使用)
        /// Collection type (EM_COLLECTION_TYPE has been used)
        /// </summary>
        public EM_GATHER_TYPE emGathertype;
        /// <summary>
        /// / 用户ID（智能楼宇需求，可选）
        /// User ID (smart building requirements, optional)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]
        public string szUserID;
    }

    /// <summary>
    /// CLIENT_AccessControlCaptureCmd 输出结构体
    /// output param of CLIENT_AccessControlCaptureCmd
    /// </summary>
    public struct NET_OUT_ACCESSCONTROL_CAPTURE_CMD
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 设备需要展示的颜色
    /// The color device will display
    /// </summary>
    public enum EM_SHOW_COLOR
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_SHOW_COLOR_UNKNOWN,
        /// <summary>
        /// / 蓝
        /// blue
        /// </summary>
        EM_SHOW_COLOR_BLUE,
        /// <summary>
        /// / 黄
        /// yellow
        /// </summary>
        EM_SHOW_COLOR_YELLOW,
        /// <summary>
        /// / 橙
        /// orange
        /// </summary>
        EM_SHOW_COLOR_ORANGE,
        /// <summary>
        /// / 红
        /// red
        /// </summary>
        EM_SHOW_COLOR_RED,
    }

    /// <summary>
    /// CLIENT_SetPersonInfoInputResult 输入参数
    /// input param of CLIENT_SetPersonInfoInputResult
    /// </summary>
    public struct NET_IN_PERSON_INFO_INPUT_RESULT
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 通道ID
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0 : 成功 1 : 人员信息不在人员库中
        /// 0:success 1: card information is not in the database
        /// </summary>
        public uint nResult;
        /// <summary>
        /// / 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReserved;
        /// <summary>
        /// / 证件号码
        /// card id
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCitizenID;
        /// <summary>
        /// / 设备展示颜色
        /// show color (customized)
        /// </summary>
        public EM_SHOW_COLOR emColor;
        /// <summary>
        /// / 0：实时采集的数据 1：离线采集的数据
        /// 0:Real-time collected data 1:Data collected offline
        /// </summary>
        public uint nDataType;
    }

    /// <summary>
    /// CLIENT_SetPersonInfoInputResult 输出参数
    /// input param of CLIENT_SetPersonInfoInputResult
    /// </summary>
    public struct NET_OUT_PERSON_INFO_INPUT_RESULT
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
    }


    /// <summary>
    /// CLIENT_GetRadiometryCurrentHotColdSpotInfo 入参
    /// CLIENT_GetRadiometryCurrentHotColdSpotInfo input parameter
    /// </summary>
    public struct NET_IN_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO
    {
        public uint dwSize;
        /// <summary>
        /// / 通道号：只有热成像通道有效
        /// channel id:(Only thermal imaging channels are effective)
        /// </summary>
        public int nChannel;
    }

    /// <summary>
    /// 冷（最低的温度）、热（最高的温度）点信息
    /// Cold(minimum) and hot(maximum) point information
    /// </summary>
    public struct NET_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO
    {
        /// <summary>
        /// / 热点坐标，范围：【0~8191】
        /// Hot spot coordinates, range: [0,8191]
        /// </summary>
        public NET_POINT stuHotPoint;
        /// <summary>
        /// / 冷点坐标，范围：【0~8191】
        /// Cooling point coordinates, range: [0,8191]
        /// </summary>
        public NET_POINT stuColdPoint;
        /// <summary>
        /// / 热点温度值（最高的温度）
        /// Hot spot temperature(maximum Temperature)
        /// </summary>
        public float fHotSpotValue;
        /// <summary>
        /// / 冷点温度值（最低的温度）
        /// Cold Point Temperature Value(Minimum Temperature)
        /// </summary>
        public float fColdSpotValue;
        /// <summary>
        /// / 温度单位，0:摄氏度 1：华氏度
        /// Unit of temperature:0 degrees Celsius, 1 degrees Fahrenheit
        /// </summary>
        public int nTemperatrueUnit;
        /// <summary>
        /// / 保留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// CLIENT_GetRadiometryCurrentHotColdSpotInfo 出参
    /// CLIENT_GetRadiometryCurrentHotColdSpotInfo out parameter
    /// </summary>
    public struct NET_OUT_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO
    {
        public uint dwSize;
        /// <summary>
        /// / 热成像当前冷（最低的温度）、热（最高的温度）点信息
        /// Current cold(minimum) and hot(maximum)point imformation of thermal imagimg
        /// </summary>
        public NET_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO stuCurrentHotColdSpotInfo;
    }

    /// <summary>
    /// 传感器所拥有的检测属性
    /// The detection attributes possessed by sensors
    /// </summary>
    public struct NET_IOTBOX_TAGS_INFO
    {
        /// <summary>
        /// / 获取的第三方传感器检测属性点名称
        /// Obtained third-party sensor detection attribute point name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szTagName;
        /// <summary>
        /// / 第三方传感器检测属性点名称的描述
        /// Description of third-party sensor detection attribute point names
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDescribe;
        /// <summary>
        /// / 第三方传感器属性点名称的值
        /// Value of third-party sensor attribute point names
        /// </summary>
        public double dbValue;
        /// <summary>
        /// / 第三方传感器属性点名值的单位
        /// Units of third-party sensor attribute name values
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUnity;
        /// <summary>
        /// / 第三方传感器属性点名称的值数据类型,0 - 无效型 ,1 - 布尔,2 - 浮点数 ,3 - 整形 ,4 - 字符串
        /// / Value data type of third-party sensor attribute point name, 0- invalid, 1- boolean, 2- floating-point, 3- integer, 4- string
        /// </summary>
        public uint nValueType;
        /// <summary>
        /// / 第三方传感器测点报警值，0表示无报警，非0表示有报警,32位整形，其数据位的含义如下：bit1：低低限报警 bit2：低限报警 bit3：高限报警 bit4：高高限报警 bit13：开关量报警,其它位暂未定义
        /// / Third party sensor measurement point alarm value, 0 indicates no alarm, non-zero indicates alarm, 32-bit shaping, the meaning of its data bits is as follows: bit1: low and low limit alarm bit2: low limit alarm bit3: high limit alarm bit4: high and high limit alarm bit13: switch value alarm, other bits are not yet defined
        /// </summary>
        public uint nAlarmValue;
        /// <summary>
        /// / 第三方传感器测点质量戳,正常值范围：[192, 195]，[216, 219],默认值一般为192
        /// / Third party sensor measurement point quality stamp, normal value range: [192, 195], [216, 219], default value is generally 192
        /// </summary>
        public uint nQualityStamp;
        /// <summary>
        /// / 第三方传感器测点报警集合，两个报警名称之间使用'|'分隔开来,报警字段如下：LLNAME：低低限报警名,LONAME: 低限报警名,HINAME: 高限报警名,HHNAME：高高限报警名,ALMNAME：开关量报警名,报警组合方式：LLNAME|LONAME|HINAME|HHNAME|ALMNAME
        /// / Third party sensor measurement point alarm collection, separated by '|' between two alarm names, alarm fields are as follows: LLNAME: low/low limit alarm name, LONAME: low limit alarm name, HINAME: high limit alarm name, HHNAME: high/high limit alarm name, ALMNAME: switch alarm name, alarm combination method: LLNAME | LONAME | HINAME | HHNAME | ALMNAME
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szAlarmName;
        /// <summary>
        /// / 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 52)]
        public string szResvered;
    }

    /// <summary>
    /// 通道下所有传感器的信息
    /// Information of all sensors under the channel
    /// </summary>
    public struct NET_IOTBOX_CHANNEL_DEVICE_INFO
    {
        /// <summary>
        /// / 传感器名称
        /// Sensor Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szDeviceName;
        /// <summary>
        /// / 设备状态点名称
        /// Device Status Point Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceStatusName;
        /// <summary>
        /// / 设备状态点的值
        /// The value of the device status point
        /// </summary>
        public double dbDeviceStatusValue;
        /// <summary>
        /// / 设备控制点名称
        /// Device control point name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szDeviceControlName;
        /// <summary>
        /// / 设备控制点的值
        /// Value of device control points
        /// </summary>
        public double dbDeviceControlValue;
        /// <summary>
        /// / 字节对齐
        /// Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szResvered1;
        /// <summary>
        /// / 传感器所拥有的检测属性个数
        /// Number of detection attributes owned by sensors
        /// </summary>
        public int nTagsNum;
        /// <summary>
        /// / 传感器所拥有的检测属性
        /// The detection attributes possessed by sensors
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IOTBOX_TAGS_INFO[] stuTags;
        /// <summary>
        /// / 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szResvered;
    }

    /// <summary>
    /// 所有传感器的信息
    /// Sensor information
    /// </summary>
    public struct NET_IOTBOX_DEVICE_INFO
    {
        /// <summary>
        /// / 传感器通道名称
        /// Sensor Channel Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szChannelName;
        /// <summary>
        /// / 通道状态点名称
        /// Channel Status Point Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szChannelStatusName;
        /// <summary>
        /// / 通道状态点的值
        /// Value of channel status points
        /// </summary>
        public double dbChannelStatusValue;
        /// <summary>
        /// / 通道控制点名称
        /// Channel Control Point Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szChannelControlName;
        /// <summary>
        /// / 通道控制点的值
        /// Value of channel control points
        /// </summary>
        public double dbChannelControlValue;
        /// <summary>
        /// / 通道下所有传感器的信息
        /// Information of all sensors under the channel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_IOTBOX_CHANNEL_DEVICE_INFO[] stuDevices;
        /// <summary>
        /// / 通道下所有传感器的信息个数
        /// The number of information from all sensors in the channel
        /// </summary>
        public int nDevicesNum;
        /// <summary>
        /// / 保留字节
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 68)]
        public string szResvered;
    }

    /// <summary>
    /// 回调的实时数据
    /// Real time data for callback
    /// </summary>
    public struct NET_NOTIFY_IOTBOX_COMM
    {
        /// <summary>
        /// / 传感器的信息
        /// Sensor information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_IOTBOX_DEVICE_INFO[] stuDeviceInfo;
        /// <summary>
        /// / 传感器的信息个数
        /// Number of sensor information
        /// </summary>
        public int nDeviceInfoNum;
        /// <summary>
        /// / 保留字段
        /// Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1028)]
        public string szResvered;
    }

    /// <summary>
    /// CLIENT_AttachIotboxComm 接口入参
    /// CLIENT_AttachIotboxComm input parameter
    /// </summary>
    public struct NET_IN_ATTACH_IOTBOX_COMM
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned a value
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 回调函数
        /// Callback Function
        /// </summary>
        public fNotifyIotboxRealdata cbNotifyIotboxRealdata;
        /// <summary>
        /// / 用户自定义参数
        /// User defined parameters
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// CLIENT_AttachIotboxComm 接口出参
    /// CLIENT_AttachIotboxComm output parameter
    /// </summary>
    public struct NET_OUT_ATTACH_IOTBOX_COMM
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned a value
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 火灾预警联动项
    /// Fire warning linkage item information
    /// </summary>
    public struct NET_FIREWARN_EVENTHANDLE_INFO
    {
        /// <summary>
        /// / 报警时间段
        /// Alarm time section
        /// </summary>
        public NET_CFG_TIME_SCHEDULE stuTimeSection;
        /// <summary>
        /// / 录像使能，必须同时有RecordChannels。使能为TRUE，且事件action为start开始录像，stop停止录像。如果FALSE，则不做录像
        /// Video enables,and nust be RecordChannels at the same time.
        /// The enable is true and the event action is start.
        /// Start recording, stop stop recording. If it is false, it will not be videotaped
        /// </summary>
        public bool bRecordEnable;
        /// <summary>
        /// / 录像通道个数
        /// Number of video channels
        /// </summary>
        public int nRecordChannelNum;
        /// <summary>
        /// / 录像通道号列表
        /// Video channel number list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nRecordChannels;
        /// <summary>
        /// / 录像延时时间（单位：秒）范围[10,300]
        /// video delay time range[10~300]
        /// </summary>
        public int nRecordLatch;
        /// <summary>
        /// / 报警输出使能
        /// Alarm output enable
        /// </summary>
        public bool bAlarmOutEnable;
        /// <summary>
        /// / 报警输出通道个数
        /// Number of alarm output channels
        /// </summary>
        public int nAlarmOutChannelNum;
        /// <summary>
        /// / 报警输出通道号列表
        /// List of alarm output channel numbers
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nAlarmOutChannels;
        /// <summary>
        /// / 报警输入停止后，输出延时时间（单位：秒）范围[10, 300]
        /// Output delay time after alarm input stops(unit:second)range[10, 300]
        /// </summary>
        public int nAlarmOutLatch;
        /// <summary>
        /// / 云台配置数
        /// Ptzlink num
        /// </summary>
        public int nPtzLinkNum;
        /// <summary>
        /// / 云台联动
        /// PTZ linkage
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_PTZ_LINK[] struPtzLink;
        /// <summary>
        /// / 云台联动使能
        /// PTZ link enable
        /// </summary>
        public bool bPtzLinkEnable;
        /// <summary>
        /// / 快照使能
        /// Snapshot enable
        /// </summary>
        public bool bSnapshotEnable;
        /// <summary>
        /// / 快照通道个数
        /// Snapshot channel num
        /// </summary>
        public int nSnapshotChannelNum;
        /// <summary>
        /// / 快照通道号列表
        /// List of snapshot channel numbers
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public int[] nSnapshotChannels;
        /// <summary>
        /// / 发送邮件，如果有图片，作为附件
        /// Mail enable
        /// </summary>
        public bool bMailEnable;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 空间排除信息
    /// Space exclusion information
    /// </summary>
    public struct NET_POSTIONF
    {
        /// <summary>
        /// / 水平角度 [-1,1]
        /// Horizontal Angle [-1,1]
        /// </summary>
        public float fHorizontalAngle;
        /// <summary>
        /// / 垂直角度 [-1,1]
        /// Vertical Angle [-1,1]
        /// </summary>
        public float fVerticalAngle;
        /// <summary>
        /// / 放大倍数 [-1,1]
        /// Magnification [-1,1]
        /// </summary>
        public float fMagnification;
    }

    /// <summary>
    /// 火警检测类型
    /// fire warning detect mode type
    /// </summary>
    public enum EM_NET_EM_FIREWARNING_DETECTMODE_TYPE
    {
        /// <summary>
        /// / 自动(默认)
        /// Auto(default)
        /// </summary>
        NET_EM_FIREWARNING_DETECTMODE_TYPE_AUTO,
        /// <summary>
        /// / 正常
        /// Normal
        /// </summary>
        NET_EM_FIREWARNING_DETECTMODE_TYPE_NORMAL,
    }

    /// <summary>
    /// 检测目标
    /// fire warning detect target
    /// </summary>
    public enum EM_NET_EM_FIREWARNING_DETECTTARGET_TYPE
    {
        /// <summary>
        /// / 火点检测(默认)
        /// Fire point detection(default)
        /// </summary>
        NET_EM_FIREWARNING_DETECTTARGET_TYPE_FIRE,
        /// <summary>
        /// / 吸烟检测
        /// Smoking detection
        /// </summary>
        NET_EM_FIREWARNING_DETECTTARGET_TYPE_SMOKE,
    }

    /// <summary>
    /// 火警检测窗口
    /// Fire detect window
    /// </summary>
    public struct NET_FIREWARN_DETECTWND_INFO
    {
        /// <summary>
        /// / 检测区域的个数
        /// Number of test areas
        /// </summary>
        public int nRgnNum;
        /// <summary>
        /// / 保留字节
        /// byReserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byReservedAlign;
        /// <summary>
        /// / 检测区域
        /// Detection area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public long[] nRegions;
        /// <summary>
        /// / 空间排除信息
        /// Space exclusion information
        /// </summary>
        public NET_POSTIONF stuPostion;
        /// <summary>
        /// / 目标的尺寸(火警配置为:Normal有效,单位：像素)
        /// Target size(Fire warning mode:Normal effective, unit:piexl)
        /// </summary>
        public int nTargetSize;
        /// <summary>
        /// / 检测灵敏度（火警配置为:Normal有效）
        /// detection sensitivity(Fire warning mode:Normal effective)
        /// </summary>
        public int nSensitivity;
        /// <summary>
        /// / 窗口ID
        /// Windows ID
        /// </summary>
        public int nWindowsID;
        /// <summary>
        /// / 窗口名称
        /// Windows name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szName;
        /// <summary>
        /// / 保留字节
        /// byReserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 火灾预警规则信息
    /// Firewarn rule info
    /// </summary>
    public struct NET_FIREWARN_RULE_INFO
    {
        /// <summary>
        /// / 火灾预警功能是否开启
        /// Fire warning enable
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 预置点编号,火灾预警模式为预置点模式生效
        /// Preset id(PTZ preset mode effective)
        /// </summary>
        public int nPresetId;
        /// <summary>
        /// / 火灾检测区域的行数
        /// Fire detection area row number
        /// </summary>
        public int nRow;
        /// <summary>
        /// / 火灾检测区域的列数
        /// Fire detection area col number( Default 40 lines)
        /// </summary>
        public int nCol;
        /// <summary>
        /// / 火警检测模式
        /// Fire Warning Detection mode
        /// </summary>
        public EM_NET_EM_FIREWARNING_DETECTMODE_TYPE emFireWarningDetectMode;
        /// <summary>
        /// / 火警检测目标类型
        /// Fire Warning Detection target
        /// </summary>
        public EM_NET_EM_FIREWARNING_DETECTTARGET_TYPE emFireWarningDetectTragetType;
        /// <summary>
        /// / 是否启用持续时间
        /// Time duration enable
        /// </summary>
        public bool bTimeDurationEnable;
        /// <summary>
        /// / 观察火情持续时间，单位秒。水平旋转组检测火点时，为避免同一点重复检测，
        /// / 设置超时时间，超过此时间，跳过此点
        /// Fire duration(unit:seconds)
        /// </summary>
        public int nFireDuration;
        /// <summary>
        /// / 火警联动信息
        /// Fire linkage information
        /// </summary>
        public NET_FIREWARN_EVENTHANDLE_INFO stuEventHandler;
        /// <summary>
        /// / 窗口个数
        /// Detect window num
        /// </summary>
        public int nDetectWindowNum;
        /// <summary>
        /// / 火警检测窗口
        /// Fire detect Window
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_FIREWARN_DETECTWND_INFO[] stuDetectWnd;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 火灾预警配置(结构体较大，建议用New分配内存) NET_EM_CFG_FIRE_WARNING
    /// Fire warning config(Large structure,it is recommended to allocate memory with new) NET_EM_CFG_FIRE_WARNING
    /// </summary>
    public struct NET_FIRE_WARNING_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 火灾预警配置个数
        /// Fire warning num
        /// </summary>
        public int nFireWarnRuleNum;
        /// <summary>
        /// / 火灾预警配置规则
        /// Fire warning config rule
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_FIREWARN_RULE_INFO[] stuFireWarnRule;
    }

    /// <summary>
    /// 烟火检测查询过滤条件
    /// Smoke fire filter
    /// </summary>
    public struct NET_SMOKE_FIRE_FILTER
    {
        /// <summary>
        /// / 智能分析规则，当szRule不为""时，MEDIAFILE_SMOKE_FIRE_PARAM 中 nEventList 无效
        /// / 通配符"*"代表任意规则、"SmokeDetection"、"FireDetection"
        /// Rule, when szRule is not "", nEventList in MEDIAFILE_SMOKE_FIRE_PARAM is invalid
        /// "*"(means all),"SmokeDetection","FireDetection"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRule;
        /// <summary>
        /// / 预留字段
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 烟火检测查询条件
    /// Query param of smoke fire
    /// </summary>
    public struct NET_MEDIAFILE_SMOKE_FIRE_PARAM
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav
        /// File type,0:all,1:jpg,2:dav
        /// </summary>
        public int nFileType;
        /// <summary>
        /// / 通道号从0开始,-1表示查询所有通道
        /// Channel,-1 means all channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 开始时间
        /// Begin time
        /// </summary>
        public NET_TIME stuBeginTime;
        /// <summary>
        /// / 结束时间
        /// End time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// / 事件类型列表,参见智能分析事件类型，如EVENT_IVS_ALL、EVENT_IVS_SMOKEDETECTION
        /// Event, such as EVENT_IVS_ALL or EVENT_IVS_SMOKEDETECTION
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
        public int[] nEventList;
        /// <summary>
        /// / 事件总数
        /// nEventList's count
        /// </summary>
        public int nEventCount;
        /// <summary>
        /// / 过滤规则
        /// Filter
        /// </summary>
        public NET_SMOKE_FIRE_FILTER stuFilter;
        /// <summary>
        /// / 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
        /// TRUE means only stuStartTimeRealUTC and stuEndTimeRealUTC are delivered (not stuBeginTime, stuEndTime), FALSE means only stuBeginTime, stuEndTime (stuStartTimeRealUTC and stuEndTimeRealUTC are not delivered)
        /// </summary>
        public bool bOnlySupportRealUTC;
        /// <summary>
        /// / UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用，与(stuBeginTime, stuEndTime)互斥
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC, mutually exclusive with (stuBeginTime, stuEndTime)
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// / UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用，与(stuBeginTime, stuEndTime)互斥
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC, mutually exclusive with (stuBeginTime, stuEndTime)
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
    }

    /// <summary>
    /// 烟火检测查询结果
    /// Result of smoke fire query
    /// </summary>
    public struct NET_MEDIAFILE_SMOKE_FIRE_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 通道号
        /// Channel
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 开始时间
        /// Begin time
        /// </summary>
        public NET_TIME stuBeginTime;
        /// <summary>
        /// / 结束时间
        /// End time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// / 文件路径
        /// Global scene file path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szGlobalSceneFilePath;
        /// <summary>
        /// / 文件长度
        /// Global scene file length
        /// </summary>
        public int nGlobalSceneFileSize;
        /// <summary>
        /// / 规则
        /// Rule
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szRule;
        /// <summary>
        /// / 包围盒，8192坐标系
        /// Bounding box, 8192 Coordinate system
        /// </summary>
        public NET_RECT stuBoundingBox;
        /// <summary>
        /// / 小图信息
        /// Small image info
        /// </summary>
        public NET_EVENT_IMAGE_INFO stuImageInfo;
        /// <summary>
        /// / 文件类型，1:jpg, 2:dav，默认:jpg
        /// File type,1:jpg,2:dav
        /// </summary>
        public int nFileType;
        /// <summary>
        /// / 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuBeginTime和stuEndTime有效(仅使用stuBeginTime和stuEndTime)
        /// TRUE means only stuStartTimeRealUTC and stuEndTimeRealUTC are valid (only stuStartTimeRealUTC and stuEndTimeRealUTC are used), FALSE means only stuBeginTime and stuEndTime are valid (only stuBeginTime and stuEndTime are used)
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// / UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
        /// UTC start time (standard UTC time), paired with stuEndTimeRealUTC
        /// </summary>
        public NET_TIME stuStartTimeRealUTC;
        /// <summary>
        /// / UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
        /// UTC end time (standard UTC time), paired with stuStartTimeRealUTC
        /// </summary>
        public NET_TIME stuEndTimeRealUTC;
    }

    /// <summary>
    /// 无线模块类型
    /// the mode of wireless
    /// </summary>
    public enum EM_WIRELESS_MODE
    {
        EM_WIRELESS_UNKNOWN,
        EM_WIRELESS_3G,
        EM_WIRELESS_3G1,
        EM_WIRELESS_3G2,
        EM_WIRELESS_3G3,
    }

    /// <summary>
    /// CLIENT_GetMobileModuleState 入参
    /// CLIENT_GetMobileModuleState input parameter
    /// </summary>
    public struct NET_IN_GET_MOBILE_MODULE_STATE
    {
        public uint dwSize;
        /// <summary>
        /// / 无线模块名称
        /// wireless mode
        /// </summary>
        public EM_WIRELESS_MODE emMode;
    }

    /// <summary>
    /// 无线模块状态
    /// moble module state
    /// </summary>
    public enum EM_MOBILE_MODULE_STATE
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_MOBILE_MODULE_STATE_UNKNOWN = -1,
        /// <summary>
        /// / 关闭
        /// off
        /// </summary>
        EM_MOBILE_MODULE_STATE_OFF,
        /// <summary>
        /// / 正在启动
        /// starting
        /// </summary>
        EM_MOBILE_MODULE_STATE_STARTING,
        /// <summary>
        /// / 已经启动
        /// started
        /// </summary>
        EM_MOBILE_MODULE_STATE_STARTED,
        /// <summary>
        /// / 正常工作
        /// working
        /// </summary>
        EM_MOBILE_MODULE_STATE_WORKING,
    }

    /// <summary>
    /// CLIENT_GetMobileModuleState 出参
    /// CLIENT_GetMobileModuleState output parameter
    /// </summary>
    public struct NET_OUT_GET_MOBILE_MODULE_STATE
    {
        public uint dwSize;
        /// <summary>
        /// / 状态
        /// state
        /// </summary>
        public EM_MOBILE_MODULE_STATE emState;
    }

    /// <summary>
    /// SIM卡信息
    /// SIMINFO
    /// </summary>
    public enum EM_SIMINFO_TYPE
    {
        /// <summary>
        /// / 获取SIM卡的IMSI值,对应结构体pInParam = NET_IN_SIMINFO_GET_IMSI,pOutParam = NET_OUT_SIMINFO_GET_IMSI,替代CLIENT_MobileGetIMSI接口功能
        /// SIMInfoGetIMSI,pInParam = NET_IN_SIMINFO_GET_IMSI,pOutParam = NET_OUT_SIMINFO_GET_IMSI,replace function of CLIENT_MobileGetIMSI
        /// </summary>
        EM_SIMINFO_TYPE_GET_IMSI,
        /// <summary>
        /// / 获取SIM卡的状态类型,对应结构体pInParam = NET_IN_SIMINFO_GET_SIMSTATE,pOutParam = NET_OUT_SIMINFO_GET_SIMSTATE
        /// SIMInfoGetSIMState,pInParam = NET_IN_SIMINFO_GET_SIMSTATE,pOutParam = NET_OUT_SIMINFO_GET_SIMSTATE
        /// </summary>
        EM_SIMINFO_TYPE_GET_SIMState,
    }

    /// <summary>
    /// 网络应用组件 操作类型
    /// Net applications, operation type
    /// </summary>
    public enum EM_RPC_NETAPP_TYPE
    {
        /// <summary>
        /// / 获得网络资源统计, pstuIn 对应 NET_IN_NETAPP_GET_NET_RESOURCE_STAT*,pstuOut对应 NET_OUT_NETAPP_GET_NET_RESOURCE_STAT*
        /// get statistics of net resource, pstuIn: NET_IN_NETAPP_GET_NET_RESOURCE_STAT*, pstuOut: NET_OUT_NETAPP_GET_NET_RESOURCE_STAT*
        /// </summary>
        EM_RPC_NETAPP_TYPE_GET_NET_RESOURCE_STAT,
        /// <summary>
        /// / 获取3G网络的信号强度, pstuIn 对应 NET_IN_NETAPP_GET_MOBILE_RSSI*, pstuOut 对应 NET_OUT_NETAPP_GET_MOBILE_RSSI*
        /// get the signal strength of the 3G network, pstuIn: NET_IN_NETAPP_GET_MOBILE_RSSI*, pstuOut : NET_OUT_NETAPP_GET_MOBILE_RSSI*
        /// </summary>
        EM_RPC_NETAPP_TYPE_GET_MOBILE_RSSI,
        /// <summary>
        /// / 获取所有移动网络接口, pstuIn 对应 NET_IN_NETAPP_GET_MOBILE_INTERFACE*,pstuOut对应 NET_OUT_NETAPP_GET_MOBILE_INTERFACE*
        /// get moblie interface, pstuIn: NET_IN_NETAPP_GET_MOBILE_INTERFACE*, pstuOut: NET_OUT_NETAPP_GET_MOBILE_INTERFACE*
        /// </summary>
        EM_PRC_NETAPP_TYPE_GET_MOBILE_INTERFACE,
        /// <summary>
        /// / 获取拨号信息, pstuIn 对应 NET_IN_NETAPP_GET_DIAL_INFO*,pstuOut对应 NET_OUT_NETAPP_GET_DIAL_INFO*
        /// get dail info, pstuIn: NET_IN_NETAPP_GET_DIAL_INFO*, pstuOut: NET_OUT_NETAPP_GET_DIAL_INFO*
        /// </summary>
        EM_PRC_NETAPP_TYPE_GET_DIAL_INFO,
        /// <summary>
        /// 获取已连接的AP热点信号强度 pstuIn 对应 NET_IN_NETAPP_GET_DEVAP_INFO*,pstuOut对应 NET_OUT_NETAPP_GET_DEVAP_INFO*
        /// get the signal strength of the connected AP hotspot pstuIn: NET_IN_NETAPP_GET_DEVAP_INFO*,pstuOut: NET_OUT_NETAPP_GET_DEVAP_INFO*
        /// </summary>
        EM_RPC_NETAPP_TYPE_GET_DEVAP_INFO,
    }

    /// <summary>
    /// 获取SIM卡的IMSI值入参
    /// the input param of CLIENT_GetMobileSIMInfo related to EM_SIMINFO_TYPE_GET_IMSI
    /// </summary>
    public struct NET_IN_SIMINFO_GET_IMSI
    {
        /// <summary>
        /// / 赋值为结构体大小
        /// assignment to the size of structure
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 无线模块名称
        /// the mode of wireless
        /// </summary>
        public EM_WIRELESS_MODE emMode;
    }

    /// <summary>
    /// 获取SIM卡的IMSI值出参
    /// the output param of CLIENT_GetMobileSIMInfo related to EM_SIMINFO_TYPE_GET_IMSI
    /// </summary>
    public struct NET_OUT_SIMINFO_GET_IMSI
    {
        /// <summary>
        /// / 赋值为结构体大小
        /// assignment to the size of structure
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / IMSI值
        /// IMSI
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szIMSI;
        /// <summary>
        /// / ICCID号
        /// ICCID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szICCID;
    }

    /// <summary>
    /// 获取SIM卡的状态类型入参
    /// the input param of CLIENT_GetMobileSIMInfo related to EM_SIMINFO_TYPE_GET_SIMState
    /// </summary>
    public struct NET_IN_SIMINFO_GET_SIMSTATE
    {
        /// <summary>
        /// / 赋值为结构体大小
        /// assignment to the size of structure
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 无线模块名称
        /// the mode of wireless
        /// </summary>
        public EM_WIRELESS_MODE emMode;
    }

    /// <summary>
    /// SIM卡状态类型
    /// the mode of SIMState
    /// </summary>
    public enum EM_SIMSTATE_MODE
    {
        /// <summary>
        /// / 状态未知
        /// state unknown
        /// </summary>
        EM_SIMSTATE_UNKNOWN,
        /// <summary>
        /// / 不存在
        /// unexist
        /// </summary>
        EM_SIMSTATE_UNEXIST,
        /// <summary>
        /// / 存在
        /// exist
        /// </summary>
        EM_SIMSTATE_EXIST,
        /// <summary>
        /// / 移动网络号码不匹配
        /// mobile network number unmatch
        /// </summary>
        EM_SIMSTATE_UNMATCH,
        /// <summary>
        /// / Pin码锁
        /// Pinlock
        /// </summary>
        EM_SIMSTATE_PINLOCK,
        /// <summary>
        /// / Puk码锁
        /// Puklock
        /// </summary>
        EM_SIMSTATE_PUKLOCK,
    }

    /// <summary>
    /// 获取SIM卡的状态类型出参
    /// the output param of CLIENT_GetMobileSIMInfo related to EM_SIMINFO_TYPE_GET_SIMState
    /// </summary>
    public struct NET_OUT_SIMINFO_GET_SIMSTATE
    {
        /// <summary>
        /// /赋值为结构体大小
        /// assignment to the size of structure
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / SIM卡状态类型
        /// the mode of SIMState
        /// </summary>
        public EM_SIMSTATE_MODE emMode;
    }

    /// <summary>
    /// EM_RPC_NETAPP_TYPE_GET_MOBILE_RSSI 入参
    /// network application component, company internal customized port
    /// </summary>
    public struct NET_IN_NETAPP_GET_MOBILE_RSSI
    {
        public uint dwSize;
        /// <summary>
        /// / 无线模块名称
        /// Module name
        /// </summary>
        public EM_WIRELESS_MODE emName;
    }

    /// <summary>
    /// 工作模式选择
    /// work mode
    /// </summary>
    public enum EM_WIRELESS_WORK_MODE
    {
        EM_WIRELESS_WORK_MODE_UNKNOWN = 0,
        /// <summary>
        /// / CDMA1x
        /// CDMA1x
        /// </summary>
        EM_WIRELESS_WORK_MODE_CDMA1X,
        /// <summary>
        /// / EVDO
        /// EVDO
        /// </summary>
        EM_WIRELESS_WORK_MODE_EVDO,
        /// <summary>
        /// / TD-SCDMA
        /// TD-SCDMA
        /// </summary>
        EM_WIRELESS_WORK_MODE_TD_SCDMA,
        /// <summary>
        /// / WCDMA
        /// WCDMA
        /// </summary>
        EM_WIRELESS_WORK_MODE_WCDMA,
        /// <summary>
        /// / EDGE
        /// EDGE
        /// </summary>
        EM_WIRELESS_WORK_MODE_EDGE,
        /// <summary>
        /// / TDD-LTE
        /// TDD-LTE
        /// </summary>
        EM_WIRELESS_WORK_MODE_TDD_LTE,
        /// <summary>
        /// / FDD-LTE
        /// FDD-LTE
        /// </summary>
        EM_WIRELESS_WORK_MODE_FDD_LTE,
        /// <summary>
        /// / GPRS
        /// GPRS
        /// </summary>
        EM_WIRELESS_WORK_MODE_GPRS,
        /// <summary>
        /// / NR
        /// NR
        /// </summary>
        EM_WIRELESS_WORK_MODE_NR,
        /// <summary>
        /// / NOService
        /// NOService
        /// </summary>
        EM_WIRELESS_WORK_MODE_NO_SERVICE,
        /// <summary>
        /// / AMPS
        /// AMPS
        /// </summary>
        EM_WIRELESS_WORK_MODE_AMPS,
        /// <summary>
        /// / CDMA2000
        /// CDMA2000
        /// </summary>
        EM_WIRELESS_WORK_MODE_CDMA2000,
        /// <summary>
        /// / GSM
        /// GSM
        /// </summary>
        EM_WIRELESS_WORK_MODE_GSM,
        /// <summary>
        /// / LTE
        /// LTE
        /// </summary>
        EM_WIRELESS_WORK_MODE_LTE,
        /// <summary>
        /// / TD-LTE
        /// TD-LTE
        /// </summary>
        EM_WIRELESS_WORK_MODE_TD_LTE,
        /// <summary>
        /// / Auto
        /// Auto
        /// </summary>
        EM_WIRELESS_WORK_MODE_AUTO,
    }

    /// <summary>
    /// EM_RPC_NETAPP_TYPE_GET_MOBILE_RSSI 出参
    /// EM_RPC_NETAPP_TYPE_GET_MOBILE_RSSI output
    /// </summary>
    public struct NET_OUT_NETAPP_GET_MOBILE_RSSI
    {
        public uint dwSize;
        /// <summary>
        /// / 蜂窝移动模块的工作模式
        /// Working mode of cellular mobile module
        /// </summary>
        public EM_WIRELESS_WORK_MODE emWorkMode;
        /// <summary>
        /// / TD-SCDMA网络信号强度 范围0-100
        /// TD-SCDMA 0-100
        /// </summary>
        public int nTDSCDMA;
        /// <summary>
        /// / WCDMA网络信号强度 范围0-100
        /// WCDMA Network signal strength 0-100
        /// </summary>
        public int nWCDMA;
        /// <summary>
        /// / CDMA1.x网络信号强度 范围0-100
        /// CDMA1.x Network signal strength 0-100
        /// </summary>
        public int nCDMA1x;
        /// <summary>
        /// / EDGE网络信号强度 范围0-100
        /// EDGE Network signal strength 0-100
        /// </summary>
        public int nEDGE;
        /// <summary>
        /// / EVDO网络信号强度 范围0-100
        /// EVDO Network signal strength 0-100
        /// </summary>
        public int nEVDO;
        /// <summary>
        /// / TD-LTE网络信号强度 范围0-100
        /// TD-LTE Network signal strength 0-100
        /// </summary>
        public int nTDLTE;
        /// <summary>
        /// / FDD-LTE网络信号强度 范围0-100
        /// FDD-LTE Network signal strength 0-100
        /// </summary>
        public int nFDDLTE;
        /// <summary>
        /// / NR网络信号强度 范围0-100
        /// NR Network signal strength 0-100
        /// </summary>
        public int nNR;
        /// <summary>
        /// / 当前网络模式下的信号强度值，单位dBm
        /// The signal strength value in dBm under the current network mode
        /// </summary>
        public int nRSSI;
        /// <summary>
        /// / 当前网络模式下的信干噪比值，单位dB
        /// The signal-to-noise ratio in dB under the current network mode
        /// </summary>
        public int nSINR;
        /// <summary>
        /// / 信号强度等级
        /// Signal strength level
        /// </summary>
        public int nSignalLevel;
        /// <summary>
        /// / 频段信息
        /// Frequency band information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6)]
        public string szBAND;
        /// <summary>
        /// / 预留对齐字节
        /// Reserved aligned bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2)]
        public string szReserved;
        /// <summary>
        /// / 绝对无线频道编号
        /// / Absolute wireless channel number
        /// </summary>
        public int nARFCN;
        /// <summary>
        /// / 频宽，单位MHz
        /// / Bandwidth, in MHz
        /// </summary>
        public int nBandWidth;
        /// <summary>
        /// / 物理小区标识
        /// / Physical cell identification
        /// </summary>
        public int nPCI;
        /// <summary>
        /// / v2x 信噪比，十进制整数
        /// / V2x signal-to-noise ratio, decimal integer
        /// </summary>
        public int nV2X_SINR;
        /// <summary>
        /// / v2x 信号强度 十进制整数，单位dBm
        /// / V2x signal strength decimal integer, unit dBm
        /// </summary>
        public int nV2X_RSRP;
        /// <summary>
        /// / 小区标识，取值范围0-0xFFFFFFFFF，字符串类型，16进制表示, 不带0x
        /// / Community identifier, with a value range of 0-0xFFFFFFFF, string type, represented in hexadecimal, without 0x
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 15)]
        public string szCELLID;
        /// <summary>
        /// / 预留对齐字节
        /// / Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1)]
        public string szReserved1;
        /// <summary>
        /// / 运营商PLMN信息，十进制整数
        /// / Operator PLMN information, decimal integer
        /// </summary>
        public int nPLMN;
        /// <summary>
        /// / 服务小区跟踪区域码，取值范围0-0xFFFFFF，字符串类型，16进制表示
        /// / Service community tracking area code, value range 0-0xFFFFFF, string type, hexadecimal representation
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
        public string szTAC;
        /// <summary>
        /// / 预留对齐字节
        /// / Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2)]
        public string szReserved2;
		/// <summary>
        /// / Reference signal received power, decimal integer, unit: dB
        /// </summary>
        public int nRSRP;
        /// <summary>
        /// / Received signal strength indication, 0~31, 99- unknown or unmeasurable, decimal integer
        /// </summary>
        public uint nCSQRSSI;
    }

    /// <summary>
    /// 球机机芯日夜单时间段配置
    /// day/night color change config - for a single time section
    /// </summary>
    public struct NET_DAYNIGHT_INFO
    {
        /// <summary>
        /// 切换类型，1 - 电子，2 - 机械，通常采用滤光片（ICR）
        /// type of switch, 1 - electronic, 2 - mechanical, usually ICR
        /// </summary>
        public int nType;
        /// <summary>
        /// 彩转黑模式，1-总是彩色，2-自动，根据亮度切换，3-总是黑白，4-光敏电阻，5-根据增益切换，6-外部报警输入，7–外部IO输入
        /// colorful/monochrome mode, 1- always colorful, 2- automatically changed by illumination, 3- always monochrome, 4- by Photo resistor, 5- by gain, 6- by external alarm input, 7- by external IO
        /// </summary>
        public int nMode;
        /// <summary>
        /// 彩转黑灵敏度，可取值 0~7
        /// colorful/monochrome switch's sensitivity, 0~7
        /// </summary>
        public int nSensitivity;
        /// <summary>
        /// 日夜模式切换延时时间，可取值3~30，单位秒
        /// day/night mode switch delay, 3 ~ 30 (seconds)
        /// </summary>
        public int nDelay;
    }

    /// <summary>
    /// 球机机芯日夜配置
    /// day/night color change config
    /// </summary>
    public struct NET_CFG_VIDEOIN_DAYNIGHT_INFO
    {
        /// <summary>
        /// 不同时间段配置，按顺序分别对应：普通、白天、黑夜
        /// config for time sections, in the order: normal, day, night
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        public NET_DAYNIGHT_INFO[] stuSection;
    }

    /// <summary>
    /// 事件类型 ALARM_HUMAN_TRAIT (人员信息事件)对应的数据块描述信息
    /// Event type ALARM_HUMAN_TRAIT (Human Trait alarm) Indicates data block description
    /// </summary>
    public struct NET_ALARM_HUMAN_TRAIT_INFO
    {
        /// <summary>
        /// / 通道号
        /// / Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲,1:开始, 2:停止
        /// / 0: pulse,1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// / Extend the protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件发生的时间
        /// / Time when the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件ID
        /// / Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 事件名称
        /// / Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 智能事件所属大类
        /// / Category of intelligent events
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// / Timestamp (in milliseconds)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 智能事件规则编号
        /// / Intelligent event rule number
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// / 事件组ID，一次检测的多个人体特征nGroupID相同
        /// / Event group ID
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// / 一个事件组内的抓拍张数(人体个数),一次检测的多个人体特征nCountInGroup相同
        /// / Number of captured photos within an event group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// / 一个事件组内的抓拍序号，从1开始
        /// / The capture sequence number within an event group, starting from 1
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// / 是否为特定人员类,算法上报, -1 非该类, 0 未知, 1 是特定人员类
        /// / Is it a specific personnel category, algorithm reported, -1 is not in this category, 0 is unknown, 1 is a specific personnel category
        /// </summary>
        public int nStaffType;
        /// <summary>
        /// / 区域ID，表示该通道和PtzPresetId下的某个区域，区域ID从1开始
        /// / Region ID, representing a certain region under the channel and PtzPresetId, with region ID starting from 1
        /// </summary>
        public uint nAreaIDEx;
        /// <summary>
        /// / 智能物体全局唯一物体标识
        /// / Global Unique Object Identification for Intelligent Objects
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szObjectUUID;
        /// <summary>
        /// / 预置点编号
        /// / Pre set point number
        /// </summary>
        public uint nPtzPresetId;
        /// <summary>
        /// / 物体ID
        /// / Object ID
        /// </summary>
        public uint nObjectID;
        /// <summary>
        /// / 目标唯一ID
        /// / Target Unique ID
        /// </summary>
        public long nUniqueID;
        /// <summary>
        /// / 目标属性
        /// / Target Properties
        /// </summary>
        public NET_FACE_ATTRIBUTE stuFaceAttributes;
        /// <summary>
        /// / 人体属性
        /// / Human attributes
        /// </summary>
        public NET_HUMAN_ATTRIBUTES_INFO stuHumanAttributes;
        /// <summary>
        /// / stuHumanAttributes 的扩展
        /// / Human attribute extension
        /// </summary>
        public NET_A_HUMAN_ATTRIBUTES_INFO_EX stuHumanAttributesEx;
        /// <summary>
        /// / 预留字节
        /// / Reserve Bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 物体进入还是离开
    /// whether the object enters or leaves
    /// </summary>
    public enum EM_CAR_PASSING_MOVE_STATE
    {
        /// <summary>
        /// / 未知
        /// Unknown
        /// </summary>
        EM_CAR_PASSING_MOVE_STATE_UNKNOWN,
        /// <summary>
        /// / 进入
        /// Enter
        /// </summary>
        EM_CAR_PASSING_MOVE_STATE_ENTER,
        /// <summary>
        /// / 离开
        /// Leave
        /// </summary>
        EM_CAR_PASSING_MOVE_STATE_LEAVE,
    }

    /// <summary>
    /// 车辆进出信息
    /// Vehicle entry and exit information
    /// </summary>
    public struct NET_CAR_PASSING_INFO
    {
        /// <summary>
        /// / 车辆物体ID
        /// Car ID
        /// </summary>
        public uint nCarId;
        /// <summary>
        /// / 车道号
        /// Lane
        /// </summary>
        public uint nLane;
        /// <summary>
        /// / 车牌号码
        /// PlateNumber
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateNumber;
        /// <summary>
        /// / 车牌颜色
        /// PlateColor
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlateColor;
        /// <summary>
        /// / 车速，单位:km/h，255表示无测速
        /// Vehicle speed, unit: km/h, 255 means no speed measurement
        /// </summary>
        public int nSpeed;
        /// <summary>
        /// / 大小车类型, 0大车 1小车
        /// Large and small car type, 0 large car 1 small car
        /// </summary>
        public uint nCarSize;
        /// <summary>
        /// / 物体进入还是离开
        /// whether the object enters or leaves
        /// </summary>
        public EM_CAR_PASSING_MOVE_STATE emMoveState;
        /// <summary>
        /// / 车辆进出时间，设备本地时间
        /// Vehicle entry and exit time, device local time
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// / 自定义车道号
        /// Roadway Number
        /// </summary>
        public uint nRoadwayNumber;
        /// <summary>
        /// / 线圈编号，范围：0-65535
        /// Coil number, range: 0-65535
        /// </summary>
        public uint nCoilID;
        /// <summary>
        /// / 车辆与所有车道的中心点(中心点在设备所处位置，且垂直于车道方向的直线上)，X轴方向(垂直于车道方向)的距离
        /// The distance between the vehicle and the center point of all lanes (the center point is at the position of the device and on a straight line perpendicular to the direction of the lane), the X-axis direction (perpendicular to the direction of the lane)
        /// </summary>
        public double dbCarX;
        /// <summary>
        /// / 车辆与所有车道的中心点(中心点在设备所处位置，且垂直于车道方向的直线上)，Y轴方向(平行于车道方向)的距离
        /// The distance between the vehicle and the center point of all lanes (the center point is at the position of the device and on a line perpendicular to the direction of the lane), in the Y-axis direction (parallel to the direction of the lane)
        /// </summary>
        public double dbCarY;
        /// <summary>
        /// / 车辆与所有车道的中心点(中心点在设备所处位置且垂直于车道方向的直线上)的角度
        /// The angle between the vehicle and the center point of all lanes (the center point is on the line where the device is located and perpendicular to the direction of the lane)
        /// </summary>
        public double dbCarAngle;
        /// <summary>
        /// / 保留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// 车辆进出虚拟线圈状态事件 (对应 ALARM_TRAFFIC_CAR_PASSING)
    /// Traffic Car Passing Alarm (correspond to ALARM_TRAFFIC_CAR_PASSING)
    /// </summary>
    public struct NET_ALARM_TRAFFIC_CAR_PASSING_INFO
    {
        /// <summary>
        /// / 事件动作 0:脉冲
        /// Event Action 0: Pulse
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 通道号
        /// Channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 事件名称
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 事件ID
        /// Event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / 事件发生的时间，设备本地时间
        /// Time of event, device local time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件发生时间，表示毫秒
        /// The time when the event occurred, in milliseconds
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// / 时区索引，参见时区列表TIME_ZONE_TYPE
        /// TimeZone, See TIME_ZONE_TYPE
        /// </summary>
        public uint nTimeZone;
        /// <summary>
        /// / 视频分析帧序号
        /// Frame Sequence
        /// </summary>
        public uint nFrameSequence;
        /// <summary>
        /// / 车辆进出个数
        /// Car Passing Count
        /// </summary>
        public int nCarPassingCount;
        /// <summary>
        /// / 车辆进出信息
        /// Car Passing Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_CAR_PASSING_INFO[] stuCarPassing;
        /// <summary>
        /// / 保留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_PRE_HEAT_IMAGING_TEMPER对应的数据描述信息
    /// event type EVENT_IVS_PRE_HEAT_IMAGING_TEMPER corresponding to data block description info
    /// </summary>
    public struct NET_DEV_EVENT_PRE_HEAT_IMAGING_TEMPER_INFO
    {
        /// <summary>
        /// / 通道号
        /// / Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲,1:开始, 2:停止
        /// / 0:Pulse, 1:start, 2:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 扩展协议字段
        /// / Extending the protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件发生的时间
        /// / The time when the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件编号
        /// / Event number
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 通道
        /// / Channel
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// / 预置点
        /// / Preset
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// / 预置点名称
        /// / Preset name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// / 温度异常点名称（测温规则名称）
        /// / Temperature exception roll call name (temperature monitoring rule name)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 报警项编号（测温规则编号）
        /// / Alarm item number (temperature monitoring rule number)
        /// </summary>
        public int nAlarmId;
        /// <summary>
        /// / 报警温度值
        /// / Alarm temperature value
        /// </summary>
        public float fTemperatureValue;
        /// <summary>
        /// / 温度单位
        /// / Temperature Units
        /// </summary>
        public EM_A_NET_TEMPERATURE_UNIT emTemperatureUnit;
        /// <summary>
        /// / 报警区域顶点实际个数
        /// / Alarm area actual number of vertices
        /// </summary>
        public int nCoordinateCnt;
        /// <summary>
        /// / 报警区域顶点（测温区域；类型可以是点，线或多边形。坐标取值均为0~8191）
        /// / Alarm area vertex (temperature monitoring area; type can be point, line or polygon. Coordinate values are all 0~8191)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT_EX[] stuCoordinate;
        /// <summary>
        /// / 报警条件
        /// / Alarm conditions
        /// </summary>
        public EM_A_NET_RADIOMETRY_ALARMCONTION emAlarmContion;
        /// <summary>
        /// / 报警结果
        /// / Alarm results
        /// </summary>
        public EM_A_NET_RADIOMETRY_RESULT emResult;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string reserved;
    }

    /// <summary>
    /// 每个屏蔽区的测温屏蔽区配置信息
    /// Indicates the configuration information of each shield zone
    /// </summary>
    public struct NET_THERMOMETRY_SHIELD_INFO
    {
        /// <summary>
        /// / 屏蔽使能, TRUE开启, FALSE关闭
        /// Masking is enabled.
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 屏蔽区编号
        /// Mask area number
        /// </summary>
        public int nShieldId;
        /// <summary>
        /// / 自定义名称
        /// Customize the name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// / 屏蔽区坐标，矩形区域使用相对坐标体系，取值均为0~8191
        /// Shield area coordinate, rectangular area uses relative coordinates system, the value is 0~8191
        /// </summary>
        public NET_RECT stuRect;
        /// <summary>
        /// / 预置点编号
        /// The preset point number
        /// </summary>
        public int nPresetId;
        /// <summary>
        /// / 屏蔽区域实际顶点个数
        /// Shield area actual number of vertices
        /// </summary>
        public int nCoordinatesCnt;
        /// <summary>
        /// / 屏蔽区域，多边形，最多支持8个点；使用该参数时，stuRect不生效；坐标点使用相对坐标体系，取值均为0~8191
        /// Shield area, polygon, supports up to 8 points; when using this parameter, stuRect is not effective; coordinate points use the relative coordinates system, and the values are all 0~8191
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_POINT_EX[] stuCoordinates;
        /// <summary>
        /// / 屏蔽区生效模式；分为手动：1，自动：2；手动根据时间段生效，自动根据ICR自主切换
        /// Shielding zone effective mode; divided into manual: 1, automatic: 2; manual takes effect according to period, automatic switches automatically according to ICR
        /// </summary>
        public int nMode;
        /// <summary>
        /// / 屏蔽区生效时间段，仅手动模式下有效
        /// Shielding zone effective time section, valid only in manual mode
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szTimeSection;
        /// <summary>
        /// / 预留字段
        /// Reserve fields
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 56)]
        public string szReserved;
    }

    /// <summary>
    /// 屏蔽区的测温屏蔽区配置信息
    /// Indicates the configuration information of each shield zone
    /// </summary>
    public struct NET_CFG_THERMOMETRY_SHIELD_INFO
    {
        /// <summary>
        /// / 结构体大小, 必填项
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 1 获取配置时，每个通道实际返回的测温屏蔽区配置个数
        /// / 2 设置配置时，设置的配置个数
        /// 1 Indicates the number of temperature shielding zone configurations returned by each channel when obtaining the configuration
        /// 2 Set the number of configurations to be set
        /// </summary>
        public uint nRealInfoNumOfEachChennel;
        /// <summary>
        /// / 每个通道的测温屏蔽区配置信息，每个通道最多支持12个屏蔽区
        /// The configuration information of the temperature shield zone for each channel. Each channel supports a maximum of 12 shield zones
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
        public NET_THERMOMETRY_SHIELD_INFO[] stuThermometryShieldInfo;
    }

    /// <summary>
    /// 通道类型
    /// channels type
    /// </summary>
    public enum EM_CHANNELS_STATE_TYPE
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_CHANNELS_STATE_TYPE_UNKNOWN,
        /// <summary>
        /// / 所有通道
        /// all channels
        /// </summary>
        EM_CHANNELS_STATE_TYPE_ALL,
        /// <summary>
        /// / 报警输入通道
        /// alarm in
        /// </summary>
        EM_CHANNELS_STATE_TYPE_ALARMIN,
        /// <summary>
        /// / 报警输出通道
        /// alarm out
        /// </summary>
        EM_CHANNELS_STATE_TYPE_ALARMOUT,
        /// <summary>
        /// / 警号通道
        /// siren
        /// </summary>
        EM_CHANNELS_STATE_TYPE_SIREN,
    }

    /// <summary>
    /// 获取通道状态查询条件
    /// query conditions for get channel status
    /// </summary>
    public struct NET_CHANNELS_STATE_CONDITION
    {
        /// <summary>
        /// / 通道类型
        /// type
        /// </summary>
        public EM_CHANNELS_STATE_TYPE emType;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 获取通道状态 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_CHANNELSSTATE
    /// CLIENT_GetAlarmRegionInfo InParam. emType is NET_EM_GET_ALARMREGION_INFO_CHANNELSSTATE
    /// </summary>
    public struct NET_IN_GET_CHANNELS_STATE
    {
        /// <summary>
        /// / 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 获取通道状态查询条件
        /// query conditions for get channel status
        /// </summary>
        public NET_CHANNELS_STATE_CONDITION stuCondition;
    }

    /// <summary>
    /// 设备状态
    /// Device status
    /// </summary>
    public enum EM_DEV_STATUS
    {
        /// <summary>
        /// / 未知
        /// Unknown
        /// </summary>
        EM_DEV_STATUS_UNKNOWN = -1,
        /// <summary>
        /// / 离线
        /// Off line
        /// </summary>
        EM_DEV_STATUS_OFFLINE,
        /// <summary>
        /// / 在线
        /// On line
        /// </summary>
        EM_DEV_STATUS_ONLINE,
    }

    /// <summary>
    /// 防区异常状态
    /// zone status
    /// </summary>
    public enum EM_ZONE_STATUS
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_ZONE_STATUS_UNKNOWN,
        /// <summary>
        /// / 防区报警/打开
        /// open
        /// </summary>
        EM_ZONE_STATUS_ALARM,
        /// <summary>
        /// / 防区防拆
        /// tamper
        /// </summary>
        EM_ZONE_STATUS_TAMPER,
        /// <summary>
        /// / 防区防遮挡
        /// mask
        /// </summary>
        EM_ZONE_STATUS_MASK,
        /// <summary>
        /// / 防区短路
        /// short
        /// </summary>
        EM_ZONE_STATUS_SHORT,
        /// <summary>
        /// / 防区正常
        /// normal
        /// </summary>
        EM_ZONE_STATUS_NORMAL,
    }

    /// <summary>
    /// 输出状态
    /// Output state
    /// </summary>
    public enum EM_OUTPUT_STATE
    {
        /// <summary>
        /// / 未知
        /// Unknown
        /// </summary>
        EM_OUTPUT_STATE_UNKNOWN = -1,
        /// <summary>
        /// / 关闭
        /// Close
        /// </summary>
        EM_OUTPUT_STATE_CLOSE,
        /// <summary>
        /// / 打开
        /// Open
        /// </summary>
        EM_OUTPUT_STATE_OPEN,
    }

    /// <summary>
    /// 探测器状态信息
    /// Sensor State info
    /// </summary>
    public struct NET_SENSOR_STATE
    {
        /// <summary>
        /// / 外接电源连接状态 : 0:正常, 1:未连接
        /// External power connection status: 0: normal, 1: not connected
        /// </summary>
        public int nExPowerState;
        /// <summary>
        /// / 配件防拆状态 : 0:正常, 1:打开
        /// Accessory Tamper Status: 0: Normal, 1: Open
        /// </summary>
        public int nTamper;
        /// <summary>
        /// / 电池电量状态 : 0:正常, 1:低电量, 2:掉电
        /// Battery power status: 0: normal, 1: low power, 2: power down
        /// </summary>
        public int nLowPowerState;
        /// <summary>
        /// / 保留字节
        /// reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 244)]
        public string szReserved;
    }

    /// <summary>
    /// 通道状态
    /// channels state
    /// </summary>
    public struct NET_CHANNELS_STATE
    {
        /// <summary>
        /// / 通道类型
        /// Type
        /// </summary>
        public EM_CHANNELS_STATE_TYPE emType;
        /// <summary>
        /// / 通道号
        /// Index for channels
        /// </summary>
        public uint nIndex;
        /// <summary>
        /// / 在线状态
        /// Online state
        /// </summary>
        public EM_DEV_STATUS emOnlineState;
        /// <summary>
        /// / 报警状态，当emType为EM_CHANNELS_STATE_TYPE_ALARMIN时有效
        /// Alarm state, valid when emType is EM_CHANNELS_STATE_TYPE_ALARMIN
        /// </summary>
        public EM_ZONE_STATUS emAlarmState;
        /// <summary>
        /// / 输出状态，当emType为EM_CHANNELS_STATE_TYPE_ALARMOUT,EM_CHANNELS_STATE_TYPE_SIREN时有效
        /// Output state, valid when emType is EM_CHANNELS_STATE_TYPE_ALARMOUT, EM_CHANNELS_STATE_TYPE_SIREN
        /// </summary>
        public EM_OUTPUT_STATE emOutputState;
        /// <summary>
        /// / 通道对应名称
        /// channel name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// / 通道对应SN号
        /// channel SN
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSN;
        /// <summary>
        /// / 探测器状态信息
        /// Sensor State info
        /// </summary>
        public NET_SENSOR_STATE stuSensorState;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 60)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 获取通道状态 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_CHANNELSSTATE
    /// CLIENT_GetAlarmRegionInfo OutParam. emType is NET_EM_GET_ALARMREGION_INFO_CHANNELSSTATE
    /// </summary>
    public struct NET_OUT_GET_CHANNELS_STATE
    {
        /// <summary>
        /// / 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 通道状态个数
        /// Count of channel states
        /// </summary>
        public uint nChannelsStatesCount;
        /// <summary>
        /// / 通道状态
        /// Channel state
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_CHANNELS_STATE[] stuChannelsStates;
    }
	
	/// <summary>
    /// 查询条件
    /// Query criteria
    /// </summary>
    public struct NET_CLUSTER_DETAIL_CONDITION
    {
        /// <summary>
        /// / 聚档周期Key, 一次只能查询一个聚档周期内的数据,必填.与开始结束时间取交集
        /// Clustering period Key: Only data within one clustering period can be queried at a time. This parameter is mandatory. Take the intersection with the start and end time
        /// </summary>
        public int nClusterDate;
        /// <summary>
        /// / 是否需要过滤ProfileID
        /// Whether to filter ProfileID
        /// </summary>
        public bool bIsNeedProfileID;
        /// <summary>
        /// / 聚档结果ID，如果不带该字段或为空，则默认不过滤ProfileID
        /// Clustering result ID. If this field is not contained or is empty, ProfileID is not filtered by default
        /// </summary>
        public int nProfileID;
        /// <summary>
        /// / 批次结果ID，如果该字段为-1，则默认不过滤BatchID
        /// Batch result ID, if this field is -1, the BatchID is not filtered by default
        /// </summary>
        public int nBatchID;
        /// <summary>
        /// / 工作人员过滤条件，-1:全返回 0:仅返回非工作人员 1:仅返回工作人员
        /// Staff filtering criteria, -1: return all 0: only return non staff 1: only return staff
        /// </summary>
        public int nStaffType;
        /// <summary>
        /// / 区域过滤条件 -1视为全返回。大于等于0时根据当前区域配置过滤数据上报。区域内记录存在重叠，所以单次仅支持单区域查询。
        /// The region filter condition -1 is considered as fully returned. When greater than or equal to 0, filter data reporting based on the current regional configuration. There is overlap in records within the region, so a single query is only supported for a single region.
        /// </summary>
        public int nAreadID;
        /// <summary>
        /// / 视频通道号，有效值从1开始。
        /// / Video channel number, valid values start from 1.
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 预置点编号
        /// / Pre set point number
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// / 区域ID个数
        /// / Number of Area IDs
        /// </summary>
        public int nAreaIDExCount;
        /// <summary>
        /// / area ID
        /// / Area ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public int[] nAreaIDEx;
        /// <summary>
        /// / 是否使用标准UTC时间
        /// / Is standard UTC time used
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// / 查询起始时间, 标准UTC时间
        /// / Query start time, standard UTC time
        /// </summary>
        public NET_TIME stuStartRealUTC;
        /// <summary>
        /// / 查询结束时间, 标准UTC时间
        /// / Query end time, standard UTC time
        /// </summary>
        public NET_TIME stuEndRealUTC;
        /// <summary>
        /// / 是否使用带时区偏差的UTC事件
        /// / Whether to use UTC events with time zone deviation
        /// </summary>
        public bool bUTC;
        /// <summary>
        /// / 查询起始时间, 带时区偏差的UTC时间
        /// / Query start time, UTC time with time zone deviation
        /// </summary>
        public NET_TIME stuStartUTC;
        /// <summary>
        /// / 查询结束时间, 带时区偏差的UTC时间
        /// / Query end time, UTC time with time zone deviation
        /// </summary>
        public NET_TIME stuEndUTC;
        /// <summary>
        /// / 保留字节
        /// Reserve bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szReserved;
    }
	
	/// <summary>
    /// 接口 CLIENT_StartFindDetailNumberStatCluster 的输入参数
    /// interface CLIENT_StartFindDetailNumberStatCluster input parameters
    /// </summary>
    public struct NET_IN_START_FIND_DETAIL_CLUSTER
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 查询条件
        /// Search criteria
        /// </summary>
        public NET_CLUSTER_DETAIL_CONDITION stuCondition;
        /// <summary>
        /// / 需要查询的级联通道，从0开始；带有此字段代表透传级联前端，不带此字段代表查询当前设备
        /// / Cascade channels that need to be queried, starting from 0; With this field represents the transparent cascade front-end, without this field represents the query of the current device
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 是否支持下发级联通道字段
        /// / Does it support issuing level connectivity channel fields
        /// </summary>
        public bool bIsSupportChannel;
    }
	
	/// <summary>
    /// 接口 CLIENT_StartFindDetailNumberStatCluster 的输出参数
    /// interface CLIENT_StartFindDetailNumberStatCluster output parameters
    /// </summary>
    public struct NET_OUT_START_FIND_DETAIL_CLUSTER
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 取到的查询令牌
        /// The fetched query token
        /// </summary>
        public int nToken;
        /// <summary>
        /// / 记录总数
        /// Record the total number
        /// </summary>
        public uint nCount;
        /// <summary>
        /// / 查询该天的营业开始时间
        /// Check the opening hours for that day
        /// </summary>
        public NET_TIME_EX stuClusterBeginTime;
        /// <summary>
        /// / 查询该天的营业结束时间
        /// Check the closing hours for that day
        /// </summary>
        public NET_TIME_EX stuClusterEndTime;
    }
	
	/// <summary>
    /// 接口 CLIENT_DoFindDetailNumberStatCluster 的输入参数
    /// interface CLIENT_DoFindDetailNumberStatCluster input parameters
    /// </summary>
    public struct NET_IN_DO_FIND_DETAIL_CLUSTER
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / start接口返回的token, token保存的数量有限, 未stop的会在连接销毁时或队列满时被释放, 再用同一token访问会导致失败
        /// start Indicates the token returned by the interface. The number of tokens stored is limited. If the token is not stopped, it will be released when the connection is destroyed or the queue is full
        /// </summary>
        public int nToken;
        /// <summary>
        /// / 查询记录的开始偏移
        /// Query the start offset of a record
        /// </summary>
        public uint nStartIndex;
        /// <summary>
        /// / 查询的记录数，单次不超过1024
        /// The number of queried records cannot exceed 1024 at a time
        /// </summary>
        public uint nCount;
    }
	
	/// <summary>
    /// 查询返回的记录信息扩展
    /// Extension of query returned record information
    /// </summary>
    public struct NET_CLUSTER_DETAIL_FIND_INFO_EX
    {
        /// <summary>
        /// / 人员记录的唯一Key
        /// / Unique Key for Personnel Records
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
        public string szObjectUUID;
        /// <summary>
        /// / 预置点编号
        /// / Pre set point number
        /// </summary>
        public int nPtzPresetId;
        /// <summary>
        /// / 区域ID
        /// / Area ID
        /// </summary>
        public uint nAreaIDEx;
        /// <summary>
        /// / 标准UTC时间
        /// / Event occurrence time (standard UTC time)
        /// </summary>
        public NET_TIME stuRealUTC;
        /// <summary>
        /// / 事件发生时间
        /// / Event occurrence time
        /// </summary>
        public NET_TIME stuUTC;
        /// <summary>
        /// / 人体属性信息
        /// / Human body attribute information
        /// </summary>
        public NET_HUMAN_ATTRIBUTES_INFO stuHumanAttributesInfo;
        /// <summary>
        /// / 人体属性信息扩展
        /// / Extension of human body attribute information
        /// </summary>
        public NET_A_HUMAN_ATTRIBUTES_INFO_EX stuHumanAttributesInfoEx;
        /// <summary>
        /// / 保留字节
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2048)]
        public string szReserved;
    }

    /// <summary>
    /// 查询返回的记录信息
    /// Indicates the returned records
    /// </summary>
    public struct NET_CLUSTER_DETAIL_FIND_INFO
    {
        /// <summary>
        /// / 设备端数据库ID
        /// ID of the database on the device
        /// </summary>
        public long nRcNo;
        /// <summary>
        /// / 人员记录的唯一Key, 取32位uuid, 实际有效长度32, 由于最后一位取'\0', 数组长度扩展为40
        /// The unique Key of the person record, takes the 32-bit UUID, the actual effective length is 32, because the last bit takes '\0', the array length is extended to 40
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szTrackID;
        /// <summary>
        /// / 聚档结果ID, 对应平台的sessionID, -1及小于0的代表无效记录
        /// clustering result ID, corresponding to the sessionID of the platform, -1 or less than 0 indicates invalid records
        /// </summary>
        public long nProfileID;
        /// <summary>
        /// / 抓拍通道号
        /// Capture channel number
        /// </summary>
        public long nChannel;
        /// <summary>
        /// / 年龄, 参照人体按照年龄段上报, 0.unknow 未知, 1.child 儿童, 2.young 青年, 3.adult 成年, 4.old 老年 5.baby 婴儿
        /// Age, according to the human body according to the age of the report, 0. Unknow, 1. Child, 2.young 3.adult 4.old 5.baby
        /// </summary>
        public int nAge;
        /// <summary>
        /// / 性别 0.Unknow 未知, 1.male 男, 2.female 女, 3.other 其他
        /// What do you mean, what do you mean, what do you mean, what do you mean
        /// </summary>
        public int nGender;
        /// <summary>
        /// / 是否为员工类,算法上报, -1 非该类, 0 未知, 1 是员工类
        /// Whether it is an employee class, the algorithm reports, -1 is not this class, 0 is unknown, 1 is an employee class
        /// </summary>
        public int nStaffType;
        /// <summary>
        /// / 事件发生的时间
        /// Time when the event occurred
        /// </summary>
        public NET_TIME_EX stuEventTime;
        /// <summary>
        /// / 人员的经过属性, 0 进, 1 出, 2 过
        /// The person's pass attribute, 0 in, 1 out, 2 through
        /// </summary>
        public int nHumanState;
        /// <summary>
        /// / 表情
        /// expression
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string szEmotion;
        /// <summary>
        /// / 批次ID，客流聚档后产生，ID相同的代表为统一批次进/离店的客户,当前仅控制单次聚档唯一，当无批次信息或者未参与批次处理时，返回-1
        /// Batch ID, generated after customer flow aggregation, represents customers who enter/leave the store in a unified batch. Currently, only single aggregation is controlled to be unique. When there is no batch information or no batch processing is involved, -1 is returned
        /// </summary>
        public long nBatchID;
        /// <summary>
        /// / 查询返回的记录信息扩展, 内存由用户申请释放，大小为sizeof(NET_CLUSTER_DETAIL_FIND_INFO_EX)
        /// / Extension of query returned record information, Memory is released by user request, with a sizeof(NET_CLUSTER_DETAIL_FIND_INFO_EX)
        /// </summary>
        public IntPtr pstuClusterDetailEx;
        /// <summary>
        /// / 保留字节
        /// Reserve bytes
        /// </summary>
#if (WINDOWS_X64) || (LINUX_X64)
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 36-8)]
        public sbyte[] szReserved;
#else
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 36-4)]
        public sbyte[] szReserved;
#endif
    }

    /// <summary>
    /// 接口 CLIENT_DoFindDetailNumberStatCluster 的输出参数
    /// interface CLIENT_DoFindDetailNumberStatCluster output parameters
    /// </summary>
    public struct NET_OUT_DO_FIND_DETAIL_CLUSTER
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 实际查询返回的记录数
        /// The number of records returned by the actual query
        /// </summary>
        public uint nFound;
        /// <summary>
        /// / 返回记录实际条数
        /// Return the actual number of entries recorded
        /// </summary>
        public int nFindInfoRealNum;
        /// <summary>
        /// / 返回的记录，单次不超过1024
        /// A maximum of 1024 records are returned
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_CLUSTER_DETAIL_FIND_INFO[] stuClusterFindInfo;
    }
	
	/// <summary>
    /// 接口 CLIENT_StopFindDetailNumberStatCluster 的输入参数
    /// interface CLIENT_StopFindDetailNumberStatCluster input parameters
    /// </summary>
    public struct NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / start接口返回的token, token仅会保存
        /// start Indicates the token returned by the interface. The token is saved only
        /// </summary>
        public int nToken;
    }

    /// <summary>
    /// 接口 CLIENT_StopFindDetailNumberStatCluster 的输出参数
    /// interface CLIENT_StopFindDetailNumberStatCluster output parameters
    /// </summary>
    public struct NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 联系人记录查询条件
    /// contact record search criteria
    /// </summary>
    public struct NET_FIND_RECORD_VIDEO_TALK_CONTACT_CONDITION
    {
        public uint dwSize;
        /// <summary>
        /// / 可视对讲短号查询条件是否有效
        /// visual talk short no. search criteria is valid or not
        /// </summary>
        public bool bVTShortNumberEnable;
        /// <summary>
        /// / 可视对讲短号
        /// visual talk short no.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVTShortNumber;
        /// <summary>
        /// / 可视对讲长号查询条件是否有效
        /// visual talk long no. search criteria is valid or not
        /// </summary>
        public bool bVTLongNumberEnable;
        /// <summary>
        /// / 可视对讲长号
        /// visual talk long no.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVTLongNumber;
    }

    /// <summary>
    /// 可视对讲模拟室内机接入时的模式
    /// visual talk analog VTH input mode
    /// </summary>
    public enum EM_VIDEO_TALK_CONTACT_VTSLAVEBINDMODE
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// / 通过SlaveAddress
        /// via SubAddress
        /// </summary>
        SLAVEADDRESS,
        /// <summary>
        /// / 通过SlaveID+SlavePort
        /// via SubID+SubPort
        /// </summary>
        SLAVEID_SLAVEPORT,
    }

    /// <summary>
    /// 用户类型
    /// user type
    /// </summary>
    public enum EM_VIDEO_TALK_CONTACT_TYPE
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// / "VTH" 室内机
        /// "VTH" VTH
        /// </summary>
        VTH,
        /// <summary>
        /// / "VTO" 门口机
        /// "VTO" VTO
        /// </summary>
        VTO,
        /// <summary>
        /// / "VTS" 管理机
        /// / "VTS"
        /// </summary>
        VTS,
    }

    /// <summary>
    /// 注册方式
    /// registration method
    /// </summary>
    public enum EM_VIDEO_TALK_CONTACT_REGISTER_TYPE
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// / "public"
        /// "public"
        /// </summary>
        PUBLIC,
        /// <summary>
        /// / "local"
        /// "local"
        /// </summary>
        LOCAL,
    }

    /// <summary>
    /// 联系人记录记录集信息
    /// contact record set info
    /// </summary>
    public struct NET_RECORD_VIDEO_TALK_CONTACT
    {
        public uint dwSize;
        /// <summary>
        /// / 记录集编号,只读
        /// record set no., read-only
        /// </summary>
        public int nRecNo;
        /// <summary>
        /// / 创建时间
        /// create time
        /// </summary>
        public NET_TIME stuCreateTime;
        /// <summary>
        /// / 名字
        /// name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFirstName;
        /// <summary>
        /// / 姓
        /// last name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFamilyName;
        /// <summary>
        /// / 可视对讲短号
        /// visual talk short no.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szVTShortNumber;
        /// <summary>
        /// / 可视对讲中号
        /// visual talk middle no.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVTMiddleNumber;
        /// <summary>
        /// / 可视对讲长号,或VTH模拟室内机的序列号
        /// visual talk long no., or VTH analogue VTH SN
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVTLongNumber;
        /// <summary>
        /// / 可视对讲网络地址
        /// visual talk network address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string szVTNetAddress;
        /// <summary>
        /// / 室内机关联的门口机位置
        /// VTH link to VTO position
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVTOPosition;
        /// <summary>
        /// / 可视对讲模拟室内机接入时的模式
        /// visual talk analogue VTH input mode
        /// </summary>
        public EM_VIDEO_TALK_CONTACT_VTSLAVEBINDMODE emVTSlaveBindMode;
        /// <summary>
        /// / 该字段已废弃,使用 nVTSlaveId
        /// visual talk analogue VTH input distributor address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVTSlaveId;
        /// <summary>
        /// / 该字段已废弃,使用 nVTSlavePort
        /// visual talk analogue VTH input distributor port
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szVTSlavePort;
        /// <summary>
        /// / 可视对讲模拟室内机的地址
        /// visual talk analogue VTH address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVTSlaveAddress;
        /// <summary>
        /// / 昵称
        /// nickname
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNickname;
        /// <summary>
        /// / 备注
        /// note
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szNotes;
        /// <summary>
        /// / 用户类型
        /// user type
        /// </summary>
        public EM_VIDEO_TALK_CONTACT_TYPE emType;
        /// <summary>
        /// / 注册方式
        /// registration method
        /// </summary>
        public EM_VIDEO_TALK_CONTACT_REGISTER_TYPE emRegisterType;
        /// <summary>
        /// / 注册密码
        /// registration password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVTHPassword;
        /// <summary>
        /// / 所属幢号
        /// building no.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVTOBuilding;
        /// <summary>
        /// / 所属单元号
        /// unit no.
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szVTOUnit;
        /// <summary>
        /// / 所属群组
        /// group
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szGroupNumber;
        /// <summary>
        /// / 可视对讲模拟室内机接入时的分配器地址
        /// VT Sub ID
        /// </summary>
        public int nVTSlaveId;
        /// <summary>
        /// / 可视对讲模拟室内机接入时的分配器端口
        /// VT Sub Port
        /// </summary>
        public int nVTSlavePort;
        /// <summary>
        /// / 房间内人员姓名个数
        /// Number of names of personnel in the room
        /// </summary>
        public int nMemberNames;
        /// <summary>
        /// / 房间内人员姓名
        /// Name of personnel in the room
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10 * 15)]
        public string szMemberNames;
        /// <summary>
        /// / 保持字节对齐
        /// Maintain byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6)]
        public string szReserved;
        /// <summary>
        /// / 是否使用扩展昵称字段
        /// / Weather to use the extended nickname field
        /// </summary>
        public bool bUseNicknameEx;
        /// <summary>
        /// / 昵称扩展
        /// / Nickname extern
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szNicknameEx;
    }
	
	   /// <summary>
    /// 云台可视域状态结构
    /// PTZ conditions for visual structure
    /// </summary>
    public struct NET_A_OUT_PTZ_VIEW_RANGE_STATUS
    {
        public uint dwSize;
        /// <summary>
        /// / 可视距离, 单位:米
        /// Visual range, the unit: m
        /// </summary>
        public double dbDistance;
        /// <summary>
        /// / 水平可视角度, 0~1800, 单位:十分之一度
        /// Horizontal viewing angles, 0~1800, unit: 1/10 degrees
        /// </summary>
        public int nAngelH;
        /// <summary>
        /// / 水平方位角度, 0~3600, 单位:十分之一度
        /// Horizontal azimuth Angle, 0 ~ 3600, unit: 1/10 degrees
        /// </summary>
        public int nAzimuthH;
        /// <summary>
        /// / 水平倾斜角度, -900~900, 单位:十分之一度
        /// Horizontal inclination angle, -900~900, unit: 1/10 degree
        /// </summary>
        public int nInclinationH;
        /// <summary>
        /// / 垂直可视角度, 0~1800, 单位:十分之一度
        /// Vertical viewing angles, 0~1800, unit: 1/10 degrees
        /// </summary>
        public int nAngelV;
        /// <summary>
        /// / 垂直方位角度, 0~3600, 单位:十分之一度
        /// Vertical azimuth Angle, 0 ~ 3600, unit: 1/10 degrees
        /// </summary>
        public int nAzimuthV;
        /// <summary>
        /// / 水平角度，扩大100倍值，[0-36000]
        /// / Horizontal angle, increase by 100 times the value,[0-36000]
        /// </summary>
        public int nPan;
        /// <summary>
        /// / 垂直角度，扩大100倍值，[-18000-18000]
        /// / Vertical angle, increase by 100 times the value,[-18000-18000]
        /// </summary>
        public int nTilt;
        /// <summary>
        /// / 显示放大倍数，扩大100倍值，[0-MaxZoom*100]
        /// / Display magnification, increase the value by 100 times,[0-MaxZoom*100]
        /// </summary>
        public int nZoom;
    }

    /// <summary>
    /// 订阅可视域输入参数
    /// Subscribe to the visible range input parameters
    /// </summary>
    public struct NET_IN_VIEW_RANGE_STATE
    {
        public uint dwSize;
        /// <summary>
        /// / 云台通道
        /// PTZ channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 状态回调函数
        /// State Callback Function
        /// </summary>
        public fViewRangeStateCallBack cbViewRange;
        /// <summary>
        /// / 用户数据
        /// User Data
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// 订阅可视域输出参数
    /// Subscribe to the visible range output parameters
    /// </summary>
    public struct NET_OUT_VIEW_RANGE_STATE
    {
        public uint dwSize;
    }
	
	/// <summary>
    /// 增益设置
    /// Gain config
    /// </summary>
    public struct NET_CFG_THERMO_GAIN
    {
        /// <summary>
        /// 自动增益控制 [0-255]具体取值范围由能力决定
        /// auto gain control [0-255] detailed value range depending on capacity
        /// </summary>
        public int nAgc;
        /// <summary>
        /// 最大自动增益 [0-255]具体取值范围由能力决定
        /// max auto gain [0-255] detailed value range depending on capacity
        /// </summary>
        public int nAgcMaxGain;
        /// <summary>
        /// 增益均衡 具体取值范围由能力决定
        /// gain balance, detailed value range depending on capacity
        /// </summary>
        public int nAgcPlateau;
    }

    /// <summary>
    /// 热成像自动增益设置
    /// thermal imaging auto gain setup
    /// </summary>
    public struct NET_CFG_THERMO_AUTO_GAIN
    {
        /// <summary>
        /// 温度超过此设定值时，自动切换到温度异常模式
        /// when temperature exceeds this set value, auto switch to Abnormal temperature mode
        /// </summary>
        public int nLowToHigh;
        /// <summary>
        /// 由温度异常切换到温度异常时的ROI 百分比0~100
        /// ROI percentage 0~100 when switch from low to Abnormal temperature
        /// </summary>
        public int nLHROI;
        /// <summary>
        /// 温度下降到此设定值时，自动切换到温度异常模式
        /// when temperature lower to this set value, auto switch to Abnormal temperature mode
        /// </summary>
        public int nHighToLow;
        /// <summary>
        /// 由温度异常切换到温度异常时的ROI 百分比0~100
        /// ROI percentage 0~100 when switch from high to Abnormal temperature
        /// </summary>
        public int nHLROI;
    }

    /// <summary>
    /// 热成像色彩
    /// Thermal image color
    /// </summary>
    public enum EM_THERMO_COLORIZATION
    {
        /// <summary>
        /// / 未知
        /// Unknown
        /// </summary>
        UNKNOWN,
        /// <summary>
        /// / 白热
        /// White
        /// </summary>
        WHITE_HOT,
        /// <summary>
        /// / 黑热
        /// Black
        /// </summary>
        BLACK_HOT,

        /// <summary>
        /// / 铁红
        /// Iron
        /// </summary>
        IRONBOW2,
        /// <summary>
        /// / 冰火
        /// Icefire
        /// </summary>
        ICEFIRE,
        /// <summary>
        /// / 聚变
        /// Fusion
        /// </summary>
        FUSION,
        /// <summary>
        /// / 彩虹
        /// Rainbow
        /// </summary>
        RAINBOW,
        /// <summary>
        /// / 金秋
        /// Globow
        /// </summary>
        GLOBOW,
        /// <summary>
        /// / 午日
        /// Ironbow1
        /// </summary>
        IRONBOW1,
        /// <summary>
        /// / 琥珀
        /// Sepia
        /// </summary>
        SEPIA,
        /// <summary>
        /// / 玉石
        /// Color1
        /// </summary>
        COLOR1,
        /// <summary>
        /// / 夕阳
        /// Color2
        /// </summary>
        COLOR2,
        /// <summary>
        /// / 油画
        /// Rain
        /// </summary>
        RAIN,
        /// <summary>
        /// / 石榴
        /// RedHot
        /// </summary>
        RED_HOT,
        /// <summary>
        /// / 翡翠
        /// GreenHot
        /// </summary>
        GREEN_HOT,
        /// <summary>
        /// / 春
        /// Spring
        /// </summary>
        SPRING,
        /// <summary>
        /// / 夏
        /// Summer
        /// </summary>
        SUMMER,
        /// <summary>
        /// / 冬
        /// Winter
        /// </summary>
        WINTER,
        /// <summary>
        /// / 秋
        /// Autumn
        /// </summary>
        AUTUMN,
        /// <summary>
        /// / 伪彩
        /// Alarm
        /// </summary>
        ALARM,
    }

    /// <summary>
    /// 热成像配置，单个模式的配置
    /// thermal imaging config, single mode config
    /// </summary>
    public struct NET_CFG_THERMOGRAPHY_OPTION
    {
        /// <summary>
        /// 倍数
        /// zoom
        /// </summary>
        public int nEZoom;
        /// <summary>
        /// 伽马值
        /// gamma value
        /// </summary>
        public int nThermographyGamma;
        /// <summary>
        /// 伪彩色，见 EM_THERMO_COLORIZATION
        /// pseudo-color, see EM_THERMO_COLORIZATION
        /// </summary>
        public int nColorization;
        /// <summary>
        /// 智能场景优化指数 0 ~100， 具体取值范围由能力决定
        /// intelligent scene optimization indicator 0~100, detailed range depending on capacity
        /// </summary>
        public int nSmartOptimizer;
        /// <summary>
        /// 是否开启感兴趣区域，只有感兴趣区域内的信息会被纳入统计用来做自动亮度调整（AGC）
        /// whether enable ROI, only ROI info will be included in statistics for AGC
        /// </summary>
        public bool bOptimizedRegion;
        /// <summary>
        /// 感兴趣区域类型，见 NET_THERMO_ROI
        /// ROI type, see NET_THERMO_ROI
        /// </summary>
        public int nOptimizedROIType;
        /// <summary>
        /// 自定义区域个数
        /// custom region number
        /// </summary>
        public int nCustomRegion;
        /// <summary>
        /// 自定义区域，仅在 nOptimizedROIType 为 NET_THERMO_ROI_CUSTOM 时有效
        /// custom region, only valid when nOptimizedROIType is NET_THERMO_ROI_CUSTOM
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_CFG_RECT[] stCustomRegions;
        /// <summary>
        /// 此保留字段确保此结构布局与 NET_THERMO_GRAPHY_INFO 相同
        /// this reserved field make sure this structure layout match NET_THERMO_GRAPHY_INFO
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string Reserved;
        /// <summary>
        /// 温度异常下的增益设置
        /// Gain config on microtherm
        /// </summary>
        public NET_CFG_THERMO_GAIN stuLowTempGain;
        /// <summary>
        /// 增益模式，参见 CFG_THERMO_GAIN_MODE
        /// gain mode, see CFG_THERMO_GAIN_MODE
        /// </summary>
        public int nGainMode;
        /// <summary>
        /// 自动增益设置，只在增益模式为 CFG_THERMO_GAIN_MODE_AUTO 有效
        /// auto gain setup, only valid when gain mode is CFG_THERMO_GAIN_MODE_AUTO
        /// </summary>
        public NET_CFG_THERMO_AUTO_GAIN stAutoGain;
        /// <summary>
        /// 温度异常下的增益设置
        /// Gain config on high therm
        /// </summary>
        public NET_CFG_THERMO_GAIN stuHighTempGain;
        /// <summary>
        /// 基准亮度
        /// Base brightness
        /// </summary>
        public int nBaseBrightness;
        /// <summary>
        /// 拉伸强度
        /// Stretch intensity
        /// </summary>
        public int nStretchIntensity;
        /// <summary>
        /// 区域增强位置,增加本区域与周边的对比度,8192坐标系
        /// The area which will increase the contrast in this area,0~8192
        /// </summary>
        public NET_CFG_RECT stuContrastRect;
    }

    /// <summary>
    /// 热成像配置
    /// thermal imaging config
    /// </summary>
    public struct NET_CFG_THERMOGRAPHY_INFO
    {
        /// <summary>
        /// 模式个数，目前只有一个
        /// mode number, only one currently
        /// </summary>
        public int nModeCount;
        /// <summary>
        /// 对应不同模式的配置
        /// corresponding to different mode config
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_CFG_THERMOGRAPHY_OPTION[] stOptions;
    }

    /// <summary>
    /// 目标数据
    /// Target data
    /// </summary>
    public struct NET_ALARM_UPLOAD_FS_DATA
    {
        /// <summary>
        /// / 年龄,-1表示该字段数据无效
        /// / Age, -1 indicates that the data in this field is invalid
        /// </summary>
        public int nAge;
        /// <summary>
        /// / 目标特征数组有效个数,与 emFeature 结合使用
        /// / Effective number of target feature arrays
        /// </summary>
        public uint nFeatureValidNum;
        /// <summary>
        /// / 目标特征数组,与 nFeatureValidNum 结合使用
        /// / Target feature array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE[] emFeature;
        /// <summary>
        /// / 性别
        /// / Gender
        /// </summary>
        public EM_DEV_EVENT_FACEDETECT_SEX_TYPE emSex;
        /// <summary>
        /// / 口罩状态
        /// / Mask status
        /// </summary>
        public EM_MASK_STATE_TYPE emMask;
        /// <summary>
        /// / 胡子状态
        /// / Beard state
        /// </summary>
        public EM_BEARD_STATE_TYPE emBeard;
        /// <summary>
        /// / 戴眼镜状态
        /// / Wearing glasses status
        /// </summary>
        public EM_GLASS_STATE_TYPE emGlass;
        /// <summary>
        /// / 人脸抓拍质量分数, 取值范围 0~10000
        /// / Facial capture quality score, ranging from 0 to 10000
        /// </summary>
        public uint nFaceQuality;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 图片信息
    /// Image information
    /// </summary>
    public struct NET_RECOGNITION_PIC_INFO
    {
        /// <summary>
        /// / 图片是否算法检测出来的检测过的提交识别服务器时,
        /// / 则不需要再时检测定位抠图,1:检测过的,0:没有检测过
        /// / When the image is detected by the algorithm and submitted to the recognition server,
        /// / Then there is no need to detect the location cutout again, 1: detected, 0: not detected
        /// </summary>
        public bool bIsDetected;
        /// <summary>
        /// / 文件在二进制数据块中的偏移位置, 单位:字节
        /// / The offset position of the file in the binary data block, in bytes
        /// </summary>
        public uint nOffSet;
        /// <summary>
        /// / 文件大小, 单位:字节
        /// / File size, in bytes
        /// </summary>
        public uint nLenth;
        /// <summary>
        /// / 图片宽度
        /// / image width
        /// </summary>
        public uint nWidth;
        /// <summary>
        /// / 图片高度
        /// / Image height
        /// </summary>
        public uint nHeight;
        /// <summary>
        /// / 文件路径
        /// / File Path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFilePath;
        /// <summary>
        /// / 图片ID
        /// / Image ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPictureID;
        /// <summary>
        /// / / 该图片建模状态 0-未知
        /// / 1-建模失败,可能是图片不符合要求,需要换图片
        /// / 2-有可用的特征值(有一张图计算过特征值即可)
        /// / 3-正在计算特征值(实际的计算过程通常只有几十毫秒，主要用于批量重建人脸特征值时，排在批量队列后面的人脸。无特征值时，会切换到此状态)
        /// / 4-已建模，但算法升级导致数据不可用，需要重新建模
        /// / / The modeling status of this image is 0-unknown
        /// / 1-Modeling failed, possibly due to the image not meeting the requirements and needs to be replaced
        /// / 2-There are available eigenvalues (a graph with calculated eigenvalues is sufficient)
        /// / 3-Calculating feature values (the actual calculation process usually takes only a few tens of milliseconds, 
        /// mainly used for batch reconstruction of facial feature values, for faces that are ranked behind the batch queue. When there are no feature values, this state will be switched)
        /// / 4-Modeled, but algorithm upgrade results in data unavailability, requiring re modeling
        /// </summary>
        public uint nFeatureState;
        /// <summary>
        /// / 建模失败原因，只有在建模状态为建模失败时用
        /// /0-未知
        /// /1-图片格式问题
        /// /2-无人脸或不够清晰
        /// /3-多个人脸
        /// /4-图片解码失败
        /// /5-不推荐入库
        /// /6-数据库操作失败
        /// /7-获取图片失败
        /// /8-系统异常（如Licence失效、建模分析器未启动导致的失败）
        /// /9-水平角
        /// /10-俯仰角
        /// /11-整图中人脸最大占比
        /// /12-整图中人脸最小占比
        /// /13-人脸瞳距大小
        /// /14-人脸属性判断
        /// /15-人脸对齐分数
        /// / The reason for modeling failure is only used when the modeling status is modeling failure
        /// /0-unknown
        /// /1-Image format issue
        /// /2-No face or not clear enough
        /// /3-Multiple faces
        /// /4-Image decoding failed
        /// /5-Not recommended for storage
        /// /6-Database operation failed
        /// /7-Failed to obtain image
        /// /8-System exceptions (such as license failure, failure caused by modeling analyzer not starting)
        /// /9-Horizontal angle
        /// /10-Pitch angle
        /// /11-The maximum proportion of faces in the entire image
        /// /12-Minimum proportion of faces in the entire image
        /// /13-Facial pupillary distance size
        /// /14-Facial attribute judgment
        /// /15-Facial alignment score
        /// </summary>
        public uint nFeatureErrCode;
        /// <summary>
        /// / 修改时对于该图片的操作，无该字段或值为0表示修改图片。0-修改 1-新增 2-删除
        /// / When modifying the image, the absence of this field or a value of 0 indicates the modification of the image. 0- Modify 1- Add 2- Delete
        /// </summary>
        public uint nPicOperate;
        /// <summary>
        /// / 在上传图片数据中的图片序号
        /// / Image number in uploaded image data
        /// </summary>
        public uint nIndexInData;
        /// <summary>
        /// / 保留字节,留待扩展.
        /// / Reserve bytes for expansion
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 188)]
        public string szReserved;
    }

    /// <summary>
    /// 目标识别事件，对应UPLOAD_FS_RECOGNITION
    /// Target recognition event, corresponding to UPLOAD_FS_RECOGNITION
    /// </summary>
    public struct NET_ALARM_UPLOAD_FS_RECOGNITION_INFO
    {
        /// <summary>
        /// / 通道号
        /// / Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲,1:开始, 2:停止
        /// / 0: Pulse, 1: Start, 2: Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 扩展协议字段
        /// / Extension Protocol Fields
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件发生的时间
        /// / Time of occurrence of the event
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件编号
        /// / event number
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 目标数据
        /// / Target data
        /// </summary>
        public NET_ALARM_UPLOAD_FS_DATA stuFaceData;
        /// <summary>
        /// / 检测到的物体
        /// / Detected objects
        /// </summary>
        public NET_A_MSG_OBJECT_EX2 stuObject;
        /// <summary>
        /// / 当前目标匹配到的候选对象信息
        /// / Information on candidate objects matched to the current target
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
        public NET_CANDIDATE_INFO[] stuCandidates;
        /// <summary>
        /// / 候选对象信息有效个数
        /// / Number of valid candidate object information
        /// </summary>
        public uint nCandidatesNum;
        /// <summary>
        /// / 全景图是否存在
        /// / Does the panoramic image exist
        /// </summary>
        public bool bGlobalScenePic;
        /// <summary>
        /// / 全景图片信息
        /// / Panoramic image information
        /// </summary>
        public NET_RECOGNITION_PIC_INFO stuGlobalScenePicInfo;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 508)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_BETWEEN_RULES_TEMPERDIFF_ALARM (温差报警事件)对应的数据块描述信息
    /// Event type EVENT_IVS_BETWEEN_RULES_TEMPERDIFF_ALARM indicates data block description
    /// </summary>
    public struct NET_DEV_EVENT_BETWEEN_RULES_TEMPERDIFF_ALARM_INFO
    {
        /// <summary>
        /// / 通道号
        /// / Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲,1:开始, 2:停止
        /// / 0: pulse, 1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 扩展协议字段
        /// / Extend the protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件发生的时间
        /// / Time when the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / Id TemperatureDifferenceOSD配置中的Id号
        /// / Id , The ID in Config "TemperatureDifferenceOSD"
        /// </summary>
        public uint nIndex;
        /// <summary>
        /// / 视频通道号
        /// / Video Channel ID
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 报警条件
        /// / Alarm Condition
        /// </summary>
        public EM_A_NET_RADIOMETRY_ALARMCONTION nAlarmCondition;
        /// <summary>
        /// / 温度单位
        /// / Temperature Unit
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szTemperatureUnit;
        /// <summary>
        /// / 测温规则1
        /// / ThermometryRule1
        /// </summary>
        public int nRuleId1;
        /// <summary>
        /// / 测温规则2
        /// / ThermometryRule2
        /// </summary>
        public int nRuleId2;
        /// <summary>
        /// / 报警的规则间温差值
        /// / Temperature Difference Between Alarm ThermometryRule
        /// </summary>
        public float fDiffValue;
        /// <summary>
        /// / 预置点
        /// / Preset ID
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// / 预置点名称
        /// / Preset Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szPresetName;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }
	    /// <summary>
    /// CLIENT_GetPeripheralChipPerformanceInfoByID 接口输入参数
    /// CLIENT_GetPeripheralChipPerformanceInfoByID interface input parameters
    /// </summary>
    public struct NET_IN_GET_CHIP_PERFORMANCE_BYID_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// / Size of the structure
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / List数组个数
        /// / Number of elements in the List array
        /// </summary>
        public int nListNum;
        /// <summary>
        /// / nListNum为1 list[0]为"All"时表示获取全部从片状态
        /// / When nListNum is 1 and list[0] is "All", it indicates to get the status of all sub-chips
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32 * 16)]
        public string szList;
    }

    /// <summary>
    /// 从片性能信息
    /// Sub-chip performance information
    /// </summary>
    public struct NET_CHIP_PERFORMANCE_INFO
    {
        /// <summary>
        /// / 芯片ID即槽位号
        /// / Chip ID, which is the slot number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szChip;
        /// <summary>
        /// / 功耗单位：瓦特
        /// / Power consumption, unit: Watts
        /// </summary>
        public uint nPower;
        /// <summary>
        /// / 总内存大小单位：KB
        /// / Total memory size, unit: KB
        /// </summary>
        public uint nMemTotal;
        /// <summary>
        /// / 剩余内存大小单位：KB
        /// / Remaining memory size, unit: KB
        /// </summary>
        public uint nMemFree;
        /// <summary>
        /// / CPU利用百分比单位：%
        /// / CPU usage percentage, unit: %
        /// </summary>
        public uint nCpuUsagePercent;
        /// <summary>
        /// / GPU利用百分比单位：%
        /// / GPU usage percentage, unit: %
        /// </summary>
        public uint nGpuUsagePercent;
        /// <summary>
        /// / 字节对齐
        /// / Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved1;
        /// <summary>
        /// / CPU温度，多传感器情况，使用平均值单位：摄氏度
        /// / CPU temperature (use average in case of multiple sensors), unit: Celsius
        /// </summary>
        public float fCpuTemperature;
        /// <summary>
        /// / GPU温度，多传感器情况，使用平均值单位：摄氏度
        /// / GPU temperature (use average in case of multiple sensors), unit: Celsius
        /// </summary>
        public float fGpuTemperature;
        /// <summary>
        /// / 加密芯片状态 0:未知 1: 正常 2:异常
        /// / Encryption chip status: 0 - Unknown, 1 - Normal, 2 - Abnormal
        /// </summary>
        public int nEncryChipState;
        /// <summary>
        /// / TX1最大传输速率: 单位:Mb/s
        /// / Maximum transmission speed for TX1: unit: Mb/s
        /// </summary>
        public uint nTransSpeed;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetPeripheralChipPerformanceInfoByID 接口输出参数
    /// CLIENT_GetPeripheralChipPerformanceInfoByID interface output parameters
    /// </summary>
    public struct NET_OUT_GET_CHIP_PERFORMANCE_BYID_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// / Size of the structure
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 从片性能信息个数
        /// / Number of sub-chip performance information entries
        /// </summary>
        public int nChipPerformanceInfoNum;
        /// <summary>
        /// / 从片性能信息
        /// / Sub-chip performance information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_CHIP_PERFORMANCE_INFO[] stuChipPerformanceInfo;
    }
	
	/// <summary>
    /// CLIENT_UpgraderGetChipList入参
    /// CLIENT_UpgraderGetChipList input param
    /// </summary>
    public struct NET_IN_UPGRADER_GET_CHIPLIST_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_UpgraderGetChipList出参
    /// CLIENT_UpgraderGetChipList output param
    /// </summary>
    public struct NET_OUT_UPGRADER_GET_CHIPLIST_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 可以升级的芯片数量
        /// Number of chips that can be upgraded
        /// </summary>
        public int nListNum;
        /// <summary>
        /// / 可以升级的芯片列表
        /// List of chips that can be upgraded
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32 * 16)]
        public byte[] szList;
    }

    /// <summary>
    /// CLIENT_GetPeripheralChipStateByID 接口输入参数
    /// CLIENT_GetPeripheralChipStateByID input param
    /// </summary>
    public struct NET_IN_GET_CHIP_STATE_BYID_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / List数组个数
        /// number of list
        /// </summary>
        public int nListNum;
        /// <summary>
        /// / nListNum为1 list[0]为"All"时表示获取全部从片状态
        /// When nListNum is 1 and list [0] is "All", it means that all peripheralchip are obtained
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32 * 16)]
        public byte[] szList;
    }

    /// <summary>
    /// 从片状态
    /// Chip state
    /// </summary>
    public enum EM_CHIP_STATE
    {
        /// <summary>
        /// / 未知
        /// unknow
        /// </summary>
        EM_CHIP_STATE_UNKNWON = 0,
        /// <summary>
        /// / 正常
        /// normal
        /// </summary>
        EM_CHIP_STATE_NORMAL,
        /// <summary>
        /// / 异常
        /// exception
        /// </summary>
        EM_CHIP_STATE_EXCEPTION,
        /// <summary>
        /// / 未运行
        /// not running
        /// </summary>
        EM_CHIP_STATE_NOTRUNNING,
    }

    /// <summary>
    /// 卡片状态信息
    /// Chip status information
    /// </summary>
    public struct NET_CHIP_STATE_INFO
    {
        /// <summary>
        /// / 从片信息
        /// Chip
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szChip;
        /// <summary>
        /// / 从片状态
        /// Chip state
        /// </summary>
        public EM_CHIP_STATE emChipState;
        /// <summary>
        /// / 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetPeripheralChipStateByID 接口输出参数
    /// CLIENT_GetPeripheralChipStateByID output param
    /// </summary>
    public struct NET_OUT_GET_CHIP_STATE_BYID_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 卡片状态信息个数
        /// Number of chip status information
        /// </summary>
        public int nChipStateInfoNum;
        /// <summary>
        /// / 卡片状态信息
        /// Chip status information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_CHIP_STATE_INFO[] stuChipStateInfo;
    }

    /// <summary>
    /// 色彩风格
    /// color style
    /// </summary>
    public enum EM_COLOR_STYLE_TYPE
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_COLOR_STYLE_UNKNOWN,
        /// <summary>
        /// / 柔和
        /// gentle
        /// </summary>
        EM_COLOR_STYLE_GENTLE,
        /// <summary>
        /// / 标准
        /// standard
        /// </summary>
        EM_COLOR_STYLE_STANDARD,
        /// <summary>
        /// / 艳丽
        /// plamboyant
        /// </summary>
        EM_COLOR_STYLE_FLAMBOYANT,
    }

    /// <summary>
    /// 视频输入颜色配置
    /// the color config of video input
    /// </summary>
    public struct NET_VIDEOIN_COLOR_INFO
    {
        public uint dwSize;
        /// <summary>
        /// / 配置类型，获取和设置时都要指定
        /// config type, you need set the value wether set or get config
        /// </summary>
        public EM_A_NET_EM_CONFIG_TYPE emCfgType;
        /// <summary>
        /// / 亮度0-100
        /// Brightness 0-100
        /// </summary>
        public int nBrightness;
        /// <summary>
        /// / 对比度0-100
        /// nContrast 0-100
        /// </summary>
        public int nContrast;
        /// <summary>
        /// / 饱和度0-100
        /// Saturation 0-100
        /// </summary>
        public int nSaturation;
        /// <summary>
        /// / 伽马值0-100
        /// Gamma 0-100
        /// </summary>
        public int nGamma;
        /// <summary>
        /// / 色彩风格
        /// color style
        /// </summary>
        public EM_COLOR_STYLE_TYPE emColorStyle;
        /// <summary>
        /// / 色调值0-100
        /// Tone value 0-100
        /// </summary>
        public int nHue;
        /// <summary>
        /// / 色彩抑制等级值0-100
        /// Colour Suppression Level Value 0-100
        /// </summary>
        public int nChromaSuppress;
        /// <summary>
        /// / 对应的时间段
        /// Time section
        /// </summary>
        public NET_TSECT stuTimeSection;
    }

    /// <summary>
    /// 锐度模式
    /// sharpness mode
    /// </summary>
    public enum EM_A_NET_EM_SHARPNESS_MODE
    {
        /// <summary>
        /// /自动
        /// auto
        /// </summary>
        NET_EM_SHARPNESS_AUTO,
        /// <summary>
        /// / 手动
        /// manual
        /// </summary>
        NET_EM_SHARPNESS_MANAUL,
    }

    /// <summary>
    /// 锐度配置
    /// sharpness config of video input
    /// </summary>
    public struct NET_VIDEOIN_SHARPNESS_INFO
    {
        public uint dwSize;
        /// <summary>
        /// / 配置类型，获取和设置时都要指定
        /// config type, you need set the value wether set or get config
        /// </summary>
        public EM_A_NET_EM_CONFIG_TYPE emCfgType;
        /// <summary>
        /// / 锐度模式
        /// sharpness type
        /// </summary>
        public EM_A_NET_EM_SHARPNESS_MODE emSharpnessMode;
        /// <summary>
        /// / 锐度值0-100，手动时有效
        /// value of sharpness(0-100)
        /// </summary>
        public int nSharpness;
        /// <summary>
        /// / 锐度抑制等级，0-100，0表示不抑制
        /// sharpness inhibition level
        /// </summary>
        public int nLevel;
        /// <summary>
        /// / 场景名称
        /// scene name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szName;
    }

    /// <summary>
    /// 热成像摄像头属性的局部对比度增强配置
    /// Thermal imaging local contrast enhancement config
    /// </summary>
    public struct NET_CFG_LCE_STATE_INFO
    {
        /// <summary>
        /// 局部对比度增强状态值 范围[0,128]
        /// Local Contrast Enhancement State[0,128]
        /// </summary>
        public uint unLCEValue;
        /// <summary>
        /// 直方图Y轴数据线性度,值越大图像灰度分布越宽，值越小灰度分布越集中,范围[0,32]
        /// Linearity of Y-axis histogram data,Adjust grayscale distribution. The larger the value, the more detailed the grayscale information.[0,32]
        /// </summary>
        public uint unHistGramValue;
    }

    /// <summary>
    /// 热成像测温全局配置
    /// thermal imaging Temperature Monitoring global config
    /// </summary>
    public struct NET_A_CFG_THERMOMETRY_INFO
    {
        /// <summary>
        /// 相对湿度
        /// relative humidity
        /// </summary>
        public int nRelativeHumidity;
        /// <summary>
        /// 大气温度
        /// atmospheric temperature
        /// </summary>
        public float fAtmosphericTemperature;
        /// <summary>
        /// 物体辐射系数
        /// object radiation coefficient
        /// </summary>
        public float fObjectEmissivity;
        /// <summary>
        /// 物体距离
        /// object distance
        /// </summary>
        public int nObjectDistance;
        /// <summary>
        /// 物体反射温度
        /// object reflection temperature
        /// </summary>
        public float fReflectedTemperature;
        /// <summary>
        /// 温度单位，见 TEMPERATURE_UNIT
        /// temperature unit, see TEMPERATURE_UNIT
        /// </summary>
        public int nTemperatureUnit;
        /// <summary>
        /// 色标功能使能
        /// color batch enable
        /// </summary>
        public bool bIsothermEnable;
        /// <summary>
        /// 等温线下限温度值
        /// isotherm minimum temperature value
        /// </summary>
        public int nMinLimitTemp;
        /// <summary>
        /// 等温线中位温度值
        /// isotherm median temperature value
        /// </summary>
        public int nMediumTemp;
        /// <summary>
        /// 等温线上限温度值
        /// isotherm upper limit temperature
        /// </summary>
        public int nMaxLimitTemp;
        /// <summary>
        /// 等温线饱和温度值
        /// isotherm Saturated temperature
        /// </summary>
        public int nSaturationTemp;
        /// <summary>
        /// 色温条矩形区域（OSD 位置），使用相对坐标体系，取值均为0-8191
        /// Color temperature rectangular area (OSD position), use the relative coordinates system, the value are 0-8191
        /// </summary>
        public NET_A_CFG_RECT stIsothermRect;
        /// <summary>
        /// 是否显示色标条（OSD 叠加）
        /// whether to display the color batch (OSD overlay)
        /// </summary>
        public bool bColorBarDisplay;
        /// <summary>
        /// 是否开启热点探测追踪使能
        /// whether enable hotspot detector tracking or not
        /// </summary>
        public bool bHotSpotFollow;
        /// <summary>
        /// 测温开关
        /// color temperature switch
        /// </summary>
        public bool bTemperEnable;
        /// <summary>
        /// 高色温标注颜色
        /// high color temperature color
        /// </summary>
        public NET_A_CFG_RGBA stHighCTMakerColor;
        /// <summary>
        /// 低色温标注颜色
        /// low temperature mark color
        /// </summary>
        public NET_A_CFG_RGBA stLowCTMakerColor;
        /// <summary>
        /// 是否开启冷点探测追踪使能
        /// Whether to enable cold spot detection tracking
        /// </summary>
        public bool bColdSpotFollow;
        /// <summary>
        /// 物体距离(小数部分)
        /// Decimal part of target distance
        /// </summary>
        public float fDistanceDecimalPart;
        /// <summary>
        /// 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1016)]
        public string szResvered;
    }

    /// <summary>
    /// 二次标定温度校准系数配置信息
    /// Second Calibrate Temperate Params Configuration
    /// </summary>
    public struct NET_CFG_SECOND_CALI_TEMP_PARAMS_INFO
    {
        /// <summary>
        /// / 结构体大小，必填项
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 高温档校准系数
        /// / High Calibrate Temperate Param
        /// </summary>
        public int nHighCaliTempParam;
        /// <summary>
        /// / 低温档校准系数
        /// / Low Calibrate Temperate Param
        /// </summary>
        public int nLowCaliTempParam;
        /// <summary>
        /// / 仅用于字节对齐
        /// / byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string byReserved;
    }

    /// <summary>
    /// 电梯楼层表配置项
    /// Elevator floor table configuration items
    /// </summary>
    public struct NET_ELEVATOR_FLOOR_TABLE_ITEM_INFO
    {
        /// <summary>
        /// / 楼层别名
        /// / Floor alias
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szFloorAlias;
        /// <summary>
        /// / 真实楼层
        /// / Real floor
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
        public string szFloorReal;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szReserved;
    }

    /// <summary>
    /// 电梯楼层表配置, 对应 NET_EM_CFG_ELEVATOR_FLOOR_TABLE
    /// Elevator floor table configuration, corresponding to NET_EM_CFG_ELEVATOR_FLOOR_TABLE
    /// </summary>
    public struct NET_CFG_ELEVATOR_FLOOR_TABLE_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 电梯楼层表配置项有效个数
        /// / Number of valid configuration items in the elevator floor table
        /// </summary>
        public uint nElevatorFloorTableNum;
        /// <summary>
        /// / 电梯楼层表配置项
        /// / Elevator floor table configuration items
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_ELEVATOR_FLOOR_TABLE_ITEM_INFO[] stuElevatorFloorTable;
    }

    /// <summary>
    /// 呼叫电梯命令
    /// call lift command
    /// </summary>
    public enum EM_CALLLIFT_CMD
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_CALLLIFT_CMD_UNKNOWN = -1,
        /// <summary>
        /// / 呼叫电梯到某个楼层，并开放其它任何楼层数
        /// call lift to one floor and open any other floors
        /// </summary>
        EM_CALLLIFT_CMD_ANY_FLOOR = 0,
        /// <summary>
        /// / 呼叫电梯到某个楼层，用户进去后只能按目标楼层
        /// call lift to one floor, user can only enter dest floor
        /// </summary>
        EM_CALLLIFT_CMD_DEST_FLOOR,
        /// <summary>
        /// / 呼叫电梯到某个楼层后，还需要刷卡，电梯才能运行, 默认电梯上行
        /// call lift to one floor, need to swipe card, default lift running up
        /// </summary>
        EM_CALLLIFT_CMD_CARD_UP,
        /// <summary>
        /// / 呼叫电梯到某个楼层,用户进去不用按钮，电梯会自动运行到目标楼层
        /// call lift to one floor, not need to press button, lift will automatically run to dest floor
        /// </summary>
        EM_CALLLIFT_CMD_AUTO_FLOOR,
        /// <summary>
        /// / 呼叫电梯到某个楼层后，还需要刷卡，电梯才能运行, 默认电梯下行
        /// call lift to one floor, need to swipe card, default lift running down
        /// </summary>
        EM_CALLLIFT_CMD_CARD_DOWN,
    }

    /// <summary>
    /// 呼叫电梯方式
    /// call lift action
    /// </summary>
    public enum EM_CALLLIFT_ACTION
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_CALLLIFT_ACTION_UNKNOWN = -1,
        /// <summary>
        /// / 用户通过对讲分机打开单元门锁，同时呼叫电梯到单元门处
        /// user opens unit door lock through intercom and calls lift to the unit door
        /// </summary>
        EM_CALLLIFT_ACTION_USER_UNLOCK_CALL = 0,
        /// <summary>
        /// / 用户呼叫电梯到用户所在楼层
        /// user calls lift directly to his floor
        /// </summary>
        EM_CALLLIFT_ACTION_USER_DIRECT_CALL,
        /// <summary>
        /// / 用户呼叫电梯经由某层到某层
        /// user calls lift from one floor to another
        /// </summary>
        EM_CALLLIFT_ACTION_USER_REDIRECT_CALL,
        /// <summary>
        /// / 单元门开锁，同时呼叫电梯到单元门处
        /// user opens unit door lock directly and calls lift to the unit door
        /// </summary>
        EM_CALLLIFT_ACTION_DIRECT_UNLOCK_CALL,
    }

    /// <summary>
    /// 门禁控制-呼梯(对应CLIENT_ControlDevice接口的 CTRL_ACCESS_CALL_LIFT 命令)
    /// access control - call lift(corresponding to CTRL_ACCESS_CALL_LIFT of CLIENT_ControlDevice)
    /// </summary>
    public struct NET_CTRL_ACCESS_CALL_LIFT
    {
        public uint dwSize;
        /// <summary>
        /// / 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 起始地址(楼层+房间号)
        /// source floor(floor number+room number)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szSrcFloor;
        /// <summary>
        /// / 目标地址(楼层+房间号)
        /// dest floor(floor number+room number)
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDestFloor;
        /// <summary>
        /// / 呼叫电梯命令
        /// call lift command
        /// </summary>
        public EM_CALLLIFT_CMD emCallLiftCmd;
        /// <summary>
        /// / 呼叫电梯的方式
        /// call lift action
        /// </summary>
        public EM_CALLLIFT_ACTION emCallLiftAction;
        /// <summary>
        /// / 用户ID
        /// User ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szUserID;
        /// <summary>
        /// / 呼叫电梯个数
        /// Call Lift Count
        /// </summary>
        public int nCallLiftCount;
        /// <summary>
        /// / 呼叫电梯号
        /// Call Lift Number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public int[] nCallLiftNo;
        /// <summary>
        /// / 呼梯类型
        /// Lift Caller Type
        /// </summary>
        public EM_LIFT_CALLER_TYPE emLiftCaller;
    }

    /// <summary>
    /// 前端传感器采集数据实时上报信息
    /// Real time reporting of data collected by front-end sensors
    /// </summary>
    public struct NET_VIDEOSTAT_IOT_SAMPLE_DATA
    {
        /// <summary>
        /// / 统计通道号
        /// / Statistical channel number
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 振动能量值，单位分贝
        /// / Vibration energy value, unit decibel
        /// </summary>
        public float fEnergyValue;
        /// <summary>
        /// / 温度值，单位摄氏度
        /// / Temperature value, unit Celsius
        /// </summary>
        public float fTemperature;
        /// <summary>
        /// / 采集时间
        /// / Collection time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 保留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 业务类型
    /// Analyse type
    /// </summary>
    public enum EM_VS_TYPE
    {
        /// <summary>
        /// / 活跃度分析实时数据,对应 NET_VIDEOSTAT_SUMMARY_STEREO
        /// Activity abalysis of real-time data,corresponding to NET_VIDEOSTAT_SUMMARY_STEREO
        /// </summary>
        ACTIVITY_ANALYSE = 0,
        /// <summary>
        /// / 人群分布图报表实时数据,对应 NET_VIDEOSTAT_CROWD_DISTRI_MAP
        /// Real time data of population distribution map report,corresponding to NET_VIDEOSTAT_CROWD_DISTRI_MAP
        /// </summary>
        CROWD_DISTRI_MAP = 1,
        /// <summary>
        /// / 智能停车实时数据,对应 NET_VIDEOSTAT_SUMMARY_INTELLIPARKING
        /// Smart parking real-time data,corresponding to NET_VIDEOSTAT_SUMMARY_INTELLIPARKING
        /// </summary>
        INTELLIG_PARKING = 3,
        /// <summary>
        /// / 抬头检测周期上报数据, 对应 NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION
        /// Head Lift Detection data, corresponding to NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION
        /// </summary>
        HEAD_LIFT_DETECTION = 4,
        /// <summary>
        /// / 贮柜储量检测实时上报数据, 对应 NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION
        /// Tank Capacity Detection data, corresponding to NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION
        /// </summary>
        TANK_CAPACITY_DETECTION = 5,
        /// <summary>
        /// / 到课率检测事件, 对应 NET_VIDEOSTAT_ATTENDANCE_RATE_DETECTION
        /// Attendance rate detection event, corresponding to NET_VIDEOSTAT_ATTENDANCE_RATE_DETECTION
        /// </summary>
        ATTENDANCE_RATE_DETECTION = 6,
        /// <summary>
        /// / 就座率检测事件, 对应 NET_VIDEOSTAT_SEATING_RATE_DETECTION
        /// Seat rate detection event, corresponding to NET_VIDEOSTAT_SEATING_RATE_DETECTION
        /// </summary>
        SEATING_RATE_DETECTION = 7,
        /// <summary>
        /// / 前端传感器采集数据实时上报, 对应 NET_VIDEOSTAT_IOT_SAMPLE_DATA
        /// Real time reporting of data collected by front-end sensors, corresponding to NET_VIDEOSTAT_IOT_SAMPLE_DATA
        /// </summary>
        IOT_SAMPLE_DATA = 8,
    }

    /// <summary>
    /// CLIENT_AttachVideoStatistics 输入参数
    /// CLIENT_AttachVideoStatistics input param
    /// </summary>
    public struct NET_IN_ATTACH_VIDEO_STATISTICS
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 通道号
        /// Channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 用户回调函数
        /// User callback function
        /// </summary>
        public fVideoStatisticsInfoCallBack cbCallBack;
        /// <summary>
        /// / 用户数据
        /// User data
        /// </summary>
        public IntPtr dwUser;
        /// <summary>
        /// / 业务类型
        /// Type
        /// </summary>
        public EM_VS_TYPE emType;
    }

    /// <summary>
    /// CLIENT_AttachVideoStatistics 输出参数
    /// CLIENT_AttachVideoStatistics ouput param
    /// </summary>
    public struct NET_OUT_ATTACH_VIDEO_STATISTICS
    {
        /// <summary>
        /// / 结构体大小
        /// Struct size
        /// </summary>
        public uint dwSize;
    }


    /// <summary>
    /// 经纬度标定点坐标
    /// Coordinates of latitude and longitude calibration points
    /// </summary>
    public struct NET_POINT_GPS_INFO
    {
        /// <summary>
        /// / 经度
        /// / longitude
        /// </summary>
        public double dbLongitude;
        /// <summary>
        /// / 纬度
        /// / latitude
        /// </summary>
        public double dbLatitude;
        /// <summary>
        /// / 海拔
        /// / altitude
        /// </summary>
        public double dbAltitude;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_ManualSendSMS 入参
    /// CLIENT_ManualSendSMS input parameters
    /// </summary>
    public struct NET_IN_MANUAL_SEND_SMS_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 预留对齐字节
        /// / Reserved aligned bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved;
        /// <summary>
        /// / 接收手机号码
        /// / Receive mobile phone numbers
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szReceiverNum;
        /// <summary>
        /// / 发送内容
        /// / send content
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szSendMsg;
    }

    /// <summary>
    /// CLIENT_ManualSendSMS 出参
    /// CLIENT_ManualSendSMS output parameters
    /// </summary>
    public struct NET_OUT_MANUAL_SEND_SMS_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_ManualMakeCall 入参
    /// CLIENT_ManualMakeCall input parameters
    /// </summary>
    public struct NET_IN_MANUAL_MAKE_CALL_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 预留对齐字节
        /// / Reserved aligned bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved;
        /// <summary>
        /// / 目标手机号码
        /// / Target phone number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szReceiverNum;
    }

    /// <summary>
    /// CLIENT_ManualMakeCall 出参
    /// CLIENT_ManualMakeCall output parameters
    /// </summary>
    public struct NET_OUT_MANUAL_MAKE_CALL_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 触发方式
    /// Trigger Mode
    /// </summary>
    public enum EM_TRIGGER_ALARM_MODE
    {
        /// <summary>
        /// 未知
        /// unknown
        /// </summary>
        EM_TRIGGER_ALARM_MODE_UNKOWN,
        /// <summary>
        /// "DMSS", 手机客户端
        /// "DMSS", app
        /// </summary>
        EM_TRIGGER_ALARM_MODE_DMSS,
    }

    /// <summary>
    /// CLIENT_TriggerUnifiedInfoCollectAlarm 入参
    /// CLIENT_TriggerUnifiedInfoCollectAlarm input parameters
    /// </summary>
    public struct NET_IN_TRIGGER_ALARM_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 触发方式
        /// / Trigger Mode
        /// </summary>
        public EM_TRIGGER_ALARM_MODE emTriggerMode;
        /// <summary>
        /// / 触发者名称，如，用户名称
        /// / Trigger name, such as user name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 报警联动
        /// / Alarm linkage
        /// </summary>
        public NET_ALARM_MSG_HANDLE stuEventHandler;
        /// <summary>
        /// / 经纬度标定点坐标
        /// / Coordinates of latitude and longitude calibration points
        /// </summary>
        public NET_POINT_GPS_INFO stuGPS;
        /// <summary>
        /// / 报警类型
        /// / Alarm Type
        /// </summary>
        public EM_RCEMERGENCY_CALL_TYPE emAlarmType;
    }

    /// <summary>
    /// CLIENT_TriggerUnifiedInfoCollectAlarm 出参
    /// CLIENT_TriggerUnifiedInfoCollectAlarm output parameters
    /// </summary>
    public struct NET_OUT_TRIGGER_ALARM_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
    }
	
	  /// <summary>
    /// 视频编码物件配置(对应结构体 CFG_VIDEO_WIDGET2_INFO)
    /// configuration of video encode staff(corresponding to CFG_VIDEO_WIDGET2_INFO)
    /// </summary>
    public struct NET_A_CFG_VIDEO_WIDGET2_INFO
    {
        /// <summary>
        /// 行间距倍数，倍数的基准默认是当前字体高度的十分之一，取值范围为0~5，默认值为0
        /// multiple of line space,multiple is 1/10 of current font height,value range from 0 to 5, default value is 0
        /// </summary>
        public int nOSDLineSpacing;
    }

    /// <summary>
    /// OSD显示位置
    /// The OSD display position.
    /// </summary>
    public enum EM_TITLE_POSITON
    {
        /// <summary>
        /// / 未知
        /// / Unknown
        /// </summary>
        EM_TITLE_POSITON_UNKNOW,
        /// <summary>
        /// / 右上角
        /// / Upper right corner
        /// </summary>
        EM_TITLE_POSITON_RIGHTUP,
        /// <summary>
        /// / 左上角
        /// / Upper left corner
        /// </summary>
        EM_TITLE_POSITON_LEFTUP,
        /// <summary>
        /// / 左下角
        /// / Lower left corner
        /// </summary>
        EM_TITLE_POSITON_LEFTDOWN,
        /// <summary>
        /// / 右下角
        /// / Lower right corner
        /// </summary>
        EM_TITLE_POSITON_RIGHTDOWN,
    }

    /// <summary>
    /// 时间标题信息
    /// The time title information.
    /// </summary>
    public struct NET_GBMODE_TIMETITLE_INFO
    {
        /// <summary>
        /// / 是否开启时间标题
        /// / Whether to enable the time title
        /// </summary>
        public bool bEnable;
        /// <summary>
        /// / 是否显示星期
        /// / Whether to display the week
        /// </summary>
        public bool bShowWeek;
        /// <summary>
        /// / OSD显示位置
        /// / OSD display position
        /// </summary>
        public EM_TITLE_POSITON emPositon;
        /// <summary>
        /// / 文本对齐方式: 0x0000 左对齐 0x0001 X坐标中对齐 0x0010 Y坐标中对齐 0x0011 居中
        /// / 0x0002 右对齐 0x0020 按照顶部对齐 0x0100 换行对齐
        /// / Text alignment: 0x0000 left align, 0x0001 align in X coordinate, 0x0010 align in Y coordinate, 0x0011 center
        /// / 0x0002 right align, 0x0020 align at the top, 0x0100 align with line break
        /// </summary>
        public uint nTextAlign;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szReserved;
    }

    /// <summary>
    /// OSD使能状态及文本信息
    /// OSD enable status and text information
    /// </summary>
    public struct NET_TITLE_OSD_INFO
    {
        /// <summary>
        /// / 叠加内容
        /// / Overlay content
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szText;
        /// <summary>
        /// / 是否使能osd显示
        /// / Whether to enable OSD display
        /// </summary>
        public bool nEnable;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 自定义左上角、左下角及右下角标题信息
    /// Customized title information for top-left, bottom-left, and bottom-right corners
    /// </summary>
    public struct NET_GBMODE_CUSTOMTITLE_INFO
    {
        /// <summary>
        /// / OSD显示位置
        /// / OSD display position
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szPositon;
        /// <summary>
        /// / 文本对齐方式，取值方式同上
        /// / Text alignment mode, same value type as above
        /// </summary>
        public uint nTextAlign;
        /// <summary>
        /// / OSD使能状态及文本信息有效个数;
        /// / OSD enable status and number of valid text information;
        /// </summary>
        public uint nOSDNum;
        /// <summary>
        /// / OSD使能状态及文本信息, 一般左上角数组大小为1，左下角大小为3，右下角大小为5
        /// / OSD enable status and text information, generally the array size of the top left corner is 1, the bottom left corner is 3, and the bottom right corner is 5
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_TITLE_OSD_INFO[] stuOSD;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 通道标题信息
    /// Channel title information
    /// </summary>
    public struct NET_GBMODE_CHANNELTITLE_INFO
    {
        /// <summary>
        /// / OSD显示位置
        /// / OSD display position
        /// </summary>
        public EM_TITLE_POSITON emPositon;
        /// <summary>
        /// / 文本对齐方式，取值方式同上
        /// / Text alignment mode, same value type as above
        /// </summary>
        public uint nTextAlign;
        /// <summary>
        /// / OSD使能状态及文本信息, 一般左上角数组大小为1，左下角大小为3，右下角大小为5
        /// / OSD enable status and text information, generally the array size of the top left corner is 1, the bottom left corner is 3, and the bottom right corner is 5
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_TITLE_OSD_INFO[] stuOSD;
        /// <summary>
        /// / OSD使能状态及文本信息有效个数;
        /// / OSD enable status and number of valid text information
        /// </summary>
        public uint nOSDNum;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 视频OSD国标模式配置, 对应枚举NET_EM_CFG_GBMODE
    /// Video OSD GB mode configuration, corresponding to the enumeration NET_EM_CFG_GBMODE
    /// </summary>
    public struct NET_CFG_GBMODE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// / 是否叠加到主码流视频编码
        /// / Whether to overlay on the main stream video encoding
        /// </summary>
        public bool bEncodeBlend;
        /// <summary>
        /// / 是否叠加到预览显示
        /// / Whether to overlay on preview display
        /// </summary>
        public bool bPreviewBlend;
        /// <summary>
        /// / 前景颜色
        /// / Foreground color
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public uint[] nFrontColor;
        /// <summary>
        /// / 背景颜色
        /// / Background color
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public uint[] nBackColor;
        /// <summary>
        /// / 距离视频边缘距离，单位：字符
        /// / Distance from the video edge, in characters
        /// </summary>
        public uint nMargin;
        /// <summary>
        /// / 同一区域OSD行间距，如右下角5行OSD之间的行间距，单位：字符。
        /// / Row spacing of OSDs in the same area, such as the row spacing between 5 OSDs in the bottom right corner, in characters
        /// </summary>
        public uint nRowSpacing;
        /// <summary>
        /// / 时间标题，固定在右上角，且右上角仅允许有时间标题，和原来功能一致
        /// / Time title, fixed in the top right corner and only allows time title, consistent with the original function
        /// </summary>
        public NET_GBMODE_TIMETITLE_INFO stuTimeTitle;
        /// <summary>
        /// / 自定义左上角、左下角及右下角标题信息有效个数
        /// / Customize the number of valid title information in the top left, bottom left, and bottom right corners
        /// </summary>
        public uint nCustomTitleNum;
        /// <summary>
        /// / 自定义左上角、左下角及右下角标题信息
        /// / Custom title information in the top left, bottom left and bottom right corners
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public NET_GBMODE_CUSTOMTITLE_INFO[] stuCustomTitle;
        /// <summary>
        /// / 通道标题
        /// / Channel title
        /// </summary>
        public NET_GBMODE_CHANNELTITLE_INFO stuChannelTitle;
    }

    /// <summary>
    /// 车辆行驶方向
    /// The direction of driving
    /// </summary>
    public enum EM_DRIVING_DIRECTION
    {
        /// <summary>
        /// / 未知
        /// Unknown
        /// </summary>
        EM_DRIVING_DIRECTION_UNKNOWN = 0,
        /// <summary>
        /// / 驶入
        /// In
        /// </summary>
        EM_DRIVING_DIRECTION_IN,
        /// <summary>
        /// / 驶出
        /// Out
        /// </summary>
        EM_DRIVING_DIRECTION_OUT,
    }

    /// <summary>
    /// 事件类型EVENT_IVS_CAR_DRIVING_IN_OUT(车辆驶入驶出状态事件)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_CAR_DRIVING_IN_OUT
    /// </summary>
    public struct NET_DEV_EVENT_CAR_DRIVING_IN_OUT_INFO
    {
        /// <summary>
        /// / 通道号
        /// Channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件ID
        /// Event id
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// / 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// / 车牌信息
        /// The information of plate
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// / 车身信息
        /// The information of vehicle
        /// </summary>
        public NET_MSG_OBJECT stuVehicle;
        /// <summary>
        /// / 事件对应文件信息
        /// Event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// / 表示抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束
        /// snap index,such as 3,2,1,1 means the last one,0 means there has some exception and snap stop
        /// </summary>
        public int nSequence;
        /// <summary>
        /// / 帧序号
        /// Frame sequence
        /// </summary>
        public int nFrameSequence;
        /// <summary>
        /// / 车辆行驶方向
        /// The direction of driving
        /// </summary>
        public EM_DRIVING_DIRECTION emDrivingDirection;
        /// <summary>
        /// / 大图信息
        /// Global scene image information
        /// </summary>
        public NET_EVENT_IMAGE_OFFSET_INFO stuGlobalScene;
        /// <summary>
        /// / 车位抠图信息
        /// Parking space image information
        /// </summary>
        public NET_EVENT_IMAGE_OFFSET_INFO stuParkingImage;
        /// <summary>
        /// / 车位(地磁)编号
        /// Parking ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szParkingNum;
        /// <summary>
        /// / 图片信息数组
        /// image information array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_IMAGE_INFO_EX2[] stuImageInfo;
        /// <summary>
        /// / 图片信息个数
        /// Number of image information
        /// </summary>
        public int nImageInfoNum;
        /// <summary>
        /// / 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string byReserved;
    }

    /// <summary>
    /// 综合状态
    /// all parking space status
    /// </summary>
    public enum EM_PARKINGSPACE_STATUS
    {
        EM_PARKINGSPACE_STATUS_UNKNOWN,
        /// <summary>
        /// / 占用
        /// busy
        /// </summary>
        EM_PARKINGSPACE_STATUS_BUSY,
        /// <summary>
        /// / 空闲
        /// free
        /// </summary>
        EM_PARKINGSPACE_STATUS_FREE,
        /// <summary>
        /// / 压线
        /// overline
        /// </summary>
        EM_PARKINGSPACE_STATUS_OVERLINE,
    }

    /// <summary>
    /// 车门状态
    /// car door state
    /// </summary>
    public enum EM_CAR_DOOR_STATE
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_CAR_DOOR_STATE_UNKNOWN,
        /// <summary>
        /// / 开启
        /// open
        /// </summary>
        EM_CAR_DOOR_STATE_OPEN,
        /// <summary>
        /// / 关闭
        /// close
        /// </summary>
        EM_CAR_DOOR_STATE_CLOSE,
    }

    /// <summary>
    /// 人员闯入报警标志
    /// Personnel intrusion alarm sign
    /// </summary>
    public enum EM_PERSON_INTRUDE_STATUS
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_PERSON_INTRUDE_STATUS_UNKNOWN = -1,
        /// <summary>
        /// / 无人员闯入
        /// No one broke in
        /// </summary>
        EM_PERSON_INTRUDE_STATUS_UNMANNED,
        /// <summary>
        /// / 有人员闯入
        /// Someone broke in
        /// </summary>
        EM_PERSON_INTRUDE_STATUS_SOMEONE,
    }

    /// <summary>
    /// 事件类型EVENT_IVS_PARKINGSPACE_STATUS(停车位状态事件)对应的数据块描述信息
    /// Corresponding to data block description of event type EVENT_IVS_PARKINGSPACE_STATUS
    /// </summary>
    public struct NET_DEV_EVENT_PARKINGSPACE_STATUS_INFO
    {
        /// <summary>
        /// / 通道号
        /// Channel id
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件ID
        /// Event id
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / 事件名称
        /// Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// Timestamp (in milliseconds)
        /// </summary>
        public double PTS;
        /// <summary>
        /// / 事件发生的时间
        /// Time for the event occurred
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// / 事件对应文件信息
        /// Event file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// / 视频分析的数据源地址
        /// Source
        /// </summary>
        public int nSource;
        /// <summary>
        /// / 帧序号
        /// Frame sequence
        /// </summary>
        public int nFrameSequence;
        /// <summary>
        /// / 用于标记抓拍帧
        /// for mark snap
        /// </summary>
        public int nMark;
        /// <summary>
        /// / 车位的状态
        /// Parking space status
        /// </summary>
        public EM_PARKINGSPACE_STATUS emParkingSpaceStatus;
        /// <summary>
        /// / 车位(地磁)编号
        /// Parking ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szParkingNum;
        /// <summary>
        /// / 车牌号码
        /// Plate number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szText;
        /// <summary>
        /// / 车门状态
        /// car door state
        /// </summary>
        public EM_CAR_DOOR_STATE emCarDoorState;
        /// <summary>
        /// / 车厢作业人数
        /// boxcar worker number
        /// </summary>
        public int nWorkerNum;
        /// <summary>
        /// / 车厢状态检测区域, 使用相对坐标体系，取值均为0-8191
        /// boxcar detect region, use relative coordinate system, range is 0-8191
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public NET_POINT[] stuBoxcarDetectRegion;
        /// <summary>
        /// / 车厢状态检测区域个数
        /// boxcar detect region number
        /// </summary>
        public int nBoxcarDetectRegionNum;
        /// <summary>
        /// / 车厢货物装载率，取值范围：0-100之间
        /// Cargo loading rate, value range: 0-100
        /// </summary>
        public int nLoadingRate;
        /// <summary>
        /// / 车厢内卸货长度，单位cm
        /// unloading length in the carriage, unit cm
        /// </summary>
        public int nUnLoadLength;
        /// <summary>
        /// / 人员闯入报警标志
        /// Person intruded alarm flag
        /// </summary>
        public EM_PERSON_INTRUDE_STATUS emPersonIntrudeStatus;
        /// <summary>
        /// / 预留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 472)]
        public byte[] byReserved;
    }

    /// <summary>
    /// Invite事件远程设备协议
    /// Invite Evnet remote device protocol
    /// </summary>
    public enum EM_TALKINGINVITE_REMOTEDEVICE_PROTOCOL
    {
        /// <summary>
        /// UNKNOWN;
        /// </summary>
        EM_TALKINGINVITE_REMOTEDEVICE_PROTOCOL_UNKNOWN = 0,
        EM_TALKINGINVITE_REMOTEDEVICE_PROTOCOL_HIKVISION,
    }

    /// <summary>
    /// 对讲发起方
    /// Interphone's Initiator
    /// </summary>
    public enum EM_TALKING_CALLER
    {
        /// <summary>
        /// / 未知发起方
        /// Uunbeknown Initiator
        /// </summary>
        EM_TALKING_CALLER_UNKNOWN = 0,
        /// <summary>
        /// / 对讲发起方为平台
        /// Interphone's initiator is Platform
        /// </summary>
        EM_TALKING_CALLER_PLATFORM,
        /// <summary>
        /// / 领导办公室
        /// Leader
        /// </summary>
        EM_TALKING_CALLER_LEADER,
        /// <summary>
        /// / 保安室
        /// Security
        /// </summary>
        EM_TALKING_CALLER_SECURITY,
    }

    /// <summary>
    /// Invite事件远端设备信息
    /// Invite Evnet remote device information
    /// </summary>
    public struct NET_TALKINGINVITE_REMOTEDEVICEINFO
    {
        /// <summary>
        /// / 设备IP
        /// device's IP
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szIP;
        /// <summary>
        /// / 端口
        /// port
        /// </summary>
        public int nPort;
        /// <summary>
        /// / 协议类型
        /// protocol type
        /// </summary>
        public EM_TALKINGINVITE_REMOTEDEVICE_PROTOCOL emProtocol;
        /// <summary>
        /// / 用户名
        /// user name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUser;
        /// <summary>
        /// / 密码
        /// password
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szPassword;
        /// <summary>
        /// / 保留字段
        /// reverse word
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReverse;
    }


    /// <summary>
    /// 报警事件类型ALARM_TALKING_INVITE(设备请求对方发起对讲事件)对应的数据描述信息
    /// Alarm Event TypeALARM_TALKING_INVITE Device ask Other Side InitiateInterphone Event )Corresponding Data Description Information
    /// </summary>
    public struct NET_ALARM_TALKING_INVITE_INFO
    {
        public uint dwSize;
        /// <summary>
        /// / 设备希望的对讲发起方
        /// Interphone's Initiator is Device Desired
        /// </summary>
        public EM_TALKING_CALLER emCaller;
        /// <summary>
        /// / 事件触发时间
        /// Event Triggering Time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// / 呼叫惟一标识符
        /// Unique ID for calling
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szCallID;
        /// <summary>
        /// / 表示所呼叫设备所处层级
        /// The level of current calling device
        /// </summary>
        public int nLevel;
        /// <summary>
        /// / 远端设备信息
        /// remote device info
        /// </summary>
        public NET_TALKINGINVITE_REMOTEDEVICEINFO stuRemoteDeviceInfo;
        /// <summary>
        /// / RealUTC 是否有效，bRealUTC 为 TRUE 时，用 RealUTC，否则用 stuTime 字段
        /// whether RealUTC is valid. when bRealUTC is TRUE, use RealUTC, otherwise use stuTime
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// / 事件发生的时间（标准UTC）
        /// event occur time
        /// </summary>
        public NET_TIME_EX RealUTC;
    }

    /// <summary>
    /// 均值波动次数超限报警信息
    /// Alarm information for exceeding the limit of the average fluctuation frequency
    /// </summary>
    public struct NET_VOLATILITY_ALARM_INFO
    {
        /// <summary>
        /// / 报警量化均值
        /// / Alarm quantification mean
        /// </summary>
        public float fAverageValue;
        /// <summary>
        /// / 量化值超限数值总数量，透传值，pfAlarmValue不为空时，一般等于nAlarmValueValidNum
        /// / 数组太大的时候只传总数量，即pfAlarmValue为空，且nAlarmValueSize不为0，表示只传数量的情况
        /// / When the quantified value exceeds the total number of values, the transparent value, and pfAlarmValue are not empty, they are generally equal to nAlarmValueValidNum
        /// / When the array is too large, only the total quantity is passed, that is, pfAlarmValue is empty and nAlarmValueSize is not 0, indicating that only the quantity is passed
        /// </summary>
        public int nAlarmValueSize;
        /// <summary>
        /// / 量化值超限数组，内存由NetSDK申请释放
        /// / Quantization value exceeds the limit of the array, memory is requested to be released by NetSDK
        /// </summary>
        public IntPtr pfAlarmValue;
        /// <summary>
        /// / 量化值超限数组元素有效个数，关联NetSDK申请的空间，必须用它访问pfAlarmValue
        /// / Quantification value exceeds the valid number of array elements and is associated with the space requested by NetSDK. It must be used to access pfAlarmValue
        /// </summary>
        public uint nAlarmValueValidNum;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 均值斜率超限报警信息
    /// Mean slope over limit alarm information
    /// </summary>
    public struct NET_SLOPE_ALARM_INFO
    {
        /// <summary>
        /// / 报警前量化均值斜率
        /// / Quantitative mean slope before alarm
        /// </summary>
        public float fSlopeValue;
        /// <summary>
        /// / 报警时量化均值斜率
        /// / Quantify the mean slope during alarm
        /// </summary>
        public float fAlarmValue;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_QUANTIFY_TREND（量化指标异常趋势报警事件）对应的数据块描述信息
    /// Event type EVENT_IVS_QUANTIFY_TREND(Alarm event for abnormal trend of quantitative indicators)corresponding data block description information
    /// </summary>
    public struct NET_DEV_EVENT_QUANTIFY_TREND_INFO
    {
        /// <summary>
        /// / 通道号
        /// / Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0：脉冲，1：开始，2：停止
        /// / 0: pulse, 1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 扩展协议字段
        /// / Extend the protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件发生的时间
        /// / Time when the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件编号
        /// / event number
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 相对事件时间戳，单位毫秒
        /// / Relative event timestamp, in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 事件名称
        /// / Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 突变报警类型，"Energy": 能量值 "Temperature": 温度
        /// / Mutation alarm type, "Energy": Energy value "Temperature": temperature
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szType;
        /// <summary>
        /// / 均值波动次数超限报警信息
        /// / Alarm information for exceeding the limit of the average fluctuation frequency
        /// </summary>
        public NET_VOLATILITY_ALARM_INFO stuVolatilityAlarm;
        /// <summary>
        /// / 均值斜率超限报警信息
        /// / Mean slope over limit alarm information
        /// </summary>
        public NET_SLOPE_ALARM_INFO stuSlopeAlarm;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_QUANTIFY_MUTATION（量化指标异常突变报警事件）对应的数据块描述信息
    /// Event type EVENT_IVS_QUANTIFY_MUTATION(Quantitative indicator abnormal mutation alarm event)corresponding data block description information
    /// </summary>
    public struct NET_DEV_EVENT_QUANTIFY_MUTATION_INFO
    {
        /// <summary>
        /// / 通道号
        /// / Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0：脉冲，1：开始，2：停止
        /// / 0: pulse, 1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 扩展协议字段
        /// / Extend the protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件发生的时间
        /// / Time when the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件编号
        /// / event number
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 相对事件时间戳，单位毫秒
        /// / Relative event timestamp, in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 事件名称
        /// / Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 突变报警类型，"Energy": 能量值 "Temperature": 温度
        /// / Mutation alarm type, "Energy": Energy value "Temperature": temperature
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szType;
        /// <summary>
        /// / 异常突变方向，"Up": 向上 "Down": 向下
        /// / Abnormal mutation direction, "Up": Up "Down": downward
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDirection;
        /// <summary>
        /// / 报警前量化均值
        /// / Quantitative mean before alarm
        /// </summary>
        public float fAverageValue;
        /// <summary>
        /// / 报警时的采样量化值
        /// / Sampling quantization value during alarm
        /// </summary>
        public float fAlarmValue;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_CHANNEL_ABNORMAL（IVS设备前端通道状态异常事件）对应的数据块描述信息
    /// Event type EVENT_IVS_CHANNEL_ABNORMAL(IVS device front-end channel status abnormal event)corresponding data block description information
    /// </summary>
    public struct NET_DEV_EVENT_IVS_CHANNEL_ABNORMAL_INFO
    {
        /// <summary>
        /// / 通道号
        /// / Channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0：脉冲，1：开始，2：停止
        /// / 0: pulse, 1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 扩展协议字段
        /// / Extend the protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件发生的时间
        /// / Time when the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件编号
        /// / event number
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 相对事件时间戳，单位毫秒
        /// / Relative event timestamp, in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 事件名称
        /// / Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 分类
        /// / classification
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// / 异常状态，"Normal": 正常 "Offline": 离线 "Disconnection": 断流
        /// / Abnormal state, "Normal": Normal "Offline": Offline "Disconnect": disconnect
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szStatus;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 事件类型 EVENT_IVS_LADLE_HANGING_DETECTION (挂耳检测事件)对应的数据块描述信息
    /// EVENT_IVS_LADLE_HANGING_DETECTION Description of the corresponding data block (Ladle hanging detection event)
    /// </summary>
    public struct NET_DEV_EVENT_LADLE_HANGING_DETECTION_INFO
    {
        /// <summary>
        /// / 通道号
        /// / Channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲,1:开始, 2:停止
        /// / 0: Pulse,1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 扩展协议字段
        /// / Extended protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件发生的时间
        /// / Event time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件编号，用来唯一标志一个事件
        /// / An event number that uniquely identifies an event
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 事件名称
        /// / Event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 智能事件所属大类
        /// / Event class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// / 相对事件时间戳,单位毫秒
        /// / Relative event timestamp, in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 检测到的物体信息
        /// / Detected object information
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// / 全景广角图
        /// / Panoramic view
        /// </summary>
        public NET_SCENE_IMAGE_INFO stuSceneImage;
        /// <summary>
        /// / 钢包挂耳状态，0-未知，1-空钩，2-挂钩作业中，3-挂耳完成
        /// / Ladle hanging status, 0-unknow, 1-free, 2-working, 3-finish
        /// </summary>
        public uint nLadleHangingState;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 发送图片配置，对应结构体 NET_EM_CFG_SEND_PICTURE_CONFIG
    /// Send image configuration, corresponding to NET_EM_CFG_SEND_PICTURE_CONFIG
    /// </summary>
    public struct NET_CFG_SEND_PICTURE_CONFIG_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 目标比对成功后是否向门禁发送图片
        /// / After successful target comparison, whether or not send pictures to the access control system
        /// </summary>
        public bool bSendPicFlag;
    }

    /// <summary>
    /// 多门控制校验结果
    /// multi-gate control check result
    /// </summary>
    public struct NET_CENTRAL_CHECK_RESP_INFO
    {
        /// <summary>
        /// / 0:反潜检查 1:多门互锁检查
        /// 0: anti-submarine inspection 1: multi-door interlock inspection
        /// </summary>
        public uint nAction;
        /// <summary>
        /// / 门通道, nAction为多门互锁有效
        /// Door channel, nAction is valid for multi-door interlock
        /// </summary>
        public int nDoorChannel;
        /// <summary>
        /// / 事务ID,由请求源端产生唯一ID
        /// Transaction ID, a unique ID generated by the request source
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string szTransID;
        /// <summary>
        /// / 人员编号ID, 对应nAction为反潜才有效
        /// Personnel ID, which is valid only if the corresponding nAction is anti-submarine
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szUserID;
        /// <summary>
        /// / 门读卡器ID, 对应nAction为反潜才有效
        /// Door card reader ID, valid only if the corresponding nAction is anti-submarine
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szReaderID;
        /// <summary>
        /// / 保留字节
        /// Save bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szResvered;
    }

    /// <summary>
    /// 注册集中式多门控制校验函数订阅回调数据
    /// registers the centralized multi-gate control check function to subscribe to the callback data
    /// </summary>
    public struct NET_NOTIFY_MULTI_DOOR_CTRL_CHECK_INFO
    {
        /// <summary>
        /// / 多门控制校验结果
        /// multi-gate control check result
        /// </summary>
        public NET_CENTRAL_CHECK_RESP_INFO stuReq;
        /// <summary>
        /// / 保留字节
        /// Save bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szResvered;
    }

    /// <summary>
    /// CLIENT_AttachCheckCentraMultiDoorCtrl 接口入参
    /// CLIENT_AttachCheckCentraMultiDoorCtrl Interface parameter
    /// </summary>
    public struct NET_IN_ATTACH_CHECK_CENTRA_MULTI_DOOR_CTRL_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 回调函数, 多门控制校验结果
        /// Callback function, multi-gate control check results
        /// </summary>
        public fNotifyCentraMultiDoorCtrlCheck cbfNotifyCentraMultiDoorCtrlCheck;
        /// <summary>
        /// / 需要设置回调函数的过滤器, 0:反潜检查 , 1:多门互锁检查
        /// Need to set the callback function of the filter, 0: anti-submarine check, 1: multi-gate interlock check
        /// </summary>
        public uint nAction;
        /// <summary>
        /// / 用户自定义参数
        /// User-defined parameters
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// CLIENT_AttachCheckCentraMultiDoorCtrl 接口出参
    /// CLIENT_AttachCheckCentraMultiDoorCtrl Outgoing parameter
    /// </summary>
    public struct NET_OUT_ATTACH_CHECK_CENTRA_MULTI_DOOR_CTRL_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
    }

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public struct ReaderID
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string ID;
    }

    /// <summary>
    /// CLIENT_SetAntiSubmarineRuleCfg 接口入参
    /// CLIENT_SetAntiSubmarineRuleCfg Indicates the interface
    /// </summary>
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public struct NET_IN_ANTI_SUBMARINE_RULE_CFG_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 强执行的读头ID数组第一维长度
        /// The first dimension length of the strongly executed read header ID array
        /// </summary>
        public int nForceReaderIDsNum;
        /// <summary>
        /// / 弱执行的读头ID数组第一维长度
        /// The first dimension length of the weakly executed read header ID array
        /// </summary>
        public int nWeakReaderIDsNum;
        /// <summary>
        /// / 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szReserved;
        /// <summary>
        /// / 强执行的读头ID
        /// Strong read header ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public ReaderID[] szForceReaderIDs;
        /// <summary>
        /// / 弱执行的读头ID
        /// Weakly executed read header ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public ReaderID[] szWeakReaderIDs;
    }

    /// <summary>
    /// CLIENT_SetAntiSubmarineRuleCfg 接口出参
    /// CLIENT_SetAntiSubmarineRuleCfg Interface outbound parameter
    /// </summary>
    public struct NET_OUT_ANTI_SUBMARINE_RULE_CFG_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_SetCheckResultByCentra 接口入参
    /// CLIENT_SetCheckResultByCentra Interface entry
    /// </summary>
    public struct NET_IN_CENTRA_CHECK_RESULT_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 0:反潜检查 1:多门互锁检查
        /// 0: anti-submarine inspection 1: multi-door interlock inspection
        /// </summary>
        public uint nAction;
        /// <summary>
        /// / 事务ID
        /// Transaction ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string szTransID;
        /// <summary>
        /// / 反潜触发结果 0：没有触发防反潜 1：触发防反潜,对应Action为反潜有效
        /// Anti-submarine trigger result 0: no anti-submarine is triggered. 1: anti-submarine is triggered. The corresponding Action is effective for anti-submarine
        /// </summary>
        public uint nAntiSumarineResult;
        /// <summary>
        /// / 互锁检查结果 0：没有构成互锁 1：构成互锁,对应Action为互锁有效
        /// Interlock check result 0: no interlock is formed. 1: Interlock is formed. The corresponding Action is valid for interlock
        /// </summary>
        public uint nInterLockResult;
    }

    /// <summary>
    /// CLIENT_SetCheckResultByCentra 接口出参
    /// CLIENT_SetCheckResultByCentra Interface outbound parameter
    /// </summary>
    public struct NET_OUT_CENTRA_CHECK_RESULT_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 返回错误码 0：处理成功;1：处理失败（通用错误码，尽量在后追加更具体错误码，方便客户端提示);2：该事务处理超时
        /// Error code 0: the processing succeeded. 1: processing failure (general error code, try to add more specific error code after, convenient client prompt); 2: The transaction timed out
        /// </summary>
        public uint nErrorCode;
    }

    /// <summary>
    /// CLIENT_SetInterLockRule 接口入参
    /// CLIENT_SetInterLockRule Indicates interface entry
    /// </summary>
    public struct NET_IN_INTER_LOCK_RULE_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 强执行的门通道ID数组长度
        /// Strong execution gate channel ID array length
        /// </summary>
        public int nForceDoorChannelsNum;
        /// <summary>
        /// / 弱执行的门通道ID数组长度
        /// Weak execution gate channel ID array length
        /// </summary>
        public int nWeakDoorChannelsNum;
        /// <summary>
        /// / 强执行的门通道ID
        /// Strong gate channel ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public uint[] szForceDoorChannels;
        /// <summary>
        /// / 弱执行的门通道ID
        /// Weakly executed gate channel ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public uint[] szWeakDoorChannels;
    }

    /// <summary>
    /// CLIENT_SetInterLockRule 接口出参
    /// CLIENT_SetInterLockRule Outgoing interface parameter
    /// </summary>
    public struct NET_OUT_INTER_LOCK_RULE_INFO
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// The size of this structure must be assigned
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 文件列表
    /// File list
    /// </summary>
    public struct NET_FILE_DOWNLOAD_URLS_LIST
    {
        /// <summary>
        /// / 文件下载地址
        /// / File download address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szUrl;
        /// <summary>
        /// / 备选文件下载地址个数
        /// / Number of download addresses for alternative files
        /// </summary>
        public int nSpareUrlNum;
        /// <summary>
        /// / 备选文件下载地址
        /// / Alternative file download address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8 * 256)]
        public string szSpareUrl;
        /// <summary>
        /// / 预留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_SetFileManagerDownLoadUrls 接口输入参数
    /// CLIENT_SetFileManagerDownLoadUrls Interface input parameters
    /// </summary>
    public struct NET_IN_SET_FILE_MANAGER_DOWNLOAD_URLS
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / The size of this structure must be assigned a value
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 文件列表个数
        /// / Number of file lists
        /// </summary>
        public int nFileListNum;
        /// <summary>
        /// / 文件列表
        /// / File list
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_FILE_DOWNLOAD_URLS_LIST[] stuFileList;
    }

    /// <summary>
    /// CLIENT_SetFileManagerDownLoadUrls 接口输出参数
    /// CLIENT_SetFileManagerDownLoadUrls Interface output parameters
    /// </summary>
    public struct NET_OUT_SET_FILE_MANAGER_DOWNLOAD_URLS
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / The size of this structure must be assigned a value
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 上传下载文件状态
    /// Upload and download file status
    /// </summary>
    public struct NET_NOTIFY_FILE_LOAD_STATE
    {
        /// <summary>
        /// / 操作方法, 下载文件"downloadPiece", 上传文件"uploadFile"
        /// / Operation method, download the file "downloadPiece", Upload file "uploadFile"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szMethod;
        /// <summary>
        /// / 保存在设备端的文件路径
        /// / Save the file path on the device side
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szFilePath;
        /// <summary>
        /// / 当前状态, "Preparing": 等待上传下载, "Loading": 上传下载中, "Succeeded": 上传下载完成, "Failed": 上传下载失败, "Cancelled": 上传下载取消
        /// / The current state, "Preparing": Waiting for upload and download, "Loading": During the upload and download process, "Succeeded": Upload and download completed, "Failed": Upload and download failed, "Cancelled": Upload Download Cancel
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szState;
        /// <summary>
        /// / 对应文件的唯一标识
        /// / Unique identifier of the corresponding file
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szUniqueID;
        /// <summary>
        /// / 当前文件上传下载进度，百分比
        /// / Current file upload and download progress, percentage
        /// </summary>
        public uint nProgress;
        /// <summary>
        /// / 当state为Failed时有效, 0表示未知错误, 255:未知错误, 1:文件不存在, 2:文件重复上传
        /// / Valid when state is Failed, 0 indicates unknown error, 255: unknown error, 1: file does not exist, 2: file is repeatedly uploaded
        /// </summary>
        public uint nErrorCode;
        /// <summary>
        /// / 保留字段
        /// / Reserved field
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szResvered;
    }

    /// <summary>
    /// CLIENT_AttachFileLoadState 接口入参
    /// CLIENT_AttachFileLoadState Interface input parameters
    /// </summary>
    public struct NET_IN_ATTACH_FILE_LOAD_STATE
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / The size of this structure must be assigned a value
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 字节对齐
        /// / Byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szAlign;
        /// <summary>
        /// / 回调函数
        /// / Callback
        /// </summary>
        public fNotifyFileLoadState cbNotify;
        /// <summary>
        /// / 用户自定义参数
        /// / User defined parameters
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// CLIENT_AttachFileLoadState 接口出参
    /// CLIENT_AttachFileLoadState Interface output parameters
    /// </summary>
    public struct NET_OUT_ATTACH_FILE_LOAD_STATE
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / The size of this structure must be assigned a value
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// NET_GET_FILE_LIST_CONDITION 筛选条件
    /// NET_GET_FILE_LIST_CONDITION Condition
    /// </summary>
    public struct NET_GET_FILE_LIST_CONDITION
    {
        /// <summary>
        /// / 所要获取的文件路径
        /// / Path
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
        /// <summary>
        /// / 保留字节
        /// / Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetFileList 接口输入参数
    /// CLIENT_GetFileList Interface input parameters
    /// </summary>
    public struct NET_IN_GET_FILE_LIST
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 字节对齐
        /// / Align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szAlign;
        /// <summary>
        /// / 筛选条件
        /// / Condition
        /// </summary>
        public NET_GET_FILE_LIST_CONDITION stuCondition;
    }

    /// <summary>
    /// NET_GET_FILE_LIST_FILE_LIST 文件信息
    /// NET_GET_FILE_LIST_FILE_LIST File List Info
    /// </summary>
    public struct NET_GET_FILE_LIST_FILE_LIST
    {
        /// <summary>
        /// / 文件大小,单位：字节
        /// / Size,in bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szSize;
        /// <summary>
        /// / 文件名称
        /// / Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 文件播放时长
        /// / Duration
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDuration;
        /// <summary>
        /// / 播放状态,"Idle":空闲,"Start":开始播放,"Running":播放中,"Pause":暂停播放,"Stop":停止播放
        /// / Status,"Idle","Start","Running","Pause","Stop"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szStatus;
        /// <summary>
        /// / 文件类型,"Audio":音频文件,"TXT":文本文件
        /// / FileType,"Audio","TXT"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szFileType;
        /// <summary>
        /// / 文件唯一ID
        /// / ID
        /// </summary>
        public uint nID;
        /// <summary>
        /// / 保留字节
        /// / Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 204)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_GetFileList 接口输出参数
    /// CLIENT_GetFileList Interface output parameters
    /// </summary>
    public struct NET_OUT_GET_FILE_LIST
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 文件信息返回个数
        /// / File List Return Num
        /// </summary>
        public int nFileListRetNum;
        /// <summary>
        /// / 文件信息
        /// / File List Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_GET_FILE_LIST_FILE_LIST[] stuFileList;
    }

    /// <summary>
    /// NET_SPEAKER_PROGRAM_MANAGER_FILE_LIST 文件播放信息
    /// NET_SPEAKER_PROGRAM_MANAGER_FILE_LIST File List Info
    /// </summary>
    public struct NET_SPEAKER_PROGRAM_MANAGER_FILE_LIST
    {
        /// <summary>
        /// / 音频文件路径,和文件ID二选一,优先文件ID
        /// / File Path, prefer file ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szPath;
        /// <summary>
        /// / 文件ID
        /// / File ID
        /// </summary>
        public uint nID;
        /// <summary>
        /// / 保留字节
        /// / Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// NET_SPEAKER_PROGRAM_MANAGER_PLAY_INFO 播放信息
    /// NET_SPEAKER_PROGRAM_MANAGER_PLAY_INFO Play Info
    /// </summary>
    public struct NET_SPEAKER_PROGRAM_MANAGER_PLAY_INFO
    {
        /// <summary>
        /// / 播放次数
        /// / Play Times
        /// </summary>
        public int nPlayTimes;
        /// <summary>
        /// / 文件列表数目
        /// / File List Num
        /// </summary>
        public int nFileListNum;
        /// <summary>
        /// / 文件播放信息
        /// / File List Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
        public NET_SPEAKER_PROGRAM_MANAGER_FILE_LIST[] stuFileList;
        /// <summary>
        /// / 保留字节
        /// / Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// CLIENT_StartSpeakerProgramManagerPlay 接口输入参数
    /// CLIENT_StartSpeakerProgramManagerPlay Interface input parameters
    /// </summary>
    public struct NET_IN_START_SPEAKER_PROGRAM_MANAGER_PLAY
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 字节对齐
        /// / Align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szAlign;
        /// <summary>
        /// / 节目ID
        /// / Program ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szProgramID;
        /// <summary>
        /// / 播放信息
        /// / Play Info
        /// </summary>
        public NET_SPEAKER_PROGRAM_MANAGER_PLAY_INFO stuPlayInfo;
    }

    /// <summary>
    /// CLIENT_StartSpeakerProgramManagerPlay 接口输出参数
    /// CLIENT_StartSpeakerProgramManagerPlay Interface output parameters
    /// </summary>
    public struct NET_OUT_START_SPEAKER_PROGRAM_MANAGER_PLAY
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 播放ID
        /// / Play ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlayID;
    }

    /// <summary>
    /// CLIENT_StopSpeakerProgramManagerPlay 接口输入参数
    /// CLIENT_StopSpeakerProgramManagerPlay Interface input parameters
    /// </summary>
    public struct NET_IN_STOP_SPEAKER_PROGRAM_MANAGER_PLAY
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 播放ID
        /// / Play ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlayID;
    }

    /// <summary>
    /// CLIENT_StopSpeakerProgramManagerPlay 接口输出参数
    /// CLIENT_StopSpeakerProgramManagerPlay Interface output parameters
    /// </summary>
    public struct NET_OUT_STOP_SPEAKER_PROGRAM_MANAGER_PLAY
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 当前播放文件信息
    /// Current File Info
    /// </summary>
    public struct NET_NOTIFY_PLAY_STATE_CURFILE_INFO
    {
        /// <summary>
        /// / 文件名称
        /// / Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szName;
        /// <summary>
        /// / 文件ID
        /// / ID
        /// </summary>
        public uint nID;
        /// <summary>
        /// / 保留字节
        /// / Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 68)]
        public string szResvered;
    }

    /// <summary>
    /// 播放信息
    /// Play Info
    /// </summary>
    public struct NET_NOTIFY_PLAY_STATE_PLAY_INFO
    {
        /// <summary>
        /// / 播放ID
        /// / Play ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szPlayID;
        /// <summary>
        /// / 播放状态,"Idle":空闲,"Start":开始播放,"Running":播放中,"Pause":暂停播放,"Stop":停止播放
        /// / Status,"Idle","Start","Running","Pause","Stop"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szStatus;
        /// <summary>
        /// / 节目唯一ID
        /// / Program ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szProgramID;
        /// <summary>
        /// / 播放次数
        /// / Play Times
        /// </summary>
        public int nPlayTimes;
        /// <summary>
        /// / 当前播放次数
        /// / Current Play Count
        /// </summary>
        public int nCurPlayCount;
        /// <summary>
        /// / 当前播放文件信息
        /// / Current File Info
        /// </summary>
        public NET_NOTIFY_PLAY_STATE_CURFILE_INFO stuCurFileInfo;
        /// <summary>
        /// / 保留字节
        /// / Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
        public string szResvered;
    }

    /// <summary>
    /// 回调的播放状态信息
    /// Notify Info
    /// </summary>
    public struct NET_NOTIFY_SPEAKER_PROGRAM_MANAGER_PLAY_STATE
    {
        /// <summary>
        /// / 播放信息
        /// / Play Info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_NOTIFY_PLAY_STATE_PLAY_INFO[] stuPlayInfo;
        /// <summary>
        /// / 返回播放信息数量
        /// / Play Info Num
        /// </summary>
        public int nPlayInfoNum;
        /// <summary>
        /// / 保留字段
        /// / Resvered
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szResvered;
    }

    /// <summary>
    /// CLIENT_AttachSpeakerProgramManagerPlayState 接口入参
    /// CLIENT_AttachSpeakerProgramManagerPlayState Interface input parameters
    /// </summary>
    public struct NET_IN_ATTACH_SPEAKER_PROGRAM_MANAGER_PLAY_STATE
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 字节对齐
        /// / Align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szAlign;
        /// <summary>
        /// / 回调函数
        /// / Notify function
        /// </summary>
        public fNotifySpeakerProgramManagerPlayState cbNotifyPlayState;
        /// <summary>
        /// / 用户自定义参数
        /// / User Info
        /// </summary>
        public IntPtr dwUser;
    }

    /// <summary>
    /// CLIENT_AttachSpeakerProgramManagerPlayState 接口出参
    /// CLIENT_AttachSpeakerProgramManagerPlayState Interface output parameters
    /// </summary>
    public struct NET_OUT_ATTACH_SPEAKER_PROGRAM_MANAGER_PLAY_STATE
    {
        /// <summary>
        /// / 此结构体大小,必须赋值
        /// / Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 音量输出配置
    /// Volume output configuration
    /// </summary>
    public struct NET_A_CFG_AUDIO_OUTPUT_VOLUME
    {
        /// <summary>
        /// 实际音频输出通道个数
        /// The actual number of audio output channels
        /// </summary>
        public int nAudioOutputCount;
        /// <summary>
        /// 每个元素对应一个音频输出通道的音量值,范围[0, 100]
        /// Each element corresponds to a volume value of the audio output channels, the range [0, 100]
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] szAudioOutputVolume;
    }

    /// <summary>
    /// 音量输入配置
    /// Volume input configuration
    /// </summary>
    public struct NET_A_CFG_AUDIO_INPUT_VOLUME
    {
        /// <summary>
        /// 实际音频输入通道个数
        /// The actual number of audio input channels
        /// </summary>
        public int nAudioInputCount;
        /// <summary>
        /// 每个元素对应一个音频输入通道的音量值,范围[0, 100]
        /// Each element corresponds to a volume value of the audio input channels, the range [0, 100]
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] szAudioInputVolume;
    }

    /// <summary>
    /// CLIENT_RenameRemoteFile 接口输入参数
    /// CLIENT_RenameRemoteFile's interface input param
    /// </summary>
    public struct NET_A_IN_RENAME_REMOTE_FILE
    {
        public uint dwSize;
        /// <summary>
        /// / 旧文件名
        /// old path
        /// </summary>
        public IntPtr pszOldPath;
        /// <summary>
        /// / 新文件名
        /// new path
        /// </summary>
        public IntPtr pszNewPath;
    }

    /// <summary>
    /// CLIENT_RenameRemoteFile 接口输出参数
    /// CLIENT_RenameRemoteFile's interface output param
    /// </summary>
    public struct NET_A_OUT_RENAME_REMOTE_FILE
    {
        public uint dwSize;
    }

    /// <summary>
    /// 聚档信息检测条件
    /// Aggregation information detection conditions
    /// </summary>
    public struct NET_CLUSTER_INFO_FILTER
    {
        /// <summary>
        /// / 条件类型："CustomerFlowNumTime"表示精准客流人数详细信息查询
        /// / "CustomerFlowBatchTime"表示精准客流批次详细信息查询
        /// / "getClusterCount"表示获得通道总数量
        /// / "getclusterInfo"表示聚档前查询特征信息
        /// / "getBatchInfo"表示批次前查询信息
        /// / "PlatformQueueTimeChannel"表示平台查询
        /// / Condition type: "CustomerFlowNumTime" Query detailed information on accurate passenger flow numbers
        /// / "CustomerFlowBatchTime" Query detailed information of accurate passenger flow batches
        /// / "getClusterCount" Indicates the total number of channels obtained
        /// / "getclusterInfo" Query feature information before clustering
        /// / "getBatchInfo" Indicate pre batch query information
        /// / "PlatformQueueTimeChannel" Representing platform queries
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szType;
        /// <summary>
        /// / 是否重复搜索
        /// / Whether to repeat the search
        /// </summary>
        public bool bDeDupSearch;
        /// <summary>
        /// / 聚档区域ID数组元素有效个数
        /// / Number of valid elements in the ID array of the clustering area
        /// </summary>
        public uint nClusterAreaIDNum;
        /// <summary>
        /// / 聚档区域ID数组
        /// / Cluster area ID array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public uint[] nClusterAreaID;
        /// <summary>
        /// / 聚档区域类型
        /// / Types of gathering areas
        /// </summary>
        public int nClusterAreaType;
        /// <summary>
        /// / 聚档日期
        /// / Date of gathering
        /// </summary>
        public int nClusterDate;
        /// <summary>
        /// / 批次ID
        /// / Batch ID
        /// </summary>
        public int nBatchID;
        /// <summary>
        /// / 聚档ID
        /// / Aggregation ID
        /// </summary>
        public int nProfileID;
        /// <summary>
        /// / 是否为过滤人员类，-1：非该类 0 未知 1 是过滤人员类
        /// / Is it a filtering personnel class? -1: Not this class 0 Unknown 1 is a filtering personnel class
        /// </summary>
        public int nStaffType;
        /// <summary>
        /// / 任务ID
        /// / Task ID
        /// </summary>
        public int nTaskID;
        /// <summary>
        /// / 保留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 精准客流智能回放检测条件
    /// Accurate passenger flow intelligent playback detection conditions
    /// </summary>
    public struct NET_CUSTOMER_FLOW_RECORD_FILTER_INFO
    {
        /// <summary>
        /// / 聚档信息检测条件
        /// / Aggregation information detection conditions
        /// </summary>
        public NET_CLUSTER_INFO_FILTER stuClusterInfoFilter;
        /// <summary>
        /// / 保留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 精准客流智能回放查询 ( CLIENT_FindFileEx + FILE_QUERY_CUSTOMER_FLOW_RECORD )
    /// Accurate passenger flow intelligent replay query ( CLIENT_FindFileEx + FILE_QUERY_CUSTOMER_FLOW_RECORD )
    /// </summary>
    public struct NET_MEDIAFILE_CUSTOMER_FLOW_RECORD_PARAM
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 通道号
        /// / channel number
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 精准客流智能回放检测条件
        /// / Accurate passenger flow intelligent playback detection conditions
        /// </summary>
        public NET_CUSTOMER_FLOW_RECORD_FILTER_INFO stuCustomerFlowRecordFilter;
        /// <summary>
        /// / 起始时间
        /// / starting time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// / 结束时间
        /// / End Time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// / 方向，-1：不下发 0：无效 1：进入 2：离开 3：进入和离开 4：经过
        /// / 5：进入和经过 6：离开和经过 7：进入、离开和经过
        /// / Direction, -1: not issued 0: invalid 1: enter 2: leave 3: enter and leave 4: pass through
        /// / 5: Entering and Passing 6: Leaving and Passing 7: Entering, Leaving and Passing
        /// </summary>
        public int nDirection;
        /// <summary>
        /// / 通道数组元素有效个数
        /// / Effective number of channel array elements
        /// </summary>
        public uint nChannelsNum;
        /// <summary>
        /// / 通道数组
        /// / Channel array
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public uint[] nChannels;
    }

    /// <summary>
    /// 聚档属性
    /// Aggregation attribute
    /// </summary>
    public struct NET_VALUE_CLUSTER_ATTRIBUTES_INFO
    {
        /// <summary>
        /// / 进出记录，-1：未知 0：进入 1：离开 2：经过
        /// / Entry and exit records, -1: unknown 0: enter 1: leave 2: pass through
        /// </summary>
        public int nDirection;
        /// <summary>
        /// / 聚档ID
        /// / Aggregation ID
        /// </summary>
        public int nProfileID;
        /// <summary>
        /// / 物体ID
        /// / Object ID
        /// </summary>
        public int nObjectID;
        /// <summary>
        /// / 是否为过滤人员类，-1：非该类 0 未知 1 是过滤人员类
        /// / Is it a filtering personnel class? -1: Not this class 0 Unknown 1 is a filtering personnel class
        /// </summary>
        public int nStaffType;
        /// <summary>
        /// / 系统时间
        /// / system time
        /// </summary>
        public NET_TIME stuSystemTime;
        /// <summary>
        /// / 目标ID
        /// / target ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szTrackID;
        /// <summary>
        /// / UTC时间
        /// / UTC time
        /// </summary>
        public int nSystemTimeInt;
        /// <summary>
        /// / 保留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1020)]
        public string szReserved;
    }

    /// <summary>
    /// 详细信息
    /// detailed information
    /// </summary>
    public struct NET_SUMMARY_NEW_VALUE_INFO
    {
        /// <summary>
        /// / 聚档属性
        /// / Cluster attributes
        /// </summary>
        public NET_VALUE_CLUSTER_ATTRIBUTES_INFO stuClusterAttributes;
        /// <summary>
        /// / 保留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 对应DB的查询条件
    /// Corresponding to the query conditions of the database
    /// </summary>
    public struct NET_CUSTOMER_FLOW_RECORD_SUMMARY_NEW_INFO
    {
        /// <summary>
        /// / 精准客流数据库查询
        /// / Accurate passenger flow database query
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szKey;
        /// <summary>
        /// / 详细信息
        /// / detailed information
        /// </summary>
        public NET_SUMMARY_NEW_VALUE_INFO stuValue;
        /// <summary>
        /// / 保留字节
        /// / Reserved bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 精准客流智能回放查询结果 ( CLIENT_FindNextFileEx + FILE_QUERY_CUSTOMER_FLOW_RECORD )
    /// Accurate passenger flow intelligent replay query results ( CLIENT_FindNextFileEx + FILE_QUERY_CUSTOMER_FLOW_RECORD )
    /// </summary>
    public struct NET_MEDIA_CUSTOMER_FLOW_RECORD_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 通道号
        /// / channel number
        /// </summary>
        public uint nChannel;
        /// <summary>
        /// / 起始时间
        /// / starting time
        /// </summary>
        public NET_TIME stuStartTime;
        /// <summary>
        /// / 结束时间
        /// / End Time
        /// </summary>
        public NET_TIME stuEndTime;
        /// <summary>
        /// / 对应DB的查询条件
        /// / Corresponding to the query conditions of the database
        /// </summary>
        public NET_CUSTOMER_FLOW_RECORD_SUMMARY_NEW_INFO stuSummaryNew;
        /// <summary>
        /// / 序号
        /// / Serial Number
        /// </summary>
        public int nRecNo;
    }

    /// <summary>
    /// CLIENT_GetSmokeData 入参
    /// CLIENT_GetSmokeData InParam
    /// </summary>
    public struct NET_IN_GET_SMOKE_DATA
    {
        /// <summary>
        /// / 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 通道号
        /// chanenl
        /// </summary>
        public int nChannel;
    }

    /// <summary>
    /// CLIENT_GetSmokeData 出参
    /// CLIENT_GetSmokeData OutParam
    /// </summary>
    public struct NET_OUT_GET_SMOKE_DATA
    {
        /// <summary>
        /// / 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 温度值
        /// temperature
        /// </summary>
        public float ftemperatureData;
        /// <summary>
        /// / 温度单位
        /// temperature unit
        /// </summary>
        public EM_A_NET_TEMPERATURE_UNIT emTemperatureUnit;
        /// <summary>
        /// / 湿度值，单位%RH
        /// Humidity value, in %RH
        /// </summary>
        public int nHumidityData;
        /// <summary>
        /// / 一氧化碳浓度 单位：ppm
        /// Carbon monoxide concentration unit: PPM
        /// </summary>
        public int nCOData;
        /// <summary>
        /// / 甲烷浓度， 单位：%LEL
        /// Methane concentration, unit: %LEL
        /// </summary>
        public float nCH4Data;
    }

    /// <summary>
    /// RAID错误类型
    /// RAID error type
    /// </summary>
    public enum EM_RAID_ERROR
    {
        /// <summary>
        /// / 未知
        /// unknow
        /// </summary>
        EM_RAID_ERROR_UNKNOW,
        /// <summary>
        /// / RAID错误
        /// RAID failed
        /// </summary>
        EM_RAID_ERROR_FAILED,
        /// <summary>
        /// / RAID降级
        /// RAID degraded
        /// </summary>
        EM_RAID_ERROR_DEGRADED,
    }

    /// <summary>
    /// 故障子盘状态
    /// subdisk state
    /// </summary>
    public enum EM_RAID_ERR_SUBDISK
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_RAID_ERR_SUBDISK_UNKNOWN,
        /// <summary>
        /// / 离线
        /// offline
        /// </summary>
        EM_RAID_ERR_SUBDISK_OFFLINE,
        /// <summary>
        /// / 异常
        /// faulty
        /// </summary>
        EM_RAID_ERR_SUBDISK_FAULTY,
        /// <summary>
        /// / 写错误
        /// write error
        /// </summary>
        EM_RAID_ERR_SUBDISK_WRITEERR,
    }

    /// <summary>
    /// 故障子盘详细信息
    /// subdisk detail info
    /// </summary>
    public struct NET_RAID_ERR_DETAIL_INFO
    {
        /// <summary>
        /// / 子盘槽位号
        /// subdisk slotNumber
        /// </summary>
        public uint dwSlotNum;
        /// <summary>
        /// / 子盘状态
        /// subdisk state
        /// </summary>
        public EM_RAID_ERR_SUBDISK emErrSubDisk;
        /// <summary>
        /// / 保留
        /// rerserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 新RAID异常信息 对应ALARM_RAID_STATE_EX报警
    /// NEW RAID alram,used in ALARM_RAID_STATE_EX Alarm
    /// </summary>
    public struct NET_ALARM_RAID_INFO_EX
    {
        /// <summary>
        /// / 0-开始, 1-停止
        /// 0-start, 1-stop
        /// </summary>
        public uint nAction;
        /// <summary>
        /// / 设备名称
        /// device name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szDevice;
        /// <summary>
        /// / 错误类型
        /// error type
        /// </summary>
        public EM_RAID_ERROR emErrorType;
        /// <summary>
        /// / 有效的故障子盘个数
        /// valid count of subdisk detail info
        /// </summary>
        public int nDetailNum;
        /// <summary>
        /// / 故障子盘详细信息
        /// subdisk detail info
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_RAID_ERR_DETAIL_INFO[] stuErrDetail;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 保留
        /// rerserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
        public byte[] byReserved;
    }

    /// <summary>
    /// RAID操作类型
    /// RAID operation type
    /// </summary>
    public enum EM_A_NET_RAID_OPERATE_TYPE
    {
        /// <summary>
        /// / 添加RAID
        /// add RAID
        /// </summary>
        NET_RAID_OPERATE_ADD,
        /// <summary>
        /// / 删除RAID
        /// delete RAID
        /// </summary>
        NET_RAID_OPERATE_REMOVE,
        /// <summary>
        /// / 获取RAID子设备信息, 对应结构体 NET_IN_RAID_GET_SUBDEVICE 和 NET_OUT_RAID_GET_SUBDEVICE
        /// get RAID sub device info, corresponding structure NET_IN_RAID_GET_SUBDEVICE and NET_OUT_RAID_GET_SUBDEVICE
        /// </summary>
        NET_RAID_OPERATE_GET_SUBDEVICE,
        /// <summary>
        /// / 获取RAID子设备SMART信息
        /// get RAID sub device SMART info
        /// </summary>
        NET_RAID_OPERATE_GET_SUBSMART,
        /// <summary>
        /// / 修改RAID
        /// modify RAID
        /// </summary>
        NET_RAID_OPERATE_MODIFY,
    }

    /// <summary>
    /// 获取RAID子设备信息输入参数
    /// get RAID sub device input parameter
    /// </summary>
    public struct NET_IN_RAID_GET_SUBDEVICE
    {
        public uint dwSize;
        /// <summary>
        /// / RAID名称
        /// RAID name
        /// </summary>
        public IntPtr pszRaidName;
    }

    /// <summary>
    /// 获取RAID子设备信息输出参数
    /// get RAID sub device output parameter
    /// </summary>
    public struct NET_OUT_RAID_GET_SUBDEVICE
    {
        public uint dwSize;
        /// <summary>
        /// / 子设备数量
        /// sub device quantity
        /// </summary>
        public int nSubDeviceNum;
        /// <summary>
        /// / 子设备信息
        /// sub device quantity
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_STORAGE_DEVICE[] stuSubDevices;
    }

    /// <summary>
    /// 设备通道分配配置，对应 DEVICE_CHANNEL_ALLOCATION
    /// Equipment channel allocation configuration, corresponding to DEVICE_CHANNEL_ALLOCATION
    /// </summary>
    public struct NET_CFG_DEVICE_CHANNEL_ALLOCATION_INFO
    {   
        /// <summary>
        /// / 结构体大小
        /// / Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 起始通道号（包含）
        /// / Starting channel number (including)
        /// </summary>
        public int nStartChannel;
        /// <summary>
        /// / 结束通道号（包含）
        /// / End channel number (including)
        /// </summary>
        public int nEndChannel;
    }

    /// <summary>
    /// 前端断网报警信息
    /// front IPC disconnect alarm info
    /// </summary>
    public struct NET_ALARM_FRONTDISCONNET_V3_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 通道号 从1开始
        /// channel id,start from 1
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:开始 1:停止
        /// 0:start 1:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 事件发生时间
        /// event happen time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// / 前端IPC的IP地址
        /// front IP's address
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szIpAddress;
        /// <summary>
        /// / GPS信息 仅部分设备有效。报警类型为ALARM_FRONTDISCONNECT时,此字段无效。
        /// GPS info
        /// </summary>
        public NET_GPS_STATUS_INFO stGPSStatus;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// 场景变更事件 StartListen(对应事件 ALARM_SCENNE_CHANGE_ALARM)
    /// the describe of ALARM_SCENNE_CHANGE_ALARM's data
    /// </summary>
    public struct NET_ALARM_PIC_SCENECHANGE_INFO
    {
        /// <summary>
        /// / 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 持续型事件动作, 1表示开始, 2表示停止
        /// Continuous event action: 1 means start,2 means stop;
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 事件发生的时间
        /// The event happen time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] bReserved;
    }

    /// <summary>
    /// 传感器感应方式枚举类型
    /// Sensor's Sense Method Enumeration Type
    /// </summary>
    public enum EM_NET_SENSE_METHOD
    {
        /// <summary>
        /// /未知类型
        /// Unknowed type
        /// </summary>
        NET_SENSE_UNKNOWN = -1,
        /// <summary>
        /// /门磁
        /// Door Contact
        /// </summary>
        NET_SENSE_DOOR = 0,
        /// <summary>
        /// /被动红外
        /// Passive Infrared
        /// </summary>
        NET_SENSE_PASSIVEINFRA,
        /// <summary>
        /// /气感
        /// Gase Induce)
        /// </summary>
        NET_SENSE_GAS,
        /// <summary>
        /// /烟感
        /// Smoking Induce
        /// </summary>
        NET_SENSE_SMOKING,
        /// <summary>
        /// /水感
        /// Wwater Induce)
        /// </summary>
        NET_SENSE_WATER,
        /// <summary>
        /// /主动红外
        /// Initiative Infrared
        /// </summary>
        NET_SENSE_ACTIVEFRA,
        /// <summary>
        /// /玻璃破碎
        /// Glass Broken
        /// </summary>
        NET_SENSE_GLASS,
        /// <summary>
        /// /紧急开关
        /// Emergency switch
        /// </summary>
        NET_SENSE_EMERGENCYSWITCH,
        /// <summary>
        /// /震动
        /// Shock
        /// </summary>
        NET_SENSE_SHOCK,
        /// <summary>
        /// /双鉴(红外+微波)
        /// Double Method(Infrare+Microwave)
        /// </summary>
        NET_SENSE_DOUBLEMETHOD,
        /// <summary>
        /// /三技术
        /// Three Method
        /// </summary>
        NET_SENSE_THREEMETHOD,
        /// <summary>
        /// /温度
        /// Temperature
        /// </summary>
        NET_SENSE_TEMP,
        /// <summary>
        /// /湿度
        /// Humidity
        /// </summary>
        NET_SENSE_HUMIDITY,
        /// <summary>
        /// /风速
        /// Wind
        /// </summary>
        NET_SENSE_WIND,
        /// <summary>
        /// /呼叫按钮
        /// Call button
        /// </summary>
        NET_SENSE_CALLBUTTON,
        /// <summary>
        /// /气体压力
        /// Gas Pressure
        /// </summary>
        NET_SENSE_GASPRESSURE,
        /// <summary>
        /// /燃气浓度
        /// Gas Concentration
        /// </summary>
        NET_SENSE_GASCONCENTRATION,
        /// <summary>
        /// /气体流量
        /// Gas Flow
        /// </summary>
        NET_SENSE_GASFLOW,
        /// <summary>
        /// /其他
        /// Other
        /// </summary>
        NET_SENSE_OTHER,
        /// <summary>
        /// / 油量检测,汽油、柴油等车辆用油检测
        /// oil detection, gasoline, diesel vehicles detection
        /// </summary>
        NET_SENSE_OIL,
        /// <summary>
        /// / 里程数检测
        /// mileage detection
        /// </summary>
        NET_SENSE_MILEAGE,
        /// <summary>
        /// /紧急按钮
        /// Urgency button
        /// </summary>
        NET_SENSE_URGENCYBUTTON,
        /// <summary>
        /// /盗窃
        /// Steal
        /// </summary>
        NET_SENSE_STEAL,
        /// <summary>
        /// /周界
        /// Permeter
        /// </summary>
        NET_SENSE_PERIMETER,
        /// <summary>
        /// /防拆
        /// Prevent remove
        /// </summary>
        NET_SENSE_PREVENTREMOVE,
        /// <summary>
        /// /门铃
        /// Door bell
        /// </summary>
        NET_SENSE_DOORBELL,
        /// <summary>
        /// /交流电压传感器
        /// Alter voltage sensor
        /// </summary>
        NET_SENSE_ALTERVOLT,
        /// <summary>
        /// /直流电压传感器
        /// Direct voltage sensor
        /// </summary>
        NET_SENSE_DIRECTVOLT,
        /// <summary>
        /// /交流电流传感器
        /// Alter current sensor
        /// </summary>
        NET_SENSE_ALTERCUR,
        /// <summary>
        /// /直流电流传感器
        /// Direct current sensor
        /// </summary>
        NET_SENSE_DIRECTCUR,
        /// <summary>
        /// /通用模拟量 4~20mA或0~5V
        /// general analog sensor, 4~20mA or 0~5V
        /// </summary>
        NET_SENSE_RSUGENERAL,
        /// <summary>
        /// /门禁感应
        /// door sensor
        /// </summary>
        NET_SENSE_RSUDOOR,
        /// <summary>
        /// /断电感应
        /// power off sensor
        /// </summary>
        NET_SENSE_RSUPOWEROFF,
        /// <summary>
        /// /1500温度传感器
        /// 1500 temperature sensor
        /// </summary>
        NET_SENSE_TEMP1500,
        /// <summary>
        /// /DS18B20温度传感器
        /// DS18B20 temperature sensor
        /// </summary>
        NET_SENSE_TEMPDS18B20,
        /// <summary>
        /// /1500湿度传感器
        /// 1500 humidity sensor
        /// </summary>
        NET_SENSE_HUMIDITY1500,
        /// <summary>
        /// /红外报警
        /// Infrared sensor
        /// </summary>
        NET_SENSE_INFRARED,
        /// <summary>
        /// /火警
        /// firealarm sensor
        /// </summary>
        NET_SENSE_FIREALARM,
        /// <summary>
        /// /CO2浓度检测,典型值:0~5000ppm
        /// Determination of CO2, typical value:0~5000ppm
        /// </summary>
        NET_SENSE_CO2,
        /// <summary>
        /// /噪音检测,典型值:30~130dB
        /// Noise detection,typical value:30~130dB
        /// </summary>
        NET_SNESE_SOUND,
        /// <summary>
        /// /PM2.5检测,典型值:0~1000ug/m3
        /// PM2.5 detection,typical value:0~1000ug/m3
        /// </summary>
        NET_SENSE_PM25,
        /// <summary>
        /// /SF6浓度检测,典型值:0~3000ppm
        /// Determination of SF6,typical value:0~3000ppm
        /// </summary>
        NET_SENSE_SF6,
        /// <summary>
        /// /臭氧浓度检测,典型值:0~100ppm
        /// O3 detection,typical value:0~100ppm
        /// </summary>
        NET_SENSE_O3,
        /// <summary>
        /// /环境光照检测,典型值:0~20000Lux
        /// ambient light detection,typical value:0~20000Lux
        /// </summary>
        NET_SENSE_AMBIENTLIGHT,
        /// <summary>
        /// /签入按钮
        /// sign in button
        /// </summary>
        NET_SENSE_SIGNINBUTTON,
        /// <summary>
        /// /液位
        /// LiquidLevel
        /// </summary>
        NET_SENSE_LIQUIDLEVEL,
        /// <summary>
        /// /测距
        /// distance
        /// </summary>
        NET_SENSE_DISTANCE,
        /// <summary>
        /// /水流量
        /// water flow
        /// </summary>
        NET_SENSE_WATERFLOW,
        /// <summary>
        /// /按键传感器
        /// Keypress Sensor
        /// </summary>
        NET_SENSE_KEYPRESSS,
        /// <summary>
        /// /SM7820B温湿度传感器
        /// Sm7820b temperature and humidity sensor
        /// </summary>
        NET_SENSE_TEMP_AND_HUMI_SM7820B,
        /// <summary>
        /// /DSU666单相电子式电能表D
        /// Dsu666 single phase electronic watt hour meter D
        /// </summary>
        NET_SENSE_WATT_HUR_DDSU666,
        /// <summary>
        /// / 幕帘传感器
        /// Curtain sensor
        /// </summary>
        NET_SENSE_CURTAIN_SENSOR,
        /// <summary>
        /// /机壳防拆
        /// chasic anti-tamper
        /// </summary>
        NET_SENSE_CASEPREVENTREMOVE,
        /// <summary>
        /// /紧急呼叫按键
        /// /Emergency call button
        /// </summary>
        NET_SENSE_EMERGENCYHELP,
        /// <summary>
        /// / 移动传感器
        /// / Mobile sensors
        /// </summary>
        NET_SENSE_MOBILESENSOR,
        /// <summary>
        /// / 中继器
        /// / Repeater
        /// </summary>
        NET_SENSE_REPEATER,
        /// <summary>
        /// / 温湿度
        /// / Temperature and humidity
        /// </summary>
        NET_SENSE_THSENSOR,
        /// <summary>
        /// / 手腕式紧急按钮
        /// / Wrist style emergency button
        /// </summary>
        NET_SENSE_WRISTBUTTON,
        /// <summary>
        /// / 无线插座
        /// / Wireless socket
        /// </summary>
        NET_SENSE_SOCKET,
        /// <summary>
        /// / 对射探测器
        /// / Radiation detector
        /// </summary>
        NET_SENSE_BEAMS,
        /// <summary>
        /// / 读卡器
        /// / card reader
        /// </summary>
        NET_SENSE_RFIDREADER,
        /// <summary>
        /// / 遥控器
        /// / Remote control
        /// </summary>
        NET_SENSE_REMOTECONTROL,
        /// <summary>
        /// / 键盘
        /// / keyboard
        /// </summary>
        NET_SENSE_KEYBOARD,
        /// <summary>
        /// / 警号
        /// / Police Number
        /// </summary>
        NET_SENSE_ALARMBELL,
        /// <summary>
        /// / 智能锁
        /// / Smart lock
        /// </summary>
        NET_SENSE_SMARTLOCK,
        /// <summary>
        /// / 胁迫（目前用于智网室内机上报胁迫密撤防事件）
        /// / Coercion (currently used for reporting coercion and disarming incidents on indoor units of smart networks)
        /// </summary>
        NET_SENSE_DURESS,
        /// <summary>
        /// / 视频动检
        /// / Video Motion
        /// </summary>
        NET_SENSE_VIDEO_MOTION,
        /// <summary>
        /// / 室内PIRCam
        /// / PIRCam
        /// </summary>
        NET_SENSE_PIRCAM,
        /// <summary>
        /// / 对讲警号
        /// / Intercom Siren
        /// </summary>
        NET_SENSE_INTERCOM_SIREN,
        /// <summary>
        /// / 单路模块1.0
        /// / Single Channel
        /// </summary>
        NET_SENSE_SINGLE_CHANNEL,
        /// <summary>
        /// / 幕帘
        /// / Curtain
        /// </summary>
        NET_SENSE_CURTAIN,
        /// <summary>
        /// / 弱电模块
        /// / Relay
        /// </summary>
        NET_SENSE_RELAY,
        /// <summary>
        /// / 强电模块
        /// / Wall Switch
        /// </summary>
        NET_SENSE_WALL_SWITCH,
        /// <summary>
        /// / LED键盘
        /// / LED Keypad
        /// </summary>
        NET_SENSE_LED_KEYPAD,
        /// <summary>
        /// / EN键盘
        /// / Keypad
        /// </summary>
        NET_SENSE_KEYPAD,
        /// <summary>
        /// / LCD键盘
        /// / LCD Keypad
        /// </summary>
        NET_SENSE_LCD_KEYPAD,
        /// <summary>
        /// / 烟感传感器
        /// / Smoke
        /// </summary>
        NET_SENSE_SMOKE,
        /// <summary>
        /// / 中继器
        /// / ProRepeater
        /// </summary>
        NET_SENSE_PROREPEATER,
        /// <summary>
        /// / 无线玻璃破碎
        /// / Glass Break
        /// </summary>
        NET_SENSE_GLASS_BREAK,
        /// <summary>
        /// / 室外PIRCam
        /// / OutDoor PIRCam
        /// </summary>
        NET_SENSE_OUTDOOR_PIRCAM,
        /// <summary>
        /// / 多路模块（不带网络）
        /// / Multi IO Transmitter
        /// </summary>
        NET_SENSE_MULTI_IO_TRANSMITTER,
        /// <summary>
        /// / 多路模块（支持网络）
        /// / Multi IO TransmitterP
        /// </summary>
        NET_SENSE_MULTI_IO_TRANSMITTER_P,
        /// <summary>
        /// / CO传感器
        /// / Carbon Monoxide Alarm
        /// </summary>
        NET_SENSE_CARBON_MONOXIDE_ALARM,
        /// <summary>
        /// /枚举类型总数
        /// enum total
        /// </summary>
        NET_SENSE_NUM,
    }


    /// <summary>
    /// 报警事件类型 EVENT_ALARM_ANALOGALARM(模拟量报警通道报警),
    /// Alarm event type EVENT_ALARM_ANALOGALARM(analog alarm channel alarm),
    /// </summary>
    public struct NET_DEV_EVENT_ALARM_ANALOGALRM_INFO
    {
        /// <summary>
        /// / (视频)通道号
        /// (video)channel no.
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 模拟量报警通道名称
        /// analog alarm channel name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 保留字节对齐
        /// reserve text align
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string Reserved;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// time stamp(unit is ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// / 事件发生的时间
        /// event time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// / 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / 事件对应文件信息
        /// event corresponding file info
        /// </summary>
        public NET_EVENT_FILE_INFO stuFileInfo;
        /// <summary>
        /// / 模拟量报警通道号
        /// analog alarm channel no.
        /// </summary>
        public int nIndex;
        /// <summary>
        /// / 传感器类型
        /// sensor type
        /// </summary>
        public EM_NET_SENSE_METHOD emSensor;
        /// <summary>
        /// / 数据状态, -1:未知,0:正常,1:数据无效(超过量程),
        /// / 2:超过阈值1,3:超过阈值2,4:超过阈值3,5:超过阈值4,
        /// / 6:低于阈值1,7:低于阈值2,8:低于阈值3,9:低于阈值4
        /// data status, -1:unknown,0:normal,1:invalid data(over meansure),
        /// 2:over threshold1,3:over threshold2,4:over threshold3,5: over threshold 4,
        /// 6:below threshold 1,7: below threshold 2,8: below threshold 3,9: below threshold 4
        /// </summary>
        public int nStatus;
        /// <summary>
        /// / 探测器数值
        /// detector value
        /// </summary>
        public float fValue;
        /// <summary>
        /// / 数据采集时间(UTC)
        /// data collection time(UTC)
        /// </summary>
        public NET_TIME stuCollectTime;
        /// <summary>
        /// / 抓图标志(按位),具体见NET_RESERVED_COMMON
        /// snapshotmark(by bit), see NET_RESERVED_COMMON
        /// </summary>
        public uint dwSnapFlagMask;
        /// <summary>
        /// / 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// event action, 0 means impulse event,1 means continuous event start,2 means continuous event end;
        /// </summary>
        public byte bEventAction;
        /// <summary>
        /// / 传感器数值单位
        /// Unit of sensor value
        /// </summary>
        public EM_A_NET_TEMPERATURE_UNIT emTemperatureUnit;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 保留字节,留待扩展
        /// reserve text,for extension
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1019)]
        public byte[] byReserved2;
    }


    /// <summary>
    /// 消音模式
    /// erasure mode
    /// </summary>
    public enum EM_HY_SMOKE_ERASURE_MODE
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_HY_SMOKE_ERASURE_MODE_UNKNOWN,
        /// <summary>
        /// / 一次消音
        /// once
        /// </summary>
        EM_HY_SMOKE_ERASURE_MODE_ONCE,
        /// <summary>
        /// / 永久消音
        /// permanet
        /// </summary>
        EM_HY_SMOKE_ERASURE_MODE_PERMANENT,
    }

    /// <summary>
    /// CLIENT_SmokeRemoteErasure 入参
    /// CLIENT_SmokeRemoteErasure InParam
    /// </summary>
    public struct NET_IN_SMOKE_REMOTE_ERASURE_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
        /// <summary>
        /// / 通道号
        /// chanenl
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 消音模式
        /// erasure mode
        /// </summary>
        public EM_HY_SMOKE_ERASURE_MODE emErasureMode;
    }

    /// <summary>
    /// CLIENT_SmokeRemoteErasure 出参
    /// CLIENT_SmokeRemoteErasure OutParam
    /// </summary>
    public struct NET_OUT_SMOKE_REMOTE_ERASURE_INFO
    {
        /// <summary>
        /// / 结构体大小
        /// Structure size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_RebootDevice 接口输入参数
    /// Input param of CLIENT_RebootDevice
    /// </summary>
    public struct NET_IN_REBOOT_DEVICE
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// CLIENT_RebootDevice 接口输出参数
    /// output param of CLIENT_RebootDevice
    /// </summary>
    public struct NET_OUT_REBOOT_DEVICE
    {
        /// <summary>
        /// / 结构体大小
        /// struct size
        /// </summary>
        public uint dwSize;
    }

    /// <summary>
    /// 消防离线故障事件设备类型
    /// fire control device type
    /// </summary>
    public enum EM_HY_FIRE_CONTROL_DEVICE_TYPE
    {
        /// <summary>
        /// / 未知
        /// unknown
        /// </summary>
        EM_HY_FIRE_CONTROL_DEVICE_TYPE_UNKNOWN,
        /// <summary>
        /// / 无线报警主机
        /// wireless alarm host
        /// </summary>
        EM_HY_FIRE_CONTROL_DEVICE_TYPE_WIRELESSALARMHOST,
        /// <summary>
        /// / 智能用电监控设备
        /// Intelli Elec Monitor
        /// </summary>
        EM_HY_FIRE_CONTROL_DEVICE_TYPE_INTELLIELECMONITORDEV,
        /// <summary>
        /// / 图像型烟感
        /// Image Type Smoke Detector
        /// </summary>
        EM_HY_FIRE_CONTROL_DEVICE_TYPE_IMAGETYPESMOKEDETECTOR,
        /// <summary>
        /// / 火焰识别摄像机
        /// Flame Recognition Camera
        /// </summary>
        EM_HY_FIRE_CONTROL_DEVICE_TYPE_FLAMERECOGNITIONCAMERA,
        /// <summary>
        /// / 感烟火灾探测器
        /// Smoke Fire Detector
        /// </summary>
        EM_HY_FIRE_CONTROL_DEVICE_TYPE_SMOKEFIREDETECTOR,
        /// <summary>
        /// / 感温火灾探测器
        /// Temperature Fire Detector
        /// </summary>
        EM_HY_FIRE_CONTROL_DEVICE_TYPE_TEMPERATUREFIREDETECTOR,
        /// <summary>
        /// / 可燃气体探测器
        /// Combustible Gas Detector
        /// </summary>
        EM_HY_FIRE_CONTROL_DEVICE_TYPE_COMBUSTIBLEGASDETECTOR,
        /// <summary>
        /// / 手动报警按钮
        /// Handle Alarm Button
        /// </summary>
        EM_HY_FIRE_CONTROL_DEVICE_TYPE_HANDLEALARMBUTTON,
        /// <summary>
        /// / 声光报警器
        /// Sound Light Alarm
        /// </summary>
        EM_HY_FIRE_CONTROL_DEVICE_TYPE_SOUNDLIGHTALARM,
        /// <summary>
        /// / 故障电弧传感器
        /// Fault Electric Arc Sensor
        /// </summary>
        EM_HY_FIRE_CONTROL_DEVICE_TYPE_FAULTELECTRICARCSENSOR,
    }

    /// <summary>
    /// 消防离线故障事件, 对应事件类型 ALARM_HY_FIRE_CONTROL_OFFLINE_FAULT
    /// Fire Control Offline Fault, corresponding to ALARM_HY_FIRE_CONTROL_OFFLINE_FAULT
    /// </summary>
    public struct NET_ALARM_HY_FIRE_CONTROL_OFFLINE_FAULT_INFO
    {
        /// <summary>
        /// / 通道号,从0开始
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件动作, 0表示脉冲事件, 1表示开始, 2表示结束, -1表示未知
        /// action
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// / 事件名称
        /// Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// PTS
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 事件发生的时间
        /// UTC
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / 主机地址
        /// host ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
        public string szAddress;
        /// <summary>
        /// / 子节点名称
        /// Child Node Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szChildNodeName;
        /// <summary>
        /// / 子节点序列号，格式为主节点MAC-子节点ID
        /// The serial number of the child node, in the format of the main node MAC-child node ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
        public string szChildNodeSN;
        /// <summary>
        /// / 设备类型
        /// Device type
        /// </summary>
        public EM_HY_FIRE_CONTROL_DEVICE_TYPE emDeviceType;
        /// <summary>
        /// / 设备接收到事件的时间
        /// event Time
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// / 保留字节
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 模拟量报警输入通道事件信息(对应ALARM_ANALOGALARM_EVENT)
    /// Analog Input Channel Alarm Event Information(Corresponding ALARM_ANALOGALARM_EVENT),
    /// </summary>
    public struct NET_ALARM_ANALOGALARM_EVENT_INFO
    {
        public uint dwSize;
        /// <summary>
        /// / 通道号
        /// Alarm Event Begin Time
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:开始 1:停止
        /// 0=Start 1=Stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 报警事件发生的时间
        /// Alarm Event Begin Time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// / 传感器类型
        /// the Sensor's Type
        /// </summary>
        public EM_NET_SENSE_METHOD emSensorType;
        /// <summary>
        /// / 通道名称
        /// Channel Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 数据是否有效,-1:未知,0:无效,1:有效
        /// Data is valid or not,-1: unknown,0:invalid,1:valid
        /// </summary>
        public int nIsValid;
        /// <summary>
        /// / 数据状态, -1:未知,0:正常,1:数据无效(超过量程),
        /// / 2:超过阈值1,3:超过阈值2,4:超过阈值3,5:超过阈值4,
        /// / 6:低于阈值1,7:低于阈值2,8:低于阈值3,9:低于阈值4
        /// Data status, -1: unknown,0:noemal,1:invalid data(over limit),
        /// 2:over threshold value1,3: over threshold value 2,4: over threshold value 3,5: over threshold value 4,
        /// 6:below threshold value 1,7: below threshold value2,8: below threshold value3,9: below threshold value4
        /// </summary>
        public int nStatus;
        /// <summary>
        /// / 探测器数值
        /// Detector value
        /// </summary>
        public float fValue;
        /// <summary>
        /// / 数据采集时间(UTC)
        /// Data collection time(UTC)
        /// </summary>
        public NET_TIME stuCollectTime;
        /// <summary>
        /// / GPS信息
        /// GPS status
        /// </summary>
        public NET_GPS_STATUS_INFO stGPSStatus;
        /// <summary>
        /// / 传感器数值单位
        /// Unit of sensor value
        /// </summary>
        public EM_A_NET_TEMPERATURE_UNIT emTemperatureUnit;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
    }

    /// <summary>
    /// 烟雾检测报警事件 (ALARM_SMOKE_DETECTION)
    /// event type ALARM_SMOKE_DETECTION
    /// </summary>
    public struct NET_ALARM_SMOKE_DETECTION_INFO
    {
        /// <summary>
        /// / 0:开始 1:停止
        /// 0:start 1:stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 时间戳(单位是毫秒)
        /// PTS(ms)
        /// </summary>
        public double PTS;
        /// <summary>
        /// / 事件发生的时间
        /// event time
        /// </summary>
        public NET_TIME_EX stuTime;
        /// <summary>
        /// / 通道号
        /// channel ID
        /// </summary>
        public int nChannel;
        /// <summary>
        /// / 事件ID
        /// event ID
        /// </summary>
        public int nEventID;
        /// <summary>
        /// / 规则检测区域顶点数
        /// rule detect region's point number
        /// </summary>
        public int nDetectRegionNum;
        /// <summary>
        /// / 规则检测区域
        /// rule detect region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT[] stuDetectRegion;
        /// <summary>
        /// / 当前报警通道的横向视场角,单位：度，实际角度乘以100
        /// The lateral field of view angle of the current alarm channel, unit: degree, the actual angle is multiplied by 100
        /// </summary>
        public uint nCurChannelHFOV;
        /// <summary>
        /// / 当前报警通道的垂直视场角,单位：度，实际角度乘以100
        /// The vertical field of view angle of the current alarm channel, unit: degree, the actual angle is multiplied by 100
        /// </summary>
        public uint nCurChannelVFOV;
        /// <summary>
        /// / 检测到的物体
        /// have being detected object
        /// </summary>
        public NET_MSG_OBJECT stuObject;
        /// <summary>
        /// / 云台的坐标和放大倍数
        /// ptz coordinate and zoom
        /// </summary>
        public NET_PTZ_SPACE_UNIT stuPtzPosition;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 预留字段
        /// reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string reserved;
    }

    /// <summary>
    /// 火警事件 (ALARM_FIRE_DETECTION)
    /// Alarm of fire detection (ALARM_FIRE_DETECTION)
    /// </summary>
    public struct NET_ALARM_FIRE_DETECTION_INFO
    {
        /// <summary>
        /// / 通道号
        /// channel ID
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
        /// Event operation. 0=pulse event.1=continues event begin. 2=continuous event stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 事件发生的时间
        /// Event occurrence time
        /// </summary>
        public NET_TIME_EX UTC;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
    }

    /// <summary>
    /// 报警事件类型ALARM_TALKING_HANGUP对应的数据描述信息
    /// data describe info corresponding alarm event mode:ALARM_TALKING_HANGUP
    /// </summary>
    public struct NET_ALARM_TALKING_HANGUP_INFO
    {
        public uint dwSize;
        /// <summary>
        /// / 事件触发时间
        /// Event trigger time
        /// </summary>
        public NET_TIME stuTime;
        /// <summary>
        /// / 挂断的房间号
        /// hangup room number
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szRoomNo;
        /// <summary>
        /// / RealUTC 是否有效，bRealUTC 为 TRUE 时，用 RealUTC，否则用 stuTime 字段
        /// whether RealUTC is valid. when bRealUTC is TRUE, use RealUTC, otherwise use stuTime
        /// </summary>
        public bool bRealUTC;
        /// <summary>
        /// / 事件发生的时间（标准UTC）
        /// event occur time
        /// </summary>
        public NET_TIME_EX RealUTC;
        /// <summary>
        /// / 语音挂断发起方
        /// Initiator of voice hang-up
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szCaller;
    }

    /// <summary>
    /// 设置源边框高亮使能开关输入参数
    /// Set source frame brightness switch input parameter
    /// </summary>
    public struct NET_IN_SPLIT_SET_HIGHLIGHT
    {
        public uint dwSize;
        /// <summary>
        /// 视频输出通道
        /// video output channel
        /// </summary>
        public int nChannel;
        /// <summary>
        /// 窗口号
        /// window no.
        /// </summary>
        public int nWindow;
        /// <summary>
        /// 边框高亮使能,TRUE-表示高亮
        /// frame brightness,TRUE-high brightness
        /// </summary>
        public bool bHighLightEn;
        /// <summary>
        /// 边框颜色
        /// frame color
        /// </summary>
        public NET_COLOR_RGBA stuColor;
        /// <summary>
        /// 边框闪烁次数
        /// blink times of frame
        /// </summary>
        public int nBlinkTimes;
        /// <summary>
        /// 闪烁间隔时间,单位ms
        /// the interval time between blink, unit: ms
        /// </summary>
        public int nBlinkInterval;
    }

    /// <summary>
    /// 设置源边框高亮使能开关输出参数
    /// set frame brightness enable switch output parameter
    /// </summary>
    public struct NET_OUT_SPLIT_SET_HIGHLIGHT
    {
        public uint dwSize;
    }
	
	/// <summary>
    /// 事件类型 EVENT_IVS_PHOTOGRAPH_DETECTION (拍摄行为检测事件)对应的数据块描述信息
    /// Event type EVENT_IVS_PHOTOGRAPH_DETECTION (Photograph Detection eVENT) corresponding data description information
    /// </summary>
    public struct NET_DEV_EVENT_PHOTOGRAPH_DETECTION_INFO
    {
        /// <summary>
        /// / 通道号
        /// channel number,start with 0
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲,1:开始, 2:停止
        /// Action, 0:pulse, 1:start, 2:stop;
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 扩展协议字段
        /// Extended Protocol Fields
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件名称
        /// Event Name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 智能事件所属大类
        /// Event Class
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// / 智能事件规则编号
        /// Rule ID
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// / GroupID事件组ID
        /// Group ID
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// / CountInGroup一个事件组内的抓拍张数
        /// Count In Group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// / IndexInGroup一个事件组内的抓拍序号
        /// Index In Group
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// / 相对事件时间戳,单位毫秒
        /// Relative event timestamp in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 事件发生的时间
        /// Time of the event
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件编号，用来唯一标志一个事件
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 事件触发的预置点号
        /// Preset ID
        /// </summary>
        public uint nPresetID;
        /// <summary>
        /// / 规则区域个数
        /// Count of Detect Region
        /// </summary>
        public int nDetectRegionCount;
        /// <summary>
        /// / 表示配置的规则区域
        /// Represents the configured rule region
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT_EX[] stuDetectRegion;
        /// <summary>
        /// / 字节对齐
        /// byte alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
        public string szResvered1;
        /// <summary>
        /// / 检测目标的物体信息个数
        /// Number of object information detected
        /// </summary>
        public int nObjectCount;
        /// <summary>
        /// / 检测目标的物体信息
        /// Object information of detection target
        /// </summary>
        public IntPtr pstuObjects;
        /// <summary>
        /// / 全景广角图
        /// Scene Image info
        /// </summary>
        public NET_SCENE_IMAGE_INFO_EX stuSceneImage;
        /// <summary>
        /// / 司机ID
        /// Driver ID
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string szDriverID;
        /// <summary>
        /// / GPS信息
        /// GPS information
        /// </summary>
        public NET_GPS_INFO stuGPSInfo;
        /// <summary>
        /// / 预留字节
        /// Reserved byte
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }
	
	/// <summary>
    /// 事件类型 EVENT_IVS_OBJECT_QUANTITY_DETECTION (目标类型和数量检测报警事件)对应的数据块描述信息
    /// EVENT_IVS_OBJECT_QUANTITY_DETECTION Specifies the description of the data block corresponding to the target type and quantity detection alarm event
    /// </summary>
    public struct NET_DEV_EVENT_OBJECT_QUANTITY_DETECTION_INFO
    {
        /// <summary>
        /// / 通道号
        /// channel number
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 0:脉冲,1:开始, 2:停止
        /// 0: pulse,1: start, 2: stop
        /// </summary>
        public int nAction;
        /// <summary>
        /// / 扩展协议字段
        /// Extend the protocol field
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件发生的时间
        /// Time when the event occurred
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件ID
        /// event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 事件名称
        /// The name of the event
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 智能事件所属大类
        /// The smart event belongs to a category
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// / 相对事件时间戳,(单位是毫秒)
        /// Relative event timestamp, in milliseconds
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 检测目标的物体信息
        /// Detect the object information of the target
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public NET_MSG_OBJECT[] stuObjects;
        /// <summary>
        /// / 实际有效目标检测信息个数
        /// The actual number of valid object detection information
        /// </summary>
        public int nObjectsRealNum;
        /// <summary>
        /// / 检测区域数组有效个数
        /// Check the valid number of regions in the array
        /// </summary>
        public int nDetectRegionRealNum;
        /// <summary>
        /// / 检测区域
        /// Test area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20 * 2)]
        public uint[] nDetectRegion;
        /// <summary>
        /// / 预留字节
        /// Reserve bytes
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }

    /// <summary>
    /// 隔栏传物事件检测到的目标信息结构体
    /// Target information structure detected in the event of passing objects across the fence
    /// </summary>
    public struct NET_DETECTION_OBJECT_INFO
    {
        /// <summary>
        /// / 目标类型 支持"Human"
        /// object type support "Human"
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szObjectType;
        /// <summary>
        /// / 目标物体包围盒，矩形类型归一化到[0,8192)区间
        /// Target object bounding box, rectangular type normalized to [08192) interval
        /// </summary>
        public NET_RECT_EX  stuBoundingBox;
        /// <summary>
        /// / 目标ID
        /// object ID
        /// </summary>
        public uint nObjectID;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 516)]
        public string szReserved;
    }


    /// <summary>
    /// 隔栏传物事件 (对应 ALARM_RAILING_PASS_DETECTION)
    /// passing things across the fence event (corresponding to ALARM_RAILING_PASS_DETECTION)
    /// </summary>
    public struct NET_DEV_EVENT_RAILING_PASS_DETECTION_INFO
    {
        /// <summary>
        /// / 通道号,从0开始
        /// Channel number, starting from 0
        /// </summary>
        public int nChannelID;
        /// <summary>
        /// / 事件动作, 0表示脉冲事件, 1表示开始, 2表示结束
        /// Event action;0:Pulse event, 1:continuous event's begin,2: continuous event's end
        /// </summary>
        public int nEventAction;
        /// <summary>
        /// / 智能事件规则编号,用于标示哪个规则触发的事件。
        /// Rule ID
        /// </summary>
        public uint nRuleID;
        /// <summary>
        /// / 事件发生的时间,标准的（不带时区偏差的）UTC时间
        /// event time
        /// </summary>
        public NET_TIME_EX stuUTC;
        /// <summary>
        /// / 事件公共扩展字段结构体
        /// Event public extension field structure
        /// </summary>
        public NET_EVENT_INFO_EXTEND stuEventInfoEx;
        /// <summary>
        /// / 事件名称
        /// event name
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string szName;
        /// <summary>
        /// / 智能事件所属大类
        /// Category of intelligent events
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
        public string szClass;
        /// <summary>
        /// / 事件组ID，同一物体抓拍过程内GroupID相同
        /// Event ID
        /// </summary>
        public int nGroupID;
        /// <summary>
        /// / 一个事件组内的抓拍张数
        /// snap amount of one event group
        /// </summary>
        public int nCountInGroup;
        /// <summary>
        /// / 一个事件组内的抓拍序号
        /// capture Index of an event group
        /// </summary>
        public int nIndexInGroup;
        /// <summary>
        /// / 规则被触发次数
        /// Rule triggered times
        /// </summary>
        public int nCount;
        /// <summary>
        /// / 相对事件时间戳,单位毫秒
        /// Time stamp (Unit is ms)
        /// </summary>
        public double dbPTS;
        /// <summary>
        /// / 事件时间毫秒数
        /// Event time milliseconds
        /// </summary>
        public uint nUTCMS;
        /// <summary>
        /// / 事件编号
        /// Event ID
        /// </summary>
        public uint nEventID;
        /// <summary>
        /// / 配置的规则线，包含一个起点、一个终点坐标，归一化到[0,8192)区间
        /// Detection line
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_POINT_EX[] stuDetectLine;
        /// <summary>
        /// / 配置的检测区,多边形中每个顶点的坐标归一化到[0,8192)区间
        /// Configured detection area
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public NET_POINT_EX[] stuDetectRegion;
        /// <summary>
        /// / 多边形中顶点个数
        /// Number of vertices in polygon
        /// </summary>
        public int nDetectRegionPointNum;
        /// <summary>
        /// / 检测到的目标信息个数
        /// Number of detected target information
        /// </summary>
        public int nObjectsCount;
        /// <summary>
        /// / 检测到的目标信息
        /// Detected target information
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)]
        public NET_DETECTION_OBJECT_INFO[] stuObjects;
        /// <summary>
        /// / 保留字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
        public string szReserved;
    }
	
		/// <summary>
    /// 设备通知类型
    /// device notify type
    /// </summary>
	public enum EM_DEVICE_NOTIFY_TYPE
	{
		/// <summary>
        /// 未知
		/// Unknow
        /// </summary>
		EM_DEVICE_NOTIFY_TYPE_UNKNOWN = 0,
		/// <summary>
        /// 新设备添加
		/// Add New Device
        /// </summary>
		EM_DEVICE_NOTIFY_TYPE_NEW = 1,
		/// <summary>
        /// 设备信息更新
		/// Update Device Info
        /// </summary>
		EM_DEVICE_NOTIFY_TYPE_UPDATE = 2,
		/// <summary>
        ///  设备删除
		///  Remove Device
        /// </summary>
		EM_DEVICE_NOTIFY_TYPE_REMOVE = 3,
		/// <summary>
        /// 设备有通道上下线
		/// Device channel online/offline status
        /// </summary>
		EM_DEVICE_NOTIFY_TYPE_CONNECT = 4,
	}
	
	/// <summary>
	/// 向设备注册的回调返回信息
	/// fDeviceStateCallBack parameter
    /// </summary>
    public struct NET_CB_ATTACH_DEVICE_STATE
    {
        /// <summary>
		/// 通知类型
		/// notify type
        /// </summary>
        public EM_DEVICE_NOTIFY_TYPE emNotifyType;
        /// <summary>
		/// 设备个数
		/// device num 
        /// </summary>
        public int nRetCount;

        /// <summary>
        /// 设备信息列表
        /// Device ID List
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public NET_DEVICEID_String[] szDeviceIDs;
		
		/// <summary>
        /// 保留扩展字节
        /// Reserved
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
        public byte[] byReserved;
    }	
	
	/// <summary>
	/// CLIENT_AttachDeviceState 接口输入参数
	/// input parameter of interface CLIENT_AttachDeviceState
    /// </summary>
    public struct NET_IN_ATTACH_DEVICE_STATE
    {
        /// <summary>
		/// 结构体大小
		/// struct size
        /// </summary>
        public uint dwSize;
        /// <summary>
		/// 回调函数
		/// the callback function of attach device state
        /// </summary>
        public fDeviceStateCallBack cbDeviceState;
        /// <summary>
		/// 用户数据
		/// user data
        /// </summary>
        public IntPtr dwUser;
    }
	
	/// <summary>
	/// CLIENT_AttachDeviceState 接口输出参数
	/// output parameter of interface CLIENT_AttachDeviceState
    /// </summary>
    public struct NET_OUT_ATTACH_DEVICE_STATE
    {
        /// <summary>
		/// 结构体大小
		/// struct size
        /// </summary>
        public uint dwSize;
    }
	
	/// <summary>
	/// 设备概要信息
	/// Device Summary Info
	/// </summary>
	public struct NET_DEVICE_SUMMARY
	{
		/// <summary>
		/// 端口号
		/// Port Number
		/// </summary>
		public uint nPort;
		
		/// <summary>
		/// 设备地址或者域名
		/// Device ip or domain
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
		public string szAddress;
		
		/// <summary>
		/// 用户名
		/// User name
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
		public string szUserName;
		
		/// <summary>
		/// 密码
		/// Password
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
		public string szPassword;
		
		/// <summary>
		/// 接入设备协议类型
		/// Device protocol type
		/// </summary>
		public EM_CUSTOM_DEV_PROTOCOL_TYPE emProtocolType;
		
		/// <summary>
		/// 预置设备类型, 当前仅支持 VCS（添加IPS设备时使用）
		/// Preset device type (Currently only VCS is supported for IPS devices)
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
		public string szPresetDeviceType;
		
		/// <summary>
		/// 保留字节
		/// Reserved bytes
		/// </summary>
		[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
        public byte[] byReserved;
	}	
	
	/// <summary>
	/// CLIENT_AsyncAddDeviceBySummary 接口输入参数
	/// CLIENT_AsyncAddDeviceBySummary input param
	/// </summary>
	public struct NET_IN_ASYNC_ADD_DEVICE_BY_SUMMARY
	{
		/// <summary>
		/// 结构体大小
		/// Struct size
		/// </summary>
		public uint dwSize;
		
		/// <summary>
		/// 待添加的设备个数
		/// Device Count
		/// </summary>
		public int nCount;
		
		/// <summary>
		/// 待添加的设备信息
		/// Device Summary List
		/// </summary>
		[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
		public NET_DEVICE_SUMMARY[] stuDeviceSummarys;
	}
	
	/// <summary>
	/// CLIENT_AsyncAddDeviceBySummary 接口输出参数
	/// CLIENT_AsyncAddDeviceBySummary output param
	/// </summary>
	public struct NET_OUT_ASYNC_ADD_DEVICE_BY_SUMMARY
	{
		/// <summary>
		/// 结构体大小
		///  Struct size
		/// </summary>
		public uint dwSize;
		
		/// <summary>
		/// 任务ID
		/// Task ID
		/// </summary>
		public uint nTaskID;
	}
	
	/// <summary>
	/// CLIENT_GetIotDeviceInfo 接口输入参数
	/// CLIENT_GetIotDeviceInfo input param
	/// </summary>
	public struct NET_IN_GET_IOT_DEVICE_INFO
	{
		/// <summary>
		/// 结构体大小
		///  Struct size
		/// </summary>
		public uint dwSize;

		/// <summary>
		/// 设备个数，为0的话，返回全部的
		/// Device Count, 0 means Get All
		/// </summary>
		public int nCount;

		/// <summary>
		/// 设备ID信息列表
		/// Device ID List
		/// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public NET_DEVICEID_String[] szDeviceIDs;
	}

	/// <summary>
	/// VTS产品使用的自定义数据
	/// Custom data used for VTS products
	/// </summary>
	public struct NET_VTS_DEVICE_CUSTOM_DATA
	{
		/// <summary>
		/// VTS管理的设备类型:"VTO": 门口机, "VTH": 室内机, "VTS": 管理机, "WALL": 围墙机
		/// Equipment types managed by VTS: "VTO", "VTH", "VTS", "WALL"
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
		public string szDeviceType;

		/// <summary>
		/// 设备的sip注册密码
		/// SIP registration password for the device
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
		public string szSipPassword;

		/// <summary>
		/// 用户手动添加的设备名称
		/// The device name manually added by the user
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
		public string szDeviceName;

		/// <summary>
		/// 预留字节
		/// Reserved bytes
		/// </summary>
		[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] szReserved;
	}	
	
	/// <summary>
	/// 自定义设备扩展信息
	/// Customize device extension information
	/// </summary>
	public struct NET_DEVICE_CUSTOM_DATA
	{
		/// <summary>
		/// VTS产品使用的自定义数据
		/// Custom data used for VTS products
		/// </summary>
		public NET_VTS_DEVICE_CUSTOM_DATA stuVTS;

		/// <summary>
		/// 平台IP(中心直存需求)
		/// Platform IP
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
		public string szPlatformIP;

		/// <summary>
		/// 远程ipspeaker设备的id，当设备大类为IPS时有效
		/// The ID of the remote IP speaker, Only Valid if device class is IPS
		/// </summary>
		public int nIpspeakerId;

		/// <summary>
		/// 预留字节
		/// Reserved bytes
		/// </summary>
		[MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
        public byte[] szReserved;
	}

	/// <summary>
	/// 已添加IOT设备的结果信息
	/// Iot Device Info
	/// </summary>
	public struct NET_GET_IOT_DEVICE_INFO
	{
		/// <summary>
		/// 设备ID
		/// Device ID
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
		public string szDeviceID;

		/// <summary>
		/// 设备类型
		/// Device Type
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
		public string szDeviceType;

		/// <summary>
		/// 设备大类
		/// Device Class
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
		public string szDeviceClass;

		/// <summary>
		/// 设备名称
		/// Device Name
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
		public string szDeviceName;

		/// <summary>
		/// 设备离线错误码
		/// Device offline error code
		/// </summary>
		public uint nErrorCode;

		/// <summary>
		/// 设备是否在线 0:离线 1：在线
		///  Whether the device is online, 0: offline 1: online
		/// </summary>
		public uint nOnline;

		/// <summary>
		/// 设备序列号
		/// Serial number
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
		public string szSerialNo;

		/// <summary>
		/// url
		/// url
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
		public string szUrl;

		/// <summary>
		/// 目标ID
		/// Target ID
		/// </summary>
		public int nTargetID;

		/// <summary>
		/// 设备概要信息
		/// Summary Info
		/// </summary>
		public NET_DEVICE_SUMMARY stuDeviceSummary;

		/// <summary>
		/// 产品自定义的扩展数据
		/// Custom Info
		/// </summary>
		public NET_DEVICE_CUSTOM_DATA stuCustomData;

		/// <summary>
		/// 保留字节
		/// Reserved bytes
		/// </summary>
		[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1020)]
        public byte[] szReserved;
	}	
		
	/// <summary>
	/// CLIENT_GetIotDeviceInfo 接口输出参数
	/// CLIENT_GetIotDeviceInfo output param
	/// </summary>
	public struct NET_OUT_GET_IOT_DEVICE_INFO
	{
		/// <summary>
		/// 结构体大小
		/// Struct size
		/// </summary>
		public uint dwSize;

		/// <summary>
		/// 用户申请的设备个数
		/// The number of devices requested by the user
		/// </summary>
		public int nMaxCount;
		
		/// <summary>
		/// 设备信息列表, 由用户申请和释放内存, 申请大小为sizeof(NET_GET_IOT_DEVICE_INFO)*nMaxCount
		/// Iot Device information list, the user applies and releases memory, the application size is sizeof(NET_GET_IOT_DEVICE_INFO)*nMaxCount
		/// </summary>
		public IntPtr pstuDeviceInfo;
		
		/// <summary>
		/// 实际返回的设备个数
		/// The actual number of devices returned
		/// </summary>
		public int nRetCount;

		/// <summary>
		/// 字节对齐
		/// Byte Alignment
		/// </summary>
		[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
		public byte[] szReserved;
	}	
	
	/// <summary>
	/// CLIENT_IpSpeakerGetCaps 接口入参  
	/// CLIENT_IpSpeakerGetCaps Interface input parameters  
	/// </summary>
	public struct NET_IN_IPSPEAKER_GET_CAPS
	{
		/// <summary>
		/// 此结构体大小,必须赋值  
		/// Structure size  
		/// </summary>
		public uint dwSize;
	}

	/// <summary>
	/// CLIENT_IpSpeakerGetCaps 接口出参  
	/// CLIENT_IpSpeakerGetCaps Interface output parameters  
	/// </summary>
	public struct NET_OUT_IPSPEAKER_GET_CAPS
	{
		/// <summary>
		/// 此结构体大小,必须赋值  
		/// Structure size  
		/// </summary>
		public uint dwSize;

		/// <summary>
		/// 支持的最大ipspeaker设备接入数  
		/// Maximum number of supported ipSpeaker devices  
		/// </summary>
		public int nIpSpeakerMaxNum;
	}
	
	/// <summary>
	/// CLIENT_IpSpeakerGetVolumeParams 接口入参
	/// CLIENT_IpSpeakerGetVolumeParams Interface input parameters
	/// </summary>
	public struct NET_IN_IPSPEAKER_GET_VOLUME_PARAMS
	{
		/// <summary>
		/// 此结构体大小,必须赋值
		/// Structure size, must be assigned
		/// </summary>
		public uint dwSize;

		/// <summary>
		/// ipSpeaker设备编号
		/// The ID of the remote IP speaker
		/// </summary>
		public int nIpSpeakerId;
	}

	/// <summary>
	/// CLIENT_IpSpeakerGetVolumeParams 接口出参
	/// CLIENT_IpSpeakerGetVolumeParams Interface output parameters
	/// </summary>
	public struct NET_OUT_IPSPEAKER_GET_VOLUME_PARAMS
	{
		/// <summary>
		/// 此结构体大小,必须赋值
		/// Structure size, must be assigned
		/// </summary>
		public uint dwSize;

		/// <summary>
		/// 录像音量，范围为 [0,16]
		/// Device Recording Volume, Range: [0, 16]
		/// </summary>
		public int nRecordVolume;

		/// <summary>
		/// 播放音量，范围为 [0,16]
		/// Device Playing Volume, Range: [0, 16]
		/// </summary>
		public int nPlayVolume;

        /// <summary>
        /// 字节对齐
        /// Byte Alignment
        /// </summary>
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] szReserved;
    }
	
	/// <summary>
	/// CLIENT_IpSpeakerSetVolumeParams 接口入参
	/// CLIENT_IpSpeakerSetVolumeParams Interface input parameters
	/// </summary>
	public struct NET_IN_IPSPEAKER_SET_VOLUME_PARAMS
	{
		/// <summary>
		/// 此结构体大小，必须赋值
		/// Structure size, must be assigned
		/// </summary>
		public uint dwSize;

		/// <summary>
		/// ipSpeaker设备编号
		/// The ID of the remote IP speaker
		/// </summary>
		public int nIpSpeakerId;

		/// <summary>
		/// 录像音量，范围为 [0,16]
		/// Device Recording Volume, Range: [0, 16]
		/// </summary>
		public int nRecordVolume;

		/// <summary>
		/// 播放音量，范围为 [0,16]
		/// Device Playing Volume, Range: [0, 16]
		/// </summary>
		public int nPlayVolume;
	}

	/// <summary>
	/// CLIENT_IpSpeakerSetVolumeParams 接口出参
	/// CLIENT_IpSpeakerSetVolumeParams Interface output parameters
	/// </summary>
	public struct NET_OUT_IPSPEAKER_SET_VOLUME_PARAMS
	{
		/// <summary>
		/// 此结构体大小，必须赋值
		/// Structure size, must be assigned
		/// </summary>
		public uint dwSize;
	}	
	
	/// <summary>
	/// 音频文件信息
	/// Audio File Info
	/// </summary>
	public struct NET_AUDIO_FILE_INFO
	{
		/// <summary>
		/// 文件id
		/// File Id
		/// </summary>
		public int nFileId;

		/// <summary>
		/// 文件名
		/// File Name
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
		public string szFileName;

		/// <summary>
		/// 文件大小，单位：字节
		/// File Size(Bytes)
		/// </summary>
		public int nFileSize;

		/// <summary>
		/// 预留字节
		/// Resvered
		/// </summary>
		[MarshalAs(UnmanagedType.ByValArray, SizeConst = 508)]
		public byte[] byReserved;
	}

	/// <summary>
	/// CLIENT_IpSpeakerGetAudioFiles 接口入参
	/// CLIENT_IpSpeakerGetAudioFiles Interface input parameters
	/// </summary>
	public struct NET_IN_IPSPEAKER_GET_AUDIO_FILES
	{
		/// <summary>
		/// 此结构体大小,必须赋值
		/// Structure size
		/// </summary>
		public uint dwSize;

		/// <summary>
		/// ipSpeaker设备编号
		/// The ID of the remote IP speaker
		/// </summary>
		public int nIpSpeakerId;
	}

	/// <summary>
	/// CLIENT_IpSpeakerGetAudioFiles 接口出参
	/// CLIENT_IpSpeakerGetAudioFiles Interface output parameters
	/// </summary>
	public struct NET_OUT_IPSPEAKER_GET_AUDIO_FILES
	{
		/// <summary>
		/// 此结构体大小,必须赋值
		/// Structure size
		/// </summary>
		public uint dwSize;
		
		/// <summary>
		/// 文件信息数组大小, 用户填写
		/// Maximum number of audio file list
		/// </summary>
		public int nMaxFileCount;

        /// <summary>
        /// 文件信息, 内存由用户维护
        /// Audio file list, Memory is released by user request, size is sizeof(NET_AUDIO_FILE_INFO)*nMaxFileCount
        /// </summary>
        public IntPtr pstuFileInfo;

        /// <summary>
        /// 返回的文件数量
        /// The actual number of returned audio file lists
        /// </summary>
        public int nRetFileCount;
		
		/// <summary>
		/// 字节对齐
		/// Byte Alignment
		/// </summary>
		[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
		public byte[] szReserved;
		
	}	
		
	/// <summary>
	/// CLIENT_IpSpeakerStartPlayAudioFile 接口入参
	/// CLIENT_IpSpeakerStartPlayAudioFile Interface input parameters
	/// </summary>
	public struct NET_IN_IPSPEAKER_START_PLAY_AUDIO_FILE
	{
		/// <summary>
		/// 此结构体大小,必须赋值
		/// Structure size
		/// </summary>
		public uint dwSize;

		/// <summary>
		/// ipSpeaker设备编号
		/// The ID of the remote IP speaker
		/// </summary>
		public int nIpSpeakerId;

		/// <summary>
		/// 要播放文件的文件名称
		/// File Name
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
		public string szFileName;

		/// <summary>
		/// 要播放文件的文件id
		/// File Id
		/// </summary>
		public int nFileId;
	}

	/// <summary>
	/// CLIENT_IpSpeakerStartPlayAudioFile 接口出参
	/// CLIENT_IpSpeakerStartPlayAudioFile Interface output parameters
	/// </summary>
	public struct NET_OUT_IPSPEAKER_START_PLAY_AUDIO_FILE
	{
		/// <summary>
		/// 此结构体大小,必须赋值
		/// Structure size
		/// </summary>
		public uint dwSize;
	}

	/// <summary>
	/// CLIENT_IpSpeakerStopPlayAudioFile 接口入参
	/// CLIENT_IpSpeakerStopPlayAudioFile Interface input parameters
	/// </summary>
	public struct NET_IN_IPSPEAKER_STOP_PLAY_AUDIO_FILE
	{
		/// <summary>
		/// 此结构体大小,必须赋值
		/// Structure size
		/// </summary>
		public uint dwSize;

		/// <summary>
		/// ipSpeaker设备编号
		/// The ID of the remote IP speaker
		/// </summary>
		public int nIpSpeakerId;
	}	
		
	/// <summary>
	/// CLIENT_IpSpeakerStopPlayAudioFile 接口出参
	/// CLIENT_IpSpeakerStopPlayAudioFile Interface output parameters
	/// </summary>
	public struct NET_OUT_IPSPEAKER_STOP_PLAY_AUDIO_FILE
	{
		/// <summary>
		/// 此结构体大小,必须赋值
		/// Structure size
		/// </summary>
		public uint dwSize;
	}

	/// <summary>
	/// 文件名条目结构
	/// FileName Info
	/// </summary>
	public struct FileNameEntry
	{
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
		public string fileName;
	}

	/// <summary>
	/// CLIENT_IpSpeakerDeleteAudioFiles 接口入参
	/// CLIENT_IpSpeakerDeleteAudioFiles Interface input parameters
	/// </summary>
	public struct NET_IN_IPSPEAKER_DELETE_AUDIO_FILES
	{
		/// <summary>
		/// 此结构体大小,必须赋值
		/// Structure size
		/// </summary>
		public uint dwSize;

		/// <summary>
		/// ipSpeaker设备编号
		/// The ID of the remote IP speaker
		/// </summary>
		public int nIpSpeakerId;

		/// <summary>
		/// 文件个数
		/// File Number
		/// </summary>
		public int nFileNum;

		/// <summary>
		/// 文件名数组
		/// File Name List
		/// </summary>
		[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
		public FileNameEntry[] szFileNames;
	}

	/// <summary>
	/// CLIENT_IpSpeakerDeleteAudioFiles 接口出参
	/// CLIENT_IpSpeakerDeleteAudioFiles Interface output parameters
	/// </summary>
	[StructLayout(LayoutKind.Sequential)]
	public struct NET_OUT_IPSPEAKER_DELETE_AUDIO_FILES
	{
		/// <summary>
		/// 此结构体大小,必须赋值
		/// Structure size
		/// </summary>
		public uint dwSize;
	}	
		
	/// <summary>
	/// CLIENT_IpSpeakerUploadAudioFile 接口入参
	/// CLIENT_IpSpeakerUploadAudioFile Interface input parameters
	/// </summary>
	public struct NET_IN_IPSPEAKER_UPLOAD_AUDIO_FILE
	{
		/// <summary>
		/// 此结构体大小,必须赋值
		/// Structure size
		/// </summary>
		public uint dwSize;

		/// <summary>
		/// ipSpeaker设备编号
		/// The ID of the remote IP speaker
		/// </summary>
		public int nIpSpeakerId;

		/// <summary>
		/// 待上传的音频文件的路径信息
		/// Audio File Path (Including Filename)
		/// </summary>
		public IntPtr pszFilePath;
		
		/// <summary>
		/// 待上传的音频文件的文件名称信息，仅文件名
		/// File Name
		/// </summary>
		[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
		public string szFileName;

		/// <summary>
		/// 待上传的音频文件的文件大小(单位为字节)
		/// File Size (Bytes)
		/// </summary>
		public int nFileLength;

		/// <summary>
		/// 分包大小，传递0 表示使用内部的逻辑进行分配处理	
		/// File pack size(Bytes): Chunk Size (0 = use default)
		/// </summary>
		public int nPacketLength;
	}

	/// <summary>
	/// CLIENT_IpSpeakerUploadAudioFile 接口出参
	/// CLIENT_IpSpeakerUploadAudioFile Interface output parameters
	/// </summary>
	public struct NET_OUT_IPSPEAKER_UPLOAD_AUDIO_FILE
	{
		/// <summary>
		/// 此结构体大小,必须赋值
		/// Structure size
		/// </summary>
		public uint dwSize;
	}
}


