package com.usky.sas.common.hik.sdk;

import com.sun.jna.Callback;
import com.sun.jna.Library;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.jna.Union;
import com.sun.jna.platform.win32.WinDef.HDC;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.ShortByReference;
import java.util.Arrays;
import java.util.List;

public interface HCNetSDK extends Library {
    int MAX_NAMELEN = 16;
    int MAX_RIGHT = 32;
    int NAME_LEN = 32;
    int PASSWD_LEN = 16;
    int SERIALNO_LEN = 48;
    int MACADDR_LEN = 6;
    int MAX_ETHERNET = 2;
    int PATHNAME_LEN = 128;
    int MAX_TIMESEGMENT_V30 = 8;
    int MAX_TIMESEGMENT = 4;
    int MAX_SHELTERNUM = 4;
    int MAX_DAYS = 7;
    int PHONENUMBER_LEN = 32;
    int MAX_DISKNUM_V30 = 33;
    int MAX_DISKNUM = 16;
    int MAX_DISKNUM_V10 = 8;
    int MAX_WINDOW_V30 = 32;
    int MAX_WINDOW = 16;
    int MAX_VGA_V30 = 4;
    int MAX_VGA = 1;
    int MAX_USERNUM_V30 = 32;
    int MAX_USERNUM = 16;
    int MAX_EXCEPTIONNUM_V30 = 32;
    int MAX_EXCEPTIONNUM = 16;
    int MAX_LINK = 6;
    int MAX_DECPOOLNUM = 4;
    int MAX_DECNUM = 4;
    int MAX_TRANSPARENTNUM = 2;
    int MAX_CYCLE_CHAN = 16;
    int MAX_DIRNAME_LENGTH = 80;
    int MAX_STRINGNUM_V30 = 8;
    int MAX_STRINGNUM = 4;
    int MAX_STRINGNUM_EX = 8;
    int MAX_AUXOUT_V30 = 16;
    int MAX_AUXOUT = 4;
    int MAX_HD_GROUP = 16;
    int MAX_NFS_DISK = 8;
    int IW_ESSID_MAX_SIZE = 32;
    int IW_ENCODING_TOKEN_MAX = 32;
    int MAX_SERIAL_NUM = 64;
    int MAX_DDNS_NUMS = 10;
    int MAX_DOMAIN_NAME = 64;
    int MAX_EMAIL_ADDR_LEN = 48;
    int MAX_EMAIL_PWD_LEN = 32;
    int MAXPROGRESS = 100;
    int MAX_SERIALNUM = 2;
    int CARDNUM_LEN = 20;
    int MAX_VIDEOOUT_V30 = 4;
    int MAX_VIDEOOUT = 2;
    int MAX_PRESET_V30 = 256;
    int MAX_TRACK_V30 = 256;
    int MAX_CRUISE_V30 = 256;
    int MAX_PRESET = 128;
    int MAX_TRACK = 128;
    int MAX_CRUISE = 128;
    int CRUISE_MAX_PRESET_NUMS = 32;
    int MAX_SERIAL_PORT = 8;
    int MAX_PREVIEW_MODE = 8;
    int MAX_MATRIXOUT = 16;
    int LOG_INFO_LEN = 11840;
    int DESC_LEN = 16;
    int PTZ_PROTOCOL_NUM = 200;
    int MAX_AUDIO = 1;
    int MAX_AUDIO_V30 = 2;
    int MAX_CHANNUM = 16;
    int MAX_ALARMIN = 16;
    int MAX_ALARMOUT = 4;
    int MAX_ANALOG_CHANNUM = 32;
    int MAX_ANALOG_ALARMOUT = 32;
    int MAX_ANALOG_ALARMIN = 32;
    int MAX_IP_ALARMIN_V40 = 4096;
    int MAX_IP_ALARMOUT_V40 = 4096;
    int MAX_ALARMOUT_V40 = 4128;
    int MAX_ALARMIN_V40 = 4128;
    int MAX_CHANNUM_V40 = 512;
    int MAX_IP_DEVICE = 32;
    int MAX_IP_CHANNEL = 32;
    int MAX_IP_ALARMIN = 128;
    int MAX_IP_ALARMOUT = 64;
    int MAX_CHANNUM_V30 = 64;
    int MAX_ALARMOUT_V30 = 96;
    int MAX_ALARMIN_V30 = 160;
    int MAX_IP_DEVICE_V40 = 64;
    int STREAM_ID_LEN = 32;
    int MAX_LICENSE_LEN = 16;
    int MAX_LICENSE_LEN_EX = 32;
    int MAX_CARDNO_LEN = 48;
    int VCA_MAX_POLYGON_POINT_NUM = 10;
    int MAX_ID_NUM_LEN = 32;
    int MAX_ID_NAME_LEN = 128;
    int MAX_ID_ADDR_LEN = 280;
    int MAX_ID_ISSUING_AUTHORITY_LEN = 128;
    int MAX_CARD_READER_NUM_512 = 512;
    int ERROR_MSG_LEN = 32;
    int MAX_FACE_NUM = 2;
    int MAX_FINGER_PRINT_LEN = 768;
    int DEV_TYPE_NAME_LEN = 24;
    int MAX_FACE_PIC_NUM = 30;
    int CARDNUM_LEN_V30 = 40;
    int MAX_NOTICE_NUMBER_LEN = 32;
    int MAX_NOTICE_THEME_LEN = 64;
    int MAX_NOTICE_DETAIL_LEN = 1024;
    int MAX_NOTICE_PIC_NUM = 6;
    int MAX_DEV_NUMBER_LEN = 32;
    int LOCK_NAME_LEN = 32;
    int NET_SDK_EMPLOYEE_NO_LEN = 32;
    int NET_SDK_UUID_LEN = 36;
    int MAX_INQUEST_CDRW_NUM = 4;
    int INQUEST_MESSAGE_LEN = 44;
    int INQUEST_MAX_ROOM_NUM = 2;
    int MAX_RESUME_SEGMENT = 2;
    int SUPPORT_PD_NUM = 16;
    int SUPPORT_ARRAY_NUM = 8;
    int SUPPORT_VD_NUM = 128;
    int SUPPORT_PD_NUM_ = 16;
    int SUPPORT_PD_NUM_PARTTWO = 8;
    int CARDNUM_LEN_OUT = 32;
    int GUID_LEN = 16;
    int MAX_ROIDETECT_NUM = 8;
    int MAX_LANERECT_NUM = 5;
    int MAX_FORTIFY_NUM = 10;
    int MAX_INTERVAL_NUM = 4;
    int MAX_CHJC_NUM = 3;
    int MAX_VL_NUM = 5;
    int MAX_DRIVECHAN_NUM = 16;
    int MAX_COIL_NUM = 3;
    int MAX_SIGNALLIGHT_NUM = 6;
    int MAX_IOSPEED_GROUP_NUM = 4;
    int MAX_IOOUT_NUM = 4;
    int MAX_IOIN_NUM = 8;
    int MAX_RELAY_NUM = 12;
    int MAX_VEHICLE_TYPE_NUM = 8;
    int MAX_IOIN_NUMEX = 10;
    int MAX_ITC_LANE_NUM = 6;
    int MAX_LANEAREA_NUM = 2;
    int ITC_MAX_POLYGON_POINT_NUM = 20;
    int MAX_ITC_SERIALCHECK_NUM = 8;
    int MAX_LIGHT_NUM = 6;
    int MAX_VIDEO_INTERVAL_NUM = 2;
    int MAX_VIDEO_DETECT_LIGHT_NUM = 12;
    int MAX_CALIB_RECOG_NUM = 2;
    int MAX_RS485_NUM = 12;
    int MAX_MOBILE_POLYGON_NUM = 3;
    int MAX_MOBILE_DETECTLINE_NUM = 3;
    int MAX_IOOUT_K_NUM = 8;
    int NET_SDK_MAX_FDID_LEN = 256;
    int NET_SDK_MAX_PICID_LEN = 256;
    int NET_SDK_MAX_INDENTITY_KEY_LEN = 64;
    int SEARCH_EVENT_INFO_LEN = 300;
    int SEARCH_EVENT_INFO_LEN_V40 = 800;
    int MAX_POS_KEYWORDS_NUM = 3;
    int MAX_POS_KEYWORD_LEN = 128;
    int INQUEST_CASE_LEN = 64;
    int SEARCH_CASE_NO_LEN = 56;
    int SEARCH_CASE_NAME_LEN = 100;
    int SEARCH_LITIGANT_LEN = 32;
    int SEARCH_CHIEF_JUDGE_LEN = 32;
    int CASE_NO_RET_LEN = 52;
    int CASE_NAME_RET_LEN = 64;
    int LITIGANT_RET_LEN = 24;
    int CHIEF_JUDGE_RET_LEN = 24;
    int NET_SDK_CASETYPE_LEN = 32;
    int NET_SDK_MAX_TAPE_INDEX_LEN = 32;
    int NET_SDK_MAX_FILE_LEN = 256;
    int NET_SDK_INIT_CFG_TYPE_CHECK_MODULE_COM = 0;
    int NET_SDK_INIT_CFG_ABILITY = 1;
    int NET_SDK_INIT_CFG_SDK_PATH = 2;
    int NET_SDK_INIT_CFG_LIBEAY_PATH = 3;
    int NET_SDK_INIT_CFG_SSLEAY_PATH = 4;
    int NET_DVR_NOERROR = 0;
    int NET_DVR_PASSWORD_ERROR = 1;
    int NET_DVR_NOENOUGHPRI = 2;
    int NET_DVR_NOINIT = 3;
    int NET_DVR_CHANNEL_ERROR = 4;
    int NET_DVR_OVER_MAXLINK = 5;
    int NET_DVR_VERSIONNOMATCH = 6;
    int NET_DVR_NETWORK_FAIL_CONNECT = 7;
    int NET_DVR_NETWORK_SEND_ERROR = 8;
    int NET_DVR_NETWORK_RECV_ERROR = 9;
    int NET_DVR_NETWORK_RECV_TIMEOUT = 10;
    int NET_DVR_NETWORK_ERRORDATA = 11;
    int NET_DVR_ORDER_ERROR = 12;
    int NET_DVR_OPERNOPERMIT = 13;
    int NET_DVR_COMMANDTIMEOUT = 14;
    int NET_DVR_ERRORSERIALPORT = 15;
    int NET_DVR_ERRORALARMPORT = 16;
    int NET_DVR_PARAMETER_ERROR = 17;
    int NET_DVR_CHAN_EXCEPTION = 18;
    int NET_DVR_NODISK = 19;
    int NET_DVR_ERRORDISKNUM = 20;
    int NET_DVR_DISK_FULL = 21;
    int NET_DVR_DISK_ERROR = 22;
    int NET_DVR_NOSUPPORT = 23;
    int NET_DVR_BUSY = 24;
    int NET_DVR_MODIFY_FAIL = 25;
    int NET_DVR_PASSWORD_FORMAT_ERROR = 26;
    int NET_DVR_DISK_FORMATING = 27;
    int NET_DVR_DVRNORESOURCE = 28;
    int NET_DVR_DVROPRATEFAILED = 29;
    int NET_DVR_OPENHOSTSOUND_FAIL = 30;
    int NET_DVR_DVRVOICEOPENED = 31;
    int NET_DVR_TIMEINPUTERROR = 32;
    int NET_DVR_NOSPECFILE = 33;
    int NET_DVR_CREATEFILE_ERROR = 34;
    int NET_DVR_FILEOPENFAIL = 35;
    int NET_DVR_OPERNOTFINISH = 36;
    int NET_DVR_GETPLAYTIMEFAIL = 37;
    int NET_DVR_PLAYFAIL = 38;
    int NET_DVR_FILEFORMAT_ERROR = 39;
    int NET_DVR_DIR_ERROR = 40;
    int NET_DVR_ALLOC_RESOURCE_ERROR = 41;
    int NET_DVR_AUDIO_MODE_ERROR = 42;
    int NET_DVR_NOENOUGH_BUF = 43;
    int NET_DVR_CREATESOCKET_ERROR = 44;
    int NET_DVR_SETSOCKET_ERROR = 45;
    int NET_DVR_MAX_NUM = 46;
    int NET_DVR_USERNOTEXIST = 47;
    int NET_DVR_WRITEFLASHERROR = 48;
    int NET_DVR_UPGRADEFAIL = 49;
    int NET_DVR_CARDHAVEINIT = 50;
    int NET_DVR_PLAYERFAILED = 51;
    int NET_DVR_MAX_USERNUM = 52;
    int NET_DVR_GETLOCALIPANDMACFAIL = 53;
    int NET_DVR_NOENCODEING = 54;
    int NET_DVR_IPMISMATCH = 55;
    int NET_DVR_MACMISMATCH = 56;
    int NET_DVR_UPGRADELANGMISMATCH = 57;
    int NET_DVR_MAX_PLAYERPORT = 58;
    int NET_DVR_NOSPACEBACKUP = 59;
    int NET_DVR_NODEVICEBACKUP = 60;
    int NET_DVR_PICTURE_BITS_ERROR = 61;
    int NET_DVR_PICTURE_DIMENSION_ERROR = 62;
    int NET_DVR_PICTURE_SIZ_ERROR = 63;
    int NET_DVR_LOADPLAYERSDKFAILED = 64;
    int NET_DVR_LOADPLAYERSDKPROC_ERROR = 65;
    int NET_DVR_LOADDSSDKFAILED = 66;
    int NET_DVR_LOADDSSDKPROC_ERROR = 67;
    int NET_DVR_DSSDK_ERROR = 68;
    int NET_DVR_VOICEMONOPOLIZE = 69;
    int NET_DVR_JOINMULTICASTFAILED = 70;
    int NET_DVR_CREATEDIR_ERROR = 71;
    int NET_DVR_BINDSOCKET_ERROR = 72;
    int NET_DVR_SOCKETCLOSE_ERROR = 73;
    int NET_DVR_USERID_ISUSING = 74;
    int NET_DVR_SOCKETLISTEN_ERROR = 75;
    int NET_DVR_PROGRAM_EXCEPTION = 76;
    int NET_DVR_WRITEFILE_FAILED = 77;
    int NET_DVR_FORMAT_READONLY = 78;
    int NET_DVR_WITHSAMEUSERNAME = 79;
    int NET_DVR_DEVICETYPE_ERROR = 80;
    int NET_DVR_LANGUAGE_ERROR = 81;
    int NET_DVR_PARAVERSION_ERROR = 82;
    int NET_DVR_IPCHAN_NOTALIVE = 83;
    int NET_DVR_RTSP_SDK_ERROR = 84;
    int NET_DVR_CONVERT_SDK_ERROR = 85;
    int NET_DVR_IPC_COUNT_OVERFLOW = 86;
    int NET_PLAYM4_NOERROR = 500;
    int NET_PLAYM4_PARA_OVER = 501;
    int NET_PLAYM4_ORDER_ERROR = 502;
    int NET_PLAYM4_TIMER_ERROR = 503;
    int NET_PLAYM4_DEC_VIDEO_ERROR = 504;
    int NET_PLAYM4_DEC_AUDIO_ERROR = 505;
    int NET_PLAYM4_ALLOC_MEMORY_ERROR = 506;
    int NET_PLAYM4_OPEN_FILE_ERROR = 507;
    int NET_PLAYM4_CREATE_OBJ_ERROR = 508;
    int NET_PLAYM4_CREATE_DDRAW_ERROR = 509;
    int NET_PLAYM4_CREATE_OFFSCREEN_ERROR = 510;
    int NET_PLAYM4_BUF_OVER = 511;
    int NET_PLAYM4_CREATE_SOUND_ERROR = 512;
    int NET_PLAYM4_SET_VOLUME_ERROR = 513;
    int NET_PLAYM4_SUPPORT_FILE_ONLY = 514;
    int NET_PLAYM4_SUPPORT_STREAM_ONLY = 515;
    int NET_PLAYM4_SYS_NOT_SUPPORT = 516;
    int NET_PLAYM4_FILEHEADER_UNKNOWN = 517;
    int NET_PLAYM4_VERSION_INCORRECT = 518;
    int NET_PALYM4_INIT_DECODER_ERROR = 519;
    int NET_PLAYM4_CHECK_FILE_ERROR = 520;
    int NET_PLAYM4_INIT_TIMER_ERROR = 521;
    int NET_PLAYM4_BLT_ERROR = 522;
    int NET_PLAYM4_UPDATE_ERROR = 523;
    int NET_PLAYM4_OPEN_FILE_ERROR_MULTI = 524;
    int NET_PLAYM4_OPEN_FILE_ERROR_VIDEO = 525;
    int NET_PLAYM4_JPEG_COMPRESS_ERROR = 526;
    int NET_PLAYM4_EXTRACT_NOT_SUPPORT = 527;
    int NET_PLAYM4_EXTRACT_DATA_ERROR = 528;
    int NET_DVR_SUPPORT_DDRAW = 1;
    int NET_DVR_SUPPORT_BLT = 2;
    int NET_DVR_SUPPORT_BLTFOURCC = 4;
    int NET_DVR_SUPPORT_BLTSHRINKX = 8;
    int NET_DVR_SUPPORT_BLTSHRINKY = 16;
    int NET_DVR_SUPPORT_BLTSTRETCHX = 32;
    int NET_DVR_SUPPORT_BLTSTRETCHY = 64;
    int NET_DVR_SUPPORT_SSE = 128;
    int NET_DVR_SUPPORT_MMX = 256;
    int LIGHT_PWRON = 2;
    int WIPER_PWRON = 3;
    int FAN_PWRON = 4;
    int HEATER_PWRON = 5;
    int AUX_PWRON1 = 6;
    int AUX_PWRON2 = 7;
    int SET_PRESET = 8;
    int CLE_PRESET = 9;
    int ZOOM_IN = 11;
    int ZOOM_OUT = 12;
    int FOCUS_NEAR = 13;
    int FOCUS_FAR = 14;
    int IRIS_OPEN = 15;
    int IRIS_CLOSE = 16;
    int TILT_UP = 21;
    int TILT_DOWN = 22;
    int PAN_LEFT = 23;
    int PAN_RIGHT = 24;
    int UP_LEFT = 25;
    int UP_RIGHT = 26;
    int DOWN_LEFT = 27;
    int DOWN_RIGHT = 28;
    int PAN_AUTO = 29;
    int FILL_PRE_SEQ = 30;
    int SET_SEQ_DWELL = 31;
    int SET_SEQ_SPEED = 32;
    int CLE_PRE_SEQ = 33;
    int STA_MEM_CRUISE = 34;
    int STO_MEM_CRUISE = 35;
    int RUN_CRUISE = 36;
    int RUN_SEQ = 37;
    int STOP_SEQ = 38;
    int GOTO_PRESET = 39;
    int NET_DVR_PLAYSTART = 1;
    int NET_DVR_PLAYSTOP = 2;
    int NET_DVR_PLAYPAUSE = 3;
    int NET_DVR_PLAYRESTART = 4;
    int NET_DVR_PLAYFAST = 5;
    int NET_DVR_PLAYSLOW = 6;
    int NET_DVR_PLAYNORMAL = 7;
    int NET_DVR_PLAYFRAME = 8;
    int NET_DVR_PLAYSTARTAUDIO = 9;
    int NET_DVR_PLAYSTOPAUDIO = 10;
    int NET_DVR_PLAYAUDIOVOLUME = 11;
    int NET_DVR_PLAYSETPOS = 12;
    int NET_DVR_PLAYGETPOS = 13;
    int NET_DVR_PLAYGETTIME = 14;
    int NET_DVR_PLAYGETFRAME = 15;
    int NET_DVR_GETTOTALFRAMES = 16;
    int NET_DVR_GETTOTALTIME = 17;
    int NET_DVR_THROWBFRAME = 20;
    int NET_DVR_SETSPEED = 24;
    int NET_DVR_KEEPALIVE = 25;
    int NET_DVR_SET_TRANS_TYPE = 32;
    int KEY_CODE_1 = 1;
    int KEY_CODE_2 = 2;
    int KEY_CODE_3 = 3;
    int KEY_CODE_4 = 4;
    int KEY_CODE_5 = 5;
    int KEY_CODE_6 = 6;
    int KEY_CODE_7 = 7;
    int KEY_CODE_8 = 8;
    int KEY_CODE_9 = 9;
    int KEY_CODE_0 = 10;
    int KEY_CODE_POWER = 11;
    int KEY_CODE_MENU = 12;
    int KEY_CODE_ENTER = 13;
    int KEY_CODE_CANCEL = 14;
    int KEY_CODE_UP = 15;
    int KEY_CODE_DOWN = 16;
    int KEY_CODE_LEFT = 17;
    int KEY_CODE_RIGHT = 18;
    int KEY_CODE_EDIT = 19;
    int KEY_CODE_ADD = 20;
    int KEY_CODE_MINUS = 21;
    int KEY_CODE_PLAY = 22;
    int KEY_CODE_REC = 23;
    int KEY_CODE_PAN = 24;
    int KEY_CODE_M = 25;
    int KEY_CODE_A = 26;
    int KEY_CODE_F1 = 27;
    int KEY_CODE_F2 = 28;
    int KEY_PTZ_UP_START = 15;
    int KEY_PTZ_UP_STO = 32;
    int KEY_PTZ_DOWN_START = 16;
    int KEY_PTZ_DOWN_STOP = 33;
    int KEY_PTZ_LEFT_START = 17;
    int KEY_PTZ_LEFT_STOP = 34;
    int KEY_PTZ_RIGHT_START = 18;
    int KEY_PTZ_RIGHT_STOP = 35;
    int KEY_PTZ_AP1_START = 19;
    int KEY_PTZ_AP1_STOP = 36;
    int KEY_PTZ_AP2_START = 24;
    int KEY_PTZ_AP2_STOP = 37;
    int KEY_PTZ_FOCUS1_START = 26;
    int KEY_PTZ_FOCUS1_STOP = 38;
    int KEY_PTZ_FOCUS2_START = 25;
    int KEY_PTZ_FOCUS2_STOP = 39;
    int KEY_PTZ_B1_START = 40;
    int KEY_PTZ_B1_STOP = 41;
    int KEY_PTZ_B2_START = 42;
    int KEY_PTZ_B2_STOP = 43;
    int KEY_CODE_11 = 44;
    int KEY_CODE_12 = 45;
    int KEY_CODE_13 = 46;
    int KEY_CODE_14 = 47;
    int KEY_CODE_15 = 48;
    int KEY_CODE_16 = 49;
    int NET_DVR_GET_DEVICECFG = 100;
    int NET_DVR_SET_DEVICECFG = 101;
    int NET_DVR_GET_DEVICECFG_V40 = 1100;
    int NET_DVR_SET_DEVICECFG_V40 = 1101;
    int NET_DVR_GET_NETCFG = 102;
    int NET_DVR_SET_NETCFG = 103;
    int NET_DVR_GET_PICCFG = 104;
    int NET_DVR_SET_PICCFG = 105;
    int NET_DVR_GET_COMPRESSCFG = 106;
    int NET_DVR_SET_COMPRESSCFG = 107;
    int NET_DVR_GET_RECORDCFG = 108;
    int NET_DVR_SET_RECORDCFG = 109;
    int NET_DVR_GET_DECODERCFG = 110;
    int NET_DVR_SET_DECODERCFG = 111;
    int NET_DVR_GET_RS232CFG = 112;
    int NET_DVR_SET_RS232CFG = 113;
    int NET_DVR_GET_ALARMINCFG = 114;
    int NET_DVR_SET_ALARMINCFG = 115;
    int NET_DVR_GET_ALARMOUTCFG = 116;
    int NET_DVR_SET_ALARMOUTCFG = 117;
    int NET_DVR_GET_TIMECFG = 118;
    int NET_DVR_SET_TIMECFG = 119;
    int NET_DVR_GET_PREVIEWCFG = 120;
    int NET_DVR_SET_PREVIEWCFG = 121;
    int NET_DVR_GET_VIDEOOUTCFG = 122;
    int NET_DVR_SET_VIDEOOUTCFG = 123;
    int NET_DVR_GET_USERCFG = 124;
    int NET_DVR_SET_USERCFG = 125;
    int NET_DVR_GET_EXCEPTIONCFG = 126;
    int NET_DVR_SET_EXCEPTIONCFG = 127;
    int NET_DVR_GET_ZONEANDDST = 128;
    int NET_DVR_SET_ZONEANDDST = 129;
    int NET_DVR_GET_SHOWSTRING = 130;
    int NET_DVR_SET_SHOWSTRING = 131;
    int NET_DVR_GET_EVENTCOMPCFG = 132;
    int NET_DVR_SET_EVENTCOMPCFG = 133;
    int NET_DVR_GET_AUXOUTCFG = 140;
    int NET_DVR_SET_AUXOUTCFG = 141;
    int NET_DVR_GET_PREVIEWCFG_AUX = 142;
    int NET_DVR_SET_PREVIEWCFG_AUX = 143;
    int NET_DVR_GET_PICCFG_EX = 200;
    int NET_DVR_SET_PICCFG_EX = 201;
    int NET_DVR_GET_USERCFG_EX = 202;
    int NET_DVR_SET_USERCFG_EX = 203;
    int NET_DVR_GET_COMPRESSCFG_EX = 204;
    int NET_DVR_SET_COMPRESSCFG_EX = 205;
    int NET_DVR_GET_NETAPPCFG = 222;
    int NET_DVR_SET_NETAPPCFG = 223;
    int NET_DVR_GET_NTPCFG = 224;
    int NET_DVR_SET_NTPCFG = 225;
    int NET_DVR_GET_DDNSCFG = 226;
    int NET_DVR_SET_DDNSCFG = 227;
    int NET_DVR_GET_EMAILCFG = 228;
    int NET_DVR_SET_EMAILCFG = 229;
    int NET_DVR_GET_NFSCFG = 230;
    int NET_DVR_SET_NFSCFG = 231;
    int NET_DVR_GET_SHOWSTRING_EX = 238;
    int NET_DVR_SET_SHOWSTRING_EX = 239;
    int NET_DVR_GET_NETCFG_OTHER = 244;
    int NET_DVR_SET_NETCFG_OTHER = 245;
    int NET_DVR_GET_EMAILPARACFG = 250;
    int NET_DVR_SET_EMAILPARACFG = 251;
    int NET_DVR_GET_DDNSCFG_EX = 274;
    int NET_DVR_SET_DDNSCFG_EX = 275;
    int NET_DVR_SET_PTZPOS = 292;
    int NET_DVR_GET_PTZPOS = 293;
    int NET_DVR_GET_PTZSCOPE = 294;
    int NET_DVR_GET_PTZLOCKCFG = 3287;
    int NET_DVR_SET_PTZLOCKCFG = 3288;
    int NET_DVR_COMPLETE_RESTORE_CTRL = 3420;
    int NET_DVR_GET_NETCFG_V30 = 1000;
    int NET_DVR_SET_NETCFG_V30 = 1001;
    int NET_DVR_GET_PICCFG_V30 = 1002;
    int NET_DVR_SET_PICCFG_V30 = 1003;
    int NET_DVR_GET_PICCFG_V40 = 6179;
    int NET_DVR_SET_PICCFG_V40 = 6180;
    int NET_DVR_GET_AES_KEY = 6113;
    int NET_DVR_GET_RECORDCFG_V30 = 1004;
    int NET_DVR_SET_RECORDCFG_V30 = 1005;
    int NET_DVR_GET_USERCFG_V30 = 1006;
    int NET_DVR_SET_USERCFG_V30 = 1007;
    int NET_DVR_GET_DDNSCFG_V30 = 1010;
    int NET_DVR_SET_DDNSCFG_V30 = 1011;
    int NET_DVR_GET_EMAILCFG_V30 = 1012;
    int NET_DVR_SET_EMAILCFG_V30 = 1013;
    int NET_DVR_GET_CRUISE = 1020;
    int NET_DVR_SET_CRUISE = 1021;
    int NET_DVR_GET_ALARMINCFG_V30 = 1024;
    int NET_DVR_SET_ALARMINCFG_V30 = 1025;
    int NET_DVR_GET_ALARMOUTCFG_V30 = 1026;
    int NET_DVR_SET_ALARMOUTCFG_V30 = 1027;
    int NET_DVR_GET_VIDEOOUTCFG_V30 = 1028;
    int NET_DVR_SET_VIDEOOUTCFG_V30 = 1029;
    int NET_DVR_GET_SHOWSTRING_V30 = 1030;
    int NET_DVR_SET_SHOWSTRING_V30 = 1031;
    int NET_DVR_GET_EXCEPTIONCFG_V30 = 1034;
    int NET_DVR_SET_EXCEPTIONCFG_V30 = 1035;
    int NET_DVR_GET_RS232CFG_V30 = 1036;
    int NET_DVR_SET_RS232CFG_V30 = 1037;
    int NET_DVR_GET_COMPRESSCFG_V30 = 1040;
    int NET_DVR_SET_COMPRESSCFG_V30 = 1041;
    int NET_DVR_GET_DECODERCFG_V30 = 1042;
    int NET_DVR_SET_DECODERCFG_V30 = 1043;
    int NET_DVR_GET_PREVIEWCFG_V30 = 1044;
    int NET_DVR_SET_PREVIEWCFG_V30 = 1045;
    int NET_DVR_GET_PREVIEWCFG_AUX_V30 = 1046;
    int NET_DVR_SET_PREVIEWCFG_AUX_V30 = 1047;
    int NET_DVR_GET_IPPARACFG = 1048;
    int NET_DVR_SET_IPPARACFG = 1049;
    int NET_DVR_GET_IPPARACFG_V40 = 1062;
    int NET_DVR_SET_IPPARACFG_V40 = 1063;
    int NET_DVR_GET_IPALARMINCFG = 1050;
    int NET_DVR_SET_IPALARMINCFG = 1051;
    int NET_DVR_GET_IPALARMOUTCFG = 1052;
    int NET_DVR_SET_IPALARMOUTCFG = 1053;
    int NET_DVR_GET_HDCFG = 1054;
    int NET_DVR_SET_HDCFG = 1055;
    int NET_DVR_GET_HDGROUP_CFG = 1056;
    int NET_DVR_SET_HDGROUP_CFG = 1057;
    int NET_DVR_GET_COMPRESSCFG_AUD = 1058;
    int NET_DVR_SET_COMPRESSCFG_AUD = 1059;
    int NET_SDK_FINDMEDICALFILE = 3954;
    int NET_SDK_FINDMEDICALPICTURE = 3955;
    int NET_DVR_GET_RAPIDMOVE_DETECTION = 3539;
    int NET_DVR_SET_RAPIDMOVE_DETECTION = 3540;
    int NET_DVR_GET_RAPIDMOVE_TRIGGER = 3543;
    int NET_DVR_SET_RAPIDMOVE_TRIGGER = 3544;
    int NET_DVR_GET_RAPIDMOVE_SCHEDULE = 3545;
    int NET_DVR_SET_RAPIDMOVE_SCHEDULE = 3546;
    int NET_DVR_GET_PRESET_NAME = 3383;
    int NET_DVR_SET_PRESET_NAME = 3382;
    int NET_DVR_GET_RULECFG_V42 = 5049;
    int NET_DVR_SET_RULECFG_V42 = 5050;
    int NET_DVR_SET_PLATECFG = 150;
    int NET_DVR_GET_PLATECFG = 151;
    int NET_DVR_SET_RULECFG = 152;
    int NET_DVR_GET_RULECFG = 153;
    int NET_DVR_SET_LF_CFG = 160;
    int NET_DVR_GET_LF_CFG = 161;
    int NET_DVR_SET_IVMS_STREAMCFG = 162;
    int NET_DVR_GET_IVMS_STREAMCFG = 163;
    int NET_DVR_SET_VCA_CTRLCFG = 164;
    int NET_DVR_GET_VCA_CTRLCFG = 165;
    int NET_DVR_SET_VCA_MASK_REGION = 166;
    int NET_DVR_GET_VCA_MASK_REGION = 167;
    int NET_DVR_SET_VCA_ENTER_REGION = 168;
    int NET_DVR_GET_VCA_ENTER_REGION = 169;
    int NET_DVR_SET_VCA_LINE_SEGMENT = 170;
    int NET_DVR_GET_VCA_LINE_SEGMENT = 171;
    int NET_DVR_SET_IVMS_MASK_REGION = 172;
    int NET_DVR_GET_IVMS_MASK_REGION = 173;
    int NET_DVR_SET_IVMS_ENTER_REGION = 174;
    int NET_DVR_GET_IVMS_ENTER_REGION = 175;
    int NET_DVR_SET_IVMS_BEHAVIORCFG = 176;
    int NET_DVR_GET_IVMS_BEHAVIORCFG = 177;
    int NET_DVR_GET_TRAVERSE_PLANE_DETECTION = 3360;
    int NET_DVR_SET_TRAVERSE_PLANE_DETECTION = 3361;
    int NET_DVR_GET_FIELD_DETECTION = 3362;
    int NET_DVR_SET_FIELD_DETECTION = 3363;
    int NET_DVR_GET_STREAM_INFO = 6023;
    int NET_DVR_GET_STREAM_RECORD_STATUS = 6021;
    int NET_DVR_GET_ALL_VEHICLE_CONTROL_LIST = 3124;
    int NET_DVR_VEHICLELIST_CTRL_START = 3133;
    int ENUM_SENDDATA = 0;
    int NET_DVR_GET_LEDDISPLAY_CFG = 3673;
    int NET_DVR_SET_LEDDISPLAY_CFG = 3672;
    int NET_DVR_SET_VOICEBROADCAST_CFG = 3675;
    int NET_DVR_SET_CHARGE_ACCOUNTINFO = 3662;
    int NET_DVR_GET_TRAFFIC_DATA = 3141;
    int NET_DVR_GET_TRAFFIC_FLOW = 3142;
    int NET_DVR_GET_CCDPARAMCFG_EX = 3368;
    int NET_DVR_SET_CCDPARAMCFG_EX = 3369;
    int NET_DVR_GET_FOCUSMODECFG = 3305;
    int NET_DVR_SET_FOCUSMODECFG = 3306;
    int NET_DVR_GET_SUPPLEMENTLIGHT = 3728;
    int NET_DVR_SET_SUPPLEMENTLIGHT = 3729;
    int NET_DVR_GET_FACECONTRAST_TRIGGER = 3965;
    int NET_DVR_SET_FACECONTRAST_TRIGGER = 3966;
    int NET_DVR_GET_FACECONTRAST_SCHEDULE = 3968;
    int NET_DVR_SET_FACECONTRAST_SCHEDULE = 3969;
    int NET_DVR_INQUEST_GET_CDW_STATUS = 6350;
    int NET_DVR_GET_REALTIME_THERMOMETRY = 3629;
    int NET_DVR_GET_MANUALTHERM_INFO = 6706;
    int NET_DVR_GET_THERMOMETRY_MODE = 6765;
    int NET_DVR_SET_THERMOMETRY_MODE = 6766;
    int NET_DVR_GET_PTZABSOLUTEEX = 6696;
    int NET_DVR_GET_THERMOMETRY_PRESETINFO = 3624;
    int NET_DVR_SET_THERMOMETRY_PRESETINFO = 3625;
    int NET_DVR_GET_THERMOMETRYRULE_TEMPERATURE_INFO = 23001;
    int NET_DVR_SET_DEVSERVER_CFG = 3258;
    int NET_DVR_GET_PHY_DISK_INFO = 6306;
    int NET_DVR_GET_WORK_STATUS = 6189;
    int NET_DVR_GET_MONTHLY_RECORD_DISTRIBUTION = 6164;
    int NET_DVR_GET_CURTRIGGERMODE = 3130;
    int NET_ITC_GET_TRIGGERCFG = 3003;
    int NET_ITC_SET_TRIGGERCFG = 3004;
    int NET_ITC_GET_VIDEO_TRIGGERCFG = 3017;
    int NET_ITC_SET_VIDEO_TRIGGERCFG = 3018;
    int NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG = 3216;
    int NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG = 3217;
    int NET_DVR_GET_CMS_CFG = 2070;
    int NET_DVR_SET_CMS_CFG = 2071;
    int NET_DVR_GET_ALARM_INFO = 4193;
    int NET_DVR_GET_CARD_CFG = 2116;
    int NET_DVR_SET_CARD_CFG = 2117;
    int NET_DVR_GET_CARD_CFG_V50 = 2178;
    int NET_DVR_SET_CARD_CFG_V50 = 2179;
    int NET_DVR_GET_FACE_PARAM_CFG = 2507;
    int NET_DVR_SET_FACE_PARAM_CFG = 2508;
    int NET_DVR_DEL_FACE_PARAM_CFG = 2509;
    int NET_DVR_CLEAR_ACS_PARAM = 2118;
    int NET_DVR_DEL_FINGERPRINT_CFG = 2152;
    int NET_DVR_GET_FINGERPRINT_CFG_V50 = 2183;
    int NET_DVR_SET_FINGERPRINT_CFG_V50 = 2184;
    int NET_DVR_DEL_FINGERPRINT_CFG_V50 = 2517;
    int NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50 = 2304;
    int NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50 = 2305;
    int NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50 = 2322;
    int NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50 = 2323;
    int NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE = 2107;
    int NET_DVR_GET_DOOR_CFG = 2108;
    int NET_DVR_SET_DOOR_CFG = 2109;
    int NET_DVR_GET_DOOR_STATUS_PLAN = 2110;
    int NET_DVR_SET_DOOR_STATUS_PLAN = 2111;
    int NET_DVR_GET_WEEK_PLAN_CFG = 2100;
    int NET_DVR_SET_WEEK_PLAN_CFG = 2101;
    int NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50 = 2181;
    int NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50 = 2182;
    int NET_DVR_CAPTURE_FACE_INFO = 2510;
    int NET_DVR_CAPTURE_FINGERPRINT_INFO = 2504;
    int NET_DVR_GET_ACS_EVENT = 2514;
    int NET_DVR_GET_CARD_READER_CFG_V50 = 2505;
    int NET_DVR_SET_CARD_READER_CFG_V50 = 2506;
    int NET_DVR_GET_REGISTER_INFO = 2511;
    int NET_DVR_GET_SMSRELATIVEPARA_V50 = 2512;
    int NET_DVR_SET_SMSRELATIVEPARA_V50 = 2513;
    int NET_DVR_GET_MULTI_CARD_CFG_V50 = 2515;
    int NET_DVR_SET_MULTI_CARD_CFG_V50 = 2516;
    int NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V51 = 2518;
    int NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V51 = 2519;
    int NET_DVR_SET_EXAM_INFO = 2530;
    int NET_DVR_SET_EXAMINEE_INFO = 2531;
    int NET_DVR_SEARCH_EXAM_COMPARE_RESULT = 2532;
    int NET_DVR_BULK_CHECK_FACE_PICTURE = 2533;
    int NET_DVR_JSON_CONFIG = 2550;
    int NET_DVR_FACE_DATA_RECORD = 2551;
    int NET_DVR_FACE_DATA_SEARCH = 2552;
    int NET_DVR_FACE_DATA_MODIFY = 2553;
    int NET_DVR_CAPTURE_DATA_SEARCH = 2554;
    int NET_DVR_SET_FORM_DATA = 2555;
    int NET_DVR_GET_FORM_DATA = 2556;
    int NET_DVR_GET_CARD = 2560;
    int NET_DVR_SET_CARD = 2561;
    int NET_DVR_GET_FACE = 2566;
    int NET_DVR_SET_FACE = 2567;
    int NET_DVR_DEL_CARD = 2562;
    int NET_DVR_GET_FINGERPRINT = 2563;
    int NET_DVR_SET_FINGERPRINT = 2564;
    int NET_DVR_DEL_FINGERPRINT = 2565;
    int NET_DVR_GET_ACS_WORK_STATUS_V50 = 2180;
    int NET_DVR_GET_ACS_CFG = 2159;
    int NET_DVR_SET_ACS_CFG = 2160;
    int NET_DVR_BULK_UPLOAD_ID_BLOCKLIST = 2521;
    int NET_DVR_SET_SENSOR_CFG = 1180;
    int NET_DVR_GET_SENSOR_CFG = 1181;
    int NET_DVR_SET_ALARMIN_PARAM = 1182;
    int NET_DVR_GET_ALARMIN_PARAM = 1183;
    int NET_DVR_SET_ALARMOUT_PARAM = 1184;
    int NET_DVR_GET_ALARMOUT_PARAM = 1185;
    int NET_DVR_SET_SIREN_PARAM = 1186;
    int NET_DVR_GET_SIREN_PARAM = 1187;
    int NET_DVR_SET_ALARM_RS485CFG = 1188;
    int NET_DVR_GET_ALARM_RS485CFG = 1189;
    int NET_DVR_GET_ALARMHOST_MAIN_STATUS = 1190;
    int NET_DVR_GET_ALARMHOST_OTHER_STATUS = 1191;
    int NET_DVR_SET_ALARMHOST_ENABLECFG = 1192;
    int NET_DVR_GET_ALARMHOST_ENABLECFG = 1193;
    int NET_DVR_SET_ALARM_CAMCFG = 1194;
    int NET_DVR_GET_ALARM_CAMCFG = 1195;
    int NET_DVR_SET_ALARMHOST_RS485_SLOT_CFG = 2055;
    int NET_DVR_GET_ALARMHOST_RS485_SLOT_CFG = 2056;
    int NET_DVR_SET_VIDEOWALLDISPLAYMODE = 1730;
    int NET_DVR_GET_VIDEOWALLDISPLAYMODE = 1731;
    int NET_DVR_GET_VIDEOWALLDISPLAYNO = 1732;
    int NET_DVR_SET_VIDEOWALLDISPLAYPOSITION = 1733;
    int NET_DVR_GET_VIDEOWALLDISPLAYPOSITION = 1734;
    int NET_DVR_GET_VIDEOWALLWINDOWPOSITION = 1735;
    int NET_DVR_SET_VIDEOWALLWINDOWPOSITION = 1736;
    int NET_DVR_VIDEOWALLWINDOW_CLOSEALL = 1737;
    int NET_DVR_SET_VIRTUALLED = 1738;
    int NET_DVR_GET_VIRTUALLED = 1739;
    int NET_DVR_GET_IMAGE_CUT_MODE = 1740;
    int NET_DVR_SET_IMAGE_CUT_MODE = 1741;
    int NET_DVR_GET_USING_SERIALPORT = 1742;
    int NET_DVR_SET_USING_SERIALPORT = 1743;
    int NET_DVR_SCENE_CONTROL = 1744;
    int NET_DVR_GET_CURRENT_SCENE = 1745;
    int NET_DVR_GET_VW_SCENE_PARAM = 1746;
    int NET_DVR_SET_VW_SCENE_PARAM = 1747;
    int NET_DVR_DISPLAY_CHANNO_CONTROL = 1748;
    int NET_DVR_GET_WIN_DEC_INFO = 1749;
    int NET_DVR_RESET_VIDEOWALLDISPLAYPOSITION = 1750;
    int NET_DVR_SET_VW_AUDIO_CFG = 1752;
    int NET_DVR_GET_VW_AUDIO_CFG = 1753;
    int NET_DVR_GET_GBT28181_DECCHANINFO_CFG = 1754;
    int NET_DVR_SET_GBT28181_DECCHANINFO_CFG = 1755;
    int NET_DVR_SET_MAINBOARD_SERIAL = 1756;
    int NET_DVR_GET_MAINBOARD_SERIAL = 1757;
    int NET_DVR_GET_SUBBOARD_INFO = 1758;
    int NET_DVR_GET_SUBBOARD_EXCEPTION = 1759;
    int NET_DVR_MATRIX_WALL_SET = 9001;
    int NET_DVR_MATRIX_WALL_GET = 9002;
    int NET_DVR_WALLWIN_GET = 9003;
    int NET_DVR_WALLWIN_SET = 9004;
    int NET_DVR_WALLWINPARAM_SET = 9005;
    int NET_DVR_WALLWINPARAM_GET = 9006;
    int NET_DVR_WALLSCENEPARAM_GET = 9007;
    int NET_DVR_WALLSCENEPARAM_SET = 9008;
    int NET_DVR_MATRIX_GETWINSTATUS = 9009;
    int NET_DVR_GET_WINASSOCIATEDDEVINFO = 9010;
    int NET_DVR_WALLOUTPUT_GET = 9011;
    int NET_DVR_WALLOUTPUT_SET = 9012;
    int NET_DVR_GET_UNITEDMATRIXSYSTEM = 9013;
    int NET_DVR_GET_WALL_CFG = 9014;
    int NET_DVR_SET_WALL_CFG = 9015;
    int NET_DVR_CLOSE_ALL_WND = 9016;
    int NET_DVR_SWITCH_WIN_TOP = 9017;
    int NET_DVR_SWITCH_WIN_BOTTOM = 9018;
    int NET_DVR_CLOSE_ALL_WND_V41 = 9019;
    int NET_DVR_GET_WALL_WINDOW_V41 = 9020;
    int NET_DVR_SET_WALL_WINDOW_V41 = 9021;
    int NET_DVR_GET_CURRENT_SCENE_V41 = 9022;
    int NET_DVR_GET_WALL_SCENE_PARAM_V41 = 9023;
    int NET_DVR_SET_WALL_SCENE_PARAM_V41 = 9024;
    int NET_DVR_GET_MATRIX_LOGO_CFG = 9025;
    int NET_DVR_SET_MATRIX_LOGO_CFG = 9026;
    int NET_DVR_GET_WIN_LOGO_CFG = 9027;
    int NET_DVR_SET_WIN_LOGO_CFG = 9028;
    int NET_DVR_DELETE_LOGO = 9029;
    int NET_DVR_SET_DISPLAY_EFFECT_CFG = 9030;
    int NET_DVR_GET_DISPLAY_EFFECT_CFG = 9031;
    int NET_DVR_DEC_PLAY_REMOTE_FILE = 9032;
    int NET_DVR_DEC_PLAY_REMOTE_FILE_V50 = 9314;
    int NET_DVR_GET_WIN_ZOOM_STATUS = 9033;
    int NET_DVR_GET_ALL_MATRIX_LOGOCFG = 9034;
    int NET_DVR_FILE_SUCCESS = 1000;
    int NET_DVR_FILE_NOFIND = 1001;
    int NET_DVR_ISFINDING = 1002;
    int NET_DVR_NOMOREFILE = 1003;
    int NET_DVR_FILE_EXCEPTION = 1004;
    int COMM_ALARM = 4352;
    int COMM_TRADEINFO = 5376;
    int COMM_ALARM_V30 = 16384;
    int COMM_ALARM_V40 = 16391;
    int COMM_ALARM_RULE = 4354;
    int COMM_ALARM_PDC = 4355;
    int COMM_UPLOAD_PLATE_RESULT = 10240;
    int COMM_ITS_PLATE_RESULT = 12368;
    int COMM_IPCCFG = 16385;
    int COMM_ITS_PARK_VEHICLE = 12374;
    int COMM_VEHICLE_CONTROL_ALARM = 12377;
    int COMM_ALARM_TFS = 4371;
    int COMM_ALARM_TPS_V41 = 4372;
    int COMM_ALARM_AID_V41 = 4373;
    int COMM_UPLOAD_FACESNAP_RESULT = 4370;
    int COMM_SNAP_MATCH_ALARM = 10498;
    int COMM_ALARM_ACS = 20482;
    int COMM_ID_INFO_ALARM = 20992;
    int COMM_VCA_ALARM = 18835;
    int COMM_ISAPI_ALARM = 24585;
    int COMM_ALARM_TPS_STATISTICS = 12418;
    int COMM_ALARM_TPS_REAL_TIME = 12417;
    int COMM_ALARMHOST_CID_ALARM = 4391;
    int COMM_SENSOR_VALUE_UPLOAD = 4384;
    int COMM_SENSOR_ALARM = 4385;
    int COMM_SWITCH_ALARM = 4386;
    int COMM_ALARMHOST_EXCEPTION = 4387;
    int COMM_ALARMHOST_OPERATEEVENT_ALARM = 4388;
    int COMM_ALARMHOST_SAFETYCABINSTATE = 4389;
    int COMM_ALARMHOST_ALARMOUTSTATUS = 4390;
    int COMM_ALARMHOST_DATA_UPLOAD = 4393;
    int COMM_UPLOAD_VIDEO_INTERCOM_EVENT = 4402;
    int COMM_ALARM_VIDEO_INTERCOM = 4403;
    int COMM_THERMOMETRY_ALARM = 21010;
    int COMM_FIREDETECTION_ALARM = 18833;
    int COMM_THERMOMETRY_DIFF_ALARM = 20753;
    int COMM_ALARM_SHIPSDETECTION = 17697;
    int COMM_UPLOAD_AIOP_VIDEO = 16417;
    int COMM_UPLOAD_AIOP_PICTURE = 16418;
    int COMM_UPLOAD_AIOP_POLLING_SNAP = 16419;
    int COMM_UPLOAD_AIOP_POLLING_VIDEO = 16420;
    int COMM_IPC_AUXALARM_RESULT = 10272;
    int EXCEPTION_EXCHANGE = 32768;
    int EXCEPTION_AUDIOEXCHANGE = 32769;
    int EXCEPTION_ALARM = 32770;
    int EXCEPTION_PREVIEW = 32771;
    int EXCEPTION_SERIAL = 32772;
    int EXCEPTION_RECONNECT = 32773;
    int EXCEPTION_ALARMRECONNECT = 32774;
    int EXCEPTION_SERIALRECONNECT = 32775;
    int EXCEPTION_PLAYBACK = 32784;
    int EXCEPTION_DISKFMT = 32785;
    int NET_DVR_SYSHEAD = 1;
    int NET_DVR_STREAMDATA = 2;
    int NET_DVR_AUDIOSTREAMDATA = 3;
    int NET_DVR_STD_VIDEODATA = 4;
    int NET_DVR_STD_AUDIODATA = 5;
    int NET_DVR_REALPLAYEXCEPTION = 111;
    int NET_DVR_REALPLAYNETCLOSE = 112;
    int NET_DVR_REALPLAY5SNODATA = 113;
    int NET_DVR_REALPLAYRECONNECT = 114;
    int NET_DVR_PLAYBACKOVER = 101;
    int NET_DVR_PLAYBACKEXCEPTION = 102;
    int NET_DVR_PLAYBACKNETCLOSE = 103;
    int NET_DVR_PLAYBACK5SNODATA = 104;
    int DVR = 1;
    int ATMDVR = 2;
    int DVS = 3;
    int DEC = 4;
    int ENC_DEC = 5;
    int DVR_HC = 6;
    int DVR_HT = 7;
    int DVR_HF = 8;
    int DVR_HS = 9;
    int DVR_HTS = 10;
    int DVR_HB = 11;
    int DVR_HCS = 12;
    int DVS_A = 13;
    int DVR_HC_S = 14;
    int DVR_HT_S = 15;
    int DVR_HF_S = 16;
    int DVR_HS_S = 17;
    int ATMDVR_S = 18;
    int LOWCOST_DVR = 19;
    int DEC_MAT = 20;
    int DVR_MOBILE = 21;
    int DVR_HD_S = 22;
    int DVR_HD_SL = 23;
    int DVR_HC_SL = 24;
    int DVR_HS_ST = 25;
    int DVS_HW = 26;
    int IPCAM = 30;
    int MEGA_IPCAM = 31;
    int IPCAM_X62MF = 32;
    int IPDOME = 40;
    int MEGA_IPDOME = 41;
    int IPMOD = 50;
    int DS71XX_H = 71;
    int DS72XX_H_S = 72;
    int DS73XX_H_S = 73;
    int DS81XX_HS_S = 81;
    int DS81XX_HL_S = 82;
    int DS81XX_HC_S = 83;
    int DS81XX_HD_S = 84;
    int DS81XX_HE_S = 85;
    int DS81XX_HF_S = 86;
    int DS81XX_AH_S = 87;
    int DS81XX_AHF_S = 88;
    int DS90XX_HF_S = 90;
    int DS91XX_HF_S = 91;
    int DS91XX_HD_S = 92;
    int MAJOR_OPERATION = 3;
    int MINOR_START_DVR = 65;
    int MINOR_STOP_DVR = 66;
    int MINOR_STOP_ABNORMAL = 67;
    int MINOR_REBOOT_DVR = 68;
    int MINOR_LOCAL_LOGIN = 80;
    int MINOR_LOCAL_LOGOUT = 81;
    int MINOR_LOCAL_CFG_PARM = 82;
    int MINOR_LOCAL_PLAYBYFILE = 83;
    int MINOR_LOCAL_PLAYBYTIME = 84;
    int MINOR_LOCAL_START_REC = 85;
    int MINOR_LOCAL_STOP_REC = 86;
    int MINOR_LOCAL_PTZCTRL = 87;
    int MINOR_LOCAL_PREVIEW = 88;
    int MINOR_LOCAL_MODIFY_TIME = 89;
    int MINOR_LOCAL_UPGRADE = 90;
    int MINOR_LOCAL_RECFILE_OUTPUT = 91;
    int MINOR_LOCAL_FORMAT_HDD = 92;
    int MINOR_LOCAL_CFGFILE_OUTPUT = 93;
    int MINOR_LOCAL_CFGFILE_INPUT = 94;
    int MINOR_LOCAL_COPYFILE = 95;
    int MINOR_LOCAL_LOCKFILE = 96;
    int MINOR_LOCAL_UNLOCKFILE = 97;
    int MINOR_LOCAL_DVR_ALARM = 98;
    int MINOR_IPC_ADD = 99;
    int MINOR_IPC_DEL = 100;
    int MINOR_IPC_SET = 101;
    int MINOR_LOCAL_START_BACKUP = 102;
    int MINOR_LOCAL_STOP_BACKUP = 103;
    int MINOR_LOCAL_COPYFILE_START_TIME = 104;
    int MINOR_LOCAL_COPYFILE_END_TIME = 105;
    int MINOR_REMOTE_LOGIN = 112;
    int MINOR_REMOTE_LOGOUT = 113;
    int MINOR_REMOTE_START_REC = 114;
    int MINOR_REMOTE_STOP_REC = 115;
    int MINOR_START_TRANS_CHAN = 116;
    int MINOR_STOP_TRANS_CHAN = 117;
    int MINOR_REMOTE_GET_PARM = 118;
    int MINOR_REMOTE_CFG_PARM = 119;
    int MINOR_REMOTE_GET_STATUS = 120;
    int MINOR_REMOTE_ARM = 121;
    int MINOR_REMOTE_DISARM = 122;
    int MINOR_REMOTE_REBOOT = 123;
    int MINOR_START_VT = 124;
    int MINOR_STOP_VT = 125;
    int MINOR_REMOTE_UPGRADE = 126;
    int MINOR_REMOTE_PLAYBYFILE = 127;
    int MINOR_REMOTE_PLAYBYTIME = 128;
    int MINOR_REMOTE_PTZCTRL = 129;
    int MINOR_REMOTE_FORMAT_HDD = 130;
    int MINOR_REMOTE_STOP = 131;
    int MINOR_REMOTE_LOCKFILE = 132;
    int MINOR_REMOTE_UNLOCKFILE = 133;
    int MINOR_REMOTE_CFGFILE_OUTPUT = 134;
    int MINOR_REMOTE_CFGFILE_INTPUT = 135;
    int MINOR_REMOTE_RECFILE_OUTPUT = 136;
    int MINOR_REMOTE_DVR_ALARM = 137;
    int MINOR_REMOTE_IPC_ADD = 138;
    int MINOR_REMOTE_IPC_DEL = 139;
    int MINOR_REMOTE_IPC_SET = 140;
    int MINOR_REBOOT_VCA_LIB = 141;
    int MAJOR_INFORMATION = 4;
    int MINOR_HDD_INFO = 161;
    int MINOR_SMART_INFO = 162;
    int MINOR_REC_START = 163;
    int MINOR_REC_STOP = 164;
    int MINOR_REC_OVERDUE = 165;
    int MINOR_LINK_START = 166;
    int MINOR_LINK_STOP = 167;
    int PARA_VIDEOOUT = 1;
    int PARA_IMAGE = 2;
    int PARA_ENCODE = 4;
    int PARA_NETWORK = 8;
    int PARA_ALARM = 16;
    int PARA_EXCEPTION = 32;
    int PARA_DECODER = 64;
    int PARA_RS232 = 128;
    int PARA_PREVIEW = 256;
    int PARA_SECURITY = 512;
    int PARA_DATETIME = 1024;
    int PARA_FRAMETYPE = 2048;
    int PARA_VCA_RULE = 4096;
    int DS6001_HF_B = 60;
    int DS6001_HF_P = 61;
    int DS6002_HF_B = 62;
    int DS6101_HF_B = 63;
    int IVMS_2000 = 64;
    int DS9000_IVS = 65;
    int DS8004_AHL_A = 66;
    int DS6101_HF_P = 67;
    int VCA_DEV_ABILITY = 256;
    int VCA_CHAN_ABILITY = 272;
    int DEVICE_ABILITY_INFO = 17;
    int NET_DVR_CHECK_USER_STATUS = 20005;
    int MAX_MULTI_AREA_NUM = 24;
    int NET_DVR_GET_SUBWND_DECODE_OSD = 9183;
    int NET_DVR_GET_SUBWND_DECODE_OSD_ALL = 9184;
    int NET_DVR_SET_SUBWND_DECODE_OSD = 9185;
    int NET_DVR_GET_SUBWND_DECODE_OSD_CAP = 9186;
    int NET_DVR_GET_DECODE_CHANNEL_OSD = 9187;
    int NET_DVR_SET_DECODE_CHANNEL_OSD = 9188;
    int MAX_PLAN_ACTION_NUM = 32;
    int DAYS_A_WEEK = 7;
    int MAX_PLAN_COUNT = 16;
    int MAX_LEN_OSD_CONTENT = 256;
    int MAX_NUM_OSD_ONE_SUBWND = 8;
    int MAX_NUM_SPLIT_WND = 64;
    int MAX_NUM_OSD = 8;
    int MAX_CYCLE_CHAN_V30 = 64;
    int STREAM_PASSWD_LEN = 12;
    int NET_DVR_DEV_ADDRESS_MAX_LEN = 129;
    int NET_DVR_LOGIN_USERNAME_MAX_LEN = 64;
    int NET_DVR_LOGIN_PASSWD_MAX_LEN = 64;
    int MAX_ALERTLINE_NUM = 8;
    int MAX_INTRUSIONREGION_NUM = 8;
    int CID_CODE_LEN = 4;
    int DEV_SERIAL_LEN = 9;
    int ACCOUNTNUM_LEN = 6;
    int ACCOUNTNUM_LEN_32 = 32;
    int MAX_PARKNO_LEN = 16;
    int MAX_ID_LEN = 48;
    int MAX_TRAFFIC_PICTURE_NUM = 8;
    int PICTURE_NAME_LEN = 64;
    int MAX_LED_INFO_LEN = 512;
    int MAX_VOICE_INFO_LEN = 128;
    int DOOR_NAME_LEN = 32;
    int STRESS_PASSWORD_LEN = 8;
    int SUPER_PASSWORD_LEN = 8;
    int UNLOCK_PASSWORD_LEN = 8;
    int MAX_ALARMHOST_ALARMIN_NUM = 512;
    int MAX_ALARMHOST_ALARMOUT_NUM = 512;
    int ACS_CARD_NO_LEN = 32;
    int MAX_GROUP_NUM_128 = 128;
    int MAX_DOOR_NUM_256 = 256;
    int CARD_PASSWORD_LEN = 8;
    int MAX_CARD_READER_NUM = 64;
    int MAX_DOOR_CODE_LEN = 8;
    int MAX_LOCK_CODE_LEN = 8;
    int MAX_CARD_RIGHT_PLAN_NUM = 4;
    int MAX_CASE_SENSOR_NUM = 8;
    int CARD_READER_DESCRIPTION = 32;
    int NET_SDK_CONFIG_STATUS_SUCCESS = 1000;
    int NET_SDK_CONFIG_STATUS_NEED_WAIT = 1001;
    int NET_SDK_CONFIG_STATUS_FINISH = 1002;
    int NET_SDK_CONFIG_STATUS_FAILED = 1003;
    int NET_SDK_CONFIG_STATUS_EXCEPTION = 1004;
    int NET_SDK_GET_NEXT_STATUS_SUCCESS = 1000;
    int NET_SDK_GET_NEXT_STATUS_NEED_WAIT = 1001;
    int NET_SDK_NEXT_STATUS__FINISH = 1002;
    int NET_SDK_GET_NEXT_STATUS_FAILED = 1003;
    int NET_DEV_NAME_LEN = 64;
    int NET_SDK_MONITOR_ID_LEN = 64;
    int ACS_PARAM_DOOR_STATUS_WEEK_PLAN = 1;
    int ACS_PARAM_VERIFY_WEEK_PALN = 2;
    int ACS_PARAM_CARD_RIGHT_WEEK_PLAN = 4;
    int ACS_PARAM_DOOR_STATUS_HOLIDAY_PLAN = 8;
    int ACS_PARAM_VERIFY_HOLIDAY_PALN = 16;
    int ACS_PARAM_CARD_RIGHT_HOLIDAY_PLAN = 32;
    int ACS_PARAM_DOOR_STATUS_HOLIDAY_GROUP = 64;
    int ACS_PARAM_VERIFY_HOLIDAY_GROUP = 128;
    int ACS_PARAM_CARD_RIGHT_HOLIDAY_GROUP = 256;
    int ACS_PARAM_DOOR_STATUS_PLAN_TEMPLATE = 512;
    int ACS_PARAM_VERIFY_PALN_TEMPLATE = 1024;
    int ACS_PARAM_CARD_RIGHT_PALN_TEMPLATE = 2048;
    int ACS_PARAM_CARD = 4096;
    int ACS_PARAM_GROUP = 8192;
    int ACS_PARAM_ANTI_SNEAK_CFG = 16384;
    int ACS_PAPAM_EVENT_CARD_LINKAGE = 32768;
    int ACS_PAPAM_CARD_PASSWD_CFG = 65536;
    int ACS_PARAM_PERSON_STATISTICS_CFG = 131072;
    int ACS_PARAM_BLOCKLIST_PICTURE = 262144;
    int ACS_PARAM_ID_BLOCKLIST = 524288;
    int ACS_PARAM_EXAM_INFO = 1048576;
    int ACS_PARAM_EXAMINEE_INFO = 2097152;
    int ACS_PARAM_FAILED_FACE_INFO = 4194304;
    int TEMPLATE_NAME_LEN = 32;
    int MAX_HOLIDAY_GROUP_NUM = 16;
    int ILLEGAL_LEN = 32;
    int MONITORSITE_ID_LEN = 48;
    int DEVICE_ID_LEN = 48;
    int MAX_OVERLAP_ITEM_NUM = 50;
    int MAX_HUMAN_BIRTHDATE_LEN = 10;
    int MAX_TPS_RULE = 8;
    int MAX_FILE_PATH_LEN = 256;
    int MAX_SHIPS_NUM = 20;
    int NET_SDK_MAX_FILE_PATH = 256;
    int MAX_DISPLAY_NUM = 512;
    int MAX_UPLOADFILE_URL_LEN = 240;
    int IMPORT_DATA_TO_FACELIB = 39;
    int NET_DVR_GET_GISINFO = 3711;

    boolean NET_DVR_Init();

    boolean NET_DVR_Cleanup();

    boolean NET_DVR_SetSDKInitCfg(int var1, Pointer var2);

    boolean NET_DVR_SetSDKLocalCfg(int var1, Pointer var2);

    boolean NET_DVR_GetSDKLocalCfg(int var1, Pointer var2);

    boolean NET_DVR_SetDVRMessage(int var1, int var2);

    boolean NET_DVR_SetExceptionCallBack_V30(int var1, int var2, HCNetSDK.FExceptionCallBack var3, Pointer var4);

    boolean NET_DVR_SetDVRMessCallBack(HCNetSDK.FMessCallBack var1);

    boolean NET_DVR_SetDVRMessCallBack_EX(HCNetSDK.FMessCallBack_EX var1);

    int NET_DVR_FindNextFile_Card(int var1, HCNetSDK.NET_DVR_FINDDATA_CARD var2);

    int NET_DVR_FindFile_Card(int var1, int var2, int var3, HCNetSDK.NET_DVR_TIME var4, HCNetSDK.NET_DVR_TIME var5);

    boolean NET_DVR_LockFileByName(int var1, String var2);

    boolean NET_DVR_UnlockFileByName(int var1, String var2);

    int NET_DVR_PlayBackByName(int var1, String var2, HWND var3);

    int NET_DVR_PlayBackByTime(int var1, int var2, HCNetSDK.NET_DVR_TIME var3, HCNetSDK.NET_DVR_TIME var4, HWND var5);

    int NET_DVR_PlayBackByTime_V40(int var1, HCNetSDK.NET_DVR_VOD_PARA var2);

    boolean NET_DVR_PlayBackControl(int var1, int var2, int var3, IntByReference var4);

    boolean NET_DVR_PlayBackControl_V40(Long var1, int var2, Pointer var3, int var4, Pointer var5, IntByReference var6);

    boolean NET_DVR_StopPlayBack(Long var1);

    boolean NET_DVR_SetPlayDataCallBack(int var1, HCNetSDK.FPlayDataCallBack var2, int var3);

    boolean NET_DVR_SetPlayDataCallBack_V40(int var1, HCNetSDK.FPlayDataCallBack var2, Pointer var3);

    boolean NET_DVR_SetPlayBackESCallBack(int var1, HCNetSDK.FPlayESCallBack var2, Pointer var3);

    boolean NET_DVR_PlayBackSaveData(int var1, String var2);

    boolean NET_DVR_StopPlayBackSave(int var1);

    boolean NET_DVR_GetPlayBackOsdTime(int var1, HCNetSDK.NET_DVR_TIME var2);

    boolean NET_DVR_PlayBackCaptureFile(int var1, String var2);

    int NET_DVR_GetFileByName(int var1, String var2, byte[] var3);

    int NET_DVR_GetFileByTime(int var1, int var2, HCNetSDK.NET_DVR_TIME var3, HCNetSDK.NET_DVR_TIME var4, String var5);

    int NET_DVR_GetFileByTime_V40(int var1, String var2, HCNetSDK.NET_DVR_PLAYCOND var3);

    boolean NET_DVR_StopGetFile(int var1);

    int NET_DVR_GetDownloadPos(int var1);

    int NET_DVR_GetPlayBackPos(int var1);

    int NET_DVR_FindPicture(int var1, HCNetSDK.NET_DVR_FIND_PICTURE_PARAM var2);

    int NET_DVR_FindNextPicture_V50(int var1, HCNetSDK.NET_DVR_FIND_PICTURE_V50 var2);

    int NET_DVR_FindNextPicture(int var1, HCNetSDK.NET_DVR_FIND_PICTURE var2);

    boolean NET_DVR_CloseFindPicture(int var1);

    boolean NET_DVR_GetPicture_V50(int var1, HCNetSDK.NET_DVR_PIC_PARAM var2);

    boolean NET_DVR_SetDVRMessCallBack_NEW(HCNetSDK.FMessCallBack_NEW var1);

    boolean NET_DVR_SetDVRMessageCallBack(HCNetSDK.FMessageCallBack var1, int var2);

    boolean NET_DVR_SetDVRMessageCallBack_V30(HCNetSDK.FMSGCallBack var1, Pointer var2);

    boolean NET_DVR_SetDVRMessageCallBack_V31(HCNetSDK.FMSGCallBack_V31 var1, Pointer var2);

    boolean NET_DVR_SetDVRMessageCallBack_V50(int var1, HCNetSDK.FMSGCallBack_V31 var2, Pointer var3);

    boolean NET_DVR_SetConnectTime(int var1, int var2);

    boolean NET_DVR_SetReconnect(int var1, boolean var2);

    int NET_DVR_GetSDKVersion();

    int NET_DVR_GetSDKBuildVersion();

    int NET_DVR_IsSupport();

    boolean NET_DVR_StartListen(String var1, short var2);

    boolean NET_DVR_StopListen();

    int NET_DVR_StartListen_V30(String var1, short var2, HCNetSDK.FMSGCallBack var3, Pointer var4);

    boolean NET_DVR_StopListen_V30(int var1);

    int NET_DVR_Login(String var1, short var2, String var3, String var4, HCNetSDK.NET_DVR_DEVICEINFO var5);

    int NET_DVR_Login_V30(String var1, short var2, String var3, String var4, HCNetSDK.NET_DVR_DEVICEINFO_V30 var5);

    int NET_DVR_Login_V40(HCNetSDK.NET_DVR_USER_LOGIN_INFO var1, HCNetSDK.NET_DVR_DEVICEINFO_V40 var2);

    boolean NET_DVR_Logout(int var1);

    boolean NET_DVR_Logout_V30(int var1);

    int NET_DVR_GetLastError();

    String NET_DVR_GetErrorMsg(IntByReference var1);

    boolean NET_DVR_SetShowMode(int var1, int var2);

    boolean NET_DVR_GetDVRIPByResolveSvr(String var1, short var2, String var3, short var4, String var5, short var6, String var7);

    boolean NET_DVR_GetDVRIPByResolveSvr_EX(String var1, short var2, String var3, short var4, String var5, short var6, String var7, IntByReference var8);

    int NET_DVR_RealPlay(int var1, HCNetSDK.NET_DVR_CLIENTINFO var2);

    int NET_DVR_RealPlay_V30(int var1, HCNetSDK.NET_DVR_CLIENTINFO var2, HCNetSDK.FRealDataCallBack_V30 var3, Pointer var4, boolean var5);

    int NET_DVR_RealPlay_V40(int var1, HCNetSDK.NET_DVR_PREVIEWINFO var2, HCNetSDK.FRealDataCallBack_V30 var3, Pointer var4);

    boolean NET_DVR_StopRealPlay(int var1);

    boolean NET_DVR_RigisterDrawFun(int var1, HCNetSDK.FDrawFun var2, int var3);

    boolean NET_DVR_SetPlayerBufNumber(int var1, int var2);

    boolean NET_DVR_ThrowBFrame(int var1, int var2);

    boolean NET_DVR_SetAudioMode(int var1);

    boolean NET_DVR_OpenSound(int var1);

    boolean NET_DVR_CloseSound();

    boolean NET_DVR_OpenSoundShare(int var1);

    boolean NET_DVR_CloseSoundShare(int var1);

    boolean NET_DVR_Volume(int var1, short var2);

    boolean NET_DVR_SaveRealData(int var1, String var2);

    boolean NET_DVR_SaveRealData_V30(int var1, int var2, Pointer var3);

    boolean NET_DVR_StopSaveRealData(int var1);

    boolean NET_DVR_SetRealDataCallBack(int var1, HCNetSDK.FRowDataCallBack var2, int var3);

    boolean NET_DVR_SetESRealPlayCallBack(int var1, HCNetSDK.FPlayESCallBack var2, Pointer var3);

    boolean NET_DVR_SetStandardDataCallBack(int var1, HCNetSDK.FStdDataCallBack var2, int var3);

    boolean NET_DVR_CapturePicture(int var1, String var2);

    boolean NET_DVR_MakeKeyFrame(int var1, int var2);

    boolean NET_DVR_MakeKeyFrameSub(int var1, int var2);

    boolean NET_DVR_PTZControl(int var1, int var2, int var3);

    boolean NET_DVR_PTZControl_Other(int var1, int var2, int var3, int var4);

    boolean NET_DVR_TransPTZ(int var1, String var2, int var3);

    boolean NET_DVR_TransPTZ_Other(int var1, int var2, String var3, int var4);

    boolean NET_DVR_PTZPreset(int var1, int var2, int var3);

    boolean NET_DVR_PTZPreset_Other(int var1, int var2, int var3, int var4);

    boolean NET_DVR_TransPTZ_EX(int var1, String var2, int var3);

    boolean NET_DVR_PTZControl_EX(int var1, int var2, int var3);

    boolean NET_DVR_PTZPreset_EX(int var1, int var2, int var3);

    boolean NET_DVR_PTZCruise(int var1, int var2, byte var3, byte var4, short var5);

    boolean NET_DVR_PTZCruise_Other(int var1, int var2, int var3, byte var4, byte var5, short var6);

    boolean NET_DVR_PTZCruise_EX(int var1, int var2, byte var3, byte var4, short var5);

    boolean NET_DVR_PTZTrack(int var1, int var2);

    boolean NET_DVR_PTZTrack_Other(int var1, int var2, int var3);

    boolean NET_DVR_PTZTrack_EX(int var1, int var2);

    boolean NET_DVR_PTZControlWithSpeed(int var1, int var2, int var3, int var4);

    boolean NET_DVR_PTZControlWithSpeed_Other(int var1, int var2, int var3, int var4, int var5);

    boolean NET_DVR_PTZControlWithSpeed_EX(int var1, int var2, int var3, int var4);

    boolean NET_DVR_GetPTZCruise(int var1, int var2, int var3, HCNetSDK.NET_DVR_CRUISE_RET var4);

    boolean NET_DVR_PTZMltTrack(int var1, int var2, int var3);

    boolean NET_DVR_PTZMltTrack_Other(int var1, int var2, int var3, int var4);

    boolean NET_DVR_PTZMltTrack_EX(int var1, int var2, int var3);

    int NET_DVR_FindFile(int var1, int var2, int var3, HCNetSDK.NET_DVR_TIME var4, HCNetSDK.NET_DVR_TIME var5);

    int NET_DVR_FindNextFile(int var1, HCNetSDK.NET_DVR_FIND_DATA var2);

    boolean NET_DVR_FindClose(int var1);

    int NET_DVR_FindNextFile_V30(int var1, HCNetSDK.NET_DVR_FINDDATA_V30 var2);

    int NET_DVR_FindFile_V30(int var1, HCNetSDK.NET_DVR_FILECOND var2);

    int NET_DVR_FindFile_V40(int var1, HCNetSDK.NET_DVR_FILECOND_V40 var2);

    int NET_DVR_FindNextFile_V40(int var1, HCNetSDK.NET_DVR_FINDDATA_V40 var2);

    int NET_DVR_FindFile_V50(int var1, HCNetSDK.NET_DVR_FILECOND_V50 var2);

    int NET_DVR_FindNextFile_V50(int var1, HCNetSDK.NET_DVR_FINDDATA_V50 var2);

    boolean NET_DVR_FindClose_V30(int var1);

    int NET_DVR_FindFileByEvent(int var1, HCNetSDK.NET_DVR_SEARCH_EVENT_PARAM var2);

    int NET_DVR_FindNextEvent(int var1, HCNetSDK.NET_DVR_SEARCH_EVENT_RET var2);

    int NET_DVR_FindFileByEvent_V50(int var1, HCNetSDK.NET_DVR_SEARCH_EVENT_PARAM_V50 var2);

    int NET_DVR_FindNextEvent_V50(int var1, HCNetSDK.NET_DVR_SEARCH_EVENT_RET_V50 var2);

    int NET_DVR_Upgrade(int var1, String var2);

    int NET_DVR_GetUpgradeState(int var1);

    int NET_DVR_GetUpgradeProgress(int var1);

    boolean NET_DVR_CloseUpgradeHandle(int var1);

    boolean NET_DVR_SetNetworkEnvironment(int var1);

    int NET_DVR_FormatDisk(int var1, int var2);

    boolean NET_DVR_GetFormatProgress(int var1, IntByReference var2, IntByReference var3, IntByReference var4);

    boolean NET_DVR_CloseFormatHandle(int var1);

    int NET_DVR_SetupAlarmChan(int var1);

    boolean NET_DVR_CloseAlarmChan(int var1);

    int NET_DVR_SetupAlarmChan_V30(int var1);

    int NET_DVR_SetupAlarmChan_V41(int var1, HCNetSDK.NET_DVR_SETUPALARM_PARAM var2);

    int NET_DVR_SetupAlarmChan_V50(int var1, HCNetSDK.NET_DVR_SETUPALARM_PARAM_V50 var2, Pointer var3, int var4);

    boolean NET_DVR_CloseAlarmChan_V30(int var1);

    int NET_DVR_StartVoiceCom(int var1, HCNetSDK.FVoiceDataCallBack var2, int var3);

    int NET_DVR_StartVoiceCom_V30(int var1, int var2, boolean var3, HCNetSDK.FVoiceDataCallBack_V30 var4, Pointer var5);

    boolean NET_DVR_SetVoiceComClientVolume(int var1, short var2);

    boolean NET_DVR_StopVoiceCom(int var1);

    boolean NET_DVR_GetCurrentAudioCompress(int var1, HCNetSDK.NET_DVR_COMPRESSION_AUDIO var2);

    int NET_DVR_StartVoiceCom_MR(int var1, HCNetSDK.FVoiceDataCallBack_MR var2, int var3);

    int NET_DVR_StartVoiceCom_MR_V30(int var1, int var2, HCNetSDK.FVoiceDataCallback_MR_V30 var3, Pointer var4);

    boolean NET_DVR_VoiceComSendData(int var1, byte[] var2, int var3);

    boolean NET_DVR_ClientAudioStart();

    boolean NET_DVR_ClientAudioStart_V30(HCNetSDK.FVoiceDataCallBack2 var1, Pointer var2);

    boolean NET_DVR_ClientAudioStop();

    boolean NET_DVR_AddDVR(int var1);

    int NET_DVR_AddDVR_V30(int var1, int var2);

    boolean NET_DVR_DelDVR(int var1);

    boolean NET_DVR_DelDVR_V30(int var1);

    int NET_DVR_SerialStart(int var1, int var2, HCNetSDK.FSerialDataCallBack var3, int var4);

    int NET_DVR_SerialStart_V40(int var1, Pointer var2, int var3, HCNetSDK.FSerialDataCallBack_V40 var4, Pointer var5);

    boolean NET_DVR_SerialSend(int var1, int var2, byte[] var3, int var4);

    boolean NET_DVR_SerialStop(int var1);

    boolean NET_DVR_SendTo232Port(int var1, String var2, int var3);

    boolean NET_DVR_SendToSerialPort(int var1, int var2, int var3, String var4, int var5);

    Pointer NET_DVR_InitG722Encoder(HCNetSDK.NET_DVR_AUDIOENC_INFO var1);

    boolean NET_DVR_EncodeG722Frame(Pointer var1, HCNetSDK.NET_DVR_AUDIOENC_PROCESS_PARAM var2);

    void NET_DVR_ReleaseG722Encoder(Pointer var1);

    Pointer NET_DVR_InitG722Decoder();

    boolean NET_DVR_DecodeG722Frame(Pointer var1, HCNetSDK.NET_DVR_AUDIODEC_PROCESS_PARAM var2);

    void NET_DVR_ReleaseG722Decoder(Pointer var1);

    Pointer NET_DVR_InitG711Encoder(HCNetSDK.NET_DVR_AUDIOENC_INFO var1);

    boolean NET_DVR_EncodeG711Frame(Pointer var1, HCNetSDK.NET_DVR_AUDIOENC_PROCESS_PARAM var2);

    boolean NET_DVR_ReleaseG711Encoder(Pointer var1);

    Pointer NET_DVR_InitG711Decoder();

    boolean NET_DVR_DecodeG711Frame(Pointer var1, HCNetSDK.NET_DVR_AUDIODEC_PROCESS_PARAM var2);

    boolean NET_DVR_ReleaseG711Decoder(Pointer var1);

    boolean NET_DVR_ClickKey(int var1, int var2);

    boolean NET_DVR_StartDVRRecord(int var1, int var2, int var3);

    boolean NET_DVR_StopDVRRecord(int var1, int var2);

    boolean NET_DVR_InitDevice_Card(IntByReference var1);

    boolean NET_DVR_ReleaseDevice_Card();

    boolean NET_DVR_InitDDraw_Card(int var1, int var2);

    boolean NET_DVR_ReleaseDDraw_Card();

    int NET_DVR_RealPlay_Card(int var1, HCNetSDK.NET_DVR_CARDINFO var2, int var3);

    boolean NET_DVR_ResetPara_Card(int var1, HCNetSDK.NET_DVR_DISPLAY_PARA var2);

    boolean NET_DVR_RefreshSurface_Card();

    boolean NET_DVR_ClearSurface_Card();

    boolean NET_DVR_RestoreSurface_Card();

    boolean NET_DVR_OpenSound_Card(int var1);

    boolean NET_DVR_CloseSound_Card(int var1);

    boolean NET_DVR_SetVolume_Card(int var1, short var2);

    boolean NET_DVR_AudioPreview_Card(int var1, boolean var2);

    int NET_DVR_GetCardLastError_Card();

    Pointer NET_DVR_GetChanHandle_Card(int var1);

    boolean NET_DVR_CapturePicture_Card(int var1, String var2);

    boolean NET_DVR_GetSerialNum_Card(int var1, IntByReference var2);

    int NET_DVR_FindDVRLog(int var1, int var2, int var3, int var4, HCNetSDK.NET_DVR_TIME var5, HCNetSDK.NET_DVR_TIME var6);

    int NET_DVR_FindNextLog(int var1, HCNetSDK.NET_DVR_LOG var2);

    boolean NET_DVR_FindLogClose(int var1);

    int NET_DVR_FindDVRLog_V30(int var1, int var2, int var3, int var4, HCNetSDK.NET_DVR_TIME var5, HCNetSDK.NET_DVR_TIME var6, boolean var7);

    int NET_DVR_FindNextLog_V30(int var1, HCNetSDK.NET_DVR_LOG_V30 var2);

    boolean NET_DVR_FindLogClose_V30(int var1);

    int NET_DVR_FindFileByCard(int var1, int var2, int var3, int var4, String var5, HCNetSDK.NET_DVR_TIME var6, HCNetSDK.NET_DVR_TIME var7);

    boolean NET_DVR_CaptureJPEGPicture(int var1, int var2, HCNetSDK.NET_DVR_JPEGPARA var3, byte[] var4);

    boolean NET_DVR_CaptureJPEGPicture_NEW(int var1, int var2, HCNetSDK.NET_DVR_JPEGPARA var3, Pointer var4, int var5, IntByReference var6);

    boolean NET_DVR_CaptureJPEGPicture_WithAppendData(int var1, int var2, HCNetSDK.NET_DVR_JPEGPICTURE_WITH_APPENDDATA var3);

    int NET_DVR_GetRealPlayerIndex(int var1);

    int NET_DVR_GetPlayBackPlayerIndex(int var1);

    boolean NET_DVR_SetScaleCFG(int var1, int var2);

    boolean NET_DVR_GetScaleCFG(int var1, IntByReference var2);

    boolean NET_DVR_SetScaleCFG_V30(int var1, HCNetSDK.NET_DVR_SCALECFG var2);

    boolean NET_DVR_GetScaleCFG_V30(int var1, HCNetSDK.NET_DVR_SCALECFG var2);

    boolean NET_DVR_SetATMPortCFG(int var1, short var2);

    boolean NET_DVR_GetATMPortCFG(int var1, ShortByReference var2);

    boolean NET_DVR_InitDDrawDevice();

    boolean NET_DVR_ReleaseDDrawDevice();

    int NET_DVR_GetDDrawDeviceTotalNums();

    boolean NET_DVR_SetDDrawDevice(int var1, int var2);

    boolean NET_DVR_PTZSelZoomIn(int var1, HCNetSDK.NET_DVR_POINT_FRAME var2);

    boolean NET_DVR_PTZSelZoomIn_EX(int var1, int var2, HCNetSDK.NET_DVR_POINT_FRAME var3);

    boolean NET_DVR_FocusOnePush(int var1, int var2);

    boolean NET_DVR_StartDecode(int var1, int var2, HCNetSDK.NET_DVR_DECODERINFO var3);

    boolean NET_DVR_StopDecode(int var1, int var2);

    boolean NET_DVR_GetDecoderState(int var1, int var2, HCNetSDK.NET_DVR_DECODERSTATE var3);

    boolean NET_DVR_SetDecInfo(int var1, int var2, HCNetSDK.NET_DVR_DECCFG var3);

    boolean NET_DVR_GetDecInfo(int var1, int var2, HCNetSDK.NET_DVR_DECCFG var3);

    boolean NET_DVR_SetDecTransPort(int var1, HCNetSDK.NET_DVR_PORTCFG var2);

    boolean NET_DVR_GetDecTransPort(int var1, HCNetSDK.NET_DVR_PORTCFG var2);

    boolean NET_DVR_DecPlayBackCtrl(int var1, int var2, int var3, int var4, IntByReference var5, HCNetSDK.NET_DVR_PLAYREMOTEFILE var6);

    boolean NET_DVR_StartDecSpecialCon(int var1, int var2, HCNetSDK.NET_DVR_DECCHANINFO var3);

    boolean NET_DVR_StopDecSpecialCon(int var1, int var2, HCNetSDK.NET_DVR_DECCHANINFO var3);

    boolean NET_DVR_DecCtrlDec(int var1, int var2, int var3);

    boolean NET_DVR_DecCtrlScreen(int var1, int var2, int var3);

    boolean NET_DVR_GetDecCurLinkStatus(int var1, int var2, HCNetSDK.NET_DVR_DECSTATUS var3);

    boolean NET_DVR_MatrixStartDynamic(int var1, int var2, HCNetSDK.NET_DVR_MATRIX_DYNAMIC_DEC var3);

    boolean NET_DVR_MatrixStopDynamic(int var1, int var2);

    boolean NET_DVR_MatrixGetDecChanInfo(int var1, int var2, HCNetSDK.NET_DVR_MATRIX_DEC_CHAN_INFO var3);

    boolean NET_DVR_MatrixSetLoopDecChanInfo(int var1, int var2, HCNetSDK.NET_DVR_MATRIX_LOOP_DECINFO var3);

    boolean NET_DVR_MatrixGetLoopDecChanInfo(int var1, int var2, HCNetSDK.NET_DVR_MATRIX_LOOP_DECINFO var3);

    boolean NET_DVR_MatrixSetLoopDecChanEnable(int var1, int var2, int var3);

    boolean NET_DVR_MatrixGetLoopDecChanEnable(int var1, int var2, IntByReference var3);

    boolean NET_DVR_MatrixGetLoopDecEnable(int var1, IntByReference var2);

    boolean NET_DVR_MatrixSetDecChanEnable(int var1, int var2, int var3);

    boolean NET_DVR_MatrixGetDecChanEnable(int var1, int var2, IntByReference var3);

    boolean NET_DVR_MatrixGetDecChanStatus(int var1, int var2, HCNetSDK.NET_DVR_MATRIX_DEC_CHAN_STATUS var3);

    boolean NET_DVR_MatrixStartDynamic_V41(int var1, int var2, Pointer var3);

    boolean NET_DVR_MatrixGetLoopDecChanInfo_V41(int var1, int var2, HCNetSDK.NET_DVR_MATRIX_LOOP_DECINFO_V41 var3);

    boolean NET_DVR_MatrixSetLoopDecChanInfo_V41(int var1, int var2, HCNetSDK.NET_DVR_MATRIX_LOOP_DECINFO_V41 var3);

    int NET_DVR_MatrixStartPassiveDecode(int var1, int var2, Pointer var3);

    boolean NET_DVR_MatrixSendData(int var1, Pointer var2, int var3);

    boolean NET_DVR_MatrixStopPassiveDecode(int var1);

    boolean NET_DVR_MatrixSetTranInfo(int var1, HCNetSDK.NET_DVR_MATRIX_TRAN_CHAN_CONFIG var2);

    boolean NET_DVR_MatrixGetTranInfo(int var1, HCNetSDK.NET_DVR_MATRIX_TRAN_CHAN_CONFIG var2);

    boolean NET_DVR_MatrixSetRemotePlay(int var1, int var2, HCNetSDK.NET_DVR_MATRIX_DEC_REMOTE_PLAY var3);

    boolean NET_DVR_MatrixSetRemotePlayControl(int var1, int var2, int var3, int var4, IntByReference var5);

    boolean NET_DVR_MatrixGetRemotePlayStatus(int var1, int var2, HCNetSDK.NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS var3);

    boolean NET_DVR_RefreshPlay(int var1);

    boolean NET_DVR_RestoreConfig(int var1);

    boolean NET_DVR_SaveConfig(int var1);

    boolean NET_DVR_RebootDVR(int var1);

    boolean NET_DVR_ShutDownDVR(int var1);

    boolean NET_DVR_GetDeviceConfig(int var1, int var2, int var3, Pointer var4, int var5, Pointer var6, Pointer var7, int var8);

    boolean NET_DVR_SetDeviceConfig(int var1, int var2, int var3, Pointer var4, int var5, Pointer var6, Pointer var7, int var8);

    boolean NET_DVR_SetDeviceConfigEx(int var1, int var2, int var3, Pointer var4, Pointer var5);

    boolean NET_DVR_GetDVRConfig(int var1, int var2, int var3, Pointer var4, int var5, IntByReference var6);

    boolean NET_DVR_SetDVRConfig(int var1, int var2, int var3, Pointer var4, int var5);

    boolean NET_DVR_GetSTDConfig(int var1, int var2, HCNetSDK.NET_DVR_STD_CONFIG var3);

    boolean NET_DVR_SetSTDConfig(int var1, int var2, HCNetSDK.NET_DVR_STD_CONFIG var3);

    boolean NET_DVR_GetDVRWorkState_V30(int var1, HCNetSDK.NET_DVR_WORKSTATE_V30 var2);

    boolean NET_DVR_GetDVRWorkState(int var1, HCNetSDK.NET_DVR_WORKSTATE var2);

    boolean NET_DVR_SetVideoEffect(int var1, int var2, int var3, int var4, int var5, int var6);

    boolean NET_DVR_GetVideoEffect(int var1, int var2, IntByReference var3, IntByReference var4, IntByReference var5, IntByReference var6);

    boolean NET_DVR_ClientGetframeformat(int var1, HCNetSDK.NET_DVR_FRAMEFORMAT var2);

    boolean NET_DVR_ClientSetframeformat(int var1, HCNetSDK.NET_DVR_FRAMEFORMAT var2);

    boolean NET_DVR_ClientGetframeformat_V30(int var1, HCNetSDK.NET_DVR_FRAMEFORMAT_V30 var2);

    boolean NET_DVR_ClientSetframeformat_V30(int var1, HCNetSDK.NET_DVR_FRAMEFORMAT_V30 var2);

    boolean NET_DVR_GetAlarmOut_V30(int var1, HCNetSDK.NET_DVR_ALARMOUTSTATUS_V30 var2);

    boolean NET_DVR_GetAlarmOut(int var1, HCNetSDK.NET_DVR_ALARMOUTSTATUS var2);

    boolean NET_DVR_SetAlarmOut(int var1, int var2, int var3);

    boolean NET_DVR_ClientSetVideoEffect(int var1, int var2, int var3, int var4, int var5);

    boolean NET_DVR_ClientGetVideoEffect(int var1, IntByReference var2, IntByReference var3, IntByReference var4, IntByReference var5);

    boolean NET_DVR_GetConfigFile(int var1, String var2);

    boolean NET_DVR_SetConfigFile(int var1, String var2);

    boolean NET_DVR_GetConfigFile_V30(int var1, String var2, int var3, IntByReference var4);

    boolean NET_DVR_GetConfigFile_EX(int var1, String var2, int var3);

    boolean NET_DVR_SetConfigFile_EX(int var1, String var2, int var3);

    boolean NET_DVR_SetLogToFile(int var1, String var2, boolean var3);

    boolean NET_DVR_GetSDKState(HCNetSDK.NET_DVR_SDKSTATE var1);

    boolean NET_DVR_GetSDKAbility(HCNetSDK.NET_DVR_SDKABL var1);

    boolean NET_DVR_GetPTZProtocol(int var1, HCNetSDK.NET_DVR_PTZCFG var2);

    boolean NET_DVR_LockPanel(int var1);

    boolean NET_DVR_UnLockPanel(int var1);

    boolean NET_DVR_SetRtspConfig(int var1, int var2, HCNetSDK.NET_DVR_RTSPCFG var3, int var4);

    boolean NET_DVR_GetRtspConfig(int var1, int var2, HCNetSDK.NET_DVR_RTSPCFG var3, int var4);

    boolean NET_DVR_ContinuousShoot(int var1, HCNetSDK.NET_DVR_SNAPCFG var2);

    boolean NET_DVR_ManualSnap(int var1, HCNetSDK.NET_DVR_MANUALSNAP var2, HCNetSDK.NET_DVR_PLATE_RESULT var3);

    int NET_DVR_StartRemoteConfig(int var1, int var2, Pointer var3, int var4, HCNetSDK.FRemoteConfigCallBack var5, Pointer var6);

    boolean NET_DVR_SendRemoteConfig(int var1, int var2, Pointer var3, int var4);

    int NET_DVR_GetNextRemoteConfig(int var1, Pointer var2, int var3);

    int NET_DVR_SendWithRecvRemoteConfig(int var1, Pointer var2, int var3, Pointer var4, int var5, IntByReference var6);

    boolean NET_DVR_StopRemoteConfig(int var1);

    boolean NET_DVR_RemoteControl(int var1, int var2, Pointer var3, int var4);

    boolean NET_DVR_STDXMLConfig(int var1, HCNetSDK.NET_DVR_XML_CONFIG_INPUT var2, HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT var3);

    boolean NET_DVR_GetSTDAbility(int var1, int var2, HCNetSDK.NET_DVR_STD_ABILITY var3);

    boolean NET_DVR_GetDeviceAbility(int var1, int var2, Pointer var3, int var4, Pointer var5, int var6);

    boolean NET_DVR_ControlGateway(int var1, int var2, int var3);

    boolean NET_DVR_InquestStartCDW_V30(int var1, HCNetSDK.NET_DVR_INQUEST_ROOM var2, boolean var3);

    boolean NET_DVR_InquestStopCDW_V30(int var1, HCNetSDK.NET_DVR_INQUEST_ROOM var2, boolean var3);

    boolean NET_DVR_GetArrayList(int var1, HCNetSDK.NET_DVR_ARRAY_LIST var2);

    int NET_DVR_InquestResumeEvent(int var1, HCNetSDK.NET_DVR_INQUEST_RESUME_EVENT var2);

    boolean NET_DVR_InquestGetResumeProgress(int var1, IntByReference var2);

    boolean NET_DVR_InquestStopResume(int var1);

    boolean NET_DVR_GetLocalIP(HCNetSDK.BYTE_TWODIM[] var1, IntByReference var2, boolean var3);

    boolean NET_DVR_SetValidIP(int var1, boolean var2);

    boolean NET_DVR_AlarmHostAssistantControl(int var1, int var2, int var3, int var4);

    boolean NET_DVR_GetPlanList(int var1, int var2, HCNetSDK.NET_DVR_PLAN_LIST var3);

    int NET_DVR_UploadFile_V40(int var1, int var2, Pointer var3, int var4, String var5, Pointer var6, int var7);

    int NET_DVR_UploadSend(int var1, HCNetSDK.NET_DVR_SEND_PARAM_IN var2, Pointer var3);

    int NET_DVR_GetUploadState(int var1, Pointer var2);

    boolean NET_DVR_GetUploadResult(int var1, Pointer var2, int var3);

    boolean NET_DVR_UploadClose(int var1);

    int NET_DVR_StartNetworkFlowTest(int var1, HCNetSDK.NET_DVR_FLOW_TEST_PARAM var2, HCNetSDK.FLOWTESTCALLBACK var3, Pointer var4);

    boolean NET_DVR_StopNetworkFlowTest(int var1);

    boolean NET_DVR_InquiryRecordTimeSpan(int var1, int var2, HCNetSDK.NET_DVR_RECORD_TIME_SPAN_INQUIRY var3, HCNetSDK.NET_DVR_RECORD_TIME_SPAN var4);

    boolean NET_DVR_StartGetDevState(HCNetSDK.NET_DVR_CHECK_DEV_STATE var1);

    int NET_DVR_GetVehicleGpsInfo(int var1, HCNetSDK.NET_DVR_GET_GPS_DATA_PARAM var2, HCNetSDK.fGPSDataCallback var3, Pointer var4);

    public static class NET_DVR_PTZ_LOCKCFG extends Structure {
        public int dwSize;
        public byte byWorkMode;
        public byte[] byRes = new byte[123];

        public NET_DVR_PTZ_LOCKCFG() {
        }
    }

    public static class BYTE_TWODIM extends Structure {
        public byte[] strIP = new byte[16];

        public BYTE_TWODIM() {
        }
    }

    public static class NET_DVR_CRUISEPOINT_PARAM extends Structure {
        public short wPresetNo;
        public short wDwell;
        public byte bySpeed;
        public byte bySupport256PresetNo;
        public byte[] byRes = new byte[6];

        public NET_DVR_CRUISEPOINT_PARAM() {
        }
    }

    public static class NET_DVR_CRUISEPOINT_V50 extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_CRUISEPOINT_PARAM[] struCruisePoint = (HCNetSDK.NET_DVR_CRUISEPOINT_PARAM[])((HCNetSDK.NET_DVR_CRUISEPOINT_PARAM[])(new HCNetSDK.NET_DVR_CRUISEPOINT_PARAM()).toArray(256));
        public byte[] byRes = new byte[64];

        public NET_DVR_CRUISEPOINT_V50() {
        }
    }

    public static class NET_DVR_CRUISEPOINT_V40 extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_CRUISEPOINT_PARAM[] struCruisePoint = (HCNetSDK.NET_DVR_CRUISEPOINT_PARAM[])((HCNetSDK.NET_DVR_CRUISEPOINT_PARAM[])(new HCNetSDK.NET_DVR_CRUISEPOINT_PARAM()).toArray(128));
        public byte[] byRes = new byte[64];

        public NET_DVR_CRUISEPOINT_V40() {
        }
    }

    public static class NET_DVR_CRUISEPOINT_COND extends Structure {
        public int dwSize;
        public int dwChan;
        public short wRouteNo;
        public byte[] byRes = new byte[30];

        public NET_DVR_CRUISEPOINT_COND() {
        }
    }

    public static class NET_DVR_GBT28181_CHANINFO_CFG extends Structure {
        public int dwSize;
        public byte[] szVideoChannelNumID = new byte[64];
        public byte[] byRes = new byte[256];

        public NET_DVR_GBT28181_CHANINFO_CFG() {
        }
    }

    public static class NET_DVR_GIS_INFO extends Structure {
        public int dwSize;
        public float fAzimuth;
        public float fHorizontalValue;
        public float fVerticalValue;
        public float fVisibleRadius;
        public float fMaxViewRadius;
        public byte byLatitudeType;
        public byte byLongitudeType;
        public byte byPTZPosExEnable;
        public byte byRes1;
        public HCNetSDK.NET_DVR_LLI_PARAM struLatitude = new HCNetSDK.NET_DVR_LLI_PARAM();
        public HCNetSDK.NET_DVR_LLI_PARAM struLongitude = new HCNetSDK.NET_DVR_LLI_PARAM();
        public HCNetSDK.NET_DVR_PTZPOS_PARAM struPtzPos = new HCNetSDK.NET_DVR_PTZPOS_PARAM();
        public HCNetSDK.NET_DVR_SENSOR_PARAM struSensorParam = new HCNetSDK.NET_DVR_SENSOR_PARAM();
        public HCNetSDK.NET_PTZ_INFO struPtzPosEx = new HCNetSDK.NET_PTZ_INFO();
        public float fMinHorizontalValue;
        public float fMaxHorizontalValue;
        public float fMinVerticalValue;
        public float fMaxVerticalValue;
        public byte[] byRes = new byte[220];

        public NET_DVR_GIS_INFO() {
        }
    }

    public static class NET_DVR_MRD_SEARCH_RESULT extends Structure {
        public int dwSize;
        public byte[] byRecordDistribution = new byte[32];
        public byte[] byHasEventRecode = new byte[31];
        public byte byRes;

        public NET_DVR_MRD_SEARCH_RESULT() {
        }
    }

    public static class NET_DVR_MRD_SEARCH_PARAM extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_STREAM_INFO struStreamInfo = new HCNetSDK.NET_DVR_STREAM_INFO();
        public short wYear;
        public byte byMonth;
        public byte byDrawFrame;
        public byte byStreamType;
        public byte byLocalOrUTC;
        public byte[] byRes = new byte[30];

        public NET_DVR_MRD_SEARCH_PARAM() {
        }
    }

    public static class NET_DVR_RECORD_TIME_SPAN extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_TIME strBeginTime;
        public HCNetSDK.NET_DVR_TIME strEndTime;
        public byte byType;
        public byte[] byRes = new byte[35];

        public NET_DVR_RECORD_TIME_SPAN() {
        }
    }

    public static class NET_DVR_RECORD_TIME_SPAN_INQUIRY extends Structure {
        public int dwSize;
        public byte byType;
        public byte[] byRes = new byte[63];

        public NET_DVR_RECORD_TIME_SPAN_INQUIRY() {
        }
    }

    public static class NET_DVR_FLOW_TEST_PARAM extends Structure {
        public int dwSize;
        public int lCardIndex;
        public int dwInterval;
        public byte[] byRes = new byte[8];

        public NET_DVR_FLOW_TEST_PARAM() {
        }
    }

    public static class NET_DVR_UPLOAD_FILE_RET extends Structure {
        public byte[] sUrl = new byte[240];
        public byte[] byRes = new byte[260];

        public NET_DVR_UPLOAD_FILE_RET() {
        }
    }

    public static class NET_DVR_DEVSERVER_CFG extends Structure {
        public int dwSize;
        public byte byIrLampServer;
        public byte bytelnetServer;
        public byte byABFServer;
        public byte byEnableLEDStatus;
        public byte byEnableAutoDefog;
        public byte byEnableSupplementLight;
        public byte byEnableDeicing;
        public byte byEnableVisibleMovementPower;
        public byte byEnableThermalMovementPower;
        public byte byEnablePtzPower;
        public byte byPowerSavingControl;
        public byte byCaptureWithSupplimentLightEnabled;
        public byte[] byRes = new byte[244];

        public NET_DVR_DEVSERVER_CFG() {
        }
    }

    public static class NET_DVR_FIREDETECTION_ALARM extends Structure {
        public int dwSize;
        public int dwRelativeTime;
        public int dwAbsTime;
        public HCNetSDK.NET_VCA_DEV_INFO struDevInfo;
        public short wPanPos;
        public short wTiltPos;
        public short wZoomPos;
        public byte byPicTransType;
        public byte byRes1;
        public int dwPicDataLen;
        public Pointer pBuffer;
        public HCNetSDK.NET_VCA_RECT struRect;
        public HCNetSDK.NET_VCA_POINT struPoint;
        public short wFireMaxTemperature;
        public short wTargetDistance;
        public byte byStrategyType;
        public byte byAlarmSubType;
        public byte byPTZPosExEnable;
        public byte byRes2;
        public HCNetSDK.NET_PTZ_INFO struPtzPosEx;
        public int dwVisiblePicLen;
        public Pointer pVisiblePicBuf;
        public Pointer pSmokeBuf;
        public short wDevInfoIvmsChannelEx;
        public byte byRes3;
        public byte byFireScanWaitMode;
        public int dwVisibleChannel;
        public byte byTimeDiffFlag;
        public char cTimeDifferenceH;
        public char cTimeDifferenceM;
        public byte[] byRes = new byte[49];

        public NET_DVR_FIREDETECTION_ALARM() {
        }
    }

    public static class REMOTECONFIGSTATUS_THERMOMETRY extends Structure {
        public byte[] byStatus = new byte[4];
        public byte[] byErrorCode = new byte[4];

        public REMOTECONFIGSTATUS_THERMOMETRY() {
        }
    }

    public static class NET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO extends Structure {
        public float fMaxTemperature;
        public float fMinTemperature;
        public float fAverageTemperature;
        public HCNetSDK.NET_VCA_POINT struHighestPoint;
        public HCNetSDK.NET_VCA_POINT struLowestPoint;
        public byte byIsFreezedata;
        public byte[] byRes = new byte[15];

        public NET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO() {
        }
    }

    public static class STREAM_FARME_INFO_TEMP extends Structure {
        public int u32MagicNo;
        public int u32HeaderSize;
        public int u32StreamType;
        public int u32StreamLen;
        public HCNetSDK.STREAM_RT_DATA_INFO_S stRTDataInfo;
        public HCNetSDK.STREAM_FS_SUPPLE_INFO_TEMP stFsSuppleInfo;
        public int[] res = new int[12];
        public int u32CrcVal;

        public STREAM_FARME_INFO_TEMP() {
        }
    }

    public static class STREAM_FS_SUPPLE_INFO_TEMP extends Structure {
        public int u32TmDataMode;
        public int u32TmScale;
        public int u32TmOffset;
        public int byIsFreezedata;

        public STREAM_FS_SUPPLE_INFO_TEMP() {
        }
    }

    public static class STREAM_RT_DATA_INFO_S extends Structure {
        public int u32RTDataType;
        public int u32FrmNum;
        public int u32StdStamp;
        public HCNetSDK.DATE_TIME stTime;
        public int u32Width;
        public int u32Height;
        public int u32Len;
        public int u32Fps;
        public int u32Chan;

        public STREAM_RT_DATA_INFO_S() {
        }
    }

    public static class DATE_TIME extends Structure {
        public short year;
        public short month;
        public short dayOfWeek;
        public short day;
        public short hour;
        public short minute;
        public short second;
        public short milliSecond;

        public DATE_TIME() {
        }
    }

    public static class NET_DVR_JPEGPICTURE_WITH_APPENDDATA extends Structure {
        public int dwSize;
        public int dwChannel;
        public int dwJpegPicLen;
        public Pointer pJpegPicBuff;
        public int dwJpegPicWidth;
        public int dwJpegPicHeight;
        public int dwP2PDataLen;
        public Pointer pP2PDataBuff;
        public byte byIsFreezedata;
        public byte[] byRes = new byte[255];

        public NET_DVR_JPEGPICTURE_WITH_APPENDDATA() {
        }
    }

    public interface fGPSDataCallback extends Callback {
        void invoke(int var1, int var2, Pointer var3, int var4, Pointer var5);
    }

    public static class NET_DVR_GPS_DATA extends Structure {
        public HCNetSDK.NET_DVR_GPS_INFO struGPSInfo;
        public HCNetSDK.NET_DVR_TIME struTime;
        public byte[] byRes = new byte[12];

        public NET_DVR_GPS_DATA() {
        }
    }

    public static class NET_DVR_GPS_INFO extends Structure {
        public byte[] byDirection = new byte[2];
        public byte bySvs;
        public byte byLocateMode;
        public short wHDOP;
        public short wHeight;
        public int dwLatitude;
        public int dwLongitude;
        public int dwVehicleSpeed;
        public int dwVehicleDirection;
        public byte[] byRes = new byte[8];

        public NET_DVR_GPS_INFO() {
        }
    }

    public static class NET_DVR_GET_GPS_DATA_PARAM extends Structure {
        public int dwCmdType;
        public HCNetSDK.GpsDataParamUion gpsDataParam;

        public NET_DVR_GET_GPS_DATA_PARAM() {
        }

        public void read() {
            super.read();
            switch(this.dwCmdType) {
                case 0:
                    this.gpsDataParam.setType(HCNetSDK.TimeSegParam.class);
                    break;
                case 1:
                    this.gpsDataParam.setType(HCNetSDK.TimePointParam.class);
            }

            this.gpsDataParam.read();
        }

        public void write() {
            super.write();
            this.gpsDataParam.write();
        }
    }

    public static class GpsDataParamUion extends Union {
        public HCNetSDK.TimeSegParam timeSeg = new HCNetSDK.TimeSegParam();
        public HCNetSDK.TimePointParam timePoint = new HCNetSDK.TimePointParam();

        public GpsDataParamUion() {
        }
    }

    public static class TimePointParam extends Structure {
        public HCNetSDK.NET_DVR_TIME struTimePoint;
        public byte[] byRes = new byte[104];

        public TimePointParam() {
        }
    }

    public static class TimeSegParam extends Structure {
        public HCNetSDK.NET_DVR_TIME struBeginTime;
        public HCNetSDK.NET_DVR_TIME struEndTime;
        public int dwInterval;
        public byte[] byRes = new byte[76];

        public TimeSegParam() {
        }
    }

    public interface FRemoteConfigCallBack extends Callback {
        void invoke(int var1, Pointer var2, int var3, Pointer var4);
    }

    public interface FSerialDataCallBack_V40 extends Callback {
        void invoke(int var1, int var2, byte[] var3, int var4, Pointer var5);
    }

    public interface FLOWTESTCALLBACK extends Callback {
        void invoke(int var1, HCNetSDK.NET_DVR_FLOW_INFO var2, Pointer var3);
    }

    public interface DEV_WORK_STATE_CB extends Callback {
        boolean invoke(Pointer var1, int var2, HCNetSDK.NET_DVR_WORKSTATE_V40 var3);
    }

    public interface FPostMessageCallBack extends Callback {
        int invoke(int var1, int var2);
    }

    public interface FJpegdataCallBack extends Callback {
        int invoke(int var1, int var2, String var3, String var4, String var5, int var6, int var7);
    }

    public interface FColGlobalDataCallBack extends Callback {
        void invoke(int var1, String var2, int var3, String var4, int var5, int var6);
    }

    public interface FColLocalDataCallBack extends Callback {
        void invoke(int var1, String var2, int var3, String var4, int var5, int var6);
    }

    public interface FRowDataCallBack extends Callback {
        void invoke(int var1, String var2, int var3, String var4, int var5, int var6);
    }

    public interface FSerialDataCallBack extends Callback {
        void invoke(int var1, String var2, int var3, int var4);
    }

    public interface FVoiceDataCallBack2 extends Callback {
        void invoke(String var1, int var2, Pointer var3);
    }

    public interface FVoiceDataCallback_MR_V30 extends Callback {
        void invoke(int var1, Pointer var2, int var3, byte var4, Pointer var5);
    }

    public interface FVoiceDataCallBack_MR extends Callback {
        void invoke(int var1, Pointer var2, int var3, byte var4, int var5);
    }

    public interface FVoiceDataCallBack_V30 extends Callback {
        void invoke(int var1, Pointer var2, int var3, byte var4, int var5);
    }

    public interface FVoiceDataCallBack extends Callback {
        void invoke(int var1, Pointer var2, int var3, byte var4, int var5);
    }

    public interface FPlayESCallBack extends Callback {
        void invoke(int var1, HCNetSDK.NET_DVR_PACKET_INFO_EX var2, Pointer var3);
    }

    public interface FPlayDataCallBack extends Callback {
        void invoke(int var1, int var2, Pointer var3, int var4, int var5);
    }

    public interface FStdDataCallBack extends Callback {
        void invoke(int var1, int var2, Pointer var3, int var4, int var5);
    }

    public interface FDrawFun extends Callback {
        void invoke(int var1, HDC var2, int var3);
    }

    public interface FExceptionCallBack extends Callback {
        void invoke(int var1, int var2, int var3, Pointer var4);
    }

    public interface FMessageCallBack extends Callback {
        boolean invoke(int var1, String var2, String var3, int var4, int var5);
    }

    public interface FMessCallBack_NEW extends Callback {
        boolean invoke(int var1, String var2, String var3, int var4, short var5);
    }

    public interface FMessCallBack_EX extends Callback {
        boolean invoke(int var1, int var2, String var3, int var4);
    }

    public interface FMessCallBack extends Callback {
        boolean invoke(int var1, String var2, String var3, int var4);
    }

    public interface FMSGCallBack_V31 extends Callback {
        boolean invoke(int var1, HCNetSDK.NET_DVR_ALARMER var2, Pointer var3, int var4, Pointer var5);
    }

    public interface FMSGCallBack extends Callback {
        void invoke(int var1, HCNetSDK.NET_DVR_ALARMER var2, Pointer var3, int var4, Pointer var5);
    }

    public interface FRealDataCallBack_V30 extends Callback {
        void invoke(int var1, int var2, Pointer var3, int var4, Pointer var5);
    }

    public static class NET_DVR_VIDEO_CALL_COND extends Structure {
        public int dwSize;
        public byte[] byRes = new byte[128];

        public NET_DVR_VIDEO_CALL_COND() {
        }
    }

    public static class WALLOUTPUTPARAM_ARRAY extends Structure {
        public HCNetSDK.NET_DVR_WALLOUTPUTPARAM[] strWalloutputParm;

        public WALLOUTPUTPARAM_ARRAY(int iLen) {
            this.strWalloutputParm = new HCNetSDK.NET_DVR_WALLOUTPUTPARAM[iLen];
        }
    }

    public static class NET_DVR_WALLOUTPUTPARAM extends Structure {
        public int dwSize;
        public int dwResolution;
        public HCNetSDK.NET_DVR_VIDEOEFFECT struRes;
        public byte byVideoFormat;
        public byte byDisplayMode;
        public byte byBackgroundColor;
        public byte byUseEDIDResolution;
        public short wLEDWidth;
        public short wLEDHeight;
        public HCNetSDK.NET_DVR_RGB_COLOR struBackColor;
        public byte byLinkStatus;
        public byte[] byRes2 = new byte[51];

        public NET_DVR_WALLOUTPUTPARAM() {
        }
    }

    public static class NET_DVR_DISPLAYPARAM extends Structure {
        public int dwDisplayNo;
        public byte byDispChanType;
        public byte[] byRes = new byte[11];

        public NET_DVR_DISPLAYPARAM() {
        }
    }

    public static class NET_DVR_DISPLAYCFG extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_DISPLAYPARAM[] struDisplayParam = new HCNetSDK.NET_DVR_DISPLAYPARAM[512];
        public byte[] byRes2 = new byte[128];

        public NET_DVR_DISPLAYCFG() {
        }
    }

    public static class NET_DVR_VIDEOWALLDISPLAYPOSITION extends Structure {
        public int dwSize;
        public byte byEnable;
        public byte byCoordinateType;
        public byte[] byRes1 = new byte[2];
        public int dwVideoWallNo;
        public int dwDisplayNo;
        public HCNetSDK.NET_DVR_RECTCFG_EX struRectCfg;
        public byte[] byRes2 = new byte[64];

        public NET_DVR_VIDEOWALLDISPLAYPOSITION() {
        }
    }

    public static class NET_DVR_ALARMHOST_RS485_SLOT_CFG extends Structure {
        public int dwSize;
        public byte[] sDeviceName = new byte[32];
        public short wDeviceType;
        public byte wDeviceProtocol;
        public short wAddress;
        public byte byChannel;
        public byte bySlotChan;
        public byte[] byRes = new byte[60];

        public NET_DVR_ALARMHOST_RS485_SLOT_CFG() {
        }
    }

    public static class NET_DVR_ALARM_RS485CFG extends Structure {
        public int dwSize;
        public byte[] sDeviceName = new byte[32];
        public short wDeviceType;
        public short wDeviceProtocol;
        public int dwBaudRate;
        public byte byDataBit;
        public byte byStopBit;
        public byte byParity;
        public byte byFlowcontrol;
        public byte byDuplex;
        public byte byWorkMode;
        public byte byChannel;
        public byte bySerialType;
        public byte byMode;
        public byte byOutputDataType;
        public byte byAddress;
        public byte[] byRes = new byte[33];

        public NET_DVR_ALARM_RS485CFG() {
        }
    }

    public static class NET_DVR_AES_KEY_INFO extends Structure {
        public byte[] sAESKey = new byte[16];
        public byte[] byRes = new byte[64];

        public NET_DVR_AES_KEY_INFO() {
        }
    }

    public static class NET_DVR_FLOW_INFO extends Structure {
        public int dwSize;
        public int dwSendFlowSize;
        public int dwRecvFlowSize;
        public byte[] byRes = new byte[20];

        public NET_DVR_FLOW_INFO() {
        }
    }

    public static class NET_DVR_CHECK_DEV_STATE extends Structure {
        public int dwTimeout;
        public HCNetSDK.DEV_WORK_STATE_CB fnStateCB;
        Pointer pUserData;
        public byte[] byRes = new byte[60];

        public NET_DVR_CHECK_DEV_STATE() {
        }
    }

    public static class NET_DVR_THERMOMETRY_AGC extends Structure {
        public byte byMode;
        public byte[] byRes1 = new byte[3];
        public int iHighTemperature;
        public int iLowTemperature;
        public byte[] byRes = new byte[8];

        public NET_DVR_THERMOMETRY_AGC() {
        }
    }

    public static class NET_DVR_OPTICAL_DEHAZE extends Structure {
        public byte byEnable;
        public byte[] byRes = new byte[7];

        public NET_DVR_OPTICAL_DEHAZE() {
        }
    }

    public static class NET_DVR_SNAP_CAMERAPARAMCFG extends Structure {
        public byte byWDRMode;
        public byte byWDRType;
        public byte byWDRLevel;
        public byte byRes1;
        public HCNetSDK.NET_DVR_TIME_EX struStartTime = new HCNetSDK.NET_DVR_TIME_EX();
        public HCNetSDK.NET_DVR_TIME_EX struEndTime = new HCNetSDK.NET_DVR_TIME_EX();
        public byte byDayNightBrightness;
        public byte byMCEEnabled;
        public byte byMCELevel;
        public byte byAutoContrastEnabled;
        public byte byAutoContrastLevel;
        public byte byLSEDetailEnabled;
        public byte byLSEDetailLevel;
        public byte byLPDEEnabled;
        public byte byLPDELevel;
        public byte byLseEnabled;
        public byte byLseLevel;
        public byte byLSEHaloLevel;
        public byte byLseType;
        public byte[] byRes2 = new byte[3];
        public HCNetSDK.NET_DVR_TIME_EX struLSEStartTime = new HCNetSDK.NET_DVR_TIME_EX();
        public HCNetSDK.NET_DVR_TIME_EX struLSEEndTime = new HCNetSDK.NET_DVR_TIME_EX();
        public byte byLightLevel;
        public byte byPlateContrastLevel;
        public byte byPlateSaturationLevel;
        public byte[] byRes = new byte[9];

        public NET_DVR_SNAP_CAMERAPARAMCFG() {
        }
    }

    public static class NET_DVR_AGC_PARAM extends Structure {
        public byte bySceneType;
        public byte byLightLevel;
        public byte byGainLevel;
        public byte[] byRes = new byte[5];

        public NET_DVR_AGC_PARAM() {
        }
    }

    public static class NET_DVR_DDE_PARAM extends Structure {
        public byte byMode;
        public byte byNormalLevel;
        public byte byExpertLevel;
        public byte[] byRes = new byte[5];

        public NET_DVR_DDE_PARAM() {
        }
    }

    public static class NET_DVR_FFC_PARAM extends Structure {
        public byte byMode;
        public byte byRes1;
        public short wCompensateTime;
        public byte[] byRes2 = new byte[4];

        public NET_DVR_FFC_PARAM() {
        }
    }

    public static class NET_DVR_LASER_PARAM_CFG extends Structure {
        public byte byControlMode;
        public byte bySensitivity;
        public byte byTriggerMode;
        public byte byBrightness;
        public byte byAngle;
        public byte byLimitBrightness;
        public byte byEnabled;
        public byte byIllumination;
        public byte byLightAngle;
        public byte[] byRes = new byte[7];

        public NET_DVR_LASER_PARAM_CFG() {
        }
    }

    public static class NET_DVR_PIRIS_PARAM extends Structure {
        public byte byMode;
        public byte byPIrisAperture;
        public byte[] byRes = new byte[6];

        public NET_DVR_PIRIS_PARAM() {
        }
    }

    public static class NET_DVR_SMARTIR_PARAM extends Structure {
        public byte byMode;
        public byte byIRDistance;
        public byte byShortIRDistance;
        public byte byLongIRDistance;

        public NET_DVR_SMARTIR_PARAM() {
        }
    }

    public static class NET_DVR_CORRIDOR_MODE_CCD extends Structure {
        public byte byEnableCorridorMode;
        public byte[] byRes = new byte[11];

        public NET_DVR_CORRIDOR_MODE_CCD() {
        }
    }

    public static class NET_DVR_ELECTRONICSTABILIZATION extends Structure {
        public byte byEnable;
        public byte byLevel;
        public byte[] byRes = new byte[6];

        public NET_DVR_ELECTRONICSTABILIZATION() {
        }
    }

    public static class NET_DVR_CMOSMODCFG extends Structure {
        public byte byCaptureMod;
        public byte byBrightnessGate;
        public byte byCaptureGain1;
        public byte byCaptureGain2;
        public int dwCaptureShutterSpeed1;
        public int dwCaptureShutterSpeed2;
        public byte[] byRes = new byte[4];

        public NET_DVR_CMOSMODCFG() {
        }
    }

    public static class NET_DVR_DEFOGCFG extends Structure {
        public byte byMode;
        public byte byLevel;
        public byte[] byRes = new byte[6];

        public NET_DVR_DEFOGCFG() {
        }
    }

    public static class NET_DVR_CMOSMODECFG extends Structure {
        public byte byCaptureMod;
        public byte byBrightnessGate;
        public byte byCaptureGain1;
        public byte byCaptureGain2;
        public int dwCaptureShutterSpeed1;
        public int dwCaptureShutterSpeed2;
        public byte[] byRes = new byte[4];

        public NET_DVR_CMOSMODECFG() {
        }
    }

    public static class NET_DVR_NOISEREMOVE extends Structure {
        public byte byDigitalNoiseRemoveEnable;
        public byte byDigitalNoiseRemoveLevel;
        public byte bySpectralLevel;
        public byte byTemporalLevel;
        public byte byDigitalNoiseRemove2DEnable;
        public byte byDigitalNoiseRemove2DLevel;
        public byte[] byRes = new byte[2];

        public NET_DVR_NOISEREMOVE() {
        }
    }

    public static class NET_DVR_BACKLIGHT extends Structure {
        public byte byBacklightMode;
        public byte byBacklightLevel;
        public byte[] byRes1 = new byte[2];
        public int dwPositionX1;
        public int dwPositionY1;
        public int dwPositionX2;
        public int dwPositionY2;
        public byte[] byRes2 = new byte[4];

        public NET_DVR_BACKLIGHT() {
        }
    }

    public static class NET_DVR_DAYNIGHT extends Structure {
        public byte byDayNightFilterType;
        public byte bySwitchScheduleEnabled;
        public byte byBeginTime;
        public byte byEndTime;
        public byte byDayToNightFilterLevel;
        public byte byNightToDayFilterLevel;
        public byte byDayNightFilterTime;
        public byte byBeginTimeMin;
        public byte byBeginTimeSec;
        public byte byEndTimeMin;
        public byte byEndTimeSec;
        public byte byAlarmTrigState;

        public NET_DVR_DAYNIGHT() {
        }
    }

    public static class NET_DVR_WDR extends Structure {
        public byte byWDREnabled;
        public byte byWDRLevel1;
        public byte byWDRLevel2;
        public byte byWDRContrastLevel;
        public byte[] byRes = new byte[16];

        public NET_DVR_WDR() {
        }
    }

    public static class NET_DVR_GAMMACORRECT extends Structure {
        public byte byGammaCorrectionEnabled;
        public byte byGammaCorrectionLevel;
        public byte[] byRes = new byte[6];

        public NET_DVR_GAMMACORRECT() {
        }
    }

    public static class NET_DVR_EXPOSURE extends Structure {
        public byte byExposureMode;
        public byte byAutoApertureLevel;
        public byte[] byRes = new byte[2];
        public int dwVideoExposureSet;
        public int dwExposureUserSet;
        public int dwRes;

        public NET_DVR_EXPOSURE() {
        }
    }

    public static class NET_DVR_WHITEBALANCE extends Structure {
        public byte byWhiteBalanceMode;
        public byte byWhiteBalanceModeRGain;
        public byte byWhiteBalanceModeBGain;
        public byte[] byRes = new byte[5];

        public NET_DVR_WHITEBALANCE() {
        }
    }

    public static class NET_DVR_GAIN extends Structure {
        public byte byGainLevel;
        public byte byGainUserSet;
        public byte[] byRes = new byte[2];
        public int dwMaxGainValue;

        public NET_DVR_GAIN() {
        }
    }

    public static class NET_DVR_VIDEOEFFECT extends Structure {
        public byte byBrightnessLevel;
        public byte byContrastLevel;
        public byte bySharpnessLevel;
        public byte bySaturationLevel;
        public byte byHueLevel;
        public byte byEnableFunc;
        public byte byLightInhibitLevel;
        public byte byGrayLevel;

        public NET_DVR_VIDEOEFFECT() {
        }
    }

    public static class NET_DVR_CAMERAPARAMCFG_EX extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_VIDEOEFFECT struVideoEffect = new HCNetSDK.NET_DVR_VIDEOEFFECT();
        public HCNetSDK.NET_DVR_GAIN struGain = new HCNetSDK.NET_DVR_GAIN();
        public HCNetSDK.NET_DVR_WHITEBALANCE struWhiteBalance = new HCNetSDK.NET_DVR_WHITEBALANCE();
        public HCNetSDK.NET_DVR_EXPOSURE struExposure = new HCNetSDK.NET_DVR_EXPOSURE();
        public HCNetSDK.NET_DVR_GAMMACORRECT struGammaCorrect = new HCNetSDK.NET_DVR_GAMMACORRECT();
        public HCNetSDK.NET_DVR_WDR struWdr = new HCNetSDK.NET_DVR_WDR();
        public HCNetSDK.NET_DVR_DAYNIGHT struDayNight = new HCNetSDK.NET_DVR_DAYNIGHT();
        public HCNetSDK.NET_DVR_BACKLIGHT struBackLight = new HCNetSDK.NET_DVR_BACKLIGHT();
        public HCNetSDK.NET_DVR_NOISEREMOVE struNoiseRemove = new HCNetSDK.NET_DVR_NOISEREMOVE();
        public byte byPowerLineFrequencyMode;
        public byte byIrisMode;
        public byte byMirror;
        public byte byDigitalZoom;
        public byte byDeadPixelDetect;
        public byte byBlackPwl;
        public byte byEptzGate;
        public byte byLocalOutputGate;
        public byte byCoderOutputMode;
        public byte byLineCoding;
        public byte byDimmerMode;
        public byte byPaletteMode;
        public byte byEnhancedMode;
        public byte byDynamicContrastEN;
        public byte byDynamicContrast;
        public byte byJPEGQuality;
        public HCNetSDK.NET_DVR_CMOSMODECFG struCmosModeCfg = new HCNetSDK.NET_DVR_CMOSMODECFG();
        public byte byFilterSwitch;
        public byte byFocusSpeed;
        public byte byAutoCompensationInterval;
        public byte bySceneMode;
        public HCNetSDK.NET_DVR_DEFOGCFG struDefogCfg = new HCNetSDK.NET_DVR_DEFOGCFG();
        public HCNetSDK.NET_DVR_ELECTRONICSTABILIZATION struElectronicStabilization = new HCNetSDK.NET_DVR_ELECTRONICSTABILIZATION();
        public HCNetSDK.NET_DVR_CORRIDOR_MODE_CCD struCorridorMode = new HCNetSDK.NET_DVR_CORRIDOR_MODE_CCD();
        public byte byExposureSegmentEnable;
        public byte byBrightCompensate;
        public byte byCaptureModeN;
        public byte byCaptureModeP;
        public HCNetSDK.NET_DVR_SMARTIR_PARAM struSmartIRParam = new HCNetSDK.NET_DVR_SMARTIR_PARAM();
        public HCNetSDK.NET_DVR_PIRIS_PARAM struPIrisParam = new HCNetSDK.NET_DVR_PIRIS_PARAM();
        public HCNetSDK.NET_DVR_LASER_PARAM_CFG struLaserParam = new HCNetSDK.NET_DVR_LASER_PARAM_CFG();
        public HCNetSDK.NET_DVR_FFC_PARAM struFFCParam = new HCNetSDK.NET_DVR_FFC_PARAM();
        public HCNetSDK.NET_DVR_DDE_PARAM struDDEParam = new HCNetSDK.NET_DVR_DDE_PARAM();
        public HCNetSDK.NET_DVR_AGC_PARAM struAGCParam = new HCNetSDK.NET_DVR_AGC_PARAM();
        public byte byLensDistortionCorrection;
        public byte byDistortionCorrectionLevel;
        public byte byCalibrationAccurateLevel;
        public byte byZoomedInDistantViewLevel;
        public HCNetSDK.NET_DVR_SNAP_CAMERAPARAMCFG struSnapCCD = new HCNetSDK.NET_DVR_SNAP_CAMERAPARAMCFG();
        public HCNetSDK.NET_DVR_OPTICAL_DEHAZE struOpticalDehaze = new HCNetSDK.NET_DVR_OPTICAL_DEHAZE();
        public HCNetSDK.NET_DVR_THERMOMETRY_AGC struThermAGC = new HCNetSDK.NET_DVR_THERMOMETRY_AGC();
        public byte byFusionMode;
        public byte byHorizontalFOV;
        public byte byVerticalFOV;
        public byte byBrightnessSuddenChangeSuppression;
        public byte byGPSEnabled;
        public byte[] byRes2 = new byte[155];

        public NET_DVR_CAMERAPARAMCFG_EX() {
        }
    }

    public static class CallBack_USER extends Structure {
        public byte[] byDeviceID = new byte[16];
        public byte[] byCardNo = new byte[32];
        public byte[] byDevIP = new byte[16];

        public CallBack_USER() {
        }
    }

    public static class NET_DVR_JSON_DATA_CFG extends Structure {
        public int dwSize;
        public Pointer lpJsonData;
        public int dwJsonDataSize;
        public Pointer lpPicData;
        public int dwPicDataSize;
        public int lpInfraredFacePicBuffer;
        public Pointer dwInfraredFacePicSize;
        public byte[] byRes = new byte[248];

        public NET_DVR_JSON_DATA_CFG() {
        }
    }

    public static class INTRef_ARRAY extends Structure {
        public IntByReference[] intValue;

        public INTRef_ARRAY(int iLen) {
            this.intValue = new IntByReference[iLen];
        }
    }

    public static class INT_ARRAY extends Structure {
        public int[] intValue;

        public INT_ARRAY(int iLen) {
            this.intValue = new int[iLen];
        }
    }

    public static class BYTE_ARRAY extends Structure {
        public byte[] byValue;

        public BYTE_ARRAY(int iLen) {
            this.byValue = new byte[iLen];
        }
    }

    public static class NET_DVR_LOCAL_SDK_PATH extends Structure {
        public byte[] sPath = new byte[256];
        public byte[] byRes = new byte[128];

        public NET_DVR_LOCAL_SDK_PATH() {
        }
    }

    public static class NET_DVR_STD_CONFIG extends Structure {
        public Pointer lpCondBuffer;
        public int dwCondSize;
        public Pointer lpInBuffer;
        public int dwInSize;
        public Pointer lpOutBuffer;
        public int dwOutSize;
        public Pointer lpStatusBuffer;
        public int dwStatusSize;
        public Pointer lpXmlBuffer;
        public int dwXmlSize;
        public byte byDataType;
        public byte[] byRes = new byte[23];

        public NET_DVR_STD_CONFIG() {
        }
    }

    public static class NET_DVR_STD_ABILITY extends Structure {
        public Pointer lpCondBuffer;
        public int dwCondSize;
        public Pointer lpOutBuffer;
        public int dwOutSize;
        public Pointer lpStatusBuffer;
        public int dwStatusSize;
        public int dwRetSize;
        public byte[] byRes = new byte[32];

        public NET_DVR_STD_ABILITY() {
        }
    }

    public static class NET_DVR_COMPLETE_RESTORE_INFO extends Structure {
        public int dwSize;
        public int dwChannel;
        public byte[] byRes = new byte[64];

        public NET_DVR_COMPLETE_RESTORE_INFO() {
        }
    }

    public static class NET_DVR_CMS_PARAM extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_IPADDR struAddr = new HCNetSDK.NET_DVR_IPADDR();
        public short wServerPort;
        public byte bySeverProtocolType;
        public byte byStatus;
        public byte[] sDeviceId = new byte[32];
        public byte[] sPassWord = new byte[16];
        public byte[] sPlatformEhomeVersion = new byte[32];
        public byte byNetWork;
        public byte byAddressType;
        public byte byProtocolVersion;
        public byte byRes1;
        public byte[] sDomainName = new byte[64];
        public byte byEnable;
        public byte[] byRes = new byte[139];

        public NET_DVR_CMS_PARAM() {
        }
    }

    public static class NET_ITC_VIDEO_TRIGGER_PARAM extends Structure {
        public int dwSize;
        public int dwMode;
        public HCNetSDK.NET_ITC_VIDEO_TRIGGER_PARAM_UNION uVideoTrigger = new HCNetSDK.NET_ITC_VIDEO_TRIGGER_PARAM_UNION();
        public byte[] byRes = new byte[32];

        public NET_ITC_VIDEO_TRIGGER_PARAM() {
        }
    }

    public static class NET_ITC_VIDEO_TRIGGER_PARAM_UNION extends Union {
        public int[] uLen = new int[1150];
        public HCNetSDK.NET_ITC_VIDEO_EPOLICE_PARAM struVideoEP = new HCNetSDK.NET_ITC_VIDEO_EPOLICE_PARAM();

        public NET_ITC_VIDEO_TRIGGER_PARAM_UNION() {
        }
    }

    public static class NET_ITC_VIDEO_TRIGGER_COND extends Structure {
        public int dwSize;
        public int dwChannel;
        public int dwTriggerMode;
        public byte[] byRes = new byte[16];

        public NET_ITC_VIDEO_TRIGGER_COND() {
        }
    }

    public static class NET_DVR_CURTRIGGERMODE extends Structure {
        public int dwSize;
        public int dwTriggerType;
        public byte[] byRes = new byte[24];

        public NET_DVR_CURTRIGGERMODE() {
        }
    }

    public static class NET_ITC_VIDEO_EPOLICE_PARAM extends Structure {
        public byte byEnable;
        public byte byLaneNum;
        public byte byLogicJudge;
        public byte byRes1;
        public HCNetSDK.NET_ITC_PLATE_RECOG_PARAM struPlateRecog;
        public HCNetSDK.NET_ITC_TRAFFIC_LIGHT_PARAM struTrafficLight;
        public HCNetSDK.NET_ITC_LANE_VIDEO_EPOLICE_PARAM[] struLaneParam = new HCNetSDK.NET_ITC_LANE_VIDEO_EPOLICE_PARAM[6];
        public HCNetSDK.NET_ITC_LINE struLaneBoundaryLine;
        public HCNetSDK.NET_ITC_LINE struLeftLine;
        public HCNetSDK.NET_ITC_LINE struRightLine;
        public HCNetSDK.NET_ITC_LINE struTopZebraLine;
        public HCNetSDK.NET_ITC_LINE struBotZebraLine;
        public byte[] byRes = new byte[32];

        public NET_ITC_VIDEO_EPOLICE_PARAM() {
        }
    }

    public static class NET_ITC_LANE_VIDEO_EPOLICE_PARAM extends Structure {
        public byte byLaneNO;
        public byte bySensitivity;
        public byte byEnableRadar;
        public byte byRelaLaneDirectionType;
        public HCNetSDK.NET_ITC_LANE_LOGIC_PARAM struLane;
        public HCNetSDK.NET_ITC_VIOLATION_DETECT_PARAM struVioDetect;
        public HCNetSDK.NET_ITC_VIOLATION_DETECT_LINE struLine;
        public HCNetSDK.NET_ITC_POLYGON struPlateRecog;
        public byte byRecordEnable;
        public byte byRecordType;
        public byte byPreRecordTime;
        public byte byRecordDelayTime;
        public byte byRecordTimeOut;
        public byte byCarSpeedLimit;
        public byte byCarSignSpeed;
        public byte bySnapPicPreRecord;
        public HCNetSDK.NET_ITC_INTERVAL_PARAM struInterval;
        public byte[] byRes = new byte[36];

        public NET_ITC_LANE_VIDEO_EPOLICE_PARAM() {
        }
    }

    public static class NET_ITC_VIOLATION_DETECT_LINE extends Structure {
        public HCNetSDK.NET_ITC_LINE struLaneLine = new HCNetSDK.NET_ITC_LINE();
        public HCNetSDK.NET_ITC_LINE struStopLine = new HCNetSDK.NET_ITC_LINE();
        public HCNetSDK.NET_ITC_LINE struRedLightLine = new HCNetSDK.NET_ITC_LINE();
        public HCNetSDK.NET_ITC_LINE struCancelLine = new HCNetSDK.NET_ITC_LINE();
        public HCNetSDK.NET_ITC_LINE struWaitLine = new HCNetSDK.NET_ITC_LINE();
        public HCNetSDK.NET_ITC_LINE[] struRes = new HCNetSDK.NET_ITC_LINE[8];

        public NET_ITC_VIOLATION_DETECT_LINE() {
        }
    }

    public static class NET_ITC_VIOLATION_DETECT_PARAM extends Structure {
        public int dwVioDetectType;
        public byte byDriveLineSnapTimes;
        public byte byReverseSnapTimes;
        public short wStayTime;
        public byte byNonDriveSnapTimes;
        public byte byChangeLaneTimes;
        public byte bybanTimes;
        public byte byDriveLineSnapSen;
        public short wSnapPosFixPixel;
        public byte bySpeedTimes;
        public byte byTurnAroundEnable;
        public byte byThirdPlateRecogTime;
        public byte byPostSnapTimes;
        public byte[] byRes1 = new byte[18];
        public short wStopLineDis;
        public byte[] byRes = new byte[14];

        public NET_ITC_VIOLATION_DETECT_PARAM() {
        }
    }

    public static class NET_ITC_TRAFFIC_LIGHT_PARAM extends Structure {
        public byte bySource;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_ITC_LIGHT_ACCESSPARAM_UNION struLightAccess = new HCNetSDK.NET_ITC_LIGHT_ACCESSPARAM_UNION();
        public byte[] byRes = new byte[32];

        public NET_ITC_TRAFFIC_LIGHT_PARAM() {
        }
    }

    public static class NET_ITC_LIGHT_ACCESSPARAM_UNION extends Union {
        public int[] uLen = new int[122];
        public HCNetSDK.NET_ITC_IO_LIGHT_PARAM struIOLight;
        public HCNetSDK.NET_ITC_RS485_LIGHT_PARAM struRS485Light;
        public HCNetSDK.NET_ITC_VIDEO_DETECT_LIGHT_PARAM struVideoDelectLight;

        public NET_ITC_LIGHT_ACCESSPARAM_UNION() {
        }
    }

    public static class NET_ITC_VIDEO_DETECT_LIGHT_PARAM extends Structure {
        public HCNetSDK.NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM[] struTrafficLight = new HCNetSDK.NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM[12];
        public byte[] byRes = new byte[8];

        public NET_ITC_VIDEO_DETECT_LIGHT_PARAM() {
        }
    }

    public static class NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM extends Structure {
        public byte byLightNum;
        public byte byStraightLight;
        public byte byLeftLight;
        public byte byRightLight;
        public byte byRedLight;
        public byte byGreenLight;
        public byte byYellowLight;
        public byte byYellowLightTime;
        public HCNetSDK.NET_POS_PARAM struLightRect;
        public byte[] byRes = new byte[24];

        public NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM() {
        }
    }

    public static class NET_POS_PARAM extends Structure {
        public short wLeft;
        public short wTop;
        public short wRight;
        public short wBottom;

        public NET_POS_PARAM() {
        }
    }

    public static class NET_ITC_RS485_LIGHT_PARAM extends Structure {
        public HCNetSDK.NET_ITC_SINGLE_RS485_LIGHT_PARAM[] struRS485Light = new HCNetSDK.NET_ITC_SINGLE_RS485_LIGHT_PARAM[6];
        public byte[] byRes = new byte[8];

        public NET_ITC_RS485_LIGHT_PARAM() {
        }
    }

    public static class NET_ITC_SINGLE_RS485_LIGHT_PARAM extends Structure {
        public byte byLightType;
        public byte byRelatedLightChan;
        public byte byInputLight;
        public byte byRelatedYLightChan;
        public byte[] byRes = new byte[16];

        public NET_ITC_SINGLE_RS485_LIGHT_PARAM() {
        }
    }

    public static class NET_ITC_IO_LIGHT_PARAM extends Structure {
        public HCNetSDK.NET_ITC_SINGLE_IO_LIGHT_PARAM[] struIOLight = new HCNetSDK.NET_ITC_SINGLE_IO_LIGHT_PARAM[6];
        public byte[] byRes = new byte[8];

        public NET_ITC_IO_LIGHT_PARAM() {
        }
    }

    public static class NET_ITC_SINGLE_IO_LIGHT_PARAM extends Structure {
        public byte byLightType;
        public byte byRelatedIO;
        public byte byRedLightState;
        public byte[] byRes = new byte[17];

        public NET_ITC_SINGLE_IO_LIGHT_PARAM() {
        }
    }

    public static class NET_ITC_TRIGGERCFG extends Structure {
        public int dwSize;
        public HCNetSDK.NET_ITC_SINGLE_TRIGGERCFG struTriggerParam;
        public byte[] byRes = new byte[32];

        public NET_ITC_TRIGGERCFG() {
        }
    }

    public static class NET_ITC_SINGLE_TRIGGERCFG extends Structure {
        public byte byEnable;
        public byte[] byRes1 = new byte[3];
        public int dwTriggerType;
        public HCNetSDK.NET_ITC_TRIGGER_PARAM_UNION uTriggerParam = new HCNetSDK.NET_ITC_TRIGGER_PARAM_UNION();
        public byte[] byRes = new byte[64];

        public NET_ITC_SINGLE_TRIGGERCFG() {
        }
    }

    public static class NET_ITC_TRIGGER_PARAM_UNION extends Union {
        public int[] uLen = new int[1070];
        public HCNetSDK.NET_ITC_POST_IOSPEED_PARAM struIOSpeed = new HCNetSDK.NET_ITC_POST_IOSPEED_PARAM();
        public HCNetSDK.NET_ITC_POST_RS485_PARAM struPostRs485 = new HCNetSDK.NET_ITC_POST_RS485_PARAM();
        public HCNetSDK.NET_ITC_POST_RS485_RADAR_PARAM struPostRadar = new HCNetSDK.NET_ITC_POST_RS485_RADAR_PARAM();
        public HCNetSDK.NET_ITC_POST_VTCOIL_PARAM struVtCoil = new HCNetSDK.NET_ITC_POST_VTCOIL_PARAM();
        public HCNetSDK.NET_ITC_POST_HVT_PARAM struHvt = new HCNetSDK.NET_ITC_POST_HVT_PARAM();
        public HCNetSDK.NET_ITC_POST_HVT_PARAM_V50 struHvtV50 = new HCNetSDK.NET_ITC_POST_HVT_PARAM_V50();

        public NET_ITC_TRIGGER_PARAM_UNION() {
        }
    }

    public static class NET_ITC_POST_RS485_RADAR_PARAM extends Structure {
        public byte byRelatedLaneNum;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_ITC_PLATE_RECOG_PARAM struPlateRecog = new HCNetSDK.NET_ITC_PLATE_RECOG_PARAM();
        public HCNetSDK.NET_ITC_LANE_PARAM[] struLane = new HCNetSDK.NET_ITC_LANE_PARAM[6];
        public HCNetSDK.NET_ITC_RADAR_PARAM struRadar = new HCNetSDK.NET_ITC_RADAR_PARAM();
        public byte[] byRes = new byte[32];

        public NET_ITC_POST_RS485_RADAR_PARAM() {
        }
    }

    public static class NET_ITC_POST_RS485_PARAM extends Structure {
        public byte byRelatedLaneNum;
        public byte byTriggerSpareMode;
        public byte byFaultToleranceTime;
        public byte byRes1;
        public HCNetSDK.NET_ITC_PLATE_RECOG_PARAM struPlateRecog = new HCNetSDK.NET_ITC_PLATE_RECOG_PARAM();
        public HCNetSDK.NET_ITC_LANE_PARAM[] struLane = new HCNetSDK.NET_ITC_LANE_PARAM[6];
        public byte[] byRes = new byte[32];

        public NET_ITC_POST_RS485_PARAM() {
        }
    }

    public static class NET_ITC_LANE_PARAM extends Structure {
        public byte byEnable;
        public byte byRelatedDriveWay;
        public short wDistance;
        public short wTrigDelayTime;
        public byte byTrigDelayDistance;
        public byte bySpeedCapEn;
        public byte bySignSpeed;
        public byte bySpeedLimit;
        public byte bySnapTimes;
        public byte byOverlayDriveWay;
        public HCNetSDK.NET_ITC_INTERVAL_PARAM struInterval;
        public byte[] byRelatedIOOut = new byte[4];
        public byte byFlashMode;
        public byte byCartSignSpeed;
        public byte byCartSpeedLimit;
        public byte byRelatedIOOutEx;
        public HCNetSDK.NET_ITC_PLATE_RECOG_REGION_PARAM[] struPlateRecog = new HCNetSDK.NET_ITC_PLATE_RECOG_REGION_PARAM[2];
        public byte byLaneType;
        public byte byUseageType;
        public byte byRelaLaneDirectionType;
        public byte byLowSpeedLimit;
        public byte byBigCarLowSpeedLimit;
        public byte byLowSpeedCapEn;
        public byte byEmergencyCapEn;
        public byte[] byRes = new byte[9];

        public NET_ITC_LANE_PARAM() {
        }
    }

    public static class NET_ITC_POST_HVT_PARAM_V50 extends Structure {
        public byte byLaneNum;
        public byte byCapType;
        public byte byCapMode;
        public byte bySecneMode;
        public byte bySpeedMode;
        public byte byLineRuleEffect;
        public byte[] byRes1 = new byte[78];
        public HCNetSDK.NET_ITC_LINE struLeftTrigLine;
        public HCNetSDK.NET_ITC_LINE struRigtTrigLine;
        public HCNetSDK.NET_ITC_LINE struLaneBoundaryLine;
        public HCNetSDK.NET_ITC_POLYGON struDetectArea;
        public HCNetSDK.NET_DVR_GEOGLOCATION struGeogLocation;
        public HCNetSDK.NET_ITC_LANE_HVT_PARAM_V50[] struLaneParam = new HCNetSDK.NET_ITC_LANE_HVT_PARAM_V50[6];
        public HCNetSDK.NET_ITC_PLATE_RECOG_PARAM struPlateRecog;
        public byte[] byRes2 = new byte[260];

        public NET_ITC_POST_HVT_PARAM_V50() {
        }
    }

    public static class NET_ITC_LANE_HVT_PARAM_V50 extends Structure {
        public byte byLaneNO;
        public byte byFlashMode;
        public byte bySignSpeed;
        public byte bySpeedLimit;
        public byte bySignLowSpeed;
        public byte byLowSpeedLimit;
        public byte byBigCarSignSpeed;
        public byte byBigCarSpeedLimit;
        public byte byBigCarSignLowSpeed;
        public byte byBigCarLowSpeedLimit;
        public byte bySnapTimes;
        public byte byDriveLineSnapTime;
        public byte byHighSpeedSnapTime;
        public byte byLowSpeedSnapTime;
        public byte byBanSnapTime;
        public byte byReverseSnapTime;
        public byte byRelatedDriveWay;
        public byte byLaneType;
        public byte byRelaLaneDirectionType;
        public byte[] byRes1 = new byte[27];
        public byte byChangeLaneEnable;
        public byte byChangeLaneCapNo;
        public int dwVioDetectType;
        public int dwRelatedIOOut;
        public HCNetSDK.NET_ITC_LINE struTrigLine;
        public HCNetSDK.NET_ITC_LINE struLineLeft;
        public HCNetSDK.NET_ITC_POLYGON struPlateRecog;
        public HCNetSDK.NET_ITC_LANE_LOGIC_PARAM struLane;
        public HCNetSDK.NET_ITC_INTERVAL_PARAM struInterval;
        public byte[] byRes2 = new byte[280];

        public NET_ITC_LANE_HVT_PARAM_V50() {
        }
    }

    public static class NET_ITC_POST_HVT_PARAM extends Structure {
        public byte byLaneNum;
        public byte bySceneMode;
        public byte byRoadExpBright;
        public byte byPlateExpBright;
        public HCNetSDK.NET_ITC_POLYGON struDetectArea;
        public HCNetSDK.NET_ITC_SNAPMODE_PARAM struCapMode = new HCNetSDK.NET_ITC_SNAPMODE_PARAM();
        public HCNetSDK.NET_ITC_HVT_EC_PARAM struEcParam = new HCNetSDK.NET_ITC_HVT_EC_PARAM();
        public HCNetSDK.NET_ITC_LANE_HVT_PARAM[] struLaneParam = new HCNetSDK.NET_ITC_LANE_HVT_PARAM[6];
        public HCNetSDK.NET_ITC_PLATE_RECOG_PARAM struPlateRecog = new HCNetSDK.NET_ITC_PLATE_RECOG_PARAM();
        public HCNetSDK.NET_DVR_GEOGLOCATION struGeogLocation = new HCNetSDK.NET_DVR_GEOGLOCATION();
        public byte[] byRes = new byte[324];

        public NET_ITC_POST_HVT_PARAM() {
        }
    }

    public static class NET_ITC_LANE_HVT_PARAM extends Structure {
        public byte byLaneNO;
        public byte bySignSpeed;
        public byte bySpeedLimit;
        public byte byBigCarSignSpeed;
        public byte byBigCarSpeedLimit;
        public byte bySpeedCapEn;
        public byte byCaptureCount;
        public byte byRelatedIOOut;
        public byte byFlashMode;
        public byte byEnableRadar;
        public byte byChangeLaneEnable;
        public byte byChangeLaneCapNo;
        public int dwCapTarget;
        public HCNetSDK.NET_ITC_INTERVAL_PARAM struInterval;
        public byte[] byRes3 = new byte[24];
        public HCNetSDK.NET_ITC_LANE_LOGIC_PARAM struLane;
        public HCNetSDK.NET_ITC_LINE struLeftLaneLine;
        public HCNetSDK.NET_ITC_LINE struRightLaneLine;
        public HCNetSDK.NET_ITC_POLYGON struPlateRecog;
        public HCNetSDK.NET_ITC_POLYGON struTraceArea;
        public HCNetSDK.NET_VCA_LINE struForwardTrigLine;
        public HCNetSDK.NET_VCA_LINE struBackwardTrigLine;
        public HCNetSDK.NET_VCA_LINE struLeftTrigLine;
        public HCNetSDK.NET_VCA_LINE struRightTrigLine;
        public byte[] byRes4 = new byte[60];

        public NET_ITC_LANE_HVT_PARAM() {
        }
    }

    public static class NET_ITC_HVT_EC_PARAM extends Structure {
        public int dwCapShutter;
        public short wCapGain;
        public byte[] byRes = new byte[2];
        public int dwDayTimeVideoShutter;
        public short wDayTimeVideoGain;
        public short wNightVideoGain;
        public short wNightVideoShutter;
        public byte[] byRes1 = new byte[108];

        public NET_ITC_HVT_EC_PARAM() {
        }
    }

    public static class NET_ITC_SNAPMODE_PARAM extends Structure {
        public byte byVehicleCapMode;
        public byte byNoVehicleCapMode;
        public byte byPasserCapMode;
        public byte[] byRes = new byte[29];

        public NET_ITC_SNAPMODE_PARAM() {
        }
    }

    public static class NET_ITC_LINE extends Structure {
        public HCNetSDK.NET_VCA_LINE struLine = new HCNetSDK.NET_VCA_LINE();
        public byte byLineType;
        public byte[] byRes = new byte[7];

        public NET_ITC_LINE() {
        }
    }

    public static class NET_ITC_LANE_LOGIC_PARAM extends Structure {
        public byte byUseageType;
        public byte byDirectionType;
        public byte byCarDriveDirect;
        public byte[] byRes = new byte[33];

        public NET_ITC_LANE_LOGIC_PARAM() {
        }
    }

    public static class NET_ITC_POST_VTCOIL_PARAM extends Structure {
        public byte byRelatedLaneNum;
        public byte byIsDisplay;
        public byte byLoopPos;
        public byte byPolarLenType;
        public byte byDayAuxLightMode;
        public byte byVideoLaneNO;
        public byte byVideoLowTh;
        public byte byVideoHighTh;
        public byte byRecordMode;
        public byte bySnapMode;
        public byte bySpeedDetector;
        public byte byRes2;
        public short wResolutionX;
        public short wResolutionY;
        public int dwDayInitExp;
        public int dwDayMaxExp;
        public int dwNightExp;
        public int dwSnapExp;
        public byte byDayInitGain;
        public byte byDayMaxGain;
        public byte byNightGain;
        public byte bySnapGain;
        public int dwSceneMode;
        public HCNetSDK.NET_DVR_GEOGLOCATION struGeogLocation = new HCNetSDK.NET_DVR_GEOGLOCATION();
        public HCNetSDK.NET_ITC_PLATE_RECOG_PARAM struPlateRecog = new HCNetSDK.NET_ITC_PLATE_RECOG_PARAM();
        public HCNetSDK.NET_ITC_VTCOIL_INFO[] struVtCoil = new HCNetSDK.NET_ITC_VTCOIL_INFO[5];
        public HCNetSDK.NET_ITC_RADAR_PARAM struRadar = new HCNetSDK.NET_ITC_RADAR_PARAM();
        public HCNetSDK.NET_VCA_LINE struLine = new HCNetSDK.NET_VCA_LINE();
        public int dwVioDetectType;
        public byte byDebugMode;
        public byte[] byRes = new byte[11];

        public NET_ITC_POST_VTCOIL_PARAM() {
        }
    }

    public static class NET_ITC_RADAR_PARAM extends Structure {
        public byte byRadarType;
        public byte byLevelAngle;
        public short wRadarSensitivity;
        public short wRadarSpeedValidTime;
        public byte[] byRes1 = new byte[2];
        public float fLineCorrectParam;
        public int iConstCorrectParam;
        public byte[] byRes2 = new byte[8];

        public NET_ITC_RADAR_PARAM() {
        }
    }

    public static class NET_ITC_VTCOIL_INFO extends Structure {
        public HCNetSDK.NET_VCA_RECT struLaneRect = new HCNetSDK.NET_VCA_RECT();
        public byte byTrigFlag;
        public byte byTrigSensitive;
        public byte[] byRelatedIOOut = new byte[4];
        public byte byFlashMode;
        public byte byLaneType;
        public byte byEnableRadar;
        public HCNetSDK.NET_ITC_VTLANE_PARAM struLane = new HCNetSDK.NET_ITC_VTLANE_PARAM();
        public byte byUseageType;
        public byte byCarDriveDirect;
        public byte[] byRes = new byte[30];

        public NET_ITC_VTCOIL_INFO() {
        }
    }

    public static class NET_ITC_VTLANE_PARAM extends Structure {
        public byte byRelatedDriveWay;
        public byte bySpeedCapEn;
        public byte bySignSpeed;
        public byte bySpeedLimit;
        public byte bySnapTimes;
        public byte byBigCarSignSpeed;
        public byte byBigCarSpeedLimit;
        public byte byRelatedIOOutEx;
        public HCNetSDK.NET_ITC_INTERVAL_PARAM struInterval = new HCNetSDK.NET_ITC_INTERVAL_PARAM();
        public byte[] byRelatedIOOut = new byte[4];
        public byte byFlashMode;
        public byte byLowSpeedLimit;
        public byte byBigCarLowSpeedLimit;
        public byte byRelaLaneDirectionType;
        public HCNetSDK.NET_ITC_PLATE_RECOG_REGION_PARAM[] struPlateRecog = new HCNetSDK.NET_ITC_PLATE_RECOG_REGION_PARAM[2];
        public HCNetSDK.NET_VCA_LINE struLine = new HCNetSDK.NET_VCA_LINE();

        public NET_ITC_VTLANE_PARAM() {
        }
    }

    public static class NET_ITC_INTERVAL_PARAM extends Structure {
        public byte byIntervalType;
        public byte[] byRes1 = new byte[3];
        public short[] wInterval = new short[4];
        public byte[] byRes = new byte[8];

        public NET_ITC_INTERVAL_PARAM() {
        }
    }

    public static class NET_DVR_GEOGLOCATION extends Structure {
        public int[] iRes = new int[2];
        public int dwCity;

        public NET_DVR_GEOGLOCATION() {
        }
    }

    public static class NET_ITC_POST_IOSPEED_PARAM extends Structure {
        public HCNetSDK.NET_ITC_PLATE_RECOG_PARAM struPlateRecog;
        public HCNetSDK.NET_ITC_SINGLE_IOSPEED_PARAM[] struSingleIOSpeed = new HCNetSDK.NET_ITC_SINGLE_IOSPEED_PARAM[4];
        public byte[] byRes = new byte[32];

        public NET_ITC_POST_IOSPEED_PARAM() {
        }
    }

    public static class NET_ITC_PLATE_RECOG_PARAM extends Structure {
        public byte[] byDefaultCHN = new byte[3];
        public byte byEnable;
        public int dwRecogMode;
        public byte byVehicleLogoRecog;
        public byte byProvince;
        public byte byRegion;
        public byte byCountry;
        public short wPlatePixelWidthMin;
        public short wPlatePixelWidthMax;
        public byte[] byRes = new byte[24];

        public NET_ITC_PLATE_RECOG_PARAM() {
        }
    }

    public static class NET_ITC_SINGLE_IOSPEED_PARAM extends Structure {
        public byte byEnable;
        public byte byTrigCoil1;
        public byte byCoil1IOStatus;
        public byte byTrigCoil2;
        public byte byCoil2IOStatus;
        public byte byRelatedDriveWay;
        public byte byTimeOut;
        public byte byRelatedIOOutEx;
        public int dwDistance;
        public byte byCapSpeed;
        public byte bySpeedLimit;
        public byte bySpeedCapEn;
        public byte bySnapTimes1;
        public byte bySnapTimes2;
        public byte byBigCarSpeedLimit;
        public byte byBigCarSignSpeed;
        public byte byIntervalType;
        public short[] wInterval1 = new short[4];
        public short[] wInterval2 = new short[4];
        public byte[] byRelatedIOOut = new byte[4];
        public byte byFlashMode;
        public byte byLaneType;
        public byte byCarSignSpeed;
        public byte byUseageType;
        public HCNetSDK.NET_ITC_PLATE_RECOG_REGION_PARAM[] struPlateRecog = new HCNetSDK.NET_ITC_PLATE_RECOG_REGION_PARAM[2];
        public byte byRelaLaneDirectionType;
        public byte byLowSpeedLimit;
        public byte byBigCarLowSpeedLimit;
        public byte byLowSpeedCapEn;
        public byte byEmergencyCapEn;
        public byte[] byRes = new byte[27];

        public NET_ITC_SINGLE_IOSPEED_PARAM() {
        }
    }

    public static class NET_ITC_PLATE_RECOG_REGION_PARAM extends Structure {
        public byte byMode;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.CUSTOM_uRegion uRegion = new HCNetSDK.CUSTOM_uRegion();
        public byte[] byRes = new byte[16];

        public NET_ITC_PLATE_RECOG_REGION_PARAM() {
        }
    }

    public static class CUSTOM_uRegion extends Union {
        public HCNetSDK.NET_VCA_RECT struRect = new HCNetSDK.NET_VCA_RECT();
        public HCNetSDK.NET_ITC_POLYGON struPolygon = new HCNetSDK.NET_ITC_POLYGON();

        public CUSTOM_uRegion() {
        }
    }

    public static class NET_ITC_POLYGON extends Structure {
        public int dwPointNum;
        public HCNetSDK.NET_VCA_POINT[] struPos = new HCNetSDK.NET_VCA_POINT[20];

        public NET_ITC_POLYGON() {
        }
    }

    public static class NET_DVR_GETWORKSTATE_COND extends Structure {
        public int dwSize;
        public byte byFindHardByCond;
        public byte byFindChanByCond;
        public byte[] byRes1 = new byte[2];
        public int[] dwFindHardStatus = new int[33];
        public int[] dwFindChanNo = new int[512];
        public byte[] byRes = new byte[64];

        public NET_DVR_GETWORKSTATE_COND() {
        }
    }

    public static class NET_DVR_WORKSTATE_V40 extends Structure {
        public int dwSize;
        public int dwDeviceStatic;
        public HCNetSDK.NET_DVR_DISKSTATE[] struHardDiskStatic = new HCNetSDK.NET_DVR_DISKSTATE[33];
        public HCNetSDK.NET_DVR_CHANNELSTATE_V30[] struChanStatic = new HCNetSDK.NET_DVR_CHANNELSTATE_V30[512];
        public int[] dwHasAlarmInStatic = new int[4128];
        public int[] dwHasAlarmOutStatic = new int[4128];
        public int dwLocalDisplay;
        public byte[] byAudioInChanStatus = new byte[2];
        public byte[] byRes1 = new byte[2];
        public float fHumidity;
        public float fTemperature;
        public byte[] byRes = new byte[116];

        public NET_DVR_WORKSTATE_V40() {
        }
    }

    public static class NET_DVR_PHY_DISK_INFO extends Structure {
        public short wPhySlot;
        public byte byType;
        public byte byStatus;
        public byte[] byMode = new byte[40];
        public int dwHCapacity;
        public int dwLCapacity;
        public byte[] byArrrayName = new byte[16];
        public short wArrayID;
        public byte byArrayInformation;
        public byte[] byRes = new byte[101];

        public NET_DVR_PHY_DISK_INFO() {
        }
    }

    public static class NET_DVR_ARRAY_INFO extends Structure {
        public short wArrayID;
        public byte byRaidMode;
        public byte byStatus;
        public int dwHCapacity;
        public int dwLCapacity;
        public int dwHFreeSpace;
        public int dwLFreeSpace;
        public byte[] byArrayName = new byte[16];
        public byte byPDCount;
        public byte bySpareCount;
        public byte[] byRes1 = new byte[2];
        public short[] wPDSlots = new short[16];
        public short[] wSparePDSlots = new short[16];
        public HCNetSDK.NET_DVR_BGA_INFO struBgaInfo;
        public short[] wPDSlotsPartTwo = new short[8];
        public short[] wSparePDSlotsPartTwo = new short[8];
        public byte[] byRes2 = new byte[48];

        public NET_DVR_ARRAY_INFO() {
        }
    }

    public static class NET_DVR_BGA_INFO extends Structure {
        public byte byBga;
        public byte byBgaState;
        public short wBgaPercentage;
        public byte[] byRes = new byte[4];

        public NET_DVR_BGA_INFO() {
        }
    }

    public static class NET_DVR_ARRAY_LIST extends Structure {
        public int dwSize;
        public int dwCount;
        public HCNetSDK.NET_DVR_ARRAY_INFO[] struArrayInfo = new HCNetSDK.NET_DVR_ARRAY_INFO[8];

        public NET_DVR_ARRAY_LIST() {
        }
    }

    public static class NET_DVR_SHIPSINFO extends Structure {
        public float fShipsLength;
        public float fShipsHeight;
        public float fShipsWidth;
        public float fShipsSpeed;
        public byte byShipsDirection;
        public byte byShipsDetState;
        public byte byTriggerLineID;
        public byte[] byRes = new byte[61];
        public HCNetSDK.NET_VCA_POLYGON struShipsRect;

        public NET_DVR_SHIPSINFO() {
        }
    }

    public static class NET_DVR_SHIPSDETECTION_ALARM extends Structure {
        public int dwSize;
        public HCNetSDK.NET_VCA_DEV_INFO struDevInfo;
        public int dwRelativeTime;
        public int dwAbsTime;
        public byte byShipsNum;
        public byte byShipsNumHead;
        public byte byShipsNumEnd;
        public byte byPicTransType;
        public HCNetSDK.NET_DVR_SHIPSINFO[] struShipInfo = (HCNetSDK.NET_DVR_SHIPSINFO[])((HCNetSDK.NET_DVR_SHIPSINFO[])(new HCNetSDK.NET_DVR_SHIPSINFO()).toArray(20));
        public int dwPicLen;
        public int dwThermalPicLen;
        public Pointer pPicBuffer;
        public Pointer pThermalPicBuffer;
        public short wDevInfoIvmsChannelEx;
        public byte byTimeDiffFlag;
        public byte cTimeDifferenceH;
        public byte cTimeDifferenceM;
        public byte bySID;
        public byte[] byRes1 = new byte[2];
        public byte[] szSceneName = new byte[32];
        public byte[] byRes = new byte[216];

        public NET_DVR_SHIPSDETECTION_ALARM() {
        }
    }

    public static class NET_DVR_THERMOMETRY_DIFF_ALARM extends Structure {
        public int dwSize;
        public int dwChannel;
        public byte byAlarmID1;
        public byte byAlarmID2;
        public short wPresetNo;
        public byte byAlarmLevel;
        public byte byAlarmType;
        public byte byAlarmRule;
        public byte byRuleCalibType;
        public HCNetSDK.NET_VCA_POINT[] struPoint = (HCNetSDK.NET_VCA_POINT[])((HCNetSDK.NET_VCA_POINT[])(new HCNetSDK.NET_VCA_POINT()).toArray(2));
        public HCNetSDK.NET_VCA_POLYGON[] struRegion = (HCNetSDK.NET_VCA_POLYGON[])((HCNetSDK.NET_VCA_POLYGON[])(new HCNetSDK.NET_VCA_POLYGON()).toArray(2));
        public float fRuleTemperatureDiff;
        public float fCurTemperatureDiff;
        public HCNetSDK.NET_PTZ_INFO struPtzInfo;
        public int dwPicLen;
        public int dwThermalPicLen;
        public int dwThermalInfoLen;
        public Pointer pPicBuff;
        public Pointer pThermalPicBuff;
        public Pointer pThermalInfoBuff;
        public byte byThermometryUnit;
        public byte byPicTransType;
        public byte[] byRes1 = new byte[2];
        public float fToleranceTemperature;
        public int dwAlarmFilteringTime;
        public int dwVisibleChannel;
        public byte[] byRes = new byte[48];

        public NET_DVR_THERMOMETRY_DIFF_ALARM() {
        }
    }

    public static class NET_DVR_THERMOMETRY_ALARM extends Structure {
        public int dwSize;
        public int dwChannel;
        public byte byRuleID;
        public byte byThermometryUnit;
        public short wPresetNo;
        public HCNetSDK.NET_PTZ_INFO struPtzInfo = new HCNetSDK.NET_PTZ_INFO();
        public byte byAlarmLevel;
        public byte byAlarmType;
        public byte byAlarmRule;
        public byte byRuleCalibType;
        public HCNetSDK.NET_VCA_POINT struPoint = new HCNetSDK.NET_VCA_POINT();
        public HCNetSDK.NET_VCA_POLYGON struRegion = new HCNetSDK.NET_VCA_POLYGON();
        public float fRuleTemperature;
        public float fCurrTemperature;
        public int dwPicLen;
        public int dwThermalPicLen;
        public int dwThermalInfoLen;
        public Pointer pPicBuff;
        public Pointer pThermalPicBuff;
        public Pointer pThermalInfoBuff;
        public HCNetSDK.NET_VCA_POINT struHighestPoint = new HCNetSDK.NET_VCA_POINT();
        public float fToleranceTemperature;
        public int dwAlertFilteringTime;
        public int dwAlarmFilteringTime;
        public int dwTemperatureSuddenChangeCycle;
        public float fTemperatureSuddenChangeValue;
        public byte byPicTransType;
        public byte[] byRes = new byte[39];

        public NET_DVR_THERMOMETRY_ALARM() {
        }
    }

    public static class NET_DVR_THERMOMETRY_PRESETINFO extends Structure {
        public int dwSize;
        public short wPresetNo;
        public byte[] byRes = new byte[2];
        public HCNetSDK.NET_DVR_THERMOMETRY_PRESETINFO_PARAM[] struPresetInfo = new HCNetSDK.NET_DVR_THERMOMETRY_PRESETINFO_PARAM[40];

        public NET_DVR_THERMOMETRY_PRESETINFO() {
        }
    }

    public static class NET_DVR_THERMOMETRY_PRESETINFO_PARAM extends Structure {
        public byte byEnabled;
        public byte byRuleID;
        public short wDistance;
        public float fEmissivity;
        public byte byDistanceUnit;
        public byte[] byRes = new byte[2];
        public byte byReflectiveEnabled;
        public float fReflectiveTemperature;
        public byte[] szRuleName = new byte[32];
        public byte byemissivityMode;
        public byte[] byRes1 = new byte[62];
        public byte byRuleCalibType;
        public HCNetSDK.NET_VCA_POINT struPoint = new HCNetSDK.NET_VCA_POINT();
        public HCNetSDK.NET_VCA_POLYGON struRegion = new HCNetSDK.NET_VCA_POLYGON();

        public NET_DVR_THERMOMETRY_PRESETINFO_PARAM() {
        }
    }

    public static class NET_DVR_THERMOMETRY_COND extends Structure {
        public int dwSize;
        public int dwChannel;
        public short wPresetNo;
        public byte[] byRes = new byte[62];

        public NET_DVR_THERMOMETRY_COND() {
        }
    }

    public static class NET_DVR_THERMOMETRY_MODE extends Structure {
        public int dwSize;
        public byte byMode;
        public byte byThermometryROIEnabled;
        public byte[] byRes = new byte[62];

        public NET_DVR_THERMOMETRY_MODE() {
        }
    }

    public static class NET_PTZ_INFO extends Structure {
        public float fPan;
        public float fTilt;
        public float fZoom;
        public int dwFocus;
        public byte[] byRes = new byte[4];

        public NET_PTZ_INFO() {
        }
    }

    public static class NET_DVR_THERMOMETRY_UPLOAD extends Structure {
        public int dwSize;
        public int dwRelativeTime;
        public int dwAbsTime;
        public byte[] szRuleName = new byte[32];
        public byte byRuleID;
        public byte byRuleCalibType;
        public short wPresetNo;
        public HCNetSDK.NET_DVR_POINT_THERM_CFG struPointThermCfg;
        public HCNetSDK.NET_DVR_LINEPOLYGON_THERM_CFG struLinePolygonThermCfg;
        public byte byThermometryUnit;
        public byte byDataType;
        public byte byRes1;
        public byte bySpecialPointThermType;
        public float fCenterPointTemperature;
        public float fHighestPointTemperature;
        public float fLowestPointTemperature;
        public HCNetSDK.NET_VCA_POINT struHighestPoint;
        public HCNetSDK.NET_VCA_POINT struLowestPoint;
        public byte byIsFreezedata;
        public byte[] byRes = new byte[95];

        public NET_DVR_THERMOMETRY_UPLOAD() {
        }
    }

    public static class NET_DVR_LINEPOLYGON_THERM_CFG extends Structure {
        public float fMaxTemperature;
        public float fMinTemperature;
        public float fAverageTemperature;
        public float fTemperatureDiff;
        public HCNetSDK.NET_VCA_POLYGON struRegion;
        public byte[] byRes = new byte[32];

        public NET_DVR_LINEPOLYGON_THERM_CFG() {
        }
    }

    public static class NET_DVR_POINT_THERM_CFG extends Structure {
        public float fTemperature;
        public HCNetSDK.NET_VCA_POINT struPoint;
        public byte[] byRes = new byte[120];

        public NET_DVR_POINT_THERM_CFG() {
        }
    }

    public static class NET_DVR_REALTIME_THERMOMETRY_COND extends Structure {
        public int dwSize;
        public int dwChan;
        public byte byRuleID;
        public byte byMode;
        public short wInterval;
        public byte[] byRes2 = new byte[60];

        public NET_DVR_REALTIME_THERMOMETRY_COND() {
        }
    }

    public static class NET_DVR_INQUEST_CDRW extends Structure {
        public int dwEnable;
        public int dwStatus;
        public int dwVolumn;
        public int dwFreeSpace;
        public int dwTimeLeft;
        public byte byCDType;
        public byte[] byRes = new byte[3];

        public NET_DVR_INQUEST_CDRW() {
        }
    }

    public static class NET_DVR_INQUEST_CDRW_STATUS extends Structure {
        public int dwType;
        public HCNetSDK.NET_DVR_INQUEST_CDRW[] strCDRWNum = new HCNetSDK.NET_DVR_INQUEST_CDRW[4];
        public HCNetSDK.NET_DVR_TIME_EX struInquestStartTime = new HCNetSDK.NET_DVR_TIME_EX();
        public byte[] byRes = new byte[16];

        public NET_DVR_INQUEST_CDRW_STATUS() {
        }
    }

    public static class NET_DVR_INQUEST_CDRW_CFG extends Structure {
        public int dwSize;
        public int dwNum;
        public int[] dwRwSelectPara = new int[64];
        public int dwModeSelect;
        public byte[] byRes = new byte[24];
        public int dwStartCDRW;
        public int dwHdExcp;
        public int dwInterval;
        public byte[] sLable = new byte[64];

        public NET_DVR_INQUEST_CDRW_CFG() {
        }
    }

    public static class NET_DVR_INQUEST_ROOM extends Structure {
        public byte byRoomIndex;
        public byte byFileType;
        public byte[] byRes = new byte[22];

        public NET_DVR_INQUEST_ROOM() {
        }
    }

    public static class NET_DVR_SEND_PARAM_IN extends Structure {
        public Pointer pSendData;
        public int dwSendDataLen;
        public HCNetSDK.NET_DVR_TIME_V30 struTime = new HCNetSDK.NET_DVR_TIME_V30();
        public byte byPicType;
        public byte byPicURL;
        public byte byUploadModeling;
        public byte byRes1;
        public int dwPicMangeNo;
        public byte[] sPicName = new byte[32];
        public int dwPicDisplayTime;
        public Pointer pSendAppendData;
        public int dwSendAppendDataLen;
        public byte[] byRes = new byte[192];

        public NET_DVR_SEND_PARAM_IN() {
        }
    }

    public static class NET_DVR_FACELIB_COND extends Structure {
        public int dwSize;
        public byte[] szFDID = new byte[256];
        public byte byConcurrent;
        public byte byCover;
        public byte byCustomFaceLibID;
        public byte byPictureSaveMode;
        public byte[] byIdentityKey = new byte[64];
        public byte[] byRes = new byte[60];

        public NET_DVR_FACELIB_COND() {
        }
    }

    public static class NET_DVR_FACELIB_GUARD_COND extends Structure {
        public int dwSize;
        public int dwChannel;
        public byte[] szFDID = new byte[68];
        public byte[] byRes = new byte[128];

        public NET_DVR_FACELIB_GUARD_COND() {
        }
    }

    public static class NET_DVR_EVENT_TRIGGER extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION_V41 struHandleException;
        public int[] dwRelRecordChan = new int[512];
        public HCNetSDK.NET_DVR_PRESETCHAN_INFO[] struPresetChanInfo = new HCNetSDK.NET_DVR_PRESETCHAN_INFO[512];
        public HCNetSDK.NET_DVR_CRUISECHAN_INFO[] struCruiseChanInfo = new HCNetSDK.NET_DVR_CRUISECHAN_INFO[512];
        public HCNetSDK.NET_DVR_PTZTRACKCHAN_INFO[] struPtzTrackInfo = new HCNetSDK.NET_DVR_PTZTRACKCHAN_INFO[512];
        public byte byDirection;
        public byte[] byRes2 = new byte[255];

        public NET_DVR_EVENT_TRIGGER() {
        }
    }

    public static class NET_DVR_PTZTRACKCHAN_INFO extends Structure {
        public int dwEnablePtzTrackChan;
        public int dwPtzTrackNo;

        public NET_DVR_PTZTRACKCHAN_INFO() {
        }
    }

    public static class NET_DVR_CRUISECHAN_INFO extends Structure {
        public int dwEnableCruiseChan;
        public int dwCruiseNo;

        public NET_DVR_CRUISECHAN_INFO() {
        }
    }

    public static class NET_DVR_PRESETCHAN_INFO extends Structure {
        public int dwEnablePresetChan;
        public int dwPresetPointNo;

        public NET_DVR_PRESETCHAN_INFO() {
        }
    }

    public static class NET_DVR_HANDLEEXCEPTION_V41 extends Structure {
        public int dwHandleType;
        public int dwMaxRelAlarmOutChanNum;
        public int[] dwRelAlarmOut = new int[4128];
        public byte[] byRes = new byte[64];

        public NET_DVR_HANDLEEXCEPTION_V41() {
        }
    }

    public static class NET_DVR_BUILTIN_SUPPLEMENTLIGHT extends Structure {
        public int dwSize;
        public byte byMode;
        public byte byBrightnessLimit;
        public byte bySupplementLightMode;
        public byte byMixedLightRegulatMode;
        public byte byLrLightBrightness;
        public byte byHighLrLightBrightness;
        public byte byHighBrightnessLimit;
        public byte byLowLrLightBrightness;
        public HCNetSDK.NET_DVR_SCHEDULE_DAYTIME struSchedTime;
        public byte byLowBrightnessLimit;
        public byte byWhiteLightBrightness;
        public byte[] byRes1 = new byte[254];

        public NET_DVR_BUILTIN_SUPPLEMENTLIGHT() {
        }
    }

    public static class NET_DVR_SCHEDULE_DAYTIME extends Structure {
        public HCNetSDK.NET_DVR_DAYTIME struStartTime;
        public HCNetSDK.NET_DVR_DAYTIME struStopTime;

        public NET_DVR_SCHEDULE_DAYTIME() {
        }
    }

    public static class NET_DVR_DAYTIME extends Structure {
        public byte byHour;
        public byte byMinute;
        public byte bySecond;
        public byte byRes;
        public short wMilliSecond;
        public byte[] byRes1 = new byte[2];

        public NET_DVR_DAYTIME() {
        }
    }

    public static class NET_DVR_GIS_UPLOADINFO extends Structure {
        public int dwSize;
        public int dwRelativeTime;
        public int dwAbsTime;
        public HCNetSDK.NET_VCA_DEV_INFO struDevInfo = new HCNetSDK.NET_VCA_DEV_INFO();
        public float fAzimuth;
        public byte byLatitudeType;
        public byte byLongitudeType;
        public byte[] byRes1 = new byte[2];
        public HCNetSDK.NET_DVR_LLI_PARAM struLatitude = new HCNetSDK.NET_DVR_LLI_PARAM();
        public HCNetSDK.NET_DVR_LLI_PARAM struLongitude = new HCNetSDK.NET_DVR_LLI_PARAM();
        public float fHorizontalValue;
        public float fVerticalValue;
        public float fVisibleRadius;
        public float fMaxViewRadius;
        public HCNetSDK.NET_DVR_SENSOR_PARAM struSensorParam;
        public HCNetSDK.NET_DVR_PTZPOS_PARAM struPtzPos;
        public byte[] byRes = new byte[256];

        public NET_DVR_GIS_UPLOADINFO() {
        }
    }

    public static class NET_DVR_LLI_PARAM extends Structure {
        public float fSec;
        public byte byDegree;
        public byte byMinute;
        public byte[] byRes = new byte[6];

        public NET_DVR_LLI_PARAM() {
        }
    }

    public static class NET_DVR_PTZPOS_PARAM extends Structure {
        public float fPanPos;
        public float fTiltPos;
        public float fZoomPos;
        public byte[] byRes = new byte[16];

        public NET_DVR_PTZPOS_PARAM() {
        }
    }

    public static class NET_DVR_SENSOR_PARAM extends Structure {
        public byte bySensorType;
        public byte[] byRes = new byte[31];
        public float fHorWidth;
        public float fVerWidth;
        public float fFold;

        public NET_DVR_SENSOR_PARAM() {
        }
    }

    public static class NET_DVR_PRESET_NAME extends Structure {
        public int dwSize;
        public short wPresetNum;
        public byte[] byRes1 = new byte[2];
        public byte[] byName = new byte[32];
        public short wPanPos;
        public short wTiltPos;
        public short wZoomPos;
        public byte[] byRes = new byte[58];

        public NET_DVR_PRESET_NAME() {
        }
    }

    public static class NET_DVR_SERIALSTART_V40 extends Structure {
        public int dwSize;
        public int dwSerialType;
        public byte bySerialNum;
        public byte[] byRes = new byte[255];

        public NET_DVR_SERIALSTART_V40() {
        }
    }

    public static class NET_DVR_FOCUSMODE_CFG extends Structure {
        public int dwSize;
        public byte byFocusMode;
        public byte byAutoFocusMode;
        public short wMinFocusDistance;
        public byte byZoomSpeedLevel;
        public byte byFocusSpeedLevel;
        public byte byOpticalZoom;
        public byte byDigtitalZoom;
        public float fOpticalZoomLevel;
        public int dwFocusPos;
        public byte byFocusDefinitionDisplay;
        public byte byFocusSensitivity;
        public byte[] byRes1 = new byte[2];
        public int dwRelativeFocusPos;
        public byte[] byRes = new byte[48];

        public NET_DVR_FOCUSMODE_CFG() {
        }
    }

    public static class NET_DVR_ALARM_ISAPI_PICDATA extends Structure {
        public int dwPicLen;
        public byte byPicType;
        public byte[] byRes = new byte[3];
        public byte[] szFilename = new byte[256];
        public Pointer pPicData;

        public NET_DVR_ALARM_ISAPI_PICDATA() {
        }
    }

    public static class NET_DVR_LOCAL_CHECK_DEV extends Structure {
        public int dwCheckOnlineTimeout;
        public int dwCheckOnlineNetFailMax;
        public byte[] byRes = new byte[256];

        public NET_DVR_LOCAL_CHECK_DEV() {
        }
    }

    public static class NET_DVR_LOCAL_TCP_PORT_BIND_CFG extends Structure {
        public short wLocalBindTcpMinPort;
        public short wLocalBindTcpMaxPort;
        public byte[] byRes = new byte[60];

        public NET_DVR_LOCAL_TCP_PORT_BIND_CFG() {
        }
    }

    public static class NET_DVR_LOCAL_GENERAL_CFG extends Structure {
        public byte byExceptionCbDirectly;
        public byte byNotSplitRecordFile;
        public byte byResumeUpgradeEnable;
        public byte byAlarmJsonPictureSeparate;
        public byte[] byRes = new byte[4];
        public long i64FileSize;
        public int dwResumeUpgradeTimeout;
        public byte[] byRes1 = new byte[236];

        public NET_DVR_LOCAL_GENERAL_CFG() {
        }
    }

    public static class NET_DVR_ALARM_ISAPI_INFO extends Structure {
        public Pointer pAlarmData;
        public int dwAlarmDataLen;
        public byte byDataType;
        public byte byPicturesNumber;
        public byte[] byRes = new byte[2];
        public Pointer pPicPackData;
        public byte[] byRes1 = new byte[32];

        public NET_DVR_ALARM_ISAPI_INFO() {
        }
    }

    public static class NET_DVR_ALARM_SEARCH_RESULT extends Structure {
        public int dwSize;
        public int dwAlarmComm;
        public int dwAlarmLen;
        public Pointer pAlarmInfo;
        public HCNetSDK.NET_DVR_ALARMER struAlarmer = new HCNetSDK.NET_DVR_ALARMER();
        public byte[] byRes = new byte[128];

        public NET_DVR_ALARM_SEARCH_RESULT() {
        }
    }

    public static class NET_DVR_ALARM_SEARCH_COND extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_TIME_SEARCH_COND strStartTime;
        public HCNetSDK.NET_DVR_TIME_SEARCH_COND strStopTime;
        public int dwAlarmComm;
        public byte[] sAlarmUID = new byte[64];
        public byte[] byRes = new byte[128];

        public NET_DVR_ALARM_SEARCH_COND() {
        }
    }

    public static class NET_DVR_INQUEST_RESUME_EVENT extends Structure {
        public int dwResumeNum;
        public HCNetSDK.NET_DVR_INQUEST_RESUME_SEGMENT[] struResumeSegment = new HCNetSDK.NET_DVR_INQUEST_RESUME_SEGMENT[2];
        public byte byResumeMode;
        public byte[] byRes = new byte[199];

        public NET_DVR_INQUEST_RESUME_EVENT() {
        }
    }

    public static class NET_DVR_INQUEST_RESUME_SEGMENT extends Structure {
        public HCNetSDK.NET_DVR_TIME struStartTime = new HCNetSDK.NET_DVR_TIME();
        public HCNetSDK.NET_DVR_TIME struStopTime = new HCNetSDK.NET_DVR_TIME();
        public byte byRoomIndex;
        public byte byDriveIndex;
        public short wSegmetSize;
        public int dwSegmentNo;
        public byte[] byRes = new byte[24];

        public NET_DVR_INQUEST_RESUME_SEGMENT() {
        }
    }

    public static class EVENT_IOTRET_V50 extends Structure {
        public int dwChanNo;
        public byte[] byRes = new byte[796];

        public EVENT_IOTRET_V50() {
        }
    }

    public static class EVENT_TRIALRET_V50 extends Structure {
        public byte byRoomIndex;
        public byte byDriveIndex;
        public short wSegmetSize;
        public int dwSegmentNo;
        public byte bySegmentState;
        public byte byCaseType;
        public byte[] byRes = new byte[2];
        public byte[] byCaseNo = new byte[52];
        public byte[] byCaseName = new byte[64];
        public byte[] byLitigant1 = new byte[24];
        public byte[] byLitigant2 = new byte[24];
        public byte[] byChiefJudge = new byte[24];
        public byte[] byRes1 = new byte[600];

        public EVENT_TRIALRET_V50() {
        }
    }

    public static class EVENT_POSRET_V50 extends Structure {
        public int dwChanNo;
        public byte[] byRes = new byte[796];

        public EVENT_POSRET_V50() {
        }
    }

    public static class EVENT_STREAMIDRET_V50 extends Structure {
        public int dwRecordType;
        public int dwRecordLength;
        public byte byLockFlag;
        public byte byDrawFrameType;
        public byte byPosition;
        public byte byRes1;
        public byte[] byFileName = new byte[32];
        public int dwFileIndex;
        public byte[] byTapeIndex = new byte[32];
        public byte[] byFileNameEx = new byte[256];
        public byte[] byRes = new byte[464];

        public EVENT_STREAMIDRET_V50() {
        }
    }

    public static class EVENT_INQUESTRET_V50 extends Structure {
        public byte byRoomIndex;
        public byte byDriveIndex;
        public byte[] byRes1 = new byte[6];
        public int dwSegmentNo;
        public short wSegmetSize;
        public short wSegmentState;
        public byte[] byRes2 = new byte[784];

        public EVENT_INQUESTRET_V50() {
        }
    }

    public static class EVENT_VCARET_V50 extends Structure {
        public int dwChanNo;
        public byte byRuleID;
        public byte[] byRes1 = new byte[3];
        public byte[] byRuleName = new byte[32];
        public HCNetSDK.NET_VCA_EVENT_UNION uEvent = new HCNetSDK.NET_VCA_EVENT_UNION();
        public byte[] byRes = new byte[668];

        public EVENT_VCARET_V50() {
        }
    }

    public static class EVENT_MOTIONRET_V50 extends Structure {
        public int dwMotDetNo;
        public byte[] byRes = new byte[796];

        public EVENT_MOTIONRET_V50() {
        }
    }

    public static class EVENT_ALARMRET_V50 extends Structure {
        public int dwAlarmInNo;
        public byte[] byRes = new byte[796];

        public EVENT_ALARMRET_V50() {
        }
    }

    public static class UNION_EVENT_RET_V50 extends Union {
        public byte[] byLen = new byte[800];
        public HCNetSDK.EVENT_ALARMRET_V50 struAlarmRet = new HCNetSDK.EVENT_ALARMRET_V50();
        public HCNetSDK.EVENT_MOTIONRET_V50 struMotionRet = new HCNetSDK.EVENT_MOTIONRET_V50();
        public HCNetSDK.EVENT_VCARET_V50 struVcaRet = new HCNetSDK.EVENT_VCARET_V50();
        public HCNetSDK.EVENT_INQUESTRET_V50 struInquestRet = new HCNetSDK.EVENT_INQUESTRET_V50();
        public HCNetSDK.EVENT_STREAMIDRET_V50 struStreamIDRet = new HCNetSDK.EVENT_STREAMIDRET_V50();
        public HCNetSDK.EVENT_POSRET_V50 struPosRet = new HCNetSDK.EVENT_POSRET_V50();
        public HCNetSDK.EVENT_TRIALRET_V50 struTrialRet = new HCNetSDK.EVENT_TRIALRET_V50();
        public HCNetSDK.EVENT_IOTRET_V50 struIOTRet = new HCNetSDK.EVENT_IOTRET_V50();

        public UNION_EVENT_RET_V50() {
        }
    }

    public static class NET_DVR_SEARCH_EVENT_RET_V50 extends Structure {
        public short wMajorType;
        public short wMinorType;
        public HCNetSDK.NET_DVR_TIME_SEARCH struStartTime = new HCNetSDK.NET_DVR_TIME_SEARCH();
        public HCNetSDK.NET_DVR_TIME_SEARCH struEndTime = new HCNetSDK.NET_DVR_TIME_SEARCH();
        public HCNetSDK.NET_DVR_ADDRESS struAddr = new HCNetSDK.NET_DVR_ADDRESS();
        public short[] wChan = new short[512];
        public byte[] byRes = new byte[256];
        public HCNetSDK.UNION_EVENT_RET_V50 uSeniorRet = new HCNetSDK.UNION_EVENT_RET_V50();

        public NET_DVR_SEARCH_EVENT_RET_V50() {
        }
    }

    public static class EVENT_INQUESTRET extends Structure {
        public byte byRoomIndex;
        public byte byDriveIndex;
        public byte[] byRes1 = new byte[6];
        public int dwSegmentNo;
        public short wSegmetSize;
        public short wSegmentState;
        public byte[] byRes2 = new byte[288];

        public EVENT_INQUESTRET() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("byRoomIndex", "byDriveIndex", "byRes1", "dwSegmentNo", "wSegmetSize", "wSegmentState", "byRes2");
        }
    }

    public static class EVENT_ALARMSTRET extends Structure {
        public int dwAlarmInNo;
        public byte[] byRes = new byte[300];

        public EVENT_ALARMSTRET() {
        }
    }

    public static class UNION_EVENT_RET extends Union {
        public byte[] byLen = new byte[304];
        public HCNetSDK.EVENT_ALARMSTRET struAlarmRet = new HCNetSDK.EVENT_ALARMSTRET();
        public HCNetSDK.EVENT_INQUESTRET struInquestRet = new HCNetSDK.EVENT_INQUESTRET();

        public UNION_EVENT_RET() {
        }
    }

    public static class NET_DVR_SEARCH_EVENT_RET extends Structure {
        public short wMajorType;
        public short wMinorType;
        public HCNetSDK.NET_DVR_TIME struStartTime = new HCNetSDK.NET_DVR_TIME();
        public HCNetSDK.NET_DVR_TIME struEndTime = new HCNetSDK.NET_DVR_TIME();
        public byte[] byChan = new byte[64];
        public byte[] byChanEx = new byte[32];
        public byte[] byRes = new byte[4];
        public HCNetSDK.UNION_EVENT_RET uSeniorRet = new HCNetSDK.UNION_EVENT_RET();

        public NET_DVR_SEARCH_EVENT_RET() {
        }
    }

    public static class EVENT_IOTPARAM_V50 extends Structure {
        public short wDeviceType;
        public short wEventType;
        public short[] wChannel = new short[64];
        public byte byAllChan;
        public byte byCaseSensitive;
        public byte byCombinateMode;
        public byte bySearchType;
        public byte[] sKeyWord = new byte[384];
        public short wZoneNo;
        public byte[] byRes = new byte[278];

        public EVENT_IOTPARAM_V50() {
        }
    }

    public static class EVENT_ACSPARAM_V50 extends Structure {
        public int dwMajor;
        public int dwMinor;
        public byte[] byCardNo = new byte[32];
        public byte[] byName = new byte[32];
        public byte[] byMACAddr = new byte[6];
        public byte[] byRes = new byte[722];

        public EVENT_ACSPARAM_V50() {
        }
    }

    public static class EVENT_TRIALPARAM_V50 extends Structure {
        public byte[] byCaseNo = new byte[56];
        public byte[] byCaseName = new byte[100];
        public byte[] byLitigant1 = new byte[32];
        public byte[] byLitigant2 = new byte[32];
        public byte[] byChiefJudge = new byte[32];
        public byte byCaseType;
        public byte[] byRes = new byte[547];

        public EVENT_TRIALPARAM_V50() {
        }
    }

    public static class EVENT_POSPARAM_V50 extends Structure {
        public short[] wChannel = new short[64];
        public byte byAllChan;
        public byte byCaseSensitive;
        public byte byCombinateMode;
        public byte byRes1;
        public byte[] sKeyWord = new byte[384];
        public byte[] byRes = new byte[284];

        public EVENT_POSPARAM_V50() {
        }
    }

    public static class EVENT_STREAMIDPARAM_V50 extends Structure {
        public HCNetSDK.NET_DVR_STREAM_INFO struIDInfo = new HCNetSDK.NET_DVR_STREAM_INFO();
        public int dwCmdType;
        public byte byBackupVolumeNum;
        public byte[] byRes1 = new byte[3];
        public byte[] byArchiveLabel = new byte[64];
        public byte[] byRes = new byte[656];

        public EVENT_STREAMIDPARAM_V50() {
        }
    }

    public static class EVENT_VCADETECTPARAM_V50 extends Structure {
        public byte byAll;
        public byte[] byRes1 = new byte[3];
        public short[] wChanNo = new short[64];
        public byte[] byRes = new byte[668];

        public EVENT_VCADETECTPARAM_V50() {
        }
    }

    public static class EVENT_INQUESTPARAM_V50 extends Structure {
        public byte byRoomIndex;
        public byte[] byRes = new byte[799];

        public EVENT_INQUESTPARAM_V50() {
        }
    }

    public static class EVENT_VCAPARAM_V50 extends Structure {
        public short[] wChanNo = new short[64];
        public byte byRuleID;
        public byte byDriverBehaviortType;
        public byte byADASType;
        public byte byGSensorType;
        public byte bySensorInType;
        public byte[] byRes = new byte[667];

        public EVENT_VCAPARAM_V50() {
        }
    }

    public static class EVENT_MOTIONPARAM_V50 extends Structure {
        public short[] wMotDetChanNo = new short[64];
        public byte[] byRes = new byte[672];

        public EVENT_MOTIONPARAM_V50() {
        }
    }

    public static class EVENT_ALARMPARAM_V50 extends Structure {
        public short[] wAlarmInNo = new short[128];
        public byte[] byRes = new byte[544];

        public EVENT_ALARMPARAM_V50() {
        }
    }

    public static class UNION_EVENT_PARAM_V50 extends Union {
        public byte[] byLen = new byte[800];
        public HCNetSDK.EVENT_ALARMPARAM_V50 struAlarmParam = new HCNetSDK.EVENT_ALARMPARAM_V50();
        public HCNetSDK.EVENT_MOTIONPARAM_V50 struMotionParam = new HCNetSDK.EVENT_MOTIONPARAM_V50();
        public HCNetSDK.EVENT_VCAPARAM_V50 struVcaParam = new HCNetSDK.EVENT_VCAPARAM_V50();
        public HCNetSDK.EVENT_INQUESTPARAM_V50 struInquestParam = new HCNetSDK.EVENT_INQUESTPARAM_V50();
        public HCNetSDK.EVENT_VCADETECTPARAM_V50 struVCADetect = new HCNetSDK.EVENT_VCADETECTPARAM_V50();
        public HCNetSDK.EVENT_STREAMIDPARAM_V50 struStreamIDParam = new HCNetSDK.EVENT_STREAMIDPARAM_V50();
        public HCNetSDK.EVENT_POSPARAM_V50 struPosAlarm = new HCNetSDK.EVENT_POSPARAM_V50();
        public HCNetSDK.EVENT_TRIALPARAM_V50 struTrialParam = new HCNetSDK.EVENT_TRIALPARAM_V50();
        public HCNetSDK.EVENT_ACSPARAM_V50 struACSAlarm = new HCNetSDK.EVENT_ACSPARAM_V50();
        public HCNetSDK.EVENT_IOTPARAM_V50 struIOTAlarm = new HCNetSDK.EVENT_IOTPARAM_V50();

        public UNION_EVENT_PARAM_V50() {
        }
    }

    public static class NET_DVR_SEARCH_EVENT_PARAM_V50 extends Structure {
        public short wMajorType;
        public short wMinorType;
        public HCNetSDK.NET_DVR_TIME_SEARCH_COND struStartTime = new HCNetSDK.NET_DVR_TIME_SEARCH_COND();
        public HCNetSDK.NET_DVR_TIME_SEARCH_COND struEndTime = new HCNetSDK.NET_DVR_TIME_SEARCH_COND();
        public byte byLockType;
        public byte byQuickSearch;
        public byte[] byRes = new byte[254];
        public HCNetSDK.UNION_EVENT_PARAM_V50 uSeniorParam = new HCNetSDK.UNION_EVENT_PARAM_V50();

        public NET_DVR_SEARCH_EVENT_PARAM_V50() {
        }
    }

    public static class EVENT_INQUESTPARAM extends Structure {
        public byte byRoomIndex;
        public byte[] byRes1 = new byte[3];
        public byte[] sInquestInfo = new byte[64];
        public byte[] byRes2 = new byte[232];

        public EVENT_INQUESTPARAM() {
        }
    }

    public static class UNION_EVENT_PARAM extends Union {
        public byte[] byLen = new byte[300];
        public HCNetSDK.EVENT_INQUESTPARAM struInquestParam = new HCNetSDK.EVENT_INQUESTPARAM();

        public UNION_EVENT_PARAM() {
        }
    }

    public static class NET_DVR_SEARCH_EVENT_PARAM extends Structure {
        public short wMajorType;
        public short wMinorType;
        public HCNetSDK.NET_DVR_TIME struStartTime = new HCNetSDK.NET_DVR_TIME();
        public HCNetSDK.NET_DVR_TIME struEndTime = new HCNetSDK.NET_DVR_TIME();
        public byte byLockType;
        public byte byValue;
        public byte[] byRes = new byte[130];
        public HCNetSDK.UNION_EVENT_PARAM uSeniorParam = new HCNetSDK.UNION_EVENT_PARAM();

        public NET_DVR_SEARCH_EVENT_PARAM() {
        }
    }

    public static class NET_DVR_TIME_SEARCH_COND extends Structure {
        public short wYear;
        public byte byMonth;
        public byte byDay;
        public byte byHour;
        public byte byMinute;
        public byte bySecond;
        public byte byLocalOrUTC;
        public short wMillisecond;
        public byte cTimeDifferenceH;
        public byte cTimeDifferenceM;

        public NET_DVR_TIME_SEARCH_COND() {
        }
    }

    public static class NET_DVR_TPS_PARAM extends Structure {
        public byte byStart;
        public byte byCMD;
        public short wSpaceHeadway;
        public short wDeviceID;
        public short wDataLen;
        public byte byLane;
        public byte bySpeed;
        public byte byLaneState;
        public byte byQueueLen;
        public short wLoopState;
        public short wStateMask;
        public int dwDownwardFlow;
        public int dwUpwardFlow;
        public byte byJamLevel;
        public byte byVehicleDirection;
        public byte byJamFlow;
        public byte byChannelizationLane;
        public byte byVehicleType;
        public byte[] byRes1 = new byte[5];
        public short wTimeHeadway;

        public NET_DVR_TPS_PARAM() {
        }
    }

    public static class NET_DVR_TPS_REAL_TIME_INFO extends Structure {
        public int dwSize;
        public int dwChan;
        public HCNetSDK.NET_DVR_TIME_V30 struTime;
        public HCNetSDK.NET_DVR_TPS_PARAM struTPSRealTimeInfo;
        public Pointer pAddInfoBuffer;
        public byte byAddInfoFlag;
        public byte[] byRes1 = new byte[3];
        public int dwDeviceIDEx;
        public byte[] byRes = new byte[8];

        public NET_DVR_TPS_REAL_TIME_INFO() {
        }
    }

    public static class NET_DVR_TPS_LANE_PARAM extends Structure {
        public byte byLane;
        public byte bySpeed;
        public byte[] byRes = new byte[2];
        public int dwLightVehicle;
        public int dwMidVehicle;
        public int dwHeavyVehicle;
        public int dwTimeHeadway;
        public int dwSpaceHeadway;
        public float fSpaceOccupyRation;
        public float fTimeOccupyRation;
        public byte[] byRes1 = new byte[16];

        public NET_DVR_TPS_LANE_PARAM() {
        }
    }

    public static class NET_DVR_TPS_STATISTICS_PARAM extends Structure {
        public byte byStart;
        public byte byCMD;
        public byte[] byRes = new byte[2];
        public short wDeviceID;
        public short wDataLen;
        public byte byTotalLaneNum;
        public byte[] byRes1 = new byte[15];
        public HCNetSDK.NET_DVR_TIME_V30 struStartTime;
        public int dwSamplePeriod;
        public HCNetSDK.NET_DVR_TPS_LANE_PARAM[] struLaneParam = new HCNetSDK.NET_DVR_TPS_LANE_PARAM[8];

        public NET_DVR_TPS_STATISTICS_PARAM() {
        }
    }

    public static class NET_DVR_TPS_STATISTICS_INFO extends Structure {
        public int dwSize;
        public int dwChan;
        public HCNetSDK.NET_DVR_TPS_STATISTICS_PARAM struTPSStatisticsInfo;
        public byte[] byRes = new byte[128];

        public NET_DVR_TPS_STATISTICS_INFO() {
        }
    }

    public static class NET_DVR_LANE_QUEUE extends Structure {
        public HCNetSDK.NET_VCA_POINT struHead;
        public HCNetSDK.NET_VCA_POINT struTail;
        public int dwLength;

        public NET_DVR_LANE_QUEUE() {
        }
    }

    public static class NET_DVR_TPS_INFO_V41 extends Structure {
        public int dwLanNum;
        public HCNetSDK.NET_DVR_LANE_PARAM_V41[] struLaneParam = new HCNetSDK.NET_DVR_LANE_PARAM_V41[8];
        public int dwSceneID;
        public byte[] byRes = new byte[28];

        public NET_DVR_TPS_INFO_V41() {
        }
    }

    public static class NET_DVR_LANE_PARAM_V41 extends Structure {
        public byte[] byRuleName = new byte[32];
        public byte byRuleID;
        public byte byLaneType;
        public byte byTrafficState;
        public byte byLaneNo;
        public int dwVaryType;
        public int dwTpsType;
        public int dwLaneVolume;
        public int dwLaneVelocity;
        public int dwTimeHeadway;
        public int dwSpaceHeadway;
        public float fSpaceOccupyRation;
        public float fTimeOccupyRation;
        public int dwLightVehicle;
        public int dwMidVehicle;
        public int dwHeavyVehicle;
        public HCNetSDK.NET_DVR_LANE_QUEUE struLaneQueue;
        public HCNetSDK.NET_VCA_POINT struRuleLocation;
        public int dwOversizeVehicle;
        public byte[] byRes2 = new byte[60];

        public NET_DVR_LANE_PARAM_V41() {
        }
    }

    public static class NET_DVR_TPS_ALARM_V41 extends Structure {
        public int dwSize;
        public int dwRelativeTime;
        public int dwAbsTime;
        public HCNetSDK.NET_VCA_DEV_INFO struDevInfo;
        public HCNetSDK.NET_DVR_TPS_INFO_V41 struTPSInfo;
        public byte[] byMonitoringSiteID = new byte[48];
        public byte[] byDeviceID = new byte[48];
        public int dwStartTime;
        public int dwStopTime;
        public byte[] byRes = new byte[24];

        public NET_DVR_TPS_ALARM_V41() {
        }
    }

    public static class NET_DVR_AID_ALARM_V41 extends Structure {
        public int dwSize;
        public int dwRelativeTime;
        public int dwAbsTime;
        public HCNetSDK.NET_VCA_DEV_INFO struDevInfo = new HCNetSDK.NET_VCA_DEV_INFO();
        public HCNetSDK.NET_DVR_AID_INFO struAIDInfo = new HCNetSDK.NET_DVR_AID_INFO();
        public HCNetSDK.NET_DVR_SCENE_INFO struSceneInfo = new HCNetSDK.NET_DVR_SCENE_INFO();
        public int dwPicDataLen;
        public Pointer pImage;
        public byte byDataType;
        public byte byLaneNo;
        public short wMilliSecond;
        public byte[] byMonitoringSiteID = new byte[48];
        public byte[] byDeviceID = new byte[48];
        public int dwXmlLen;
        public Pointer pXmlBuf;
        public byte byTargetType;
        public byte byRuleID;
        public short wDevInfoIvmsChannelEx;
        public byte byBrokenNetHttp;
        public byte[] byRes = new byte[3];
        public int dwPlateSmallPicDataLen;
        public Pointer pPlateSmallImage;

        public NET_DVR_AID_ALARM_V41() {
        }
    }

    public static class NET_VCA_FACESNAP_MATCH_ALARM extends Structure {
        public int dwSize;
        public float fSimilarity;
        public HCNetSDK.NET_VCA_FACESNAP_INFO_ALARM struSnapInfo = new HCNetSDK.NET_VCA_FACESNAP_INFO_ALARM();
        public HCNetSDK.NET_VCA_BLOCKLIST_INFO_ALARM struBlockListInfo = new HCNetSDK.NET_VCA_BLOCKLIST_INFO_ALARM();
        public byte[] sStorageIP = new byte[16];
        public short wStoragePort;
        public byte byMatchPicNum;
        public byte byPicTransType;
        public int dwSnapPicLen;
        public Pointer pSnapPicBuffer;
        public HCNetSDK.NET_VCA_RECT struRegion = new HCNetSDK.NET_VCA_RECT();
        public int dwModelDataLen;
        public Pointer pModelDataBuffer;
        public byte byModelingStatus;
        public byte byLivenessDetectionStatus;
        public byte cTimeDifferenceH;
        public byte cTimeDifferenceM;
        public byte byMask;
        public byte bySmile;
        public byte byContrastStatus;
        public byte byBrokenNetHttp;

        public NET_VCA_FACESNAP_MATCH_ALARM() {
        }
    }

    public static class NET_VCA_BLOCKLIST_INFO extends Structure {
        public int dwSize;
        public int dwRegisterID;
        public int dwGroupNo;
        public byte byType;
        public byte byLevel;
        public byte[] byRes1 = new byte[2];
        public HCNetSDK.NET_VCA_HUMAN_ATTRIBUTE struAttribute = new HCNetSDK.NET_VCA_HUMAN_ATTRIBUTE();
        public byte[] byRemark = new byte[32];
        public int dwFDDescriptionLen;
        public Pointer pFDDescriptionBuffer;
        public int dwFCAdditionInfoLen;
        public Pointer pFCAdditionInfoBuffer;
        public byte[] byRes2 = new byte[4];

        public NET_VCA_BLOCKLIST_INFO() {
        }
    }

    public static class NET_VCA_BLOCKLIST_INFO_ALARM extends Structure {
        public HCNetSDK.NET_VCA_BLOCKLIST_INFO struBlockListInfo = new HCNetSDK.NET_VCA_BLOCKLIST_INFO();
        public int dwBlockListPicLen;
        public int dwFDIDLen;
        public Pointer pFDID;
        public int dwPIDLen;
        public Pointer pPID;
        public short wThresholdValue;
        public byte[] byRes = new byte[2];
        public Pointer pBuffer1;

        public NET_VCA_BLOCKLIST_INFO_ALARM() {
        }
    }

    public static class NET_VCA_HUMAN_ATTRIBUTE extends Structure {
        public byte bySex;
        public byte byCertificateType;
        public byte[] byBirthDate = new byte[10];
        public byte[] byName = new byte[32];
        public HCNetSDK.NET_DVR_AREAINFOCFG struNativePlace = new HCNetSDK.NET_DVR_AREAINFOCFG();
        public byte[] byCertificateNumber = new byte[32];
        public int dwPersonInfoExtendLen;
        public Pointer pPersonInfoExtend;
        public byte byGroup;
        public byte[] byRes2 = new byte[11];

        public NET_VCA_HUMAN_ATTRIBUTE() {
        }
    }

    public static class NET_DVR_AREAINFOCFG extends Structure {
        public short wNationalityID;
        public short wProvinceID;
        public short wCityID;
        public short wCountyID;
        public int dwCode;

        public NET_DVR_AREAINFOCFG() {
        }
    }

    public static class NET_VCA_FACESNAP_INFO_ALARM extends Structure {
        public int dwRelativeTime;
        public int dwAbsTime;
        public int dwSnapFacePicID;
        public int dwSnapFacePicLen;
        public HCNetSDK.NET_VCA_DEV_INFO struDevInfo = new HCNetSDK.NET_VCA_DEV_INFO();
        public byte byFaceScore;
        public byte bySex;
        public byte byGlasses;
        public byte byRes2;
        public byte byDeviation;
        public byte byGroup;
        public byte byFacePicQuality;
        public byte byRes1;
        public int dwUIDLen;
        public Pointer pUIDBuffer;
        public float fStayDuration;
        public Pointer pBuffer1;

        public NET_VCA_FACESNAP_INFO_ALARM() {
        }
    }

    public static class NET_VCA_FACESNAP_RESULT extends Structure {
        public int dwSize;
        public int dwRelativeTime;
        public int dwAbsTime;
        public int dwFacePicID;
        public int dwFaceScore;
        public HCNetSDK.NET_VCA_TARGET_INFO struTargetInfo = new HCNetSDK.NET_VCA_TARGET_INFO();
        public HCNetSDK.NET_VCA_RECT struRect = new HCNetSDK.NET_VCA_RECT();
        public HCNetSDK.NET_VCA_DEV_INFO struDevInfo = new HCNetSDK.NET_VCA_DEV_INFO();
        public int dwFacePicLen;
        public int dwBackgroundPicLen;
        public byte bySmart;
        public byte byAlarmEndMark;
        public byte byRepeatTimes;
        public byte byUploadEventDataType;
        public HCNetSDK.NET_VCA_HUMAN_FEATURE struFeature = new HCNetSDK.NET_VCA_HUMAN_FEATURE();
        public float fStayDuration;
        public byte[] sStorageIP = new byte[16];
        public short wStoragePort;
        public short wDevInfoIvmsChannelEx;
        public byte byFacePicQuality;
        public byte byUIDLen;
        public byte byLivenessDetectionStatus;
        public byte byAddInfo;
        public Pointer pUIDBuffer;
        public Pointer pAddInfoBuffer;
        public byte byTimeDiffFlag;
        public byte cTimeDifferenceH;
        public byte cTimeDifferenceM;
        public byte byBrokenNetHttp;
        public Pointer pBuffer1;
        public Pointer pBuffer2;

        public NET_VCA_FACESNAP_RESULT() {
        }
    }

    public static class NET_VCA_FACESNAP_ADDINFO extends Structure {
        public HCNetSDK.NET_VCA_RECT struFacePicRect = new HCNetSDK.NET_VCA_RECT();
        public int iSwingAngle;
        public int iTiltAngle;
        public int dwPupilDistance;
        public byte byBlockingState;
        public byte byFaceSnapThermometryEnabled;
        public byte byIsAbnomalTemperature;
        public byte byThermometryUnit;
        public HCNetSDK.NET_DVR_TIME_EX struEnterTime = new HCNetSDK.NET_DVR_TIME_EX();
        public HCNetSDK.NET_DVR_TIME_EX struExitTime = new HCNetSDK.NET_DVR_TIME_EX();
        public float fFaceTemperature;
        public float fAlarmTemperature;
        public byte[] byRes = new byte[472];

        public NET_VCA_FACESNAP_ADDINFO() {
        }
    }

    public static class NET_VCA_HUMAN_FEATURE extends Structure {
        public byte byRes3;
        public byte bySex;
        public byte byEyeGlass;
        public byte byRes4;
        public byte byDeviation;
        public byte byRes0;
        public byte byMask;
        public byte bySmile;
        public byte byFaceExpression;
        public byte byRes1;
        public byte byRes2;
        public byte byHat;
        public byte[] byRes = new byte[4];

        public NET_VCA_HUMAN_FEATURE() {
        }
    }

    public static class NET_ITS_OVERLAP_CFG_V50 extends Structure {
        public int dwSize;
        public byte byEnable;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_ITS_OVERLAP_ITEM_PARAM_V50 struOverLapItemV50 = new HCNetSDK.NET_ITS_OVERLAP_ITEM_PARAM_V50();
        public HCNetSDK.NET_ITS_OVERLAP_INFO_PARAM struOverLapInfo = new HCNetSDK.NET_ITS_OVERLAP_INFO_PARAM();
        public byte[] byRes = new byte[120];

        public NET_ITS_OVERLAP_CFG_V50() {
        }
    }

    public static class NET_ITS_OVERLAP_INFO_PARAM extends Structure {
        public byte[] bySite = new byte[128];
        public byte[] byRoadNum = new byte[32];
        public byte[] byInstrumentNum = new byte[32];
        public byte[] byDirection = new byte[32];
        public byte[] byDirectionDesc = new byte[32];
        public byte[] byLaneDes = new byte[32];
        public byte[] byRes1 = new byte[32];
        public byte[] byMonitoringSite1 = new byte[44];
        public byte[] byMonitoringSite2 = new byte[32];
        public byte[] byRes = new byte[64];

        public NET_ITS_OVERLAP_INFO_PARAM() {
        }
    }

    public static class NET_ITS_OVERLAP_ITEM_PARAM_V50 extends Structure {
        public HCNetSDK.NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50[] struSingleItem = new HCNetSDK.NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50[50];
        public int dwLinePercent;
        public int dwItemsStlye;
        public short wStartPosTop;
        public short wStartPosLeft;
        public short wCharStyle;
        public short wCharSize;
        public short wCharInterval;
        public byte[] byRes1 = new byte[2];
        public int dwForeClorRGB;
        public int dwBackClorRGB;
        public byte byColorAdapt;
        public byte byParamFillZeroEnble;
        public byte byPlateLeftCornerEnable;
        public byte byRes2;
        public short wStartSPicPosTop;
        public short wStartSPicPosLeft;
        public byte byOsdLocate;
        public byte[] byRes = new byte[63];

        public NET_ITS_OVERLAP_ITEM_PARAM_V50() {
        }
    }

    public static class NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50 extends Structure {
        public byte[] byRes1 = new byte[2];
        public byte byItemType;
        public byte byChangeLineNum;
        public byte bySpaceNum;
        public byte[] byRes2 = new byte[2];
        public byte byEnablePos;
        public short wStartPosTop;
        public short wStartPosLeft;
        public byte[] byItemTypeCustom = new byte[32];
        public byte[] byRes = new byte[8];

        public NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50() {
        }
    }

    public static class NET_ITS_OVERLAPCFG_COND extends Structure {
        public int dwSize;
        public int dwChannel;
        public int dwConfigMode;
        public byte byPicModeType;
        public byte byRelateType;
        public byte[] byRes = new byte[14];

        public NET_ITS_OVERLAPCFG_COND() {
        }
    }

    public static class NET_DVR_TFS_ALARM extends Structure {
        public int dwSize;
        public int dwRelativeTime;
        public int dwAbsTime;
        public int dwIllegalType;
        public int dwIllegalDuration;
        public byte[] byMonitoringSiteID = new byte[48];
        public byte[] byDeviceID = new byte[48];
        public HCNetSDK.NET_VCA_DEV_INFO struDevInfo = new HCNetSDK.NET_VCA_DEV_INFO();
        public HCNetSDK.NET_DVR_SCENE_INFO struSceneInfo = new HCNetSDK.NET_DVR_SCENE_INFO();
        public HCNetSDK.NET_DVR_TIME_EX struBeginRecTime = new HCNetSDK.NET_DVR_TIME_EX();
        public HCNetSDK.NET_DVR_TIME_EX struEndRecTime = new HCNetSDK.NET_DVR_TIME_EX();
        public HCNetSDK.NET_DVR_AID_INFO struAIDInfo = new HCNetSDK.NET_DVR_AID_INFO();
        public HCNetSDK.NET_DVR_PLATE_INFO struPlateInfo = new HCNetSDK.NET_DVR_PLATE_INFO();
        public HCNetSDK.NET_DVR_VEHICLE_INFO struVehicleInfo = new HCNetSDK.NET_DVR_VEHICLE_INFO();
        public int dwPicNum;
        public HCNetSDK.NET_ITS_PICTURE_INFO[] struPicInfo = new HCNetSDK.NET_ITS_PICTURE_INFO[8];
        public byte bySpecificVehicleType;
        public byte byLaneNo;
        public byte[] byRes1 = new byte[2];
        public HCNetSDK.NET_DVR_TIME_V30 struTime = new HCNetSDK.NET_DVR_TIME_V30();
        public int dwSerialNo;
        public byte byVehicleAttribute;
        public byte byPilotSafebelt;
        public byte byCopilotSafebelt;
        public byte byPilotSunVisor;
        public byte byCopilotSunVisor;
        public byte byPilotCall;
        public byte[] byRes2 = new byte[2];
        public byte[] byIllegalCode = new byte[32];
        public short wCountry;
        public byte byRegion;
        public byte byCrossLine;
        public byte[] byParkingSerialNO = new byte[16];
        public byte byCrossSpaces;
        public byte byAngledParking;
        public byte byAlarmValidity;
        public byte byDoorsStatus;
        public int dwXmlLen;
        public Pointer pXmlBuf;
        public byte byVehicleHeadTailStatus;
        public byte byBrokenNetHttp;
        public byte[] byRes = new byte[30];

        public NET_DVR_TFS_ALARM() {
        }
    }

    public static class NET_DVR_AID_INFO extends Structure {
        public byte byRuleID;
        public byte[] byRes1 = new byte[3];
        public byte[] byRuleName = new byte[32];
        public int dwAIDType;
        public HCNetSDK.NET_DVR_DIRECTION struDirect = new HCNetSDK.NET_DVR_DIRECTION();
        public byte bySpeedLimit;
        public byte byCurrentSpeed;
        public byte byVehicleEnterState;
        public byte byState;
        public byte[] byParkingID = new byte[16];
        public int dwAIDTypeEx;
        public byte[] byRes2 = new byte[16];

        public NET_DVR_AID_INFO() {
        }
    }

    public static class NET_DVR_DIRECTION extends Structure {
        public HCNetSDK.NET_VCA_POINT struStartPoint = new HCNetSDK.NET_VCA_POINT();
        public HCNetSDK.NET_VCA_POINT struEndPoint = new HCNetSDK.NET_VCA_POINT();

        public NET_DVR_DIRECTION() {
        }
    }

    public static class NET_DVR_SCENE_INFO extends Structure {
        public int dwSceneID;
        public byte[] bySceneName = new byte[32];
        public byte byDirection;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_DVR_PTZPOS struPtzPos;
        public byte[] byRes2 = new byte[64];

        public NET_DVR_SCENE_INFO() {
        }
    }

    public static class NET_DVR_XML_CONFIG_OUTPUT extends Structure {
        public int dwSize;
        public Pointer lpOutBuffer;
        public int dwOutBufferSize;
        public int dwReturnedXMLSize;
        public Pointer lpStatusBuffer;
        public int dwStatusSize;
        public byte[] byRes = new byte[32];

        public NET_DVR_XML_CONFIG_OUTPUT() {
        }
    }

    public static class NET_DVR_STRING_POINTER extends Structure {
        public byte[] byString;

        public NET_DVR_STRING_POINTER(int iLen) {
            this.byString = new byte[iLen];
        }
    }

    public static class NET_DVR_XML_CONFIG_INPUT extends Structure {
        public int dwSize;
        public Pointer lpRequestUrl;
        public int dwRequestUrlLen;
        public Pointer lpInBuffer;
        public int dwInBufferSize;
        public int dwRecvTimeOut;
        public byte[] byRes = new byte[32];

        public NET_DVR_XML_CONFIG_INPUT() {
        }
    }

    public static class NET_DVR_CAPTURE_FACE_CFG extends Structure {
        public int dwSize;
        public int dwFaceTemplate1Size;
        public Pointer pFaceTemplate1Buffer;
        public int dwFaceTemplate2Size;
        public Pointer pFaceTemplate2Buffer;
        public int dwFacePicSize;
        public Pointer pFacePicBuffer;
        public byte byFaceQuality1;
        public byte byFaceQuality2;
        public byte byCaptureProgress;
        public byte byFacePicQuality;
        public int dwInfraredFacePicSize;
        public Pointer pInfraredFacePicBuffer;
        public byte byInfraredFacePicQuality;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_DVR_FACE_FEATURE struFeature = new HCNetSDK.NET_DVR_FACE_FEATURE();
        public byte[] byRes = new byte[56];

        public NET_DVR_CAPTURE_FACE_CFG() {
        }
    }

    public static class NET_DVR_FACE_FEATURE extends Structure {
        public HCNetSDK.NET_VCA_RECT struFace;
        public HCNetSDK.NET_VCA_POINT struLeftEye;
        public HCNetSDK.NET_VCA_POINT struRightEye;
        public HCNetSDK.NET_VCA_POINT struLeftMouth;
        public HCNetSDK.NET_VCA_POINT struRightMouth;
        public HCNetSDK.NET_VCA_POINT struNoseTip;

        public NET_DVR_FACE_FEATURE() {
        }
    }

    public static class NET_DVR_CAPTURE_FACE_COND extends Structure {
        public int dwSize;
        public byte[] byRes = new byte[128];

        public NET_DVR_CAPTURE_FACE_COND() {
        }
    }

    public static class NET_DVR_PLAN_TEMPLATE_COND extends Structure {
        public int dwSize;
        public int dwPlanTemplateNumber;
        public short wLocalControllerID;
        public byte[] byRes = new byte[106];

        public NET_DVR_PLAN_TEMPLATE_COND() {
        }
    }

    public static class NET_DVR_PLAN_TEMPLATE extends Structure {
        public int dwSize;
        public byte byEnable;
        public byte[] byRes1 = new byte[3];
        public byte[] byTemplateName = new byte[32];
        public int dwWeekPlanNo;
        public int[] dwHolidayGroupNo = new int[16];
        public byte[] byRes2 = new byte[32];

        public NET_DVR_PLAN_TEMPLATE() {
        }
    }

    public static class NET_DVR_WEEK_PLAN_COND extends Structure {
        public int dwSize;
        public int dwWeekPlanNumber;
        public short wLocalControllerID;
        public byte[] byRes = new byte[106];

        public NET_DVR_WEEK_PLAN_COND() {
        }
    }

    public static class NET_DVR_SIMPLE_DAYTIME extends Structure {
        public byte byHour;
        public byte byMinute;
        public byte bySecond;
        public byte byRes;

        public NET_DVR_SIMPLE_DAYTIME() {
        }
    }

    public static class NET_DVR_TIME_SEGMENT extends Structure {
        public HCNetSDK.NET_DVR_SIMPLE_DAYTIME struBeginTime;
        public HCNetSDK.NET_DVR_SIMPLE_DAYTIME struEndTime;

        public NET_DVR_TIME_SEGMENT() {
        }
    }

    public static class NET_DVR_SINGLE_PLAN_SEGMENT extends Structure {
        public byte byEnable;
        public byte byDoorStatus;
        public byte byVerifyMode;
        public byte[] byRes = new byte[5];
        public HCNetSDK.NET_DVR_TIME_SEGMENT struTimeSegment;

        public NET_DVR_SINGLE_PLAN_SEGMENT() {
        }
    }

    public static class NET_DVR_WEEK_PLAN_CFG extends Structure {
        public int dwSize;
        public byte byEnable;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_DVR_SINGLE_PLAN_SEGMENT_WEEK[] struPlanCfg = new HCNetSDK.NET_DVR_SINGLE_PLAN_SEGMENT_WEEK[7];
        public byte[] byRes2 = new byte[16];

        public NET_DVR_WEEK_PLAN_CFG() {
        }
    }

    public static class NET_DVR_SINGLE_PLAN_SEGMENT_WEEK extends Structure {
        public HCNetSDK.NET_DVR_SINGLE_PLAN_SEGMENT[] struPlanCfgDay = new HCNetSDK.NET_DVR_SINGLE_PLAN_SEGMENT[8];

        public NET_DVR_SINGLE_PLAN_SEGMENT_WEEK() {
        }
    }

    public static class NET_DVR_GROUP_COMBINATION_INFO_V50 extends Structure {
        public byte byEnable;
        public byte byMemberNum;
        public byte bySequenceNo;
        public byte byRes;
        public int dwGroupNo;

        public NET_DVR_GROUP_COMBINATION_INFO_V50() {
        }
    }

    public static class NET_DVR_MULTI_CARD_GROUP_CFG_V50 extends Structure {
        public byte byEnable;
        public byte byEnableOfflineVerifyMode;
        public byte[] byRes1 = new byte[2];
        public int dwTemplateNo;
        public HCNetSDK.NET_DVR_GROUP_COMBINATION_INFO_V50[] struGroupCombination = (HCNetSDK.NET_DVR_GROUP_COMBINATION_INFO_V50[])((HCNetSDK.NET_DVR_GROUP_COMBINATION_INFO_V50[])(new HCNetSDK.NET_DVR_GROUP_COMBINATION_INFO_V50()).toArray(8));

        public NET_DVR_MULTI_CARD_GROUP_CFG_V50() {
        }
    }

    public static class NET_DVR_MULTI_CARD_CFG_V50 extends Structure {
        public int dwSize;
        public byte byEnable;
        public byte bySwipeIntervalTimeout;
        public byte[] byRes1 = new byte[2];
        public HCNetSDK.NET_DVR_MULTI_CARD_GROUP_CFG_V50[] struGroupCfg = (HCNetSDK.NET_DVR_MULTI_CARD_GROUP_CFG_V50[])((HCNetSDK.NET_DVR_MULTI_CARD_GROUP_CFG_V50[])(new HCNetSDK.NET_DVR_MULTI_CARD_GROUP_CFG_V50()).toArray(20));
        public byte[] byRes2 = new byte[32];

        public NET_DVR_MULTI_CARD_CFG_V50() {
        }
    }

    public static class NET_DVR_GROUP_CFG extends Structure {
        public int dwSize;
        public byte byEnable;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_DVR_VALID_PERIOD_CFG struValidPeriodCfg = new HCNetSDK.NET_DVR_VALID_PERIOD_CFG();
        public byte[] byGroupName = new byte[32];
        public byte[] byRes2 = new byte[32];

        public NET_DVR_GROUP_CFG() {
        }
    }

    public static class NET_DVR_FINGER_PRINT_INFO_COND_V50 extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public byte[] byEnableCardReader = new byte[512];
        public int dwFingerPrintNum;
        public byte byFingerPrintID;
        public byte byCallBackMode;
        public byte[] byRes2 = new byte[2];
        public byte[] byEmployeeNo = new byte[32];
        public byte[] byRes1 = new byte[128];

        public NET_DVR_FINGER_PRINT_INFO_COND_V50() {
        }
    }

    public static class NET_DVR_FINGER_PRINT_STATUS_V50 extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public byte[] byCardReaderRecvStatus = new byte[512];
        public byte byFingerPrintID;
        public byte byFingerType;
        public byte byTotalStatus;
        public byte byRecvStatus;
        public byte[] byErrorMsg = new byte[32];
        public int dwCardReaderNo;
        public byte[] byEmployeeNo = new byte[32];
        public byte[] byErrorEmployeeNo = new byte[32];
        public byte[] byRes = new byte[128];

        public NET_DVR_FINGER_PRINT_STATUS_V50() {
        }
    }

    public static class NET_DVR_FINGER_PRINT_CFG_V50 extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public int dwFingerPrintLen;
        public byte[] byEnableCardReader = new byte[512];
        public byte byFingerPrintID;
        public byte byFingerType;
        public byte[] byRes1 = new byte[30];
        public byte[] byFingerData = new byte[768];
        public byte[] byEmployeeNo = new byte[32];
        public byte[] byLeaderFP = new byte[256];
        public byte[] byRes = new byte[128];

        public NET_DVR_FINGER_PRINT_CFG_V50() {
        }
    }

    public static class NET_DVR_CHECK_FACE_PICTURE_STATUS extends Structure {
        public int dwSize;
        public int dwPictureNo;
        public byte byCheckStatus;
        public byte[] byRes = new byte[127];

        public NET_DVR_CHECK_FACE_PICTURE_STATUS() {
        }
    }

    public static class NET_DVR_CHECK_FACE_PICTURE_CFG extends Structure {
        public int dwSize;
        public int dwPictureNo;
        public int dwPictureLen;
        public Pointer pPictureBuffer;
        public int dwFaceTemplateLen;
        public Pointer pFaceTemplateBuffer;
        public byte[] byRes = new byte[248];

        public NET_DVR_CHECK_FACE_PICTURE_CFG() {
        }
    }

    public static class NET_DVR_CHECK_FACE_PICTURE_COND extends Structure {
        public int dwSize;
        public int dwPictureNum;
        public byte byCheckTemplate;
        public byte[] byRes = new byte[127];

        public NET_DVR_CHECK_FACE_PICTURE_COND() {
        }
    }

    public static class NET_DVR_DEL_FACE_PARAM_MODE extends Union {
        public byte[] uLen = new byte[588];
        public HCNetSDK.NET_DVR_FACE_PARAM_BYCARD struByCard;
        public HCNetSDK.NET_DVR_FACE_PARAM_BYREADER struByReader;

        public NET_DVR_DEL_FACE_PARAM_MODE() {
        }
    }

    public static class NET_DVR_FACE_PARAM_BYREADER extends Structure {
        public int dwCardReaderNo;
        public byte byClearAllCard;
        public byte[] byRes1 = new byte[3];
        public byte[] byCardNo = new byte[32];
        public byte[] byRes = new byte[548];

        public NET_DVR_FACE_PARAM_BYREADER() {
        }
    }

    public static class NET_DVR_FACE_PARAM_BYCARD extends Structure {
        public byte[] byCardNo = new byte[32];
        public byte[] byEnableCardReader = new byte[512];
        public byte[] byFaceID = new byte[2];
        public byte[] byRes1 = new byte[42];

        public NET_DVR_FACE_PARAM_BYCARD() {
        }
    }

    public static class NET_DVR_FACE_PARAM_STATUS extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public byte[] byCardReaderRecvStatus = new byte[512];
        public byte[] byErrorMsg = new byte[32];
        public int dwCardReaderNo;
        public byte byTotalStatus;
        public byte byFaceID;
        public byte[] byRes = new byte[130];

        public NET_DVR_FACE_PARAM_STATUS() {
        }
    }

    public static class NET_DVR_FACE_PARAM_CFG extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public int dwFaceLen;
        public Pointer pFaceBuffer;
        public byte[] byEnableCardReader = new byte[512];
        public byte byFaceID;
        public byte byFaceDataType;
        public byte[] byRes = new byte[126];

        public NET_DVR_FACE_PARAM_CFG() {
        }
    }

    public static class NET_DVR_FACE_PARAM_COND extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public byte[] byEnableCardReader = new byte[512];
        public int dwFaceNum;
        public byte byFaceID;
        public byte[] byRes = new byte[127];

        public NET_DVR_FACE_PARAM_COND() {
        }
    }

    public static class NET_DVR_ACS_PARAM_TYPE extends Structure {
        public int dwSize;
        public int dwParamType;
        public short wLocalControllerID;
        public byte[] byRes = new byte[30];

        public NET_DVR_ACS_PARAM_TYPE() {
        }
    }

    public static class NET_DVR_ACS_WORK_STATUS_V50 extends Structure {
        public int dwSize;
        public byte[] byDoorLockStatus = new byte[256];
        public byte[] byDoorStatus = new byte[256];
        public byte[] byMagneticStatus = new byte[256];
        public byte[] byCaseStatus = new byte[8];
        public short wBatteryVoltage;
        public byte byBatteryLowVoltage;
        public byte byPowerSupplyStatus;
        public byte byMultiDoorInterlockStatus;
        public byte byAntiSneakStatus;
        public byte byHostAntiDismantleStatus;
        public byte byIndicatorLightStatus;
        public byte[] byCardReaderOnlineStatus = new byte[512];
        public byte[] byCardReaderAntiDismantleStatus = new byte[512];
        public byte[] byCardReaderVerifyMode = new byte[512];
        public byte[] bySetupAlarmStatus = new byte[512];
        public byte[] byAlarmInStatus = new byte[512];
        public byte[] byAlarmOutStatus = new byte[512];
        public int dwCardNum;
        public byte byFireAlarmStatus;
        public byte byBatteryChargeStatus;
        public byte byMasterChannelControllerStatus;
        public byte bySlaveChannelControllerStatus;
        public byte byAntiSneakServerStatus;
        public byte[] byRes3 = new byte[3];
        public int dwAllowFaceNum;
        public int dwBlockFaceNum;
        public byte[] byRes2 = new byte[108];

        public NET_DVR_ACS_WORK_STATUS_V50() {
        }
    }

    public static class NET_DVR_ACS_EVENT_COND extends Structure {
        public int dwSize;
        public int dwMajor;
        public int dwMinor;
        public HCNetSDK.NET_DVR_TIME struStartTime;
        public HCNetSDK.NET_DVR_TIME struEndTime;
        public byte[] byCardNo = new byte[32];
        public byte[] byName = new byte[32];
        public byte byPicEnable;
        public byte byTimeType;
        public byte[] byRes2 = new byte[2];
        public int dwBeginSerialNo;
        public int dwEndSerialNo;
        public int dwIOTChannelNo;
        public short wInductiveEventType;
        public byte bySearchType;
        public byte byEventAttribute;
        public byte[] szMonitorID = new byte[64];
        public byte[] byEmployeeNo = new byte[32];
        public byte[] byRes = new byte[140];

        public NET_DVR_ACS_EVENT_COND() {
        }
    }

    public static class NET_DVR_ACS_EVENT_CFG extends Structure {
        public int dwSize;
        public int dwMajor;
        public int dwMinor;
        public HCNetSDK.NET_DVR_TIME struTime = new HCNetSDK.NET_DVR_TIME();
        public byte[] sNetUser = new byte[16];
        public HCNetSDK.NET_DVR_IPADDR struRemoteHostAddr;
        public HCNetSDK.NET_DVR_ACS_EVENT_DETAIL struAcsEventInfo;
        public int dwPicDataLen;
        public Pointer pPicData;
        public short wInductiveEventType;
        public byte byTimeType;
        public byte byRes1;
        public int dwQRCodeInfoLen;
        public int dwVisibleLightDataLen;
        public int dwThermalDataLen;
        public Pointer pQRCodeInfo;
        public Pointer pVisibleLightData;
        public Pointer pThermalData;
        public byte[] byRes = new byte[36];

        public NET_DVR_ACS_EVENT_CFG() {
        }
    }

    public static class NET_DVR_ACS_EVENT_DETAIL extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public byte byCardType;
        public byte byAllowListNo;
        public byte byReportChannel;
        public byte byCardReaderKind;
        public int dwCardReaderNo;
        public int dwDoorNo;
        public int dwVerifyNo;
        public int dwAlarmInNo;
        public int dwAlarmOutNo;
        public int dwCaseSensorNo;
        public int dwRs485No;
        public int dwMultiCardGroupNo;
        public short wAccessChannel;
        public byte byDeviceNo;
        public byte byDistractControlNo;
        public int dwEmployeeNo;
        public short wLocalControllerID;
        public byte byInternetAccess;
        public byte byType;
        public byte[] byMACAddr = new byte[6];
        public byte bySwipeCardType;
        public byte byEventAttribute;
        public int dwSerialNo;
        public byte byChannelControllerID;
        public byte byChannelControllerLampID;
        public byte byChannelControllerIRAdaptorID;
        public byte byChannelControllerIREmitterID;
        public int dwRecordChannelNum;
        public Pointer pRecordChannelData;
        public byte byUserType;
        public byte byCurrentVerifyMode;
        public byte byAttendanceStatus;
        public byte byStatusValue;
        public byte[] byEmployeeNo = new byte[32];
        public byte byRes1;
        public byte byMask;
        public byte byThermometryUnit;
        public byte byIsAbnomalTemperature;
        public float fCurrTemperature;
        public HCNetSDK.NET_VCA_POINT struRegionCoordinates;
        public byte[] byRes = new byte[48];

        public NET_DVR_ACS_EVENT_DETAIL() {
        }
    }

    public static class NET_DVR_ACS_EVENT_INFO_EXTEND extends Structure {
        public int dwFrontSerialNo;
        public byte byUserType;
        public byte byCurrentVerifyMode;
        public byte byCurrentEvent;
        public byte byPurePwdVerifyEnable;
        public byte[] byEmployeeNo = new byte[32];
        public byte byAttendanceStatus;
        public byte byStatusValue;
        public byte[] byRes2 = new byte[2];
        public byte[] byUUID = new byte[36];
        public byte[] byDeviceName = new byte[64];
        public byte[] byRes = new byte[24];

        public NET_DVR_ACS_EVENT_INFO_EXTEND() {
        }
    }

    public static class NET_DVR_ACS_EVENT_INFO extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public byte byCardType;
        public byte byAllowListNo;
        public byte byReportChannel;
        public byte byCardReaderKind;
        public int dwCardReaderNo;
        public int dwDoorNo;
        public int dwVerifyNo;
        public int dwAlarmInNo;
        public int dwAlarmOutNo;
        public int dwCaseSensorNo;
        public int dwRs485No;
        public int dwMultiCardGroupNo;
        public short wAccessChannel;
        public byte byDeviceNo;
        public byte byDistractControlNo;
        public int dwEmployeeNo;
        public short wLocalControllerID;
        public byte byInternetAccess;
        public byte byType;
        public byte[] byMACAddr = new byte[6];
        public byte bySwipeCardType;
        public byte byMask;
        public int dwSerialNo;
        public byte byChannelControllerID;
        public byte byChannelControllerLampID;
        public byte byChannelControllerIRAdaptorID;
        public byte byChannelControllerIREmitterID;
        public byte byHelmet;
        public byte[] byRes = new byte[3];

        public NET_DVR_ACS_EVENT_INFO() {
        }
    }

    public static class NET_DVR_ACS_ALARM_INFO extends Structure {
        public int dwSize;
        public int dwMajor;
        public int dwMinor;
        public HCNetSDK.NET_DVR_TIME struTime = new HCNetSDK.NET_DVR_TIME();
        public byte[] sNetUser = new byte[16];
        public HCNetSDK.NET_DVR_IPADDR struRemoteHostAddr = new HCNetSDK.NET_DVR_IPADDR();
        public HCNetSDK.NET_DVR_ACS_EVENT_INFO struAcsEventInfo = new HCNetSDK.NET_DVR_ACS_EVENT_INFO();
        public int dwPicDataLen;
        public Pointer pPicData;
        public short wInductiveEventType;
        public byte byPicTransType;
        public byte byRes1;
        public int dwIOTChannelNo;
        public Pointer pAcsEventInfoExtend;
        public byte byAcsEventInfoExtend;
        public byte byTimeType;
        public byte byRes2;
        public byte byAcsEventInfoExtendV20;
        public Pointer pAcsEventInfoExtendV20;
        public byte[] byRes = new byte[4];

        public NET_DVR_ACS_ALARM_INFO() {
        }
    }

    public static class NET_DVR_ACS_EVENT_INFO_EXTEND_V20 extends Structure {
        public byte byRemoteCheck;
        public byte byThermometryUnit;
        public byte byIsAbnomalTemperature;
        public byte byRes2;
        public float fCurrTemperature;
        public HCNetSDK.NET_VCA_POINT struRegionCoordinates = new HCNetSDK.NET_VCA_POINT();
        public int dwQRCodeInfoLen;
        public int dwVisibleLightDataLen;
        public int dwThermalDataLen;
        public Pointer pQRCodeInfo;
        public Pointer pVisibleLightData;
        public Pointer pThermalData;
        public byte[] byRes = new byte[1024];

        public NET_DVR_ACS_EVENT_INFO_EXTEND_V20() {
        }
    }

    public static class NET_DVR_ID_CARD_INFO extends Structure {
        public int dwSize;
        public byte[] byName = new byte[128];
        public HCNetSDK.NET_DVR_DATE struBirth;
        public byte[] byAddr = new byte[280];
        public byte[] byIDNum = new byte[32];
        public byte[] byIssuingAuthority = new byte[128];
        public HCNetSDK.NET_DVR_DATE struStartDate;
        public HCNetSDK.NET_DVR_DATE struEndDate;
        public byte byTermOfValidity;
        public byte bySex;
        public byte byNation;
        public byte[] byRes = new byte[101];

        public NET_DVR_ID_CARD_INFO() {
        }
    }

    public static class NET_DVR_DATE extends Structure {
        public short wYear;
        public byte byMonth;
        public byte byDay;

        public NET_DVR_DATE() {
        }
    }

    public static class NET_DVR_NOTICE_DATA extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_TIME_EX struTime = new HCNetSDK.NET_DVR_TIME_EX();
        public byte[] byNoticeNumber = new byte[32];
        public byte[] byNoticeTheme = new byte[64];
        public byte[] byNoticeDetail = new byte[1024];
        public byte byLevel;
        public byte byPicNum;
        public byte[] byRes1 = new byte[2];
        public HCNetSDK.NET_DVR_NOTICE_PIC[] struNoticePic = new HCNetSDK.NET_DVR_NOTICE_PIC[6];
        public byte[] byRes2 = new byte[128];

        public NET_DVR_NOTICE_DATA() {
        }
    }

    public static class NET_DVR_NOTICE_PIC extends Structure {
        public Pointer pPicData;
        public int dwPicDataLen;
        public byte[] byRes = new byte[32];

        public NET_DVR_NOTICE_PIC() {
        }
    }

    public static class NET_DVR_CONTROL_GATEWAY extends Structure {
        public int dwSize;
        public int dwGatewayIndex;
        public byte byCommand;
        public byte byLockType;
        public short wLockID;
        public byte[] byControlSrc = new byte[32];
        public byte byControlType;
        public byte[] byRes3 = new byte[3];
        public byte[] byPassword = new byte[16];
        public byte[] byRes2 = new byte[108];

        public NET_DVR_CONTROL_GATEWAY() {
        }
    }

    public static class NET_DVR_VIDEO_CALL_PARAM extends Structure {
        public int dwSize;
        public int dwCmdType;
        public short wPeriod;
        public short wBuildingNumber;
        public short wUnitNumber;
        public short wFloorNumber;
        public short wRoomNumber;
        public short wDevIndex;
        public byte byUnitType;
        public byte[] byRes = new byte[115];

        public NET_DVR_VIDEO_CALL_PARAM() {
        }
    }

    public static class NET_DVR_VIDEO_INTERCOM_EVENT extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_TIME_EX struTime = new HCNetSDK.NET_DVR_TIME_EX();
        public byte[] byDevNumber = new byte[32];
        public byte byEventType;
        public byte byPicTransType;
        public byte[] byRes1 = new byte[2];
        public HCNetSDK.NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON uEventInfo = new HCNetSDK.NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON();
        public int dwIOTChannelNo;
        public byte[] byRes2 = new byte[252];

        public NET_DVR_VIDEO_INTERCOM_EVENT() {
        }
    }

    public static class NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON extends Union {
        public byte[] byLen = new byte[256];
        public HCNetSDK.NET_DVR_UNLOCK_RECORD_INFO struUnlockRecord = new HCNetSDK.NET_DVR_UNLOCK_RECORD_INFO();
        public HCNetSDK.NET_DVR_NOTICEDATA_RECEIPT_INFO struNoticedataReceipt = new HCNetSDK.NET_DVR_NOTICEDATA_RECEIPT_INFO();
        public HCNetSDK.NET_DVR_AUTH_INFO struAuthInfo = new HCNetSDK.NET_DVR_AUTH_INFO();
        public HCNetSDK.NET_DVR_UPLOAD_PLATE_INFO struUploadPlateInfo = new HCNetSDK.NET_DVR_UPLOAD_PLATE_INFO();
        public HCNetSDK.NET_DVR_SEND_CARD_INFO struSendCardInfo = new HCNetSDK.NET_DVR_SEND_CARD_INFO();

        public NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON() {
        }
    }

    public static class NET_DVR_VIDEO_INTERCOM_ALARM extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_TIME_EX struTime = new HCNetSDK.NET_DVR_TIME_EX();
        public byte[] byDevNumber = new byte[32];
        public byte byAlarmType;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION uAlarmInfo = new HCNetSDK.NET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION();
        public short wLockID;
        public byte[] byRes2 = new byte[254];

        public NET_DVR_VIDEO_INTERCOM_ALARM() {
        }
    }

    public static class NET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION extends Union {
        public byte[] byLen = new byte[256];
        public HCNetSDK.NET_DVR_ZONE_ALARM_INFO struZoneAlarm = new HCNetSDK.NET_DVR_ZONE_ALARM_INFO();

        public NET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION() {
        }
    }

    public static class NET_DVR_ZONE_ALARM_INFO extends Structure {
        public byte[] byZoneName = new byte[32];
        public int dwZonendex;
        public byte byZoneType;
        public byte[] byRes = new byte[219];

        public NET_DVR_ZONE_ALARM_INFO() {
        }
    }

    public static class NET_DVR_SEND_CARD_INFO extends Structure {
        public byte[] byCardNo = new byte[32];
        public byte[] byRes = new byte[224];

        public NET_DVR_SEND_CARD_INFO() {
        }
    }

    public static class NET_DVR_UPLOAD_PLATE_INFO extends Structure {
        public byte[] sLicense = new byte[16];
        public byte byColor;
        public byte[] byRes = new byte[239];

        public NET_DVR_UPLOAD_PLATE_INFO() {
        }
    }

    public static class NET_DVR_AUTH_INFO extends Structure {
        public byte byAuthResult;
        public byte byAuthType;
        public byte[] byRes1 = new byte[2];
        public byte[] byCardNo = new byte[32];
        public int dwPicDataLen;
        public Pointer pImage;
        public byte[] byRes = new byte[212];

        public NET_DVR_AUTH_INFO() {
        }
    }

    public static class NET_DVR_NOTICEDATA_RECEIPT_INFO extends Structure {
        public byte[] byNoticeNumber = new byte[32];
        public byte[] byRes = new byte[224];

        public NET_DVR_NOTICEDATA_RECEIPT_INFO() {
        }
    }

    public static class NET_DVR_UNLOCK_RECORD_INFO extends Structure {
        public byte byUnlockType;
        public byte[] byRes1 = new byte[3];
        public byte[] byControlSrc = new byte[32];
        public int dwPicDataLen;
        public Pointer pImage;
        public int dwCardUserID;
        public short nFloorNumber;
        public short wRoomNumber;
        public short wLockID;
        public byte[] byRes2 = new byte[2];
        public byte[] byLockName = new byte[32];
        public byte[] byEmployeeNo = new byte[32];
        public byte[] byRes = new byte[136];

        public NET_DVR_UNLOCK_RECORD_INFO() {
        }
    }

    public static class REMOTECONFIGSTATUS extends Structure {
        public byte[] byStatus = new byte[4];
        public byte[] byErrorCode = new byte[4];

        public REMOTECONFIGSTATUS() {
        }
    }

    public static class NET_DVR_UPLOAD_ID_BLOCKLIST_STATUS extends Structure {
        public int dwSize;
        public byte[] byIDNum = new byte[32];
        public byte byStatus;
        public byte[] byRes = new byte[63];

        public NET_DVR_UPLOAD_ID_BLOCKLIST_STATUS() {
        }
    }

    public static class NET_DVR_UPLOAD_ID_BLOCKLIST_CFG extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_ID_CARD_INFO struIDCardCfg;
        public byte byBlockListValid;
        public byte[] byRes = new byte[127];

        public NET_DVR_UPLOAD_ID_BLOCKLIST_CFG() {
        }
    }

    public static class NET_DVR_UPLOAD_ID_BLOCKLIST_COND extends Structure {
        public int dwSize;
        public int dwBlockListNum;
        public byte[] byRes = new byte[128];

        public NET_DVR_UPLOAD_ID_BLOCKLIST_COND() {
        }
    }

    public static class NET_DVR_ACS_CFG extends Structure {
        public int dwSize;
        public byte byRS485Backup;
        public byte byShowCapPic;
        public byte byShowCardNo;
        public byte byShowUserInfo;
        public byte byOverlayUserInfo;
        public byte byVoicePrompt;
        public byte byUploadCapPic;
        public byte bySaveCapPic;
        public byte byInputCardNo;
        public byte byEnableWifiDetect;
        public byte byEnable3G4G;
        public byte byProtocol;
        public byte[] byRes = new byte[500];

        public NET_DVR_ACS_CFG() {
        }
    }

    public static class NET_DVR_FINGER_PRINT_BYREADER extends Structure {
        public int dwCardReaderNo;
        public byte byClearAllCard;
        public byte[] byRes1 = new byte[3];
        public byte[] byCardNo = new byte[32];
        public byte[] byRes = new byte[548];

        public NET_DVR_FINGER_PRINT_BYREADER() {
        }
    }

    public static class NET_DVR_FINGER_PRINT_BYCARD extends Structure {
        public byte[] byCardNo = new byte[32];
        public byte[] byEnableCardReader = new byte[512];
        public byte[] byFaceID = new byte[2];
        public byte[] byRes1 = new byte[34];

        public NET_DVR_FINGER_PRINT_BYCARD() {
        }
    }

    public static class NET_DVR_DEL_FINGER_PRINT_MODE extends Union {
        public HCNetSDK.NET_DVR_FINGER_PRINT_BYCARD struByCard;
        public HCNetSDK.NET_DVR_FINGER_PRINT_BYREADER struByReader;

        public NET_DVR_DEL_FINGER_PRINT_MODE() {
        }
    }

    public static class NET_DVR_FINGER_PRINT_INFO_CTRL extends Structure {
        public int dwSize;
        public byte byMode;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_DVR_DEL_FINGER_PRINT_MODE struProcessMode = new HCNetSDK.NET_DVR_DEL_FINGER_PRINT_MODE();
        public byte[] byRes = new byte[64];

        public NET_DVR_FINGER_PRINT_INFO_CTRL() {
        }

        public void read() {
            super.read();
            switch(this.byMode) {
                case 0:
                    this.struProcessMode.setType(HCNetSDK.NET_DVR_FINGER_PRINT_BYCARD.class);
                    break;
                case 1:
                    this.struProcessMode.setType(HCNetSDK.NET_DVR_FINGER_PRINT_BYREADER.class);
            }

            this.struProcessMode.read();
        }

        public void write() {
            super.write();
            this.struProcessMode.write();
        }
    }

    public static class NET_DVR_FACE_PARAM_CTRL extends Structure {
        public int dwSize;
        public byte byMode;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_DVR_DEL_FACE_PARAM_MODE struProcessMode = new HCNetSDK.NET_DVR_DEL_FACE_PARAM_MODE();
        public byte[] byRes = new byte[64];

        public NET_DVR_FACE_PARAM_CTRL() {
        }

        public void read() {
            super.read();
            switch(this.byMode) {
                case 0:
                    this.struProcessMode.setType(HCNetSDK.NET_DVR_FACE_PARAM_BYCARD.class);
                    break;
                case 1:
                    this.struProcessMode.setType(HCNetSDK.NET_DVR_FACE_PARAM_BYREADER.class);
            }

            this.struProcessMode.read();
        }

        public void write() {
            super.write();
            this.struProcessMode.write();
        }
    }

    public static class NET_DVR_FINGER_PRINT_BYCARD_V50 extends Structure {
        public byte[] byCardNo = new byte[32];
        public byte[] byEnableCardReader = new byte[512];
        public byte[] byFingerPrintID = new byte[10];
        public byte[] byRes1 = new byte[2];
        public byte[] byEmployeeNo = new byte[32];

        public NET_DVR_FINGER_PRINT_BYCARD_V50() {
        }
    }

    public static class NET_DVR_FINGER_PRINT_BYREADER_V50 extends Structure {
        public int dwCardReaderNo;
        public byte byClearAllCard;
        public byte[] byRes1 = new byte[3];
        public byte[] byCardNo = new byte[32];
        public byte[] byEmployeeNo = new byte[32];
        public byte[] byRes = new byte[516];

        public NET_DVR_FINGER_PRINT_BYREADER_V50() {
        }
    }

    public static class NET_DVR_DEL_FINGER_PRINT_MODE_V50 extends Union {
        public byte[] uLen = new byte[588];
        public HCNetSDK.NET_DVR_FINGER_PRINT_BYCARD_V50 struByCard;
        public HCNetSDK.NET_DVR_FINGER_PRINT_BYREADER_V50 struByReader;

        public NET_DVR_DEL_FINGER_PRINT_MODE_V50() {
        }
    }

    public static class NET_DVR_FINGER_PRINT_INFO_CTRL_V50 extends Structure {
        public int dwSize;
        public byte byMode;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_DVR_DEL_FINGER_PRINT_MODE_V50 struProcessMode;
        public byte[] byRes = new byte[64];

        public NET_DVR_FINGER_PRINT_INFO_CTRL_V50() {
        }
    }

    public static class NET_DVR_CAPTURE_FINGERPRINT_CFG extends Structure {
        public int dwSize;
        public int dwFingerPrintDataSize;
        public byte[] byFingerData = new byte[768];
        public int dwFingerPrintPicSize;
        public Pointer pFingerPrintPicBuffer;
        public byte byFingerNo;
        public byte byFingerPrintQuality;
        public byte[] byRes = new byte[62];

        public NET_DVR_CAPTURE_FINGERPRINT_CFG() {
        }
    }

    public static class NET_DVR_CAPTURE_FINGERPRINT_COND extends Structure {
        public int dwSize;
        public byte byFingerPrintPicType;
        public byte byFingerNo;
        public byte[] byRes = new byte[126];

        public NET_DVR_CAPTURE_FINGERPRINT_COND() {
        }
    }

    public static class NET_DVR_FINGERPRINT_STATUS extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public byte byCardReaderRecvStatus;
        public byte byFingerPrintID;
        public byte byFingerType;
        public byte byRecvStatus;
        public byte[] byErrorMsg = new byte[32];
        public int dwCardReaderNo;
        public byte[] byRes = new byte[20];

        public NET_DVR_FINGERPRINT_STATUS() {
        }
    }

    public static class NET_DVR_FINGERPRINT_RECORD extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public int dwFingerPrintLen;
        public int dwEnableReaderNo;
        public byte byFingerPrintID;
        public byte byFingerType;
        public byte[] byRes1 = new byte[30];
        public byte[] byFingerData = new byte[768];
        public byte[] byRes = new byte[96];

        public NET_DVR_FINGERPRINT_RECORD() {
        }
    }

    public static class NET_DVR_FINGERPRINT_COND extends Structure {
        public int dwSize;
        public int dwFingerprintNum;
        public byte[] byCardNo = new byte[32];
        public int dwEnableReaderNo;
        public byte byFingerPrintID;
        public byte[] byRes = new byte[131];

        public NET_DVR_FINGERPRINT_COND() {
        }
    }

    public static class NET_DVR_FACE_STATUS extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public byte[] byErrorMsg = new byte[32];
        public int dwReaderNo;
        public byte byRecvStatus;
        public byte[] byRes = new byte[131];

        public NET_DVR_FACE_STATUS() {
        }
    }

    public static class NET_DVR_FACE_RECORD extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public int dwFaceLen;
        public Pointer pFaceBuffer;
        public byte[] byRes = new byte[128];

        public NET_DVR_FACE_RECORD() {
        }
    }

    public static class NET_DVR_FACE_COND extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public int dwFaceNum;
        public int dwEnableReaderNo;
        public byte[] byRes = new byte[124];

        public NET_DVR_FACE_COND() {
        }
    }

    public static class NET_DVR_CARD_STATUS extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public int dwErrorCode;
        public byte byStatus;
        public byte[] byRes = new byte[23];

        public NET_DVR_CARD_STATUS() {
        }
    }

    public static class NET_DVR_CARD_RECORD extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public byte byCardType;
        public byte byLeaderCard;
        public byte byUserType;
        public byte byRes1;
        public byte[] byDoorRight = new byte[256];
        public HCNetSDK.NET_DVR_VALID_PERIOD_CFG struValid = new HCNetSDK.NET_DVR_VALID_PERIOD_CFG();
        public byte[] byBelongGroup = new byte[128];
        public byte[] byCardPassword = new byte[8];
        public short[] wCardRightPlan = new short[256];
        public int dwMaxSwipeTimes;
        public int dwSwipeTimes;
        public int dwEmployeeNo;
        public byte[] byName = new byte[32];
        public int dwCardRight;
        public byte[] byRes = new byte[256];

        public NET_DVR_CARD_RECORD() {
        }
    }

    public static class NET_DVR_CARD_SEND_DATA extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public byte[] byRes = new byte[16];

        public NET_DVR_CARD_SEND_DATA() {
        }
    }

    public static class NET_DVR_CARD_COND extends Structure {
        public int dwSize;
        public int dwCardNum;
        public byte[] byRes = new byte[64];

        public NET_DVR_CARD_COND() {
        }
    }

    public static class NET_DVR_CARD_READER_CFG_V50 extends Structure {
        public int dwSize;
        public byte byEnable;
        public byte byCardReaderType;
        public byte byOkLedPolarity;
        public byte byErrorLedPolarity;
        public byte byBuzzerPolarity;
        public byte bySwipeInterval;
        public byte byPressTimeout;
        public byte byEnableFailAlarm;
        public byte byMaxReadCardFailNum;
        public byte byEnableTamperCheck;
        public byte byOfflineCheckTime;
        public byte byFingerPrintCheckLevel;
        public byte byUseLocalController;
        public byte byRes1;
        public short wLocalControllerID;
        public short wLocalControllerReaderID;
        public short wCardReaderChannel;
        public byte byFingerPrintImageQuality;
        public byte byFingerPrintContrastTimeOut;
        public byte byFingerPrintRecogizeInterval;
        public byte byFingerPrintMatchFastMode;
        public byte byFingerPrintModuleSensitive;
        public byte byFingerPrintModuleLightCondition;
        public byte byFaceMatchThresholdN;
        public byte byFaceQuality;
        public byte byFaceRecogizeTimeOut;
        public byte byFaceRecogizeInterval;
        public short wCardReaderFunction;
        public byte[] byCardReaderDescription = new byte[32];
        public short wFaceImageSensitometry;
        public byte byLivingBodyDetect;
        public byte byFaceMatchThreshold1;
        public short wBuzzerTime;
        public byte byFaceMatch1SecurityLevel;
        public byte byFaceMatchNSecurityLevel;
        public byte byEnvirMode;
        public byte byLiveDetLevelSet;
        public byte byLiveDetAntiAttackCntLimit;
        public byte byEnableLiveDetAntiAttack;
        public byte bySupportDelFPByID;
        public byte byFaceContrastMotionDetLevel;
        public byte byDayFaceMatchThresholdN;
        public byte byNightFaceMatchThresholdN;
        public byte byFaceRecogizeEnable;
        public byte byBlockListMatchThreshold;
        public byte byRes3;
        public byte byDefaultVerifyMode;
        public int dwFingerPrintCapacity;
        public int dwFingerPrintNum;
        public byte byEnableFingerPrintNum;
        public byte[] byRes = new byte[231];

        public NET_DVR_CARD_READER_CFG_V50() {
        }
    }

    public static class NET_DVR_ID_CARD_INFO_ALARM extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_ID_CARD_INFO struIDCardCfg = new HCNetSDK.NET_DVR_ID_CARD_INFO();
        public int dwMajor;
        public int dwMinor;
        public HCNetSDK.NET_DVR_TIME_V30 struSwipeTime = new HCNetSDK.NET_DVR_TIME_V30();
        public byte[] byNetUser = new byte[16];
        public HCNetSDK.NET_DVR_IPADDR struRemoteHostAddr = new HCNetSDK.NET_DVR_IPADDR();
        public int dwCardReaderNo;
        public int dwDoorNo;
        public int dwPicDataLen;
        public Pointer pPicData;
        public byte byCardType;
        public byte byDeviceNo;
        public byte byMask;
        public byte byCurrentEvent;
        public int dwFingerPrintDataLen;
        public Pointer pFingerPrintData;
        public int dwCapturePicDataLen;
        public Pointer pCapturePicData;
        public int dwCertificatePicDataLen;
        public Pointer pCertificatePicData;
        public byte byCardReaderKind;
        public byte[] byRes3 = new byte[2];
        public byte byIDCardInfoExtend;
        public Pointer pIDCardInfoExtend;
        public int dwSerialNo;
        public byte[] byRes = new byte[168];

        public NET_DVR_ID_CARD_INFO_ALARM() {
        }
    }

    public static class NET_DVR_ID_CARD_INFO_EXTEND extends Structure {
        public byte byRemoteCheck;
        public byte byThermometryUnit;
        public byte byIsAbnomalTemperature;
        public byte byRes2;
        public float fCurrTemperature;
        public HCNetSDK.NET_VCA_POINT struRegionCoordinates = new HCNetSDK.NET_VCA_POINT();
        public int dwQRCodeInfoLen;
        public int dwVisibleLightDataLen;
        public int dwThermalDataLen;
        public Pointer pQRCodeInfo;
        public Pointer pVisibleLightData;
        public Pointer pThermalData;
        public byte[] byRes = new byte[1024];

        public NET_DVR_ID_CARD_INFO_EXTEND() {
        }
    }

    public static class NET_DVR_VALID_PERIOD_CFG extends Structure {
        public byte byEnable;
        public byte byBeginTimeFlag;
        public byte byEnableTimeFlag;
        public byte byTimeDurationNo;
        public HCNetSDK.NET_DVR_TIME_EX struBeginTime;
        public HCNetSDK.NET_DVR_TIME_EX struEndTime;
        public byte byTimeType;
        public byte[] byRes2 = new byte[31];

        public NET_DVR_VALID_PERIOD_CFG() {
        }
    }

    public static class NET_DVR_CARD_CFG_V50 extends Structure {
        public int dwSize;
        public int dwModifyParamType;
        public byte[] byCardNo = new byte[32];
        public byte byCardValid;
        public byte byCardType;
        public byte byLeaderCard;
        public byte byRes1;
        public byte[] byDoorRight = new byte[256];
        public HCNetSDK.NET_DVR_VALID_PERIOD_CFG struValid;
        public byte[] byBelongGroup = new byte[128];
        public byte[] byCardPassword = new byte[8];
        public HCNetSDK.CARDRIGHTPLAN_WORD[] wCardRightPlan = new HCNetSDK.CARDRIGHTPLAN_WORD[256];
        public int dwMaxSwipeTime;
        public int dwSwipeTime;
        public short wRoomNumber;
        public short wFloorNumber;
        public int dwEmployeeNo;
        public byte[] byName = new byte[32];
        public short wDepartmentNo;
        public short wSchedulePlanNo;
        public byte bySchedulePlanType;
        public byte byRightType;
        public byte[] byRes2 = new byte[2];
        public int dwLockID;
        public byte[] byLockCode = new byte[8];
        public byte[] byRoomCode = new byte[8];
        public int dwCardRight;
        public int dwPlanTemplate;
        public int dwCardUserId;
        public byte byCardModelType;
        public byte[] byRes3 = new byte[83];

        public NET_DVR_CARD_CFG_V50() {
        }
    }

    public static class CARDRIGHTPLAN_WORD extends Structure {
        public short[] wRightPlan = new short[4];

        public CARDRIGHTPLAN_WORD() {
        }
    }

    public static class NET_DVR_CARD_CFG extends Structure {
        public int dwSize;
        public int dwModifyParamType;
        public byte[] byCardNo = new byte[32];
        public byte byCardValid;
        public byte byCardType;
        public byte byLeaderCard;
        public byte byRes1;
        public int dwDoorRight;
        public HCNetSDK.NET_DVR_VALID_PERIOD_CFG struValid;
        public int dwBelongGroup;
        public byte[] byCardPassword = new byte[8];
        public HCNetSDK.CARDRIGHTPLAN[] byCardRightPlan = new HCNetSDK.CARDRIGHTPLAN[32];
        public int dwMaxSwipeTime;
        public int dwSwipeTime;
        public short wRoomNumber;
        public short wFloorNumber;
        public byte[] byRes2 = new byte[20];

        public NET_DVR_CARD_CFG() {
        }
    }

    public static class CARDRIGHTPLAN extends Structure {
        public byte[] byRightPlan = new byte[4];

        public CARDRIGHTPLAN() {
        }
    }

    public static class NET_DVR_CARD_CFG_SEND_DATA extends Structure {
        public int dwSize;
        public byte[] byCardNo = new byte[32];
        public byte[] byRes = new byte[16];

        public NET_DVR_CARD_CFG_SEND_DATA() {
        }
    }

    public static class NET_DVR_CARD_CFG_COND extends Structure {
        public int dwSize;
        public int dwCardNum;
        public byte byCheckCardNo;
        public byte[] ibyRes = new byte[31];

        public NET_DVR_CARD_CFG_COND() {
        }
    }

    public static class NET_DVR_EVETN_CARD_LINKAGE_UNION extends Union {
        public byte[] byCardNo = new byte[32];
        public HCNetSDK.NET_DVR_EVENT_LINKAGE_INFO struEventLinkage;
        public byte[] byMACAddr = new byte[6];
        public byte[] byEmployeeNo = new byte[32];

        public NET_DVR_EVETN_CARD_LINKAGE_UNION() {
        }
    }

    public static class NET_DVR_EVENT_LINKAGE_INFO extends Structure {
        public short wMainEventType;
        public short wSubEventType;
        public byte[] byRes = new byte[28];

        public NET_DVR_EVENT_LINKAGE_INFO() {
        }
    }

    public static class NET_DVR_EVENT_LINKAGE_CARD_CFG_V51 extends Structure {
        public int dwSize;
        public byte byProMode;
        public byte[] byRes1 = new byte[3];
        public int dwEventSourceID;
        public HCNetSDK.NET_DVR_EVETN_CARD_LINKAGE_UNION uLinkageInfo;
        public byte[] byAlarmout = new byte[512];
        public byte[] byRes2 = new byte[32];
        public byte[] byOpenDoor = new byte[256];
        public byte[] byCloseDoor = new byte[256];
        public byte[] byNormalOpen = new byte[256];
        public byte[] byNormalClose = new byte[256];
        public byte byMainDevBuzzer;
        public byte byCapturePic;
        public byte byRecordVideo;
        public byte byMainDevStopBuzzer;
        public short wAudioDisplayID;
        public byte byAudioDisplayMode;
        public byte[] byRes3 = new byte[25];
        public byte[] byReaderBuzzer = new byte[512];
        public byte[] byAlarmOutClose = new byte[512];
        public byte[] byAlarmInSetup = new byte[512];
        public byte[] byAlarmInClose = new byte[512];
        public byte[] byReaderStopBuzzer = new byte[512];
        public byte[] byRes = new byte[512];

        public NET_DVR_EVENT_LINKAGE_CARD_CFG_V51() {
        }
    }

    public static class NET_DVR_EVENT_CARD_LINKAGE_CFG_V50 extends Structure {
        public int dwSize;
        public byte byProMode;
        public byte[] byRes1 = new byte[3];
        public int dwEventSourceID;
        public HCNetSDK.NET_DVR_EVETN_CARD_LINKAGE_UNION uLinkageInfo = new HCNetSDK.NET_DVR_EVETN_CARD_LINKAGE_UNION();
        public byte[] byAlarmout = new byte[512];
        public byte[] byRes2 = new byte[32];
        public byte[] byOpenDoor = new byte[256];
        public byte[] byCloseDoor = new byte[256];
        public byte[] byNormalOpen = new byte[256];
        public byte[] byNormalClose = new byte[256];
        public byte byMainDevBuzzer;
        public byte byCapturePic;
        public byte byRecordVideo;
        public byte[] byRes3 = new byte[29];
        public byte[] byReaderBuzzer = new byte[512];
        public byte[] byAlarmOutClose = new byte[512];
        public byte[] byAlarmInSetup = new byte[512];
        public byte[] byAlarmInClose = new byte[512];
        public byte[] byRes = new byte[500];

        public NET_DVR_EVENT_CARD_LINKAGE_CFG_V50() {
        }
    }

    public static class NET_DVR_EVENT_CARD_LINKAGE_COND extends Structure {
        public int dwSize;
        public int dwEventID;
        public short wLocalControllerID;
        public byte[] byRes = new byte[106];

        public NET_DVR_EVENT_CARD_LINKAGE_COND() {
        }
    }

    public static class NET_DVR_DOOR_STATUS_PLAN extends Structure {
        public int dwSize;
        public int dwTemplateNo;
        public byte[] byRes = new byte[64];

        public NET_DVR_DOOR_STATUS_PLAN() {
        }
    }

    public static class NET_DVR_DOOR_CFG extends Structure {
        public int dwSize;
        public byte[] byDoorName = new byte[32];
        public byte byMagneticType;
        public byte byOpenButtonType;
        public byte byOpenDuration;
        public byte byDisabledOpenDuration;
        public byte byMagneticAlarmTimeout;
        public byte byEnableDoorLock;
        public byte byEnableLeaderCard;
        public byte byLeaderCardMode;
        public int dwLeaderCardOpenDuration;
        public byte[] byStressPassword = new byte[8];
        public byte[] bySuperPassword = new byte[8];
        public byte[] byUnlockPassword = new byte[8];
        public byte byUseLocalController;
        public byte byRes1;
        public short wLocalControllerID;
        public short wLocalControllerDoorNumber;
        public short wLocalControllerStatus;
        public byte byLockInputCheck;
        public byte byLockInputType;
        public byte byDoorTerminalMode;
        public byte byOpenButton;
        public byte byLadderControlDelayTime;
        public byte[] byRes2 = new byte[43];

        public NET_DVR_DOOR_CFG() {
        }
    }

    public static class NET_DVR_CHARGEACCOUNT_CFG extends Structure {
        public int dwSize;
        public float fAccount;
        public byte[] byRes = new byte[128];

        public NET_DVR_CHARGEACCOUNT_CFG() {
        }
    }

    public static class NET_DVR_VOICEBROADCAST_CFG extends Structure {
        public int dwSize;
        public byte[] sInfo = new byte[128];
        public byte byBroadcastNum;
        public byte byIntervalTime;
        public byte[] byRes = new byte[126];

        public NET_DVR_VOICEBROADCAST_CFG() {
        }
    }

    public static class NET_DVR_LEDDISPLAY_CFG extends Structure {
        public int dwSize;
        public byte[] sDisplayInfo = new byte[512];
        public byte byDisplayMode;
        public byte bySpeedType;
        public byte byShowPlateEnable;
        public byte byRes1;
        public int dwShowTime;
        public byte[] byRes = new byte[128];

        public NET_DVR_LEDDISPLAY_CFG() {
        }
    }

    public static class NET_DVR_VEHICLE_CONTROL_ALARM extends Structure {
        public int dwSize;
        public byte byListType;
        public byte byPlateType;
        public byte byPlateColor;
        public byte byRes1;
        public byte[] sLicense = new byte[16];
        public byte[] sCardNo = new byte[48];
        public HCNetSDK.NET_DVR_TIME_V30 struAlarmTime = new HCNetSDK.NET_DVR_TIME_V30();
        public int dwChannel;
        public int dwPicDataLen;
        public byte byPicType;
        public byte byPicTransType;
        public byte[] byRes3 = new byte[2];
        public Pointer pPicData;
        public byte[] byRes2 = new byte[48];

        public NET_DVR_VEHICLE_CONTROL_ALARM() {
        }
    }

    public static class NET_DVR_VEHICLE_CONTROL_LIST_INFO extends Structure {
        public int dwSize;
        public int dwChannel;
        public int dwDataIndex;
        public byte[] sLicense = new byte[16];
        public byte byListType;
        public byte byPlateType;
        public byte byPlateColor;
        public byte[] byRes = new byte[21];
        public byte[] sCardNo = new byte[48];
        public HCNetSDK.NET_DVR_TIME_V30 struStartTime = new HCNetSDK.NET_DVR_TIME_V30();
        public HCNetSDK.NET_DVR_TIME_V30 struStopTime = new HCNetSDK.NET_DVR_TIME_V30();
        public byte[] sOperateIndex = new byte[32];
        public byte[] byRes1 = new byte[224];

        public NET_DVR_VEHICLE_CONTROL_LIST_INFO() {
        }
    }

    public static class NET_DVR_VEHICLE_CONTROL_COND extends Structure {
        public int dwChannel;
        public int dwOperateType;
        public byte[] sLicense = new byte[16];
        public byte[] sCardNo = new byte[48];
        public byte byListType;
        public byte[] byRes1 = new byte[3];
        public int dwDataIndex;
        public byte[] byRes = new byte[116];

        public NET_DVR_VEHICLE_CONTROL_COND() {
        }
    }

    public static class NET_DVR_TRAFFIC_PICTURE_PARAM extends Structure {
        public HCNetSDK.NET_DVR_TIME_V30 struRelativeTime = new HCNetSDK.NET_DVR_TIME_V30();
        public HCNetSDK.NET_DVR_TIME_V30 struAbsTime = new HCNetSDK.NET_DVR_TIME_V30();
        public byte[] szPicName = new byte[64];
        public byte byPicType;
        public byte[] byRes = new byte[63];

        public NET_DVR_TRAFFIC_PICTURE_PARAM() {
        }
    }

    public static class NET_DVR_TRAFFIC_DATA_QUERY_RESULT extends Structure {
        public int dwSize;
        public int dwChannel;
        public byte[] sLicense = new byte[16];
        public int dwPlateType;
        public int dwPlateColor;
        public int dwVehicleColor;
        public int dwVehicleType;
        public int dwIllegalType;
        public int dwEventType;
        public int dwForensiceType;
        public short wVehicleLogoRecog;
        public byte byLaneNo;
        public byte byDirection;
        public short wSpeed;
        public byte byDataType;
        public byte[] byRes = new byte[253];
        public HCNetSDK.NET_DVR_TRAFFIC_PICTURE_PARAM[] struTrafficPic = new HCNetSDK.NET_DVR_TRAFFIC_PICTURE_PARAM[8];

        public NET_DVR_TRAFFIC_DATA_QUERY_RESULT() {
        }
    }

    public static class NET_DVR_TRAFFIC_DATA_QUERY_COND extends Structure {
        public int dwSize;
        public int dwQueryCond;
        public int dwChannel;
        public HCNetSDK.NET_DVR_TIME_V30 struStartTime;
        public HCNetSDK.NET_DVR_TIME_V30 struEndTime;
        public byte[] sLicense = new byte[16];
        public int dwPlateType;
        public int dwPlateColor;
        public int dwVehicleColor;
        public int dwVehicleType;
        public int dwIllegalType;
        public int dwEventType;
        public int dwForensiceType;
        public short wVehicleLogoRecog;
        public byte byLaneNo;
        public byte byDirection;
        public short wMinSpeed;
        public short wMaxSpeed;
        public byte byDataType;
        public byte byExecuteCtrl;
        public byte[] byRes = new byte[254];

        public NET_DVR_TRAFFIC_DATA_QUERY_COND() {
        }
    }

    public static class NET_DVR_FACECAPTURE_STATISTICS_RESULT extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_TIME_EX struStartTime;
        public HCNetSDK.NET_DVR_TIME_EX struEndTime;
        public byte byStatType;
        public byte[] byRes = new byte[7];
        public int dwPeopleNum;
        public byte[] byRes2 = new byte[80];
        public HCNetSDK.NET_DVR_SEXGROUP_PARAM struSexGroupParam;
        public HCNetSDK.NET_DVR_PROGRAM_INFO struProgramInfo;
        public byte[] byRes1 = new byte[76];

        public NET_DVR_FACECAPTURE_STATISTICS_RESULT() {
        }
    }

    public static class NET_DVR_PROGRAM_INFO extends Structure {
        public int dwProgramNo;
        public byte[] sProgramName = new byte[32];
        public byte[] byRes = new byte[16];

        public NET_DVR_PROGRAM_INFO() {
        }
    }

    public static class NET_DVR_SEXGROUP_PARAM extends Structure {
        public int dwMale;
        public int dwFemale;
        public byte[] byRes = new byte[64];

        public NET_DVR_SEXGROUP_PARAM() {
        }
    }

    public static class NET_DVR_GROUP_PARAM extends Structure {
        public int dwTeenage;
        public int dwYouth;
        public int dwMidLife;
        public int dwElderly;
        public int dwChild;
        public int dwAdolescent;
        public int dwPrime;
        public int dwMidage;
        public byte[] byRes = new byte[48];

        public NET_DVR_GROUP_PARAM() {
        }
    }

    public static class NET_DVR_BARRIERGATE_CFG extends Structure {
        public int dwSize;
        public int dwChannel;
        public byte byLaneNo;
        public byte byBarrierGateCtrl;
        public byte byEntranceNo;
        public byte byUnlock;
        public byte[] byRes = new byte[12];

        public NET_DVR_BARRIERGATE_CFG() {
        }
    }

    public static class NET_DVR_SNAPCFG extends Structure {
        public int dwSize;
        public byte byRelatedDriveWay;
        public byte bySnapTimes;
        public short wSnapWaitTime;
        public short[] wIntervalTime = new short[4];
        public int dwSnapVehicleNum;
        public HCNetSDK.NET_DVR_JPEGPARA struJpegPara;
        public byte[] byRes2 = new byte[16];

        public NET_DVR_SNAPCFG() {
        }
    }

    public static class NET_ITS_PARK_VEHICLE extends Structure {
        public int dwSize;
        public byte byGroupNum;
        public byte byPicNo;
        public byte byLocationNum;
        public byte byParkError;
        public byte[] byParkingNo = new byte[16];
        public byte byLocationStatus;
        public byte bylogicalLaneNum;
        public short wUpLoadType;
        public byte[] byRes1 = new byte[4];
        public int dwChanIndex;
        public HCNetSDK.NET_DVR_PLATE_INFO struPlateInfo;
        public HCNetSDK.NET_DVR_VEHICLE_INFO struVehicleInfo;
        public byte[] byMonitoringSiteID = new byte[48];
        public byte[] byDeviceID = new byte[48];
        public int dwPicNum;
        public HCNetSDK.NET_ITS_PICTURE_INFO[] struPicInfo = new HCNetSDK.NET_ITS_PICTURE_INFO[2];
        public byte[] byRes2 = new byte[256];

        public NET_ITS_PARK_VEHICLE() {
        }
    }

    public static class NET_ITS_PLATE_RESULT extends Structure {
        public int dwSize;
        public int dwMatchNo;
        public byte byGroupNum;
        public byte byPicNo;
        public byte bySecondCam;
        public byte byFeaturePicNo;
        public byte byDriveChan;
        public byte byVehicleType;
        public byte byDetSceneID;
        public byte byVehicleAttribute;
        public short wIllegalType;
        public byte[] byIllegalSubType = new byte[8];
        public byte byPostPicNo;
        public byte byChanIndex;
        public short wSpeedLimit;
        public byte byChanIndexEx;
        public byte byRes2;
        public HCNetSDK.NET_DVR_PLATE_INFO struPlateInfo = new HCNetSDK.NET_DVR_PLATE_INFO();
        public HCNetSDK.NET_DVR_VEHICLE_INFO struVehicleInfo = new HCNetSDK.NET_DVR_VEHICLE_INFO();
        public byte[] byMonitoringSiteID = new byte[48];
        public byte[] byDeviceID = new byte[48];
        public byte byDir;
        public byte byDetectType;
        public byte byRelaLaneDirectionType;
        public byte byCarDirectionType;
        public int dwCustomIllegalType;
        public Pointer pIllegalInfoBuf;
        public byte byIllegalFromatType;
        public byte byPendant;
        public byte byDataAnalysis;
        public byte byYellowLabelCar;
        public byte byDangerousVehicles;
        public byte byPilotSafebelt;
        public byte byCopilotSafebelt;
        public byte byPilotSunVisor;
        public byte byCopilotSunVisor;
        public byte byPilotCall;
        public byte byBarrierGateCtrlType;
        public byte byAlarmDataType;
        public HCNetSDK.NET_DVR_TIME_V30 struSnapFirstPicTime = new HCNetSDK.NET_DVR_TIME_V30();
        public int dwIllegalTime;
        public int dwPicNum;
        public HCNetSDK.NET_ITS_PICTURE_INFO[] struPicInfo = new HCNetSDK.NET_ITS_PICTURE_INFO[6];

        public NET_ITS_PLATE_RESULT() {
        }
    }

    public static class NET_ITS_PICTURE_INFO extends Structure {
        public int dwDataLen;
        public byte byType;
        public byte byDataType;
        public byte byCloseUpType;
        public byte byPicRecogMode;
        public int dwRedLightTime;
        public byte[] byAbsTime = new byte[32];
        public HCNetSDK.NET_VCA_RECT struPlateRect = new HCNetSDK.NET_VCA_RECT();
        public HCNetSDK.NET_VCA_RECT struPlateRecgRect = new HCNetSDK.NET_VCA_RECT();
        public Pointer pBuffer;
        public int dwUTCTime;
        public byte byCompatibleAblity;
        public byte byTimeDiffFlag;
        public byte cTimeDifferenceH;
        public byte cTimeDifferenceM;
        public byte[] byRes2 = new byte[4];

        public NET_ITS_PICTURE_INFO() {
        }
    }

    public static class NET_DVR_TIME_V30 extends Structure {
        public short wYear;
        public byte byMonth;
        public byte byDay;
        public byte byHour;
        public byte byMinute;
        public byte bySecond;
        public byte byRes;
        public short wMilliSec;
        public byte[] byRes1 = new byte[2];

        public NET_DVR_TIME_V30() {
        }
    }

    public static class NET_DVR_PLATE_RESULT extends Structure {
        public int dwSize;
        public byte byResultType;
        public byte byChanIndex;
        public short wAlarmRecordID;
        public int dwRelativeTime;
        public byte[] byAbsTime = new byte[32];
        public int dwPicLen;
        public int dwPicPlateLen;
        public int dwVideoLen;
        public byte byTrafficLight;
        public byte byPicNum;
        public byte byDriveChan;
        public byte byVehicleType;
        public int dwBinPicLen;
        public int dwCarPicLen;
        public int dwFarCarPicLen;
        public Pointer pBuffer3;
        public Pointer pBuffer4;
        public Pointer pBuffer5;
        public byte[] byRes3 = new byte[8];
        public HCNetSDK.NET_DVR_PLATE_INFO struPlateInfo;
        public HCNetSDK.NET_DVR_VEHICLE_INFO struVehicleInfo;
        public Pointer pBuffer1;
        public Pointer pBuffer2;

        public NET_DVR_PLATE_RESULT() {
        }
    }

    public static class NET_DVR_MANUALSNAP extends Structure {
        public byte byOSDEnable;
        public byte byLaneNo;
        public byte byChannel;
        public byte[] byRes = new byte[21];

        public NET_DVR_MANUALSNAP() {
        }
    }

    public static class NET_DVR_VEHICLE_INFO extends Structure {
        public int dwIndex;
        public byte byVehicleType;
        public byte byColorDepth;
        public byte byColor;
        public byte byRadarState;
        public short wSpeed;
        public short wLength;
        public byte byIllegalType;
        public byte byVehicleLogoRecog;
        public byte byVehicleSubLogoRecog;
        public byte byVehicleModel;
        public byte[] byCustomInfo = new byte[16];
        public short wVehicleLogoRecog;
        public byte byIsParking;
        public byte byRes;
        public int dwParkingTime;
        public byte[] byRes3 = new byte[8];

        public NET_DVR_VEHICLE_INFO() {
        }
    }

    public static class NET_DVR_PLATE_INFO extends Structure {
        public byte byPlateType;
        public byte byColor;
        public byte byBright;
        public byte byLicenseLen;
        public byte byEntireBelieve;
        public byte byRegion;
        public byte byCountry;
        public byte byArea;
        public byte byPlateSize;
        public byte byAddInfoFlag;
        public short wCRIndex;
        public byte[] byRes = new byte[12];
        public byte[] sPlateCategory = new byte[8];
        public int dwXmlLen;
        public Pointer pXmlBuf;
        public HCNetSDK.NET_VCA_RECT struPlateRect = new HCNetSDK.NET_VCA_RECT();
        public byte[] sLicense = new byte[16];
        public byte[] byBelieve = new byte[16];

        public NET_DVR_PLATE_INFO() {
        }
    }

    public static class NET_DVR_ALARMHOST_DATA_UPLOAD extends Structure {
        public int dwSize;
        public byte byDataType;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_DVR_ALARMHOST_DATA_UNION struAlarmData;
        public byte[] byRes2 = new byte[32];

        public NET_DVR_ALARMHOST_DATA_UPLOAD() {
        }
    }

    public static class NET_DVR_ALARMHOST_DATA_UNION extends Structure {
        public byte[] byLength = new byte[40];
        public HCNetSDK.NET_DVR_ALARMHOST_POINT_VALUE struPointValue;

        public NET_DVR_ALARMHOST_DATA_UNION() {
        }
    }

    public static class NET_DVR_ALARMHOST_POINT_VALUE extends Structure {
        public byte byChanType;
        public byte byPointType;
        public byte[] byRes1 = new byte[2];
        public int dwChanNo;
        public int dwSubChanNo;
        public int dwVariableNo;
        public int dwPointNo;
        public int iValue;
        public int iValueEx;
        public byte[] byRes = new byte[12];

        public NET_DVR_ALARMHOST_POINT_VALUE() {
        }
    }

    public static class NET_DVR_ALARMHOST_EXCEPTION_ALARM extends Structure {
        public int dwSize;
        public int dwExceptionType;
        public byte[] byRes = new byte[36];

        public NET_DVR_ALARMHOST_EXCEPTION_ALARM() {
        }
    }

    public static class NET_DVR_SWITCH_ALARM extends Structure {
        public int dwSize;
        public byte[] byName = new byte[32];
        public short wSwitchChannel;
        public byte byAlarmType;
        public byte[] byRes = new byte[41];

        public NET_DVR_SWITCH_ALARM() {
        }
    }

    public static class NET_DVR_SENSOR_ALARM extends Structure {
        public int dwSize;
        public int dwAbsTime;
        public byte[] byName = new byte[32];
        public byte bySensorChannel;
        public byte byType;
        public byte byAlarmType;
        public byte byAlarmMode;
        public float fValue;
        public float fOriginalValue;
        public byte[] byRes2 = new byte[28];

        public NET_DVR_SENSOR_ALARM() {
        }
    }

    public static class NET_DVR_CID_ALARM extends Structure {
        public int dwSize;
        public byte[] sCIDCode = new byte[4];
        public byte[] sCIDDescribe = new byte[32];
        public HCNetSDK.NET_DVR_TIME_EX struTriggerTime = new HCNetSDK.NET_DVR_TIME_EX();
        public HCNetSDK.NET_DVR_TIME_EX struUploadTime = new HCNetSDK.NET_DVR_TIME_EX();
        public byte[] sCenterAccount = new byte[6];
        public byte byReportType;
        public byte byUserType;
        public byte[] sUserName = new byte[32];
        public short wKeyUserNo;
        public byte byKeypadNo;
        public byte bySubSysNo;
        public short wDefenceNo;
        public byte byVideoChanNo;
        public byte byDiskNo;
        public short wModuleAddr;
        public byte byCenterType;
        public byte byRes1;
        public byte[] sCenterAccountV40 = new byte[32];
        public byte[] byDevSerialNo = new byte[9];
        public byte byRepeaterNo;
        public short wRemoteCtrllerUserNo;
        public int dwIOTChannelNo;
        public byte[] byRes2 = new byte[12];

        public NET_DVR_CID_ALARM() {
        }
    }

    public static class NET_VCA_RULECFG_V42 extends Structure {
        public int dwSize;
        public byte byPicProType;
        public byte byUpLastAlarm;
        public byte byPicRecordEnable;
        public byte byRes1;
        public HCNetSDK.NET_DVR_JPEGPARA struPicParam;
        public HCNetSDK.NET_VCA_ONE_RULE_V42[] struRule = new HCNetSDK.NET_VCA_ONE_RULE_V42[16];
        public short[] wRelSnapChan = new short[3];
        public byte byTrackEnable;
        public byte byRes2;
        public HCNetSDK.NET_DVR_PTZ_POSITION struPTZPosition;
        public short wTrackDuration;
        public short wIntervalTime;
        public short wHeightLimit;
        public byte[] byRes = new byte[58];

        public NET_VCA_RULECFG_V42() {
        }
    }

    public static class NET_DVR_PTZ_POSITION extends Structure {
        public byte byEnable;
        public byte[] byRes1 = new byte[3];
        public byte[] byPtzPositionName = new byte[32];
        public HCNetSDK.NET_DVR_PTZPOS struPtzPos;
        public byte[] byRes2 = new byte[40];

        public NET_DVR_PTZ_POSITION() {
        }
    }

    public static class NET_VCA_ONE_RULE_V42 extends Structure {
        public byte byActive;
        public byte byEventPriority;
        public byte[] byRes1 = new byte[4];
        public short wEventType;
        public byte[] byRuleName = new byte[32];
        public HCNetSDK.NET_VCA_EVENT_UNION uEventParam;
        public HCNetSDK.NET_VCA_SIZE_FILTER struSizeFilter;
        public HCNetSDK.NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new HCNetSDK.NET_DVR_SCHEDTIMEWEEK[7];
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION_V40 struAlarmHandleType;
        public int[] dwRelRecordChan = new int[64];
        public short wAlarmDelay;
        public byte[] byRes2 = new byte[2];
        public HCNetSDK.NET_VCA_FILTER_STRATEGY struFilterStrategy;
        public HCNetSDK.NET_VCA_RULE_TRIGGER_PARAM struTriggerParam;
        public byte[] byRes = new byte[32];

        public NET_VCA_ONE_RULE_V42() {
        }
    }

    public static class NET_VCA_RULE_TRIGGER_PARAM extends Structure {
        public byte byTriggerMode;
        public byte byTriggerPoint;
        public byte[] byRes1 = new byte[2];
        public float fTriggerArea;
        public byte[] byRes2 = new byte[4];

        public NET_VCA_RULE_TRIGGER_PARAM() {
        }
    }

    public static class NET_AIOP_POLLING_VIDEO_HEAD extends Structure {
        public int dwSize;
        public int dwChannel;
        public HCNetSDK.NET_DVR_SYSTEM_TIME struTime;
        public byte[] szTaskID = new byte[64];
        public int dwAIOPDataSize;
        public int dwPictureSize;
        public byte[] szMPID = new byte[64];
        public Pointer pBufferAIOPData;
        public Pointer pBufferPicture;
        public byte byPictureMode;
        public byte[] byRes2 = new byte[3];
        public int dwPresetIndex;
        public byte[] byRes = new byte[176];

        public NET_AIOP_POLLING_VIDEO_HEAD() {
        }
    }

    public static class NET_AIOP_POLLING_SNAP_HEAD extends Structure {
        public int dwSize;
        public int dwChannel;
        public HCNetSDK.NET_DVR_SYSTEM_TIME struTime = new HCNetSDK.NET_DVR_SYSTEM_TIME();
        public byte[] szTaskID = new byte[64];
        public int dwAIOPDataSize;
        public int dwPictureSize;
        public byte[] szMPID = new byte[64];
        public Pointer pBufferAIOPData;
        public Pointer pBufferPicture;
        public byte byPictureMode;
        public byte[] byRes2 = new byte[3];
        public int dwPresetIndex;
        public byte[] byRes = new byte[176];

        public NET_AIOP_POLLING_SNAP_HEAD() {
        }
    }

    public static class NET_DVR_AI_PICTUR_UPLOAD extends Structure {
        public int dwSize;
        public byte[] szTaskID = new byte[64];
        public byte[] szPID = new byte[64];
        public byte[] byRes = new byte[128];

        public NET_DVR_AI_PICTUR_UPLOAD() {
        }
    }

    public static class NET_AIOP_PICTURE_HEAD extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_SYSTEM_TIME struTime = new HCNetSDK.NET_DVR_SYSTEM_TIME();
        public byte[] szPID = new byte[64];
        public int dwAIOPDataSize;
        public byte byStatus;
        public byte[] byRes1 = new byte[3];
        public byte[] szMPID = new byte[64];
        public Pointer pBufferAIOPData;
        public int dwPresetIndex;
        public byte[] byRes = new byte[180];

        public NET_AIOP_PICTURE_HEAD() {
        }
    }

    public static class NET_AIOP_VIDEO_HEAD extends Structure {
        public int dwSize;
        public int dwChannel;
        public HCNetSDK.NET_DVR_SYSTEM_TIME struTime = new HCNetSDK.NET_DVR_SYSTEM_TIME();
        public byte[] szTaskID = new byte[64];
        public int dwAIOPDataSize;
        public int dwPictureSize;
        public byte[] szMPID = new byte[64];
        public Pointer pBufferAIOPData;
        public Pointer pBufferPicture;
        public byte byPictureMode;
        public byte[] byRes2 = new byte[3];
        public int dwPresetIndex;
        public byte[] byRes = new byte[176];

        public NET_AIOP_VIDEO_HEAD() {
        }
    }

    public static class NET_DVR_SYSTEM_TIME extends Structure {
        public short wYear;
        public short wMonth;
        public short wDay;
        public short wHour;
        public short wMinute;
        public short wSecond;
        public short wMilliSec;
        public byte[] byRes = new byte[2];

        public NET_DVR_SYSTEM_TIME() {
        }
    }

    public static class NET_VCA_RULE_ALARM extends Structure {
        public int dwSize;
        public int dwRelativeTime;
        public int dwAbsTime;
        public HCNetSDK.NET_VCA_RULE_INFO struRuleInfo;
        public HCNetSDK.NET_VCA_TARGET_INFO struTargetInfo;
        public HCNetSDK.NET_VCA_DEV_INFO struDevInfo;
        public int dwPicDataLen;
        public byte byPicType;
        public byte byRelAlarmPicNum;
        public byte bySmart;
        public byte byPicTransType;
        public int dwAlarmID;
        public short wDevInfoIvmsChannelEx;
        public byte byRelativeTimeFlag;
        public byte byAppendInfoUploadEnabled;
        public Pointer pAppendInfo;
        public Pointer pImage;

        public NET_VCA_RULE_ALARM() {
        }
    }

    public static class NET_VCA_FILTER_STRATEGY extends Structure {
        public byte byStrategy;
        public byte[] byRes = new byte[11];

        public NET_VCA_FILTER_STRATEGY() {
        }
    }

    public static class NET_VCA_SIZE_FILTER extends Structure {
        public byte byActive;
        public byte byMode;
        public byte[] byRes = new byte[2];
        public HCNetSDK.NET_VCA_RECT struMiniRect;
        public HCNetSDK.NET_VCA_RECT struMaxRect;

        public NET_VCA_SIZE_FILTER() {
        }
    }

    public static class NET_VCA_POLYGON extends Structure {
        public int dwPointNum;
        public HCNetSDK.NET_VCA_POINT[] struPos = new HCNetSDK.NET_VCA_POINT[10];

        public NET_VCA_POLYGON() {
        }
    }

    public static class NET_VCA_AREA extends Structure {
        public HCNetSDK.NET_VCA_POLYGON struRegion;
        public byte bySensitivity;
        public byte byDetectionTarget;
        public byte byPriority;
        public byte[] byRes = new byte[5];

        public NET_VCA_AREA() {
        }
    }

    public static class NET_VCA_POINT extends Structure {
        public float fX;
        public float fY;

        public NET_VCA_POINT() {
        }
    }

    public static class NET_VCA_LINE extends Structure {
        public HCNetSDK.NET_VCA_POINT struStart;
        public HCNetSDK.NET_VCA_POINT struEnd;

        public NET_VCA_LINE() {
        }
    }

    public static class NET_DVR_CHANNEL_GROUP extends Structure {
        public int dwSize;
        public int dwChannel;
        public int dwGroup;
        public byte byID;
        public byte[] byRes1 = new byte[3];
        public int dwPositionNo;
        public byte[] byRes = new byte[56];

        public NET_DVR_CHANNEL_GROUP() {
        }
    }

    public static class NET_VCA_FIELDDETECION extends Structure {
        public int dwSize;
        public byte byEnable;
        public byte byEnableDualVca;
        public byte byEnableHumanMisinfoFilter;
        public byte byEnableVehicleMisinfoFilter;
        public HCNetSDK.NET_VCA_INTRUSION[] struIntrusion = new HCNetSDK.NET_VCA_INTRUSION[8];
        public HCNetSDK.NET_DVR_SCHEDTIMEWEEK[] struAlarmSched = new HCNetSDK.NET_DVR_SCHEDTIMEWEEK[7];
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION_V40 struHandleException;
        public int dwMaxRelRecordChanNum;
        public int dwRelRecordChanNum;
        public int[] byRelRecordChan = new int[64];
        public HCNetSDK.NET_DVR_SCHEDTIME[] struHolidayTime = new HCNetSDK.NET_DVR_SCHEDTIME[8];
        public byte[] byRes2 = new byte[100];

        public NET_VCA_FIELDDETECION() {
        }
    }

    public static class NET_VCA_FALL_DOWN extends Structure {
        public HCNetSDK.NET_VCA_POLYGON struRegion;
        public short wDuration;
        public short bySensitivity;
        public short byHeightThreshold;
        public byte[] byRes = new byte[4];

        public NET_VCA_FALL_DOWN() {
        }
    }

    public static class NET_VCA_RUNNING extends Structure {
        public HCNetSDK.NET_VCA_POLYGON struRegion;
        public int dwSpeed;
        public short wDuration;
        public byte byRunMode;
        public byte byRes;

        public NET_VCA_RUNNING() {
        }
    }

    public static class NET_VCA_RUN extends Structure {
        public HCNetSDK.NET_VCA_POLYGON struRegion;
        public float fRunDistance;
        public byte bySensitivity;
        public byte byMode;
        public byte byDetectionTarget;
        public byte byRes;

        public NET_VCA_RUN() {
        }
    }

    public static class NET_VCA_TRAVERSE_PLANE_DETECTION extends Structure {
        public int dwSize;
        public byte byEnable;
        public byte byEnableDualVca;
        public byte[] byRes1 = new byte[2];
        public HCNetSDK.NET_VCA_TRAVERSE_PLANE[] struAlertParam = new HCNetSDK.NET_VCA_TRAVERSE_PLANE[8];
        public HCNetSDK.NET_DVR_SCHEDTIMEWEEK[] struAlarmSched = new HCNetSDK.NET_DVR_SCHEDTIMEWEEK[7];
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION_V40 struHandleException;
        public int dwMaxRelRecordChanNum;
        public int dwRelRecordChanNum;
        public int[] byRelRecordChan = new int[64];
        public HCNetSDK.NET_DVR_SCHEDTIME[] struHolidayTime = new HCNetSDK.NET_DVR_SCHEDTIME[8];
        public byte[] byRes2 = new byte[100];

        public NET_VCA_TRAVERSE_PLANE_DETECTION() {
        }
    }

    public static class NET_DVR_HANDLEEXCEPTION_V40 extends Structure {
        public int dwHandleType;
        public int dwMaxRelAlarmOutChanNum;
        public int dwRelAlarmOutChanNum;
        public int[] dwRelAlarmOut = new int[64];
        public byte[] byRes = new byte[64];

        public NET_DVR_HANDLEEXCEPTION_V40() {
        }
    }

    public static class NET_VCA_LEAVE_POSITION extends Structure {
        public HCNetSDK.NET_VCA_POLYGON struRegion;
        public short wLeaveDelay;
        public short wStaticDelay;
        public byte byMode;
        public byte byPersonType;
        public byte byOnPosition;
        public byte bySensitivity;

        public NET_VCA_LEAVE_POSITION() {
        }
    }

    public static class NET_VCA_INTRUSION extends Structure {
        public HCNetSDK.NET_VCA_POLYGON struRegion;
        public short wDuration;
        public byte bySensitivity;
        public byte byRate;
        public byte byDetectionTarget;
        public byte byPriority;
        public byte byAlarmConfidence;
        public byte byRecordConfidence;

        public NET_VCA_INTRUSION() {
        }
    }

    public static class NET_VCA_TRAVERSE_PLANE extends Structure {
        public HCNetSDK.NET_VCA_LINE struPlaneBottom;
        public int dwCrossDirection;
        public byte bySensitivity;
        public byte byPlaneHeight;
        public byte byDetectionTarget;
        public byte[] byRes2 = new byte[37];

        public NET_VCA_TRAVERSE_PLANE() {
        }
    }

    public static class NET_VCA_EVENT_UNION extends Union {
        public int[] uLen = new int[23];
        public HCNetSDK.NET_VCA_TRAVERSE_PLANE struTraversePlane;
        public HCNetSDK.NET_VCA_AREA struArea;
        public HCNetSDK.NET_VCA_INTRUSION struIntrusion;
        public HCNetSDK.NET_VCA_LEAVE_POSITION struLeavePos;

        public NET_VCA_EVENT_UNION() {
        }
    }

    public static class NET_VCA_RULE_INFO extends Structure {
        public byte byRuleID;
        public byte byRes;
        public short wEventTypeEx;
        public byte[] byRuleName = new byte[32];
        public int dwEventType;
        public HCNetSDK.NET_VCA_EVENT_UNION uEventParam;

        public NET_VCA_RULE_INFO() {
        }

        public void read() {
            super.read();
            switch(this.wEventTypeEx) {
                case 1:
                    this.uEventParam.setType(HCNetSDK.NET_VCA_TRAVERSE_PLANE.class);
                    break;
                case 2:
                    this.uEventParam.setType(HCNetSDK.NET_VCA_AREA.class);
                    break;
                case 3:
                    this.uEventParam.setType(HCNetSDK.NET_VCA_AREA.class);
                    break;
                case 4:
                    this.uEventParam.setType(HCNetSDK.NET_VCA_INTRUSION.class);
                case 5:
                case 6:
                case 7:
                case 8:
                case 9:
                case 10:
                case 11:
                case 12:
                case 13:
                case 14:
                default:
                    break;
                case 15:
                    this.uEventParam.setType(HCNetSDK.NET_VCA_LEAVE_POSITION.class);
            }

            this.uEventParam.read();
        }

        public void write() {
            super.write();
            this.uEventParam.write();
        }
    }

    public static class NET_VCA_DEV_INFO extends Structure {
        public HCNetSDK.NET_DVR_IPADDR struDevIP;
        public short wPort;
        public byte byChannel;
        public byte byIvmsChannel;

        public NET_VCA_DEV_INFO() {
        }
    }

    public static class NET_VCA_TARGET_INFO extends Structure {
        public int dwID;
        public HCNetSDK.NET_VCA_RECT struRect;
        public byte[] byRes = new byte[4];

        public NET_VCA_TARGET_INFO() {
        }
    }

    public static class NET_VCA_RECT extends Structure {
        public float fX;
        public float fY;
        public float fWidth;
        public float fHeight;

        public NET_VCA_RECT() {
        }
    }

    public static class NET_DVR_SETUPALARM_PARAM_V50 extends Structure {
        public int dwSize;
        public byte byLevel;
        public byte byAlarmInfoType;
        public byte byRetAlarmTypeV40;
        public byte byRetDevInfoVersion;
        public byte byRetVQDAlarmType;
        public byte byFaceAlarmDetection;
        public byte bySupport;
        public byte byBrokenNetHttp;
        public short wTaskNo;
        public byte byDeployType;
        public byte bySubScription;
        public byte[] byRes1 = new byte[2];
        public byte byAlarmTypeURL;
        public byte byCustomCtrl;
        public byte[] byRes4 = new byte[128];

        public NET_DVR_SETUPALARM_PARAM_V50() {
        }
    }

    public static class NET_DVR_SETUPALARM_PARAM extends Structure {
        public int dwSize;
        public byte byLevel;
        public byte byAlarmInfoType;
        public byte byRetAlarmTypeV40;
        public byte byRetDevInfoVersion;
        public byte byRetVQDAlarmType;
        public byte byFaceAlarmDetection;
        public byte bySupport;
        public byte byBrokenNetHttp;
        public short wTaskNo;
        public byte byDeployType;
        public byte[] byRes1 = new byte[3];
        public byte byAlarmTypeURL;
        public byte byCustomCtrl;

        public NET_DVR_SETUPALARM_PARAM() {
        }
    }

    public static class RECV_ALARM extends Structure {
        public byte[] RecvBuffer = new byte[4000];

        public RECV_ALARM() {
        }
    }

    public static class NET_DVR_AUDIOENC_PROCESS_PARAM extends Structure {
        public Pointer in_buf;
        public Pointer out_buf;
        public int out_frame_size;
        public int g726enc_reset;
        public int g711_type;
        public int enc_mode;
        public int[] reserved = new int[16];

        public NET_DVR_AUDIOENC_PROCESS_PARAM() {
        }
    }

    public static class NET_DVR_AUDIOENC_INFO extends Structure {
        public int in_frame_size;
        public int[] reserved = new int[16];

        public NET_DVR_AUDIOENC_INFO() {
        }
    }

    public static class NET_DVR_AUDIODEC_PROCESS_PARAM extends Structure {
        public Pointer in_buf;
        public Pointer out_buf;
        public int in_data_size;
        public int proc_data_size;
        public int out_frame_size;
        public HCNetSDK.NET_DVR_AUDIODEC_INFO dec_info = new HCNetSDK.NET_DVR_AUDIODEC_INFO();
        public int g726dec_reset;
        public int g711_type;
        public int[] reserved = new int[16];

        public NET_DVR_AUDIODEC_PROCESS_PARAM() {
        }
    }

    public static class NET_DVR_AUDIODEC_INFO extends Structure {
        public int nchans;
        public int sample_rate;
        public int aacdec_profile;
        public int[] reserved = new int[16];

        public NET_DVR_AUDIODEC_INFO() {
        }
    }

    public static class NET_DVR_COMPRESSION_AUDIO extends Structure {
        public byte byAudioEncType;
        public byte byAudioSamplingRate;
        public byte byAudioBitRate;
        public byte[] byres = new byte[4];
        public byte bySupport;

        public NET_DVR_COMPRESSION_AUDIO() {
        }
    }

    public static class NET_DVR_POINT_FRAME extends Structure {
        public int xTop;
        public int yTop;
        public int xBottom;
        public int yBottom;
        public int bCounter;

        public NET_DVR_POINT_FRAME() {
        }
    }

    public static class NET_DVR_PACKET_INFO_EX extends Structure {
        public short wWidth;
        public short wHeight;
        public int dwTimeStamp;
        public int dwTimeStampHigh;
        public int dwYear;
        public int dwMonth;
        public int dwDay;
        public int dwHour;
        public int dwMinute;
        public int dwSecond;
        public int dwMillisecond;
        public int dwFrameNum;
        public int dwFrameRate;
        public int dwFlag;
        public int dwFilePos;
        public int dwPacketType;
        public int dwPacketSize;
        public Pointer pPacketBuffer;
        public byte[] byRes1 = new byte[4];
        public int dwPacketMode;
        public byte[] byRes2 = new byte[16];
        public int[] dwReserved = new int[6];

        public NET_DVR_PACKET_INFO_EX() {
        }
    }

    public static class NET_DVR_PIC_EXTRA_INFO_UNION extends Union {
        public byte[] byUnionLen = new byte[544];
        public HCNetSDK.NET_DVR_FACE_EXTRA_INFO struFaceExtraInfo;

        public NET_DVR_PIC_EXTRA_INFO_UNION() {
        }
    }

    public static class NET_DVR_FACE_EXTRA_INFO extends Union {
        public HCNetSDK.NET_VCA_RECT[] struVcaRect = new HCNetSDK.NET_VCA_RECT[30];
        public byte[] byRes = new byte[64];

        public NET_DVR_FACE_EXTRA_INFO() {
        }
    }

    public static class NET_DVR_FIND_PICTURE_V40 extends Structure {
        public byte[] sFileName = new byte[64];
        public HCNetSDK.NET_DVR_TIME struTime = new HCNetSDK.NET_DVR_TIME();
        public int dwFileSize;
        public byte[] sCardNum = new byte[40];
        public byte byPlateColor;
        public byte byVehicleLogo;
        public byte byFileType;
        public byte byRecogResult;
        public byte[] sLicense = new byte[16];
        public byte byEventSearchStatus;
        public byte[] byRes = new byte[75];
        public HCNetSDK.NET_DVR_PIC_EXTRA_INFO_UNION uPicExtraInfo;

        public NET_DVR_FIND_PICTURE_V40() {
        }
    }

    public static class NET_DVR_PIC_PARAM extends Structure {
        public Pointer pDVRFileName;
        public Pointer pSavedFileBuf;
        public int dwBufLen;
        public IntByReference lpdwRetLen;
        public HCNetSDK.NET_DVR_ADDRESS struAddr;
        public byte[] byRes = new byte[256];

        public NET_DVR_PIC_PARAM() {
        }
    }

    public static class NET_DVR_FIND_PICTURE_V50 extends Structure {
        public byte[] sFileName = new byte[64];
        public HCNetSDK.NET_DVR_TIME struTime = new HCNetSDK.NET_DVR_TIME();
        public int dwFileSize;
        public byte[] sCardNum = new byte[40];
        public byte byPlateColor;
        public byte byVehicleLogo;
        public byte byFileType;
        public byte byRecogResult;
        public byte[] sLicense = new byte[16];
        public byte byEventSearchStatus;
        public HCNetSDK.NET_DVR_ADDRESS struAddr;
        public byte[] byRes = new byte[256];
        public HCNetSDK.NET_DVR_PIC_EXTRA_INFO_UNION uPicExtraInfo;

        public NET_DVR_FIND_PICTURE_V50() {
        }
    }

    public static class NET_DVR_FIND_PICTURE extends Structure {
        public byte[] sFileName = new byte[64];
        public HCNetSDK.NET_DVR_TIME struTime;
        public int dwFileSize;
        public byte[] sCardNum = new byte[40];
        public byte byPlateColor;
        public byte byVehicleLogo;
        public byte byEventSearchStatus;
        public byte byRecogResult;
        public byte[] sLicense = new byte[16];
        public byte[] byRes = new byte[12];

        public NET_DVR_FIND_PICTURE() {
        }
    }

    public static class NET_DVR_FIND_PICTURE_PARAM extends Structure {
        public int dwSize;
        public int lChannel;
        public byte byFileType;
        public byte byNeedCard;
        public byte byProvince;
        public byte byEventType;
        public byte[] sCardNum = new byte[40];
        public HCNetSDK.NET_DVR_TIME struStartTime = new HCNetSDK.NET_DVR_TIME();
        public HCNetSDK.NET_DVR_TIME struStopTime = new HCNetSDK.NET_DVR_TIME();
        public int dwTrafficType;
        public int dwVehicleType;
        public int dwIllegalType;
        public byte byLaneNo;
        public byte bySubHvtType;
        public byte[] byRes2 = new byte[2];
        public byte[] sLicense = new byte[16];
        public byte byRegion;
        public byte byCountry;
        public byte byArea;
        public byte byISO8601;
        public byte cStartTimeDifferenceH;
        public byte cStartTimeDifferenceM;
        public byte cStopTimeDifferenceH;
        public byte cStopTimeDifferenceM;

        public NET_DVR_FIND_PICTURE_PARAM() {
        }
    }

    public static class NET_DVR_VOD_PARA extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_STREAM_INFO struIDInfo;
        public HCNetSDK.NET_DVR_TIME struBeginTime;
        public HCNetSDK.NET_DVR_TIME struEndTime;
        public HWND hWnd;
        public byte byDrawFrame;
        public byte byVolumeType;
        public byte byVolumeNum;
        public byte byStreamType;
        public int dwFileIndex;
        public byte byAudioFile;
        public byte byCourseFile;
        public byte byDownload;
        public byte byOptimalStreamType;
        public byte[] byRes2 = new byte[20];

        public NET_DVR_VOD_PARA() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("dwSize", "struIDInfo", "struBeginTime", "struEndTime", "hWnd", "byDrawFrame", "byVolumeType", "byVolumeNum", "byStreamType", "dwFileIndex", "byAudioFile", "byCourseFile", "byDownload", "byOptimalStreamType", "byRes2");
        }
    }

    public static class NET_DVR_PLAYCOND extends Structure {
        public int dwChannel;
        public HCNetSDK.NET_DVR_TIME struStartTime;
        public HCNetSDK.NET_DVR_TIME struStopTime;
        public byte byDrawFrame;
        public byte byStreamType;
        public byte[] byStreamID = new byte[32];
        public byte[] byRes = new byte[30];

        public NET_DVR_PLAYCOND() {
        }
    }

    public static class NET_DVR_FILECOND extends Structure {
        public int lChannel;
        public int dwFileType;
        public int dwIsLocked;
        public int dwUseCardNo;
        public byte[] sCardNumber = new byte[32];
        public HCNetSDK.NET_DVR_TIME struStartTime;
        public HCNetSDK.NET_DVR_TIME struStopTime;

        public NET_DVR_FILECOND() {
        }
    }

    public static class NET_DVR_FINDDATA_V50 extends Structure {
        public byte[] sFileName = new byte[100];
        public HCNetSDK.NET_DVR_TIME_SEARCH struStartTime = new HCNetSDK.NET_DVR_TIME_SEARCH();
        public HCNetSDK.NET_DVR_TIME_SEARCH struStopTime = new HCNetSDK.NET_DVR_TIME_SEARCH();
        public HCNetSDK.NET_DVR_ADDRESS struAddr = new HCNetSDK.NET_DVR_ADDRESS();
        public int dwFileSize;
        public byte byLocked;
        public byte byFileType;
        public byte byQuickSearch;
        public byte byStreamType;
        public int dwFileIndex;
        public byte[] sCardNum = new byte[32];
        public int dwTotalLenH;
        public int dwTotalLenL;
        public byte byBigFileType;
        public byte[] byRes = new byte[247];

        public NET_DVR_FINDDATA_V50() {
        }
    }

    public static class NET_DVR_ADDRESS extends Structure {
        public HCNetSDK.NET_DVR_IPADDR struIP = new HCNetSDK.NET_DVR_IPADDR();
        public short wPort;
        public byte[] byRes = new byte[2];

        public NET_DVR_ADDRESS() {
        }
    }

    public static class NET_DVR_TIME_SEARCH extends Structure {
        public short wYear;
        public byte byMonth;
        public byte byDay;
        public byte byHour;
        public byte byMinute;
        public byte bySecond;
        public byte cTimeDifferenceH;
        public byte cTimeDifferenceM;
        public byte byLocalOrUTC;
        public short wMillisecond;

        public NET_DVR_TIME_SEARCH() {
        }
    }

    public static class NET_DVR_FINDDATA_V40 extends Structure {
        public byte[] sFileName = new byte[100];
        public HCNetSDK.NET_DVR_TIME struStartTime = new HCNetSDK.NET_DVR_TIME();
        public HCNetSDK.NET_DVR_TIME struStopTime = new HCNetSDK.NET_DVR_TIME();
        public int dwFileSize;
        public byte[] sCardNum = new byte[32];
        public byte byLocked;
        public byte byFileType;
        public byte byQuickSearch;
        public byte byRes;
        public int dwFileIndex;
        public byte byStreamType;
        public byte[] byRes1 = new byte[127];

        public NET_DVR_FINDDATA_V40() {
        }
    }

    public static class NET_DVR_FILECOND_V50 extends Structure {
        public HCNetSDK.NET_DVR_STREAM_INFO struStreamID;
        public HCNetSDK.NET_DVR_TIME_SEARCH_COND struStartTime = new HCNetSDK.NET_DVR_TIME_SEARCH_COND();
        public HCNetSDK.NET_DVR_TIME_SEARCH_COND struStopTime = new HCNetSDK.NET_DVR_TIME_SEARCH_COND();
        public byte byFindType;
        public byte byDrawFrame;
        public byte byQuickSearch;
        public byte byStreamType;
        public int dwFileType;
        public int dwVolumeNum;
        public byte byIsLocked;
        public byte byNeedCard;
        public byte byOnlyAudioFile;
        public byte bySpecialFindInfoType;
        public byte[] szCardNum = new byte[32];
        public byte[] szWorkingDeviceGUID = new byte[16];
        public HCNetSDK.NET_DVR_SPECIAL_FINDINFO_UNION uSpecialFindInfo = new HCNetSDK.NET_DVR_SPECIAL_FINDINFO_UNION();
        public int dwTimeout;
        public byte[] byRes = new byte[252];

        public NET_DVR_FILECOND_V50() {
        }
    }

    public static class NET_DVR_ATMFINDINFO extends Structure {
        public byte byTransactionType;
        public byte[] byRes = new byte[3];
        public int dwTransationAmount;

        public NET_DVR_ATMFINDINFO() {
        }
    }

    public static class NET_DVR_SPECIAL_FINDINFO_UNION extends Union {
        public byte[] byLenth = new byte[8];
        public HCNetSDK.NET_DVR_ATMFINDINFO struATMFindInfo = new HCNetSDK.NET_DVR_ATMFINDINFO();

        public NET_DVR_SPECIAL_FINDINFO_UNION() {
        }
    }

    public static class NET_DVR_FILECOND_V40 extends Structure {
        public int lChannel;
        public int dwFileType;
        public int dwIsLocked;
        public int dwUseCardNo;
        public byte[] sCardNumber = new byte[32];
        public HCNetSDK.NET_DVR_TIME struStartTime = new HCNetSDK.NET_DVR_TIME();
        public HCNetSDK.NET_DVR_TIME struStopTime = new HCNetSDK.NET_DVR_TIME();
        public byte byDrawFrame;
        public byte byFindType;
        public byte byQuickSearch;
        public byte bySpecialFindInfoType;
        public int dwVolumeNum;
        public byte[] byWorkingDeviceGUID = new byte[16];
        public HCNetSDK.NET_DVR_SPECIAL_FINDINFO_UNION uSpecialFindInfo = new HCNetSDK.NET_DVR_SPECIAL_FINDINFO_UNION();
        public byte byStreamType;
        public byte byAudioFile;
        public byte[] byRes2 = new byte[30];

        public NET_DVR_FILECOND_V40() {
        }
    }

    public static class NET_DVR_FINDDATA_CARD extends Structure {
        public byte[] sFileName = new byte[100];
        public HCNetSDK.NET_DVR_TIME struStartTime;
        public HCNetSDK.NET_DVR_TIME struStopTime;
        public int dwFileSize;
        public byte[] sCardNum = new byte[32];

        public NET_DVR_FINDDATA_CARD() {
        }
    }

    public static class NET_DVR_FINDDATA_V30 extends Structure {
        public byte[] sFileName = new byte[100];
        public HCNetSDK.NET_DVR_TIME struStartTime;
        public HCNetSDK.NET_DVR_TIME struStopTime;
        public int dwFileSize;
        public byte[] sCardNum = new byte[32];
        public byte byLocked;
        public byte[] byRes = new byte[3];

        public NET_DVR_FINDDATA_V30() {
        }
    }

    public static class NET_DVR_FIND_DATA extends Structure {
        public byte[] sFileName = new byte[100];
        public HCNetSDK.NET_DVR_TIME struStartTime;
        public HCNetSDK.NET_DVR_TIME struStopTime;
        public int dwFileSize;

        public NET_DVR_FIND_DATA() {
        }
    }

    public static class NET_DVR_CARDINFO extends Structure {
        public int lChannel;
        public int lLinkMode;
        public String sMultiCastIP;
        public HCNetSDK.NET_DVR_DISPLAY_PARA struDisplayPara;

        public NET_DVR_CARDINFO() {
        }
    }

    public static class NET_DVR_DISPLAY_PARA extends Structure {
        public int bToScreen;
        public int bToVideoOut;
        public int nLeft;
        public int nTop;
        public int nWidth;
        public int nHeight;
        public int nReserved;

        public NET_DVR_DISPLAY_PARA() {
        }
    }

    public static class NET_DVR_ALARMER extends Structure {
        public byte byUserIDValid;
        public byte bySerialValid;
        public byte byVersionValid;
        public byte byDeviceNameValid;
        public byte byMacAddrValid;
        public byte byLinkPortValid;
        public byte byDeviceIPValid;
        public byte bySocketIPValid;
        public int lUserID;
        public byte[] sSerialNumber = new byte[48];
        public int dwDeviceVersion;
        public byte[] sDeviceName = new byte[32];
        public byte[] byMacAddr = new byte[6];
        public short wLinkPort;
        public byte[] sDeviceIP = new byte[128];
        public byte[] sSocketIP = new byte[128];
        public byte byIpProtocol;
        public byte[] byRes2 = new byte[11];

        public NET_DVR_ALARMER() {
        }
    }

    public static class NET_DVR_SDKABL extends Structure {
        public int dwMaxLoginNum;
        public int dwMaxRealPlayNum;
        public int dwMaxPlayBackNum;
        public int dwMaxAlarmChanNum;
        public int dwMaxFormatNum;
        public int dwMaxFileSearchNum;
        public int dwMaxLogSearchNum;
        public int dwMaxSerialNum;
        public int dwMaxUpgradeNum;
        public int dwMaxVoiceComNum;
        public int dwMaxBroadCastNum;
        public int[] dwRes = new int[10];

        public NET_DVR_SDKABL() {
        }
    }

    public static class NET_DVR_SDKSTATE extends Structure {
        public int dwTotalLoginNum;
        public int dwTotalRealPlayNum;
        public int dwTotalPlayBackNum;
        public int dwTotalAlarmChanNum;
        public int dwTotalFormatNum;
        public int dwTotalFileSearchNum;
        public int dwTotalLogSearchNum;
        public int dwTotalSerialNum;
        public int dwTotalUpgradeNum;
        public int dwTotalVoiceComNum;
        public int dwTotalBroadCastNum;
        public int[] dwRes = new int[10];

        public NET_DVR_SDKSTATE() {
        }
    }

    public static class NET_DVR_STREAM_RECORD_STATUS extends Structure {
        public int dwSize;
        public byte byRecord;
        public byte byOffLineRecord;
        public byte[] byRes1 = new byte[2];
        public int dwRelatedHD;
        public byte[] byRes2 = new byte[8];

        public NET_DVR_STREAM_RECORD_STATUS() {
        }
    }

    public static class NET_DVR_CLOUDSTORAGE_COND extends Structure {
        public int dwSize;
        public int dwChannel;
        public byte[] byRes1 = new byte[64];

        public NET_DVR_CLOUDSTORAGE_COND() {
        }
    }

    public static class NET_DVR_STREAM_INFO extends Structure {
        public int dwSize;
        public byte[] byID = new byte[32];
        public int dwChannel;
        public byte[] byRes = new byte[32];

        public NET_DVR_STREAM_INFO() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("dwSize", "byID", "dwChannel", "byRes");
        }
    }

    public static class NET_DVR_PREVIEWINFO extends Structure {
        public int lChannel;
        public int dwStreamType;
        public int dwLinkMode;
        public HWND hPlayWnd;
        public int bBlocked;
        public int bPassbackRecord;
        public byte byPreviewMode;
        public byte[] byStreamID = new byte[32];
        public byte byProtoType;
        public byte byRes1;
        public byte byVideoCodingType;
        public int dwDisplayBufNum;
        public byte byNPQMode;
        public byte[] byRes = new byte[215];

        public NET_DVR_PREVIEWINFO() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("lChannel", "dwStreamType", "dwLinkMode", "hPlayWnd", "bBlocked", "bPassbackRecord", "byPreviewMode", "byStreamID", "byProtoType", "byRes1", "byVideoCodingType", "dwDisplayBufNum", "byNPQMode", "byRes");
        }
    }

    public static class NET_DVR_CLIENTINFO extends Structure {
        public int lChannel;
        public int lLinkMode;
        public int hPlayWnd;
        public String sMultiCastIP;

        public NET_DVR_CLIENTINFO() {
        }
    }

    public static enum REALSOUND_MODE {
        NONE,
        MONOPOLIZE_MODE,
        SHARE_MODE;

        private REALSOUND_MODE() {
        }
    }

    public static enum CAPTURE_MODE {
        BMP_MODE,
        JPEG_MODE;

        private CAPTURE_MODE() {
        }
    }

    public static enum SEND_MODE {
        PTOPTCPMODE,
        PTOPUDPMODE,
        MULTIMODE,
        RTPMODE,
        RESERVEDMODE;

        private SEND_MODE() {
        }
    }

    public static enum DISPLAY_MODE {
        NORMALMODE,
        OVERLAYMODE;

        private DISPLAY_MODE() {
        }
    }

    public static enum _SDK_NET_ENV {
        LOCAL_AREA_NETWORK,
        WIDE_AREA_NETWORK;

        private _SDK_NET_ENV() {
        }
    }

    public static class NET_DVR_DEVICEINFO_V40 extends Structure {
        public HCNetSDK.NET_DVR_DEVICEINFO_V30 struDeviceV30 = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
        public byte bySupportLock;
        public byte byRetryLoginTime;
        public byte byPasswordLevel;
        public byte byRes1;
        public int dwSurplusLockTime;
        public byte byCharEncodeType;
        public byte bySupportDev5;
        public byte bySupport;
        public byte byLoginMode;
        public int dwOEMCode;
        public int iResidualValidity;
        public byte byResidualValidity;
        public byte bySingleStartDTalkChan;
        public byte bySingleDTalkChanNums;
        public byte byPassWordResetLevel;
        public byte bySupportStreamEncrypt;
        public byte byMarketType;
        public byte[] byRes2 = new byte[238];

        public NET_DVR_DEVICEINFO_V40() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("struDeviceV30", "bySupportLock", "byRetryLoginTime", "byPasswordLevel", "byRes1", "dwSurplusLockTime", "byCharEncodeType", "bySupportDev5", "bySupport", "byLoginMode", "dwOEMCode", "iResidualValidity", "byResidualValidity", "bySingleStartDTalkChan", "bySingleDTalkChanNums", "byPassWordResetLevel", "bySupportStreamEncrypt", "byMarketType", "byRes2");
        }
    }

    public static class NET_DVR_USER_LOGIN_INFO extends Structure {
        public byte[] sDeviceAddress = new byte[129];
        public byte byUseTransport;
        public short wPort;
        public byte[] sUserName = new byte[64];
        public byte[] sPassword = new byte[64];
        public HCNetSDK.FLoginResultCallBack cbLoginResult;
        public Pointer pUser;
        public boolean bUseAsynLogin;
        public byte byProxyType;
        public byte byUseUTCTime;
        public byte byLoginMode;
        public byte byHttps;
        public int iProxyID;
        public byte byVerifyMode;
        public byte[] byRes2 = new byte[119];

        public NET_DVR_USER_LOGIN_INFO() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("sDeviceAddress", "byUseTransport", "wPort", "sUserName", "sPassword", "cbLoginResult", "pUser", "bUseAsynLogin", "byProxyType", "byUseUTCTime", "byLoginMode", "byHttps", "iProxyID", "byVerifyMode", "byRes2");
        }
    }

    public interface FLoginResultCallBack extends Callback {
        int invoke(int var1, int var2, HCNetSDK.NET_DVR_DEVICEINFO_V30 var3, Pointer var4);
    }

    public static class NET_DVR_DEVICEINFO_V30 extends Structure {
        public byte[] sSerialNumber = new byte[48];
        public byte byAlarmInPortNum;
        public byte byAlarmOutPortNum;
        public byte byDiskNum;
        public byte byDVRType;
        public byte byChanNum;
        public byte byStartChan;
        public byte byAudioChanNum;
        public byte byIPChanNum;
        public byte byZeroChanNum;
        public byte byMainProto;
        public byte bySubProto;
        public byte bySupport;
        public byte bySupport1;
        public byte bySupport2;
        public short wDevType;
        public byte bySupport3;
        public byte byMultiStreamProto;
        public byte byStartDChan;
        public byte byStartDTalkChan;
        public byte byHighDChanNum;
        public byte bySupport4;
        public byte byLanguageType;
        public byte byVoiceInChanNum;
        public byte byStartVoiceInChanNo;
        public byte bySupport5;
        public byte bySupport6;
        public byte byMirrorChanNum;
        public short wStartMirrorChanNo;
        public byte bySupport7;
        public byte byRes2;

        public NET_DVR_DEVICEINFO_V30() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("byAlarmInPortNum", "byAlarmOutPortNum", "byAudioChanNum", "byChanNum", "byDVRType", "byDiskNum", "byHighDChanNum", "byIPChanNum", "byLanguageType", "byMainProto", "byMirrorChanNum", "byMultiStreamProto", "byRes2", "byStartChan", "byStartDChan", "byStartDTalkChan", "byStartVoiceInChanNo", "bySubProto", "bySupport", "bySupport1", "bySupport2", "bySupport3", "bySupport4", "bySupport5", "bySupport6", "bySupport7", "byVoiceInChanNum", "byZeroChanNum", "sSerialNumber", "wDevType", "wStartMirrorChanNo");
        }
    }

    public static class NET_DVR_DEVICEINFO extends Structure {
        public byte[] sSerialNumber = new byte[48];
        public byte byAlarmInPortNum;
        public byte byAlarmOutPortNum;
        public byte byDiskNum;
        public byte byDVRType;
        public byte byChanNum;
        public byte byStartChan;

        public NET_DVR_DEVICEINFO() {
        }
    }

    public static class NET_DVR_RTSPCFG extends Structure {
        public int dwSize;
        public short wPort;
        public byte[] byReserve = new byte[54];

        public NET_DVR_RTSPCFG() {
        }
    }

    public static class NET_DVR_PTZABSOLUTEEX_CFG extends Structure {
        public int dwSize;
        public HCNetSDK.NET_PTZ_INFO struPTZCtrl = new HCNetSDK.NET_PTZ_INFO();
        public int dwFocalLen;
        public float fHorizontalSpeed;
        public float fVerticalSpeed;
        public byte byZoomType;
        public byte[] byRes = new byte[123];

        public NET_DVR_PTZABSOLUTEEX_CFG() {
        }
    }

    public static class NET_DVR_PTZSCOPE extends Structure {
        public short wPanPosMin;
        public short wPanPosMax;
        public short wTiltPosMin;
        public short wTiltPosMax;
        public short wZoomPosMin;
        public short wZoomPosMax;

        public NET_DVR_PTZSCOPE() {
        }
    }

    public static class NET_DVR_PTZPOS extends Structure {
        public short wAction;
        public short wPanPos;
        public short wTiltPos;
        public short wZoomPos;

        public NET_DVR_PTZPOS() {
        }
    }

    public static class NET_DVR_COMPRESSIONCFG_NEW extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_COMPRESSION_INFO_EX struLowCompression;
        public HCNetSDK.NET_DVR_COMPRESSION_INFO_EX struEventCompression;

        public NET_DVR_COMPRESSIONCFG_NEW() {
        }
    }

    public static class NET_DVR_EMAILCFG extends Structure {
        public int dwSize;
        public byte[] sUserName = new byte[32];
        public byte[] sPassWord = new byte[32];
        public byte[] sFromName = new byte[32];
        public byte[] sFromAddr = new byte[48];
        public byte[] sToName1 = new byte[32];
        public byte[] sToName2 = new byte[32];
        public byte[] sToAddr1 = new byte[48];
        public byte[] sToAddr2 = new byte[48];
        public byte[] sEmailServer = new byte[32];
        public byte byServerType;
        public byte byUseAuthen;
        public byte byAttachment;
        public byte byMailinterval;

        public NET_DVR_EMAILCFG() {
        }
    }

    public static class NET_DVR_MATRIX_LOOP_DECINFO_V41 extends Structure {
        public int dwSize;
        public int dwPoolTime;
        public HCNetSDK.NET_DVR_MATRIX_CHAN_INFO_V41[] struchanConInfo = new HCNetSDK.NET_DVR_MATRIX_CHAN_INFO_V41[64];
        public byte byStreamEncrypt;
        public byte[] byRes = new byte[3];
        public byte[] sStreamPassword = new byte[12];

        public NET_DVR_MATRIX_LOOP_DECINFO_V41() {
        }
    }

    public static class NET_DVR_MATRIX_CHAN_INFO_V41 extends Structure {
        public byte byEnable;
        public byte byStreamMode;
        public byte[] byRes = new byte[2];
        public HCNetSDK.NET_DVR_DEC_STREAM_MODE uDecStreamMode = new HCNetSDK.NET_DVR_DEC_STREAM_MODE();

        public NET_DVR_MATRIX_CHAN_INFO_V41() {
        }
    }

    public static class NET_DVR_DEC_STREAM_MODE extends Union {
        public HCNetSDK.NET_DVR_DEC_STREAM_DEV_EX struDecStreamDev = new HCNetSDK.NET_DVR_DEC_STREAM_DEV_EX();
        public HCNetSDK.NET_DVR_PU_STREAM_URL struUrlInfo = new HCNetSDK.NET_DVR_PU_STREAM_URL();
        public HCNetSDK.NET_DVR_DEC_DDNS_DEV struDdnsDecInfo = new HCNetSDK.NET_DVR_DEC_DDNS_DEV();
        public byte[] byRes = new byte[300];

        public NET_DVR_DEC_STREAM_MODE() {
        }
    }

    public static class NET_DVR_DEC_DDNS_DEV extends Structure {
        public HCNetSDK.NET_DVR_DEV_DDNS_INFO struDdnsInfo;
        public HCNetSDK.NET_DVR_STREAM_MEDIA_SERVER struMediaServer;

        public NET_DVR_DEC_DDNS_DEV() {
        }
    }

    public static class NET_DVR_DEC_STREAM_DEV_EX extends Structure {
        public HCNetSDK.NET_DVR_STREAM_MEDIA_SERVER struStreamMediaSvrCfg = new HCNetSDK.NET_DVR_STREAM_MEDIA_SERVER();
        public HCNetSDK.NET_DVR_DEV_CHAN_INFO_EX struDevChanInfo = new HCNetSDK.NET_DVR_DEV_CHAN_INFO_EX();

        public NET_DVR_DEC_STREAM_DEV_EX() {
        }
    }

    public static class NET_DVR_DEV_DDNS_INFO extends Structure {
        public byte[] byDevAddress = new byte[64];
        public byte byTransProtocol;
        public byte byTransMode;
        public byte byDdnsType;
        public byte byRes1;
        public byte[] byDdnsAddress = new byte[64];
        public short wDdnsPort;
        public byte byChanType;
        public byte byFactoryType;
        public int dwChannel;
        public byte[] byStreamId = new byte[32];
        public byte[] sUserName = new byte[32];
        public byte[] sPassword = new byte[16];
        public short wDevPort;
        public byte[] byRes2 = new byte[2];

        public NET_DVR_DEV_DDNS_INFO() {
        }
    }

    public static class NET_DVR_STREAM_MEDIA_SERVER extends Structure {
        public byte byValid;
        public byte[] byRes1 = new byte[3];
        public byte[] byAddress = new byte[64];
        public short wDevPort;
        public byte byTransmitType;
        public byte[] byRes2 = new byte[5];

        public NET_DVR_STREAM_MEDIA_SERVER() {
        }
    }

    public static class NET_DVR_DEV_CHAN_INFO_EX extends Structure {
        public byte byChanType;
        public byte[] byStreamId = new byte[32];
        public byte[] byRes1 = new byte[3];
        public int dwChannel;
        public byte[] byRes2 = new byte[24];
        public byte[] byAddress = new byte[64];
        public short wDVRPort;
        public byte byChannel;
        public byte byTransProtocol;
        public byte byTransMode;
        public byte byFactoryType;
        public byte byDeviceType;
        public byte byDispChan;
        public byte bySubDispChan;
        public byte byResolution;
        public byte[] byRes = new byte[2];
        public byte[] sUserName = new byte[32];
        public byte[] sPassword = new byte[16];

        public NET_DVR_DEV_CHAN_INFO_EX() {
        }
    }

    public static class NET_DVR_OSD_INFO extends Structure {
        public byte byEnabled = 1;
        public byte byEnabledFlash = 0;
        public byte byFontSize = 1;
        public byte byTransparent = 0;
        public HCNetSDK.NET_DVR_RGB_COLOR struColor = new HCNetSDK.NET_DVR_RGB_COLOR();
        public short wCoordinateX = 0;
        public short wCoordinateY = 0;
        public byte[] byContent = new byte[256];
        public byte[] byRes = new byte[32];

        public NET_DVR_OSD_INFO() {
        }
    }

    public static class NET_DVR_SUBWND_DECODE_OSD extends Structure {
        public int dwSize = 0;
        public int dwSubWndNo = 0;
        public int dwOSDNums = 0;
        public HCNetSDK.NET_DVR_OSD_INFO[] struOSDList = new HCNetSDK.NET_DVR_OSD_INFO[8];
        public byte[] byRes = new byte[32];

        public NET_DVR_SUBWND_DECODE_OSD() {
        }
    }

    public static class NET_DVR_WALLSCENECFG extends Structure {
        public int dwSize;
        public byte[] sSceneName = new byte[32];
        public byte byEnable;
        public byte bySceneIndex;
        public byte[] byRes = new byte[78];

        public NET_DVR_WALLSCENECFG() {
        }
    }

    public static class NET_DVR_PLAN_CFG extends Structure {
        public int dwSize;
        public byte byValid;
        public byte byWorkMode;
        public byte byWallNo;
        public byte byPlanNo;
        public byte[] byPlanName = new byte[32];
        public HCNetSDK.NET_DVR_TIME_EX struTime;
        public HCNetSDK.NET_DVR_CYCLE_TIME[] struTimeCycle = new HCNetSDK.NET_DVR_CYCLE_TIME[7];
        public int dwWorkCount;
        public HCNetSDK.NET_DVR_PLAN_INFO[] strPlanEntry = new HCNetSDK.NET_DVR_PLAN_INFO[32];
        public int dwPlanNo;
        public byte[] byRes2 = new byte[60];

        public NET_DVR_PLAN_CFG() {
        }
    }

    public static class NET_DVR_CYCLE_TIME extends Structure {
        public byte byValid;
        public byte[] byRes = new byte[3];
        public HCNetSDK.NET_DVR_TIME_EX struTime = new HCNetSDK.NET_DVR_TIME_EX();

        public NET_DVR_CYCLE_TIME() {
        }
    }

    public static class NET_DVR_PLAN_INFO extends Structure {
        public byte byValid;
        public byte byType;
        public short wLayoutNo;
        public byte byScreenStyle;
        public byte byBaseMapType;
        public byte[] byRes1 = new byte[2];
        public int dwDelayTime;
        public int dwSerialNo;
        public int dwBaseMapWndNo;
        public int dwBaseMapNo;
        public byte[] byRes2 = new byte[20];

        public NET_DVR_PLAN_INFO() {
        }
    }

    public static class NET_DVR_PLAN_LIST extends Structure {
        public int dwSize;
        public int dwPlanNums;
        public Pointer pBuffer;
        public byte byWallNo;
        public byte[] byRes1 = new byte[2];
        public int dwBufLen;
        public byte[] byRes2 = new byte[64];

        public NET_DVR_PLAN_LIST() {
        }
    }

    public static class NET_DVR_WALLWINPARAM extends Structure {
        public int dwSize;
        public byte byTransparency;
        public byte byWinMode;
        public byte byEnableSpartan;
        public byte byDecResource;
        public byte byWndShowMode;
        public byte byEnabledFeature;
        public byte byFeatureMode;
        public byte byRes1;
        public int dwAmplifyingSubWndNo;
        public byte byWndTopKeep;
        public byte byWndOpenKeep;
        public byte[] byRes = new byte[22];

        public NET_DVR_WALLWINPARAM() {
        }
    }

    public static class VIDEOWALLWINDOWPOSITION_ARRAY extends Structure {
        public HCNetSDK.NET_DVR_VIDEOWALLWINDOWPOSITION[] strVideoWinPostion;

        public VIDEOWALLWINDOWPOSITION_ARRAY(int iLen) {
            this.strVideoWinPostion = new HCNetSDK.NET_DVR_VIDEOWALLWINDOWPOSITION[iLen];
        }
    }

    public static class NET_DVR_VIDEOWALLWINDOWPOSITION extends Structure {
        public int dwSize;
        public byte byEnable;
        public byte byWndOperateMode;
        public byte[] byRes1 = new byte[6];
        public int dwWindowNo;
        public int dwLayerIndex;
        public HCNetSDK.NET_DVR_RECTCFG_EX struRect;
        public HCNetSDK.NET_DVR_RECTCFG_EX struResolution;
        public int dwXCoordinate;
        public int dwYCoordinate;
        public byte[] byRes2 = new byte[36];

        public NET_DVR_VIDEOWALLWINDOWPOSITION() {
        }
    }

    public static class NET_DVR_RECTCFG_EX extends Structure {
        public int dwXCoordinate;
        public int dwYCoordinate;
        public int dwWidth;
        public int dwHeight;
        public byte[] byRes = new byte[4];

        public NET_DVR_RECTCFG_EX() {
        }
    }

    public static class NET_DVR_OUT_PARAM extends Structure {
        public HCNetSDK.NET_DVR_BUF_INFO struOutBuf;
        public Pointer lpStatusList;
        public byte[] byRes = new byte[32];

        public NET_DVR_OUT_PARAM() {
        }
    }

    public static class NET_DVR_IN_PARAM extends Structure {
        public HCNetSDK.NET_DVR_BUF_INFO struCondBuf;
        public HCNetSDK.NET_DVR_BUF_INFO struInParamBuf;
        public int dwRecvTimeout;
        public byte[] byRes = new byte[32];

        public NET_DVR_IN_PARAM() {
        }
    }

    public static class NET_DVR_BUF_INFO extends Structure {
        public Pointer pBuf;
        public int nLen;

        public NET_DVR_BUF_INFO() {
        }
    }

    public static class NET_DVR_SCENE_CONTROL_INFO extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_VIDEO_WALL_INFO struVideoWallInfo;
        public int dwCmd;
        public byte[] byRes = new byte[4];

        public NET_DVR_SCENE_CONTROL_INFO() {
        }
    }

    public static class NET_DVR_VIDEO_WALL_INFO extends Structure {
        public int dwSize;
        public int dwWindowNo;
        public int dwSceneNo;
        public int dwDestWallNo;
        public int dwDestSceneNo;
        public byte[] byRes = new byte[12];

        public NET_DVR_VIDEO_WALL_INFO() {
        }
    }

    public static class NET_DVR_MATRIX_PASSIVEMODE extends Structure {
        public short wTransProtol;
        public short wPassivePort;
        public HCNetSDK.NET_DVR_IPADDR struMcastIP;
        public byte byStreamType;
        public byte[] res = new byte[7];

        public NET_DVR_MATRIX_PASSIVEMODE() {
        }
    }

    public static class NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS extends Structure {
        public int dwSize;
        public int dwCurMediaFileLen;
        public int dwCurMediaFilePosition;
        public int dwCurMediaFileDuration;
        public int dwCurPlayTime;
        public int dwCurMediaFIleFrames;
        public int dwCurDataType;
        public byte[] res = new byte[72];

        public NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS() {
        }
    }

    public static class NET_DVR_MATRIX_DEC_REMOTE_PLAY_CONTROL extends Structure {
        public int dwSize;
        public int dwPlayCmd;
        public int dwCmdParam;

        public NET_DVR_MATRIX_DEC_REMOTE_PLAY_CONTROL() {
        }
    }

    public static class NET_DVR_MATRIX_DEC_REMOTE_PLAY extends Structure {
        public int dwSize;
        public byte[] sDVRIP = new byte[16];
        public short wDVRPort;
        public byte byChannel;
        public byte byReserve;
        public byte[] sUserName = new byte[32];
        public byte[] sPassword = new byte[16];
        public int dwPlayMode;
        public HCNetSDK.NET_DVR_TIME StartTime;
        public HCNetSDK.NET_DVR_TIME StopTime;
        public byte[] sFileName = new byte[128];

        public NET_DVR_MATRIX_DEC_REMOTE_PLAY() {
        }
    }

    public static class NET_DVR_MATRIX_TRAN_CHAN_CONFIG extends Structure {
        public int dwSize;
        public byte by232IsDualChan;
        public byte by485IsDualChan;
        public byte[] res = new byte[2];
        public HCNetSDK.NET_DVR_MATRIX_TRAN_CHAN_INFO[] struTranInfo = new HCNetSDK.NET_DVR_MATRIX_TRAN_CHAN_INFO[64];

        public NET_DVR_MATRIX_TRAN_CHAN_CONFIG() {
        }
    }

    public static class NET_DVR_MATRIX_TRAN_CHAN_INFO extends Structure {
        public byte byTranChanEnable;
        public byte byLocalSerialDevice;
        public byte byRemoteSerialDevice;
        public byte res1;
        public byte[] sRemoteDevIP = new byte[16];
        public short wRemoteDevPort;
        public byte[] res2 = new byte[2];
        public HCNetSDK.TTY_CONFIG RemoteSerialDevCfg;

        public NET_DVR_MATRIX_TRAN_CHAN_INFO() {
        }
    }

    public static class TTY_CONFIG extends Structure {
        public byte baudrate;
        public byte databits;
        public byte stopbits;
        public byte parity;
        public byte flowcontrol;
        public byte[] res = new byte[3];

        public TTY_CONFIG() {
        }
    }

    public static class NET_DVR_MATRIX_LOCAL_HOST_INFO extends Structure {
        public int dwSize;
        public int dwLocalHostProperty;
        public int dwIsIsolated;
        public int dwLocalMatrixHostPort;
        public byte[] byLocalMatrixHostUsrName = new byte[32];
        public byte[] byLocalMatrixHostPasswd = new byte[16];
        public int dwLocalMatrixCtrlMedia;
        public byte[] sMatrixCenterIP = new byte[16];
        public int dwMatrixCenterPort;
        public byte[] byMatrixCenterUsrName = new byte[32];
        public byte[] byMatrixCenterPasswd = new byte[16];

        public NET_DVR_MATRIX_LOCAL_HOST_INFO() {
        }
    }

    public static class NET_DVR_MATRIX_LOOP_PLAY_SET extends Structure {
        public int dwSize;
        public int dwLocalDispChanNum;
        public int dwGlobalDispChanNum;
        public int dwCycTimeInterval;

        public NET_DVR_MATRIX_LOOP_PLAY_SET() {
        }
    }

    public static class NET_DVR_MATRIX_PREVIEW_DISP_CHAN extends Structure {
        public int dwSize;
        public int dwGlobalDispChanNum;
        public int dwLocalDispChanNum;

        public NET_DVR_MATRIX_PREVIEW_DISP_CHAN() {
        }
    }

    public static class NET_DVR_MATRIX_ROW_COLUMN_LINK extends Structure {
        public int dwSize;
        public int dwRowNum;
        public byte[] sSurvChanName = new byte[128];
        public int dwSurvNum;
        public int dwGlobalDispChanNum;
        public int dwLocalDispChanNum;
        public int dwTimeSel;
        public HCNetSDK.NET_DVR_TIME StartTime;
        public HCNetSDK.NET_DVR_TIME StopTime;
        public byte[] sFileName = new byte[128];

        public NET_DVR_MATRIX_ROW_COLUMN_LINK() {
        }
    }

    public static class NET_DVR_MATRIX_GLOBAL_COLUMN_ELEMENT extends Structure {
        public int dwConflictTag;
        public int dwConflictGloDispChan;
        public HCNetSDK.NET_DVR_MATRIX_COLUMN_ELEMENT struColumnInfo;

        public NET_DVR_MATRIX_GLOBAL_COLUMN_ELEMENT() {
        }
    }

    public static class NET_DVR_MATRIX_COLUMN_ELEMENT extends Structure {
        public int dwLocalDispChanNum;
        public int dwGlobalDispChanNum;
        public int dwRes;

        public NET_DVR_MATRIX_COLUMN_ELEMENT() {
        }
    }

    public static class NET_DVR_MATRIX_ROW_INDEX extends Structure {
        public byte[] sSurvChanName = new byte[128];
        public int dwRowNum;

        public NET_DVR_MATRIX_ROW_INDEX() {
        }
    }

    public static class NET_DVR_MATRIX_ROW_ELEMENT extends Structure {
        public byte[] sSurvChanName = new byte[128];
        public int dwRowNum;
        public HCNetSDK.NET_DVR_MATRIX_DECINFO struDecChanInfo;

        public NET_DVR_MATRIX_ROW_ELEMENT() {
        }
    }

    public static class NET_DVR_MATRIX_LOOP_DECINFO extends Structure {
        public int dwSize;
        public int dwPoolTime;
        public HCNetSDK.NET_DVR_MATRIX_DECCHANINFO[] struchanConInfo = new HCNetSDK.NET_DVR_MATRIX_DECCHANINFO[16];

        public NET_DVR_MATRIX_LOOP_DECINFO() {
        }
    }

    public static class NET_DVR_MATRIX_DECCHANINFO extends Structure {
        public int dwEnable;
        public HCNetSDK.NET_DVR_MATRIX_DECINFO struDecChanInfo;

        public NET_DVR_MATRIX_DECCHANINFO() {
        }
    }

    public static class NET_DVR_MATRIX_DEC_CHAN_INFO extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_MATRIX_DECINFO struDecChanInfo;
        public int dwDecState;
        public HCNetSDK.NET_DVR_TIME StartTime;
        public HCNetSDK.NET_DVR_TIME StopTime;
        public byte[] sFileName = new byte[128];

        public NET_DVR_MATRIX_DEC_CHAN_INFO() {
        }
    }

    public static class NET_DVR_MATRIX_DEC_CHAN_STATUS extends Structure {
        public int dwSize;
        public int dwIsLinked;
        public int dwStreamCpRate;
        public byte[] cRes = new byte[64];

        public NET_DVR_MATRIX_DEC_CHAN_STATUS() {
        }
    }

    public static class NET_DVR_MATRIX_DYNAMIC_DEC extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_MATRIX_DECINFO struDecChanInfo;

        public NET_DVR_MATRIX_DYNAMIC_DEC() {
        }
    }

    public static class NET_DVR_MATRIX_DECINFO extends Structure {
        public byte[] sDVRIP = new byte[16];
        public short wDVRPort;
        public byte byChannel;
        public byte byTransProtocol;
        public byte byTransMode;
        public byte[] byRes = new byte[3];
        public byte[] sUserName = new byte[32];
        public byte[] sPassword = new byte[16];

        public NET_DVR_MATRIX_DECINFO() {
        }
    }

    public static class NET_DVR_NETCFG_OTHER extends Structure {
        public int dwSize;
        public byte[] sFirstDNSIP = new byte[16];
        public byte[] sSecondDNSIP = new byte[16];
        public byte[] sRes = new byte[32];

        public NET_DVR_NETCFG_OTHER() {
        }
    }

    public static class NET_DVR_CRUISE_RET extends Structure {
        public HCNetSDK.NET_DVR_CRUISE_POINT[] struCruisePoint = new HCNetSDK.NET_DVR_CRUISE_POINT[32];

        public NET_DVR_CRUISE_RET() {
        }
    }

    public static class NET_DVR_CRUISE_POINT extends Structure {
        public byte PresetNum;
        public byte Dwell;
        public byte Speed;
        public byte Reserve;

        public NET_DVR_CRUISE_POINT() {
        }
    }

    public static class NET_DVR_NFSCFG extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_SINGLE_NFS[] struNfsDiskParam = new HCNetSDK.NET_DVR_SINGLE_NFS[8];

        public NET_DVR_NFSCFG() {
        }
    }

    public static class NET_DVR_SINGLE_NFS extends Structure {
        public byte[] sNfsHostIPAddr = new byte[16];
        public byte[] sNfsDirectory = new byte[128];

        public NET_DVR_SINGLE_NFS() {
        }
    }

    public static class NET_DVR_NETAPPCFG extends Structure {
        public int dwSize;
        public byte[] sDNSIp = new byte[16];
        public HCNetSDK.NET_DVR_NTPPARA struNtpClientParam;
        public HCNetSDK.NET_DVR_DDNSPARA struDDNSClientParam;
        public byte[] res = new byte[464];

        public NET_DVR_NETAPPCFG() {
        }
    }

    public static class NET_DVR_EMAILPARA extends Structure {
        public byte[] sUsername = new byte[64];
        public byte[] sPassword = new byte[64];
        public byte[] sSmtpServer = new byte[64];
        public byte[] sPop3Server = new byte[64];
        public byte[] sMailAddr = new byte[64];
        public byte[] sEventMailAddr1 = new byte[64];
        public byte[] sEventMailAddr2 = new byte[64];
        public byte[] res = new byte[16];

        public NET_DVR_EMAILPARA() {
        }
    }

    public static class NET_DVR_DDNSPARA_V30 extends Structure {
        public byte byEnableDDNS;
        public byte byHostIndex;
        public byte[] byRes1 = new byte[2];
        public HCNetSDK.NET_DVR_DDNS[] struDDNS = new HCNetSDK.NET_DVR_DDNS[10];
        public byte[] byRes2 = new byte[16];

        public NET_DVR_DDNSPARA_V30() {
        }
    }

    public static class NET_DVR_DDNS extends Structure {
        public byte[] sUsername = new byte[32];
        public byte[] sPassword = new byte[16];
        public byte[] sDomainName = new byte[64];
        public byte[] sServerName = new byte[64];
        public short wDDNSPort;
        public byte[] byRes = new byte[10];

        public NET_DVR_DDNS() {
        }
    }

    public static class NET_DVR_DDNSPARA_EX extends Structure {
        public byte byHostIndex;
        public byte byEnableDDNS;
        public short wDDNSPort;
        public byte[] sUsername = new byte[32];
        public byte[] sPassword = new byte[16];
        public byte[] sDomainName = new byte[64];
        public byte[] sServerName = new byte[64];
        public byte[] byRes = new byte[16];

        public NET_DVR_DDNSPARA_EX() {
        }
    }

    public static class NET_DVR_DDNSPARA extends Structure {
        public byte[] sUsername = new byte[32];
        public byte[] sPassword = new byte[16];
        public byte[] sDomainName = new byte[64];
        public byte byEnableDDNS;
        public byte[] res = new byte[15];

        public NET_DVR_DDNSPARA() {
        }
    }

    public static class NET_DVR_NTPPARA extends Structure {
        public byte[] sNTPServer = new byte[64];
        public short wInterval;
        public byte byEnableNTP;
        public byte cTimeDifferenceH;
        public byte cTimeDifferenceM;
        public byte res1;
        public short wNtpPort;
        public byte[] res2 = new byte[8];

        public NET_DVR_NTPPARA() {
        }
    }

    public static class NET_DVR_AUXOUTCFG extends Structure {
        public int dwSize;
        public int dwAlarmOutChan;
        public int dwAlarmChanSwitchTime;
        public int[] dwAuxSwitchTime = new int[4];
        public byte[][] byAuxOrder = new byte[4][16];

        public NET_DVR_AUXOUTCFG() {
        }
    }

    public static class NET_DVR_JPEGPARA extends Structure {
        public short wPicSize;
        public short wPicQuality;

        public NET_DVR_JPEGPARA() {
        }
    }

    public static class NET_DVR_ZONEANDDST extends Structure {
        public int dwSize;
        public byte[] byRes1 = new byte[16];
        public int dwEnableDST;
        public byte byDSTBias;
        public byte[] byRes2 = new byte[3];
        public HCNetSDK.NET_DVR_TIMEPOINT struBeginPoint;
        public HCNetSDK.NET_DVR_TIMEPOINT struEndPoint;

        public NET_DVR_ZONEANDDST() {
        }
    }

    public static class NET_DVR_TIMEPOINT extends Structure {
        public int dwMonth;
        public int dwWeekNo;
        public int dwWeekDate;
        public int dwHour;
        public int dwMin;

        public NET_DVR_TIMEPOINT() {
        }
    }

    public static class NET_DVR_CRUISE_PARA extends Structure {
        public int dwSize;
        public byte[] byPresetNo = new byte[32];
        public byte[] byCruiseSpeed = new byte[32];
        public short[] wDwellTime = new short[32];
        public byte[] byEnableThisCruise;
        public byte[] res = new byte[15];

        public NET_DVR_CRUISE_PARA() {
        }
    }

    public static class NET_DVR_EMAILCFG_V30 extends Structure {
        public int dwSize;
        public byte[] sAccount = new byte[32];
        public byte[] sPassword = new byte[32];
        public HCNetSDK.NET_DVR_SENDER struSender;
        public byte[] sSmtpServer = new byte[48];
        public byte[] sPop3Server = new byte[48];
        public HCNetSDK.NET_DVRRECEIVER[] struReceiver = new HCNetSDK.NET_DVRRECEIVER[3];
        public byte byAttachment;
        public byte bySmtpServerVerify;
        public byte byMailInterval;
        public byte[] res = new byte[77];

        public NET_DVR_EMAILCFG_V30() {
        }
    }

    public static class NET_DVRRECEIVER extends Structure {
        public byte[] sName = new byte[32];
        public byte[] sAddress = new byte[48];

        public NET_DVRRECEIVER() {
        }
    }

    public static class NET_DVR_SENDER extends Structure {
        public byte[] sName = new byte[32];
        public byte[] sAddress = new byte[48];

        public NET_DVR_SENDER() {
        }
    }

    public static class NET_DVR_SHOWSTRING extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_SHOWSTRINGINFO[] struStringInfo = new HCNetSDK.NET_DVR_SHOWSTRINGINFO[4];

        public NET_DVR_SHOWSTRING() {
        }
    }

    public static class NET_DVR_SHOWSTRING_EX extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_SHOWSTRINGINFO[] struStringInfo = new HCNetSDK.NET_DVR_SHOWSTRINGINFO[8];

        public NET_DVR_SHOWSTRING_EX() {
        }
    }

    public static class NET_DVR_SHOWSTRING_V30 extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_SHOWSTRINGINFO[] struStringInfo = new HCNetSDK.NET_DVR_SHOWSTRINGINFO[8];

        public NET_DVR_SHOWSTRING_V30() {
        }
    }

    public static class NET_DVR_SHOWSTRINGINFO extends Structure {
        public short wShowString;
        public short wStringSize;
        public short wShowStringTopLeftX;
        public short wShowStringTopLeftY;
        public byte[] sString = new byte[44];

        public NET_DVR_SHOWSTRINGINFO() {
        }
    }

    public static class NET_DVR_DECSTATUS extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_DECCHANSTATUS[] struDecState = new HCNetSDK.NET_DVR_DECCHANSTATUS[4];

        public NET_DVR_DECSTATUS() {
        }
    }

    public static class NET_DVR_DECCHANSTATUS extends Structure {
        public int dwWorkType;
        public byte[] sDVRIP = new byte[16];
        public short wDVRPort;
        public byte byChannel;
        public byte byLinkMode;
        public int dwLinkType;
        public byte[] sUserName = new byte[32];
        public byte[] sPassword = new byte[16];
        public byte[] cReserve = new byte[52];

        public NET_DVR_DECCHANSTATUS() {
        }

        public static class objectInfo extends Union {
            public objectInfo() {
            }

            public static class timeInfo extends Structure {
                public int dwChannel;
                public byte[] sUserName = new byte[32];
                public byte[] sPassword = new byte[16];
                public HCNetSDK.NET_DVR_TIME struStartTime;
                public HCNetSDK.NET_DVR_TIME struStopTime;

                public timeInfo() {
                }
            }

            public static class fileInfo extends Structure {
                public byte[] fileName = new byte[100];

                public fileInfo() {
                }
            }

            public static class userInfo extends Structure {
                public byte[] sUserName = new byte[32];
                public byte[] sPassword = new byte[16];
                public byte[] cReserve = new byte[52];

                public userInfo() {
                }
            }
        }
    }

    public static class NET_DVR_PLAYREMOTEFILE extends Structure {
        public int dwSize;
        public byte[] sDecoderIP = new byte[16];
        public short wDecoderPort;
        public short wLoadMode;
        public byte[] byFile = new byte[100];

        public NET_DVR_PLAYREMOTEFILE() {
        }

        public static class mode_size extends Union {
            public byte[] byFile = new byte[100];

            public mode_size() {
            }

            public static class bytime extends Structure {
                public int dwChannel;
                public byte[] sUserName = new byte[32];
                public byte[] sPassword = new byte[16];
                public HCNetSDK.NET_DVR_TIME struStartTime;
                public HCNetSDK.NET_DVR_TIME struStopTime;

                public bytime() {
                }
            }
        }
    }

    public static class NET_DVR_PORTCFG extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_PORTINFO[] struTransPortInfo = new HCNetSDK.NET_DVR_PORTINFO[2];

        public NET_DVR_PORTCFG() {
        }
    }

    public static class NET_DVR_PORTINFO extends Structure {
        public int dwEnableTransPort;
        public byte[] sDecoderIP = new byte[16];
        public short wDecoderPort;
        public short wDVRTransPort;
        public byte[] cReserve = new byte[4];

        public NET_DVR_PORTINFO() {
        }
    }

    public static class NET_DVR_DECCFG extends Structure {
        public int dwSize;
        public int dwDecChanNum;
        public HCNetSDK.NET_DVR_DECINFO[] struDecInfo = new HCNetSDK.NET_DVR_DECINFO[4];

        public NET_DVR_DECCFG() {
        }
    }

    public static class NET_DVR_DECINFO extends Structure {
        public byte byPoolChans;
        public HCNetSDK.NET_DVR_DECCHANINFO[] struchanConInfo = new HCNetSDK.NET_DVR_DECCHANINFO[4];
        public byte byEnablePoll;
        public byte byPoolTime;

        public NET_DVR_DECINFO() {
        }
    }

    public static class NET_DVR_DECCHANINFO extends Structure {
        public byte[] sDVRIP = new byte[16];
        public short wDVRPort;
        public byte[] sUserName = new byte[32];
        public byte[] sPassword = new byte[16];
        public byte byChannel;
        public byte byLinkMode;
        public byte byLinkType;

        public NET_DVR_DECCHANINFO() {
        }
    }

    public static class NET_DVR_DECODERSTATE extends Structure {
        public byte[] byEncoderIP = new byte[16];
        public byte[] byEncoderUser = new byte[16];
        public byte[] byEncoderPasswd = new byte[16];
        public byte byEncoderChannel;
        public byte bySendMode;
        public short wEncoderPort;
        public int dwConnectState;
        public byte[] reservedData = new byte[4];

        public NET_DVR_DECODERSTATE() {
        }
    }

    public static class NET_DVR_DECODERINFO extends Structure {
        public byte[] byEncoderIP = new byte[16];
        public byte[] byEncoderUser = new byte[16];
        public byte[] byEncoderPasswd = new byte[16];
        public byte bySendMode;
        public byte byEncoderChannel;
        public short wEncoderPort;
        public byte[] reservedData = new byte[4];

        public NET_DVR_DECODERINFO() {
        }
    }

    public static class NET_DVR_FRAMEFORMAT_EX extends Structure {
        public int dwSize;
        public byte[] sATMIP = new byte[16];
        public int dwATMType;
        public int dwInputMode;
        public int dwFrameSignBeginPos;
        public int dwFrameSignLength;
        public byte[] byFrameSignContent = new byte[12];
        public int dwCardLengthInfoBeginPos;
        public int dwCardLengthInfoLength;
        public int dwCardNumberInfoBeginPos;
        public int dwCardNumberInfoLength;
        public int dwBusinessTypeBeginPos;
        public int dwBusinessTypeLength;
        public HCNetSDK.NET_DVR_FRAMETYPECODE[] frameTypeCode = new HCNetSDK.NET_DVR_FRAMETYPECODE[10];
        public byte[] sFTPIP = new byte[16];
        public byte[] byFtpUsername = new byte[32];
        public byte[] byFtpPasswd = new byte[16];
        public byte[] sDirName = new byte[32];
        public int dwATMSrvType;
        public int dwTimeSpace;
        public HCNetSDK.NET_DVR_FTPTYPECODE[] sFtpTypeCodeOp = new HCNetSDK.NET_DVR_FTPTYPECODE[300];
        public int dwADPlay;
        public int dwNewPort;

        public NET_DVR_FRAMEFORMAT_EX() {
        }
    }

    public static class NET_DVR_FTPTYPECODE extends Structure {
        public byte[] sFtpType = new byte[32];
        public byte[] sFtpCode = new byte[8];

        public NET_DVR_FTPTYPECODE() {
        }
    }

    public static class NET_DVR_FRAMEFORMAT extends Structure {
        public int dwSize;
        public byte[] sATMIP = new byte[16];
        public int dwATMType;
        public int dwInputMode;
        public int dwFrameSignBeginPos;
        public int dwFrameSignLength;
        public byte[] byFrameSignContent = new byte[12];
        public int dwCardLengthInfoBeginPos;
        public int dwCardLengthInfoLength;
        public int dwCardNumberInfoBeginPos;
        public int dwCardNumberInfoLength;
        public int dwBusinessTypeBeginPos;
        public int dwBusinessTypeLength;
        public HCNetSDK.NET_DVR_FRAMETYPECODE[] frameTypeCode = new HCNetSDK.NET_DVR_FRAMETYPECODE[10];

        public NET_DVR_FRAMEFORMAT() {
        }
    }

    public static class NET_DVR_FRAMEFORMAT_V30 extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_IPADDR struATMIP;
        public int dwATMType;
        public int dwInputMode;
        public int dwFrameSignBeginPos;
        public int dwFrameSignLength;
        public byte[] byFrameSignContent = new byte[12];
        public int dwCardLengthInfoBeginPos;
        public int dwCardLengthInfoLength;
        public int dwCardNumberInfoBeginPos;
        public int dwCardNumberInfoLength;
        public int dwBusinessTypeBeginPos;
        public int dwBusinessTypeLength;
        public HCNetSDK.NET_DVR_FRAMETYPECODE[] frameTypeCode = new HCNetSDK.NET_DVR_FRAMETYPECODE[10];
        public short wATMPort;
        public short wProtocolType;
        public byte[] byRes = new byte[24];

        public NET_DVR_FRAMEFORMAT_V30() {
        }
    }

    public static class NET_DVR_FRAMETYPECODE extends Structure {
        public byte[] code = new byte[12];

        public NET_DVR_FRAMETYPECODE() {
        }
    }

    public static class NET_DVR_TRADEINFO extends Structure {
        public short m_Year;
        public short m_Month;
        public short m_Day;
        public short m_Hour;
        public short m_Minute;
        public short m_Second;
        public byte[] DeviceName = new byte[24];
        public int dwChannelNumer;
        public byte[] CardNumber = new byte[32];
        public byte[] cTradeType = new byte[12];
        public int dwCash;

        public NET_DVR_TRADEINFO() {
        }
    }

    public static class NET_DVR_ALARMOUTSTATUS extends Structure {
        public byte[] Output = new byte[4];

        public NET_DVR_ALARMOUTSTATUS() {
        }
    }

    public static class NET_DVR_ALARMOUTSTATUS_V30 extends Structure {
        public byte[] Output = new byte[96];

        public NET_DVR_ALARMOUTSTATUS_V30() {
        }
    }

    public static class NET_DVR_LOG extends Structure {
        public HCNetSDK.NET_DVR_TIME strLogTime;
        public int dwMajorType;
        public int dwMinorType;
        public byte[] sPanelUser = new byte[16];
        public byte[] sNetUser = new byte[16];
        public byte[] sRemoteHostAddr = new byte[16];
        public int dwParaType;
        public int dwChannel;
        public int dwDiskNumber;
        public int dwAlarmInPort;
        public int dwAlarmOutPort;

        public NET_DVR_LOG() {
        }
    }

    public static class NET_DVR_LOG_V30 extends Structure {
        public HCNetSDK.NET_DVR_TIME strLogTime;
        public int dwMajorType;
        public int dwMinorType;
        public byte[] sPanelUser = new byte[16];
        public byte[] sNetUser = new byte[16];
        public HCNetSDK.NET_DVR_IPADDR struRemoteHostAddr;
        public int dwParaType;
        public int dwChannel;
        public int dwDiskNumber;
        public int dwAlarmInPort;
        public int dwAlarmOutPort;
        public int dwInfoLen;
        public byte[] sInfo = new byte[11840];

        public NET_DVR_LOG_V30() {
        }
    }

    public static class NET_DVR_WORKSTATE extends Structure {
        public int dwDeviceStatic;
        public HCNetSDK.NET_DVR_DISKSTATE[] struHardDiskStatic = new HCNetSDK.NET_DVR_DISKSTATE[16];
        public HCNetSDK.NET_DVR_CHANNELSTATE[] struChanStatic = new HCNetSDK.NET_DVR_CHANNELSTATE[16];
        public byte[] byAlarmInStatic = new byte[16];
        public byte[] byAlarmOutStatic = new byte[4];
        public int dwLocalDisplay;

        public NET_DVR_WORKSTATE() {
        }
    }

    public static class NET_DVR_WORKSTATE_V30 extends Structure {
        public int dwDeviceStatic;
        public HCNetSDK.NET_DVR_DISKSTATE[] struHardDiskStatic = new HCNetSDK.NET_DVR_DISKSTATE[33];
        public HCNetSDK.NET_DVR_CHANNELSTATE_V30[] struChanStatic = new HCNetSDK.NET_DVR_CHANNELSTATE_V30[64];
        public byte[] byAlarmInStatic = new byte[160];
        public byte[] byAlarmOutStatic = new byte[96];
        public int dwLocalDisplay;
        public byte[] byAudioChanStatus = new byte[2];
        public byte[] byRes = new byte[10];

        public NET_DVR_WORKSTATE_V30() {
        }
    }

    public static class NET_DVR_DISKSTATE extends Structure {
        public int dwVolume;
        public int dwFreeSpace;
        public int dwHardDiskStatic;

        public NET_DVR_DISKSTATE() {
        }
    }

    public static class NET_DVR_CHANNELSTATE extends Structure {
        public byte byRecordStatic;
        public byte bySignalStatic;
        public byte byHardwareStatic;
        public byte reservedData;
        public int dwBitRate;
        public int dwLinkNum;
        public int[] dwClientIP = new int[6];

        public NET_DVR_CHANNELSTATE() {
        }
    }

    public static class NET_DVR_CHANNELSTATE_V30 extends Structure {
        public byte byRecordStatic;
        public byte bySignalStatic;
        public byte byHardwareStatic;
        public byte byRes1;
        public int dwBitRate;
        public int dwLinkNum;
        public HCNetSDK.NET_DVR_IPADDR[] struClientIP = new HCNetSDK.NET_DVR_IPADDR[6];
        public int dwIPLinkNum;
        public byte byExceedMaxLink;
        public byte[] byRes = new byte[3];
        public int dwAllBitRate;
        public int dwChannelNo;

        public NET_DVR_CHANNELSTATE_V30() {
        }
    }

    public static class NET_DVR_EXCEPTION extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION[] struExceptionHandleType = new HCNetSDK.NET_DVR_HANDLEEXCEPTION[16];

        public NET_DVR_EXCEPTION() {
        }
    }

    public static class NET_DVR_EXCEPTION_V30 extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION_V30[] struExceptionHandleType = new HCNetSDK.NET_DVR_HANDLEEXCEPTION_V30[32];

        public NET_DVR_EXCEPTION_V30() {
        }
    }

    public static class NET_DVR_USER extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_USER_INFO[] struUser = new HCNetSDK.NET_DVR_USER_INFO[16];

        public NET_DVR_USER() {
        }
    }

    public static class NET_DVR_USER_EX extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_USER_INFO_EX[] struUser = new HCNetSDK.NET_DVR_USER_INFO_EX[16];

        public NET_DVR_USER_EX() {
        }
    }

    public static class NET_DVR_USER_V30 extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_USER_INFO_V30[] struUser = new HCNetSDK.NET_DVR_USER_INFO_V30[32];

        public NET_DVR_USER_V30() {
        }
    }

    public static class NET_DVR_USER_INFO extends Structure {
        public byte[] sUserName = new byte[32];
        public byte[] sPassword = new byte[16];
        public int[] dwLocalRight = new int[32];
        public int[] dwRemoteRight = new int[32];
        public byte[] sUserIP = new byte[16];
        public byte[] byMACAddr = new byte[6];

        public NET_DVR_USER_INFO() {
        }
    }

    public static class NET_DVR_USER_INFO_EX extends Structure {
        public byte[] sUserName = new byte[32];
        public byte[] sPassword = new byte[16];
        public int[] dwLocalRight = new int[32];
        public int dwLocalPlaybackRight;
        public int[] dwRemoteRight = new int[32];
        public int dwNetPreviewRight;
        public int dwNetPlaybackRight;
        public byte[] sUserIP = new byte[16];
        public byte[] byMACAddr = new byte[6];

        public NET_DVR_USER_INFO_EX() {
        }
    }

    public static class NET_DVR_USER_INFO_V30 extends Structure {
        public byte[] sUserName = new byte[32];
        public byte[] sPassword = new byte[16];
        public byte[] byLocalRight = new byte[32];
        public byte[] byRemoteRight = new byte[32];
        public byte[] byNetPreviewRight = new byte[64];
        public byte[] byLocalPlaybackRight = new byte[64];
        public byte[] byNetPlaybackRight = new byte[64];
        public byte[] byLocalRecordRight = new byte[64];
        public byte[] byNetRecordRight = new byte[64];
        public byte[] byLocalPTZRight = new byte[64];
        public byte[] byNetPTZRight = new byte[64];
        public byte[] byLocalBackupRight = new byte[64];
        public HCNetSDK.NET_DVR_IPADDR struUserIP;
        public byte[] byMACAddr = new byte[6];
        public byte byPriority;
        public byte[] byRes = new byte[17];

        public NET_DVR_USER_INFO_V30() {
        }
    }

    public static class NET_DVR_VIDEOOUT extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_VOOUT[] struVOOut = new HCNetSDK.NET_DVR_VOOUT[2];
        public HCNetSDK.NET_DVR_VGAPARA[] struVGAPara = new HCNetSDK.NET_DVR_VGAPARA[1];
        public HCNetSDK.NET_DVR_MATRIXPARA struMatrixPara;

        public NET_DVR_VIDEOOUT() {
        }
    }

    public static class NET_DVR_VIDEOOUT_V30 extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_VOOUT[] struVOOut = new HCNetSDK.NET_DVR_VOOUT[4];
        public HCNetSDK.NET_DVR_VGAPARA[] struVGAPara = new HCNetSDK.NET_DVR_VGAPARA[4];
        public HCNetSDK.NET_DVR_MATRIXPARA_V30[] struMatrixPara = new HCNetSDK.NET_DVR_MATRIXPARA_V30[16];
        public byte[] byRes = new byte[16];

        public NET_DVR_VIDEOOUT_V30() {
        }
    }

    public static class NET_DVR_VOOUT extends Structure {
        public byte byVideoFormat;
        public byte byMenuAlphaValue;
        public short wScreenSaveTime;
        public short wVOffset;
        public short wBrightness;
        public byte byStartMode;
        public byte byEnableScaler;

        public NET_DVR_VOOUT() {
        }
    }

    public static class NET_DVR_MATRIXPARA extends Structure {
        public short wDisplayLogo;
        public short wDisplayOsd;

        public NET_DVR_MATRIXPARA() {
        }
    }

    public static class NET_DVR_MATRIXPARA_V30 extends Structure {
        public short[] wOrder = new short[32];
        public short wSwitchTime;
        public byte[] res = new byte[14];

        public NET_DVR_MATRIXPARA_V30() {
        }
    }

    public static class NET_DVR_VGAPARA extends Structure {
        public short wResolution;
        public short wFreq;
        public int dwBrightness;

        public NET_DVR_VGAPARA() {
        }
    }

    public static class NET_DVR_PREVIEWCFG extends Structure {
        public int dwSize;
        public byte byPreviewNumber;
        public byte byEnableAudio;
        public short wSwitchTime;
        public byte[] bySwitchSeq = new byte[16];

        public NET_DVR_PREVIEWCFG() {
        }
    }

    public static class NET_DVR_PREVIEWCFG_V30 extends Structure {
        public int dwSize;
        public byte byPreviewNumber;
        public byte byEnableAudio;
        public short wSwitchTime;
        public byte[][] bySwitchSeq = new byte[8][32];
        public byte[] byRes = new byte[24];

        public NET_DVR_PREVIEWCFG_V30() {
        }
    }

    public static class NET_DVR_ALARMOUTCFG extends Structure {
        public int dwSize;
        public byte[] sAlarmOutName = new byte[32];
        public int dwAlarmOutDelay;
        public HCNetSDK.NET_DVR_SCHEDTIMEWEEK[] struAlarmOutTime = new HCNetSDK.NET_DVR_SCHEDTIMEWEEK[7];

        public NET_DVR_ALARMOUTCFG() {
        }
    }

    public static class NET_DVR_ALARMOUTCFG_V30 extends Structure {
        public int dwSize;
        public byte[] sAlarmOutName = new byte[32];
        public int dwAlarmOutDelay;
        public HCNetSDK.NET_DVR_SCHEDTIMEWEEK[] struAlarmOutTime = new HCNetSDK.NET_DVR_SCHEDTIMEWEEK[7];
        public byte[] byRes = new byte[16];

        public NET_DVR_ALARMOUTCFG_V30() {
        }
    }

    public static class NET_DVR_SCALECFG extends Structure {
        public int dwSize;
        public int dwMajorScale;
        public int dwMinorScale;
        public int[] dwRes = new int[2];

        public NET_DVR_SCALECFG() {
        }
    }

    public static class NET_DVR_HDGROUP_CFG extends Structure {
        public int dwSize;
        public int dwHDGroupCount;
        public HCNetSDK.NET_DVR_SINGLE_HDGROUP[] struHDGroupAttr = new HCNetSDK.NET_DVR_SINGLE_HDGROUP[16];

        public NET_DVR_HDGROUP_CFG() {
        }
    }

    public static class NET_DVR_SINGLE_HDGROUP extends Structure {
        public int dwHDGroupNo;
        public byte[] byHDGroupChans = new byte[64];
        public byte[] byRes = new byte[8];

        public NET_DVR_SINGLE_HDGROUP() {
        }
    }

    public static class NET_DVR_HDCFG extends Structure {
        public int dwSize;
        public int dwHDCount;
        public HCNetSDK.NET_DVR_SINGLE_HD[] struHDInfo = new HCNetSDK.NET_DVR_SINGLE_HD[33];

        public NET_DVR_HDCFG() {
        }
    }

    public static class NET_DVR_SINGLE_HD extends Structure {
        public int dwHDNo;
        public int dwCapacity;
        public int dwFreeSpace;
        public int dwHdStatus;
        public byte byHDAttr;
        public byte[] byRes1 = new byte[3];
        public int dwHdGroup;
        public byte[] byRes2 = new byte[120];

        public NET_DVR_SINGLE_HD() {
        }
    }

    public static class NET_DVR_IPALARMINFO extends Structure {
        public HCNetSDK.NET_DVR_IPDEVINFO[] struIPDevInfo = new HCNetSDK.NET_DVR_IPDEVINFO[32];
        public byte[] byAnalogChanEnable = new byte[32];
        public HCNetSDK.NET_DVR_IPCHANINFO[] struIPChanInfo = new HCNetSDK.NET_DVR_IPCHANINFO[32];
        public HCNetSDK.NET_DVR_IPALARMININFO[] struIPAlarmInInfo = new HCNetSDK.NET_DVR_IPALARMININFO[128];
        public HCNetSDK.NET_DVR_IPALARMOUTINFO[] struIPAlarmOutInfo = new HCNetSDK.NET_DVR_IPALARMOUTINFO[64];

        public NET_DVR_IPALARMINFO() {
        }
    }

    public static class NET_DVR_IPALARMINCFG extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_IPALARMININFO[] struIPAlarmInInfo = new HCNetSDK.NET_DVR_IPALARMININFO[128];

        public NET_DVR_IPALARMINCFG() {
        }
    }

    public static class NET_DVR_IPALARMININFO extends Structure {
        public byte byIPID;
        public byte byAlarmIn;
        public byte[] byRes = new byte[18];

        public NET_DVR_IPALARMININFO() {
        }
    }

    public static class NET_DVR_IPALARMOUTCFG extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_IPALARMOUTINFO[] struIPAlarmOutInfo = new HCNetSDK.NET_DVR_IPALARMOUTINFO[64];

        public NET_DVR_IPALARMOUTCFG() {
        }
    }

    public static class NET_DVR_IPALARMOUTINFO extends Structure {
        public byte byIPID;
        public byte byAlarmOut;
        public byte[] byRes = new byte[18];

        public NET_DVR_IPALARMOUTINFO() {
        }
    }

    public static class NET_DVR_IPPARACFG_V40 extends Structure {
        public int dwSize;
        public int dwGroupNum;
        public int dwAChanNum;
        public int dwDChanNum;
        public int dwStartDChan;
        public byte[] byAnalogChanEnable = new byte[64];
        public HCNetSDK.NET_DVR_IPDEVINFO_V31[] struIPDevInfo = new HCNetSDK.NET_DVR_IPDEVINFO_V31[64];
        public HCNetSDK.NET_DVR_STREAM_MODE[] struStreamMode = new HCNetSDK.NET_DVR_STREAM_MODE[64];
        public byte[] byRes2 = new byte[20];

        public NET_DVR_IPPARACFG_V40() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("dwSize", "dwGroupNum", "dwAChanNum", "dwDChanNum", "dwStartDChan", "byAnalogChanEnable", "struIPDevInfo", "struStreamMode", "byRes2");
        }
    }

    public static class NET_DVR_GET_STREAM_UNION extends Union {
        public HCNetSDK.NET_DVR_IPCHANINFO struChanInfo = new HCNetSDK.NET_DVR_IPCHANINFO();
        public HCNetSDK.NET_DVR_IPCHANINFO_V40 struIPChan = new HCNetSDK.NET_DVR_IPCHANINFO_V40();
        public byte[] byUnionLen = new byte[492];

        public NET_DVR_GET_STREAM_UNION() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("struChanInfo", "struIPChan", "byUnionLen");
        }
    }

    public static class NET_DVR_IPCHANINFO_V40 extends Structure {
        public byte byEnable;
        public byte byRes1;
        public short wIPID;
        public int dwChannel;
        public byte byTransProtocol;
        public byte byTransMode;
        public byte byFactoryType;
        public byte[] byRes = new byte[241];

        public NET_DVR_IPCHANINFO_V40() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("byEnable", "byRes1", "wIPID", "dwChannel", "byTransProtocol", "byTransMode", "byFactoryType", "byRes");
        }
    }

    public static class NET_DVR_HKDDNS_STREAM extends Structure {
        public byte byEnable;
        public byte[] byRes = new byte[3];
        public byte[] byDDNSDomain = new byte[64];
        public short wPort;
        public short wAliasLen;
        public byte[] byAlias = new byte[32];
        public short wDVRSerialLen;
        public byte[] byRes1 = new byte[2];
        public byte[] byDVRSerialNumber = new byte[48];
        public byte[] byUserName = new byte[32];
        public byte[] byPassWord = new byte[16];
        public byte byChannel;
        public byte[] byRes2 = new byte[11];

        public NET_DVR_HKDDNS_STREAM() {
        }
    }

    public static class NET_DVR_PU_STREAM_URL extends Structure {
        public byte byEnable;
        public byte[] strURL = new byte[240];
        public byte byTransPortocol;
        public short wIPID;
        public byte byChannel;
        public byte[] byRes = new byte[7];

        public NET_DVR_PU_STREAM_URL() {
        }
    }

    public static class NET_DVR_DDNS_STREAM_CFG extends Structure {
        public byte byEnable;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_DVR_IPADDR struStreamServer = new HCNetSDK.NET_DVR_IPADDR();
        public short wStreamServerPort;
        public byte byStreamServerTransmitType;
        public byte byRes2;
        public HCNetSDK.NET_DVR_IPADDR struIPServer = new HCNetSDK.NET_DVR_IPADDR();
        public short wIPServerPort;
        public byte[] byRes3 = new byte[2];
        public byte[] sDVRName = new byte[32];
        public short wDVRNameLen;
        public short wDVRSerialLen;
        public byte[] sDVRSerialNumber = new byte[48];
        public byte[] sUserName = new byte[32];
        public byte[] sPassWord = new byte[16];
        public short wDVRPort;
        public byte[] byRes4 = new byte[2];
        public byte byChannel;
        public byte byTransProtocol;
        public byte byTransMode;
        public byte byFactoryType;

        public NET_DVR_DDNS_STREAM_CFG() {
        }
    }

    public static class NET_DVR_PU_STREAM_CFG_V41 extends Structure {
        public int dwSize;
        public byte byStreamMode;
        public byte byStreamEncrypt;
        public byte[] byRes1 = new byte[2];
        public HCNetSDK.NET_DVR_DEC_STREAM_MODE uDecStreamMode;
        public int dwDecDelayTime;
        public byte[] sStreamPassword = new byte[12];
        public byte[] byRes2 = new byte[48];

        public NET_DVR_PU_STREAM_CFG_V41() {
        }
    }

    public static class NET_DVR_PU_STREAM_CFG extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_STREAM_MEDIA_SERVER_CFG struStreamMediaSvrCfg = new HCNetSDK.NET_DVR_STREAM_MEDIA_SERVER_CFG();
        public HCNetSDK.NET_DVR_DEV_CHAN_INFO struDevChanInfo = new HCNetSDK.NET_DVR_DEV_CHAN_INFO();

        public NET_DVR_PU_STREAM_CFG() {
        }
    }

    public static class NET_DVR_DEV_CHAN_INFO extends Structure {
        public HCNetSDK.NET_DVR_IPADDR struIP = new HCNetSDK.NET_DVR_IPADDR();
        public short wDVRPort;
        public byte byChannel;
        public byte byTransProtocol;
        public byte byTransMode;
        public byte byFactoryType;
        public byte byDeviceType;
        public byte byDispChan;
        public byte bySubDispChan;
        public byte byResolution;
        public byte[] byRes = new byte[2];
        public byte[] byDomain = new byte[64];
        public byte[] sUserName = new byte[32];
        public byte[] sPassword = new byte[16];

        public NET_DVR_DEV_CHAN_INFO() {
        }
    }

    public static class NET_DVR_STREAM_MEDIA_SERVER_CFG extends Structure {
        public byte byValid;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_DVR_IPADDR struDevIP = new HCNetSDK.NET_DVR_IPADDR();
        public short wDevPort;
        public byte byTransmitType;
        public byte[] byRes2 = new byte[69];

        public NET_DVR_STREAM_MEDIA_SERVER_CFG() {
        }
    }

    public static class NET_DVR_IPSERVER_STREAM extends Structure {
        public byte byEnable;
        public byte[] byRes = new byte[3];
        public HCNetSDK.NET_DVR_IPADDR struIPServer = new HCNetSDK.NET_DVR_IPADDR();
        public short wPort;
        public short wDvrNameLen;
        public byte[] byDVRName = new byte[32];
        public short wDVRSerialLen;
        public short[] byRes1 = new short[2];
        public byte[] byDVRSerialNumber = new byte[48];
        public byte[] byUserName = new byte[32];
        public byte[] byPassWord = new byte[16];
        public byte byChannel;
        public byte[] byRes2 = new byte[11];

        public NET_DVR_IPSERVER_STREAM() {
        }
    }

    public static class NET_DVR_STREAM_MODE extends Structure {
        public byte byGetStreamType;
        public byte[] byRes = new byte[3];
        public HCNetSDK.NET_DVR_GET_STREAM_UNION uGetStream = new HCNetSDK.NET_DVR_GET_STREAM_UNION();

        public void read() {
            super.read();
            switch(this.byGetStreamType) {
                case 0:
                    this.uGetStream.setType(HCNetSDK.NET_DVR_IPCHANINFO.class);
                    break;
                case 6:
                    this.uGetStream.setType(HCNetSDK.NET_DVR_IPCHANINFO_V40.class);
            }

        }

        public NET_DVR_STREAM_MODE() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("byGetStreamType", "byRes", "uGetStream");
        }
    }

    public static class NET_DVR_IPDEVINFO_V31 extends Structure {
        public byte byEnable;
        public byte byProType;
        public byte byEnableQuickAdd;
        public byte byRes1;
        public byte[] sUserName = new byte[32];
        public byte[] sPassword = new byte[16];
        public byte[] byDomain = new byte[64];
        public HCNetSDK.NET_DVR_IPADDR struIP = new HCNetSDK.NET_DVR_IPADDR();
        public short wDVRPort;
        public byte[] szDeviceID = new byte[32];
        public byte[] byRes2 = new byte[2];

        public NET_DVR_IPDEVINFO_V31() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("byEnable", "byProType", "byEnableQuickAdd", "byRes1", "sUserName", "sPassword", "byDomain", "struIP", "wDVRPort", "szDeviceID", "byRes2");
        }
    }

    public static class NET_DVR_IPPARACFG extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_IPDEVINFO[] struIPDevInfo = new HCNetSDK.NET_DVR_IPDEVINFO[32];
        public byte[] byAnalogChanEnable = new byte[32];
        public HCNetSDK.NET_DVR_IPCHANINFO[] struIPChanInfo = new HCNetSDK.NET_DVR_IPCHANINFO[32];

        public NET_DVR_IPPARACFG() {
        }
    }

    public static class NET_DVR_IPCHANINFO extends Structure {
        public byte byEnable;
        public byte byIPID;
        public byte byChannel;
        public byte byIPIDHigh;
        public byte byTransProtocol;
        public byte byGetStream;
        public byte[] byres = new byte[30];

        public NET_DVR_IPCHANINFO() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("byEnable", "byIPID", "byChannel", "byIPIDHigh", "byTransProtocol", "byGetStream", "byres");
        }
    }

    public static class NET_DVR_IPDEVINFO extends Structure {
        public int dwEnable;
        public byte[] sUserName = new byte[32];
        public byte[] sPassword = new byte[16];
        public HCNetSDK.NET_DVR_IPADDR struIP = new HCNetSDK.NET_DVR_IPADDR();
        public short wDVRPort;
        public byte[] byres = new byte[34];

        public NET_DVR_IPDEVINFO() {
        }
    }

    public static class NET_DVR_ALARMINFO_EX extends Structure {
        public int dwAlarmType;
        public int dwAlarmInputNumber;
        public int[] dwAlarmOutputNumber = new int[4];
        public int[] dwAlarmRelateChannel = new int[16];
        public int[] dwChannel = new int[16];
        public int[] dwDiskNumber = new int[16];
        public byte[] sSerialNumber = new byte[48];
        public byte[] sRemoteAlarmIP = new byte[16];

        public NET_DVR_ALARMINFO_EX() {
        }
    }

    public static class NET_DVR_ALARMINFO extends Structure {
        public int dwAlarmType;
        public int dwAlarmInputNumber;
        public int[] dwAlarmOutputNumber = new int[4];
        public int[] dwAlarmRelateChannel = new int[16];
        public int[] dwChannel = new int[16];
        public int[] dwDiskNumber = new int[16];

        public NET_DVR_ALARMINFO() {
        }
    }

    public static class NET_DVR_ALARMINFO_V30 extends Structure {
        public int dwAlarmType;
        public int dwAlarmInputNumber;
        public byte[] byAlarmOutputNumber = new byte[96];
        public byte[] byAlarmRelateChannel = new byte[64];
        public byte[] byChannel = new byte[64];
        public byte[] byDiskNumber = new byte[33];

        public NET_DVR_ALARMINFO_V30() {
        }
    }

    public static class NET_DVR_ALARMINFO_V40 extends Structure {
        public HCNetSDK.NET_DVR_ALRAM_FIXED_HEADER struAlarmFixedHeader = new HCNetSDK.NET_DVR_ALRAM_FIXED_HEADER();
        public Pointer pAlarmData;

        public NET_DVR_ALARMINFO_V40() {
        }
    }

    public static class NET_DVR_ALRAM_FIXED_HEADER extends Structure {
        public int dwAlarmType;
        public HCNetSDK.NET_DVR_TIME_EX struAlarmTime = new HCNetSDK.NET_DVR_TIME_EX();
        public HCNetSDK.uStruAlarm ustruAlarm = new HCNetSDK.uStruAlarm();
        public Pointer pRes;
        public byte byTimeDiffFlag;
        public byte cTimeDifferenceH;
        public byte cTimeDifferenceM;
        public byte byRes;
        public short wDevInfoIvmsChannel;
        public byte[] byRes2 = new byte[2];

        public NET_DVR_ALRAM_FIXED_HEADER() {
        }
    }

    public static class uStruAlarm extends Union {
        public byte[] byUnionLen = new byte[116];
        public HCNetSDK.struIOAlarm struioAlarm = new HCNetSDK.struIOAlarm();
        public HCNetSDK.struAlarmHardDisk strualarmHardDisk = new HCNetSDK.struAlarmHardDisk();
        public HCNetSDK.struAlarmChannel strualarmChannel = new HCNetSDK.struAlarmChannel();
        public HCNetSDK.struRecordingHost strurecordingHost = new HCNetSDK.struRecordingHost();

        public uStruAlarm() {
        }
    }

    public static class NET_DVR_TIME_EX extends Structure {
        public short wYear;
        public byte byMonth;
        public byte byDay;
        public byte byHour;
        public byte byMinute;
        public byte bySecond;
        public byte byRes;

        public NET_DVR_TIME_EX() {
        }
    }

    public static class struIOAlarm extends Structure {
        public int dwAlarmInputNo;
        public int dwTrigerAlarmOutNum;
        public int dwTrigerRecordChanNum;

        public struIOAlarm() {
        }
    }

    public static class struAlarmChannel extends Structure {
        public int dwAlarmChanNum;
        public int dwPicLen;
        public byte byPicURL;
        public byte byTarget;
        public byte[] byRes1 = new byte[2];
        public Pointer pDataBuff;

        public struAlarmChannel() {
        }
    }

    public static class struAlarmHardDisk extends Structure {
        public int dwAlarmHardDiskNum;

        public struAlarmHardDisk() {
        }
    }

    public static class struRecordingHost extends Structure {
        public byte bySubAlarmType;
        public byte[] byRes1 = new byte[3];
        public HCNetSDK.NET_DVR_TIME_EX struRecordEndTime = new HCNetSDK.NET_DVR_TIME_EX();

        public struRecordingHost() {
        }
    }

    public static class NET_DVR_ADDIT_POSITION extends Structure {
        public byte[] sDevName = new byte[32];
        public int dwSpeed;
        public int dwLongitude;
        public int dwLatitude;
        public byte[] direction = new byte[2];
        public byte[] res = new byte[2];

        public NET_DVR_ADDIT_POSITION() {
        }
    }

    public static class NET_DVR_ALARMINCFG extends Structure {
        public int dwSize;
        public byte[] sAlarmInName = new byte[32];
        public byte byAlarmType;
        public byte byAlarmInHandle;
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION struAlarmHandleType;
        public HCNetSDK.NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new HCNetSDK.NET_DVR_SCHEDTIMEWEEK[7];
        public byte[] byRelRecordChan = new byte[16];
        public byte[] byEnablePreset = new byte[16];
        public byte[] byPresetNo = new byte[16];
        public byte[] byEnableCruise = new byte[16];
        public byte[] byCruiseNo = new byte[16];
        public byte[] byEnablePtzTrack = new byte[16];
        public byte[] byPTZTrack = new byte[16];

        public NET_DVR_ALARMINCFG() {
        }
    }

    public static class NET_DVR_ALARMINCFG_V30 extends Structure {
        public int dwSize;
        public byte[] sAlarmInName = new byte[32];
        public byte byAlarmType;
        public byte byAlarmInHandle;
        public byte[] reservedData = new byte[2];
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType;
        public HCNetSDK.NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new HCNetSDK.NET_DVR_SCHEDTIMEWEEK[7];
        public byte[] byRelRecordChan = new byte[64];
        public byte[] byEnablePreset = new byte[64];
        public byte[] byPresetNo = new byte[64];
        public byte[] byEnablePresetRevert = new byte[64];
        public short[] wPresetRevertDelay = new short[64];
        public byte[] byEnableCruise = new byte[64];
        public byte[] byCruiseNo = new byte[64];
        public byte[] byEnablePtzTrack = new byte[64];
        public byte[] byPTZTrack = new byte[64];
        public byte[] byRes = new byte[16];

        public NET_DVR_ALARMINCFG_V30() {
        }
    }

    public static class NET_DVR_RS232CFG extends Structure {
        public int dwSize;
        public int dwBaudRate;
        public byte byDataBit;
        public byte byStopBit;
        public byte byParity;
        public byte byFlowcontrol;
        public int dwWorkMode;
        public HCNetSDK.NET_DVR_PPPCFG struPPPConfig;

        public NET_DVR_RS232CFG() {
        }
    }

    public static class NET_DVR_RS232CFG_V30 extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_SINGLE_RS232 struRs232;
        public byte[] byRes = new byte[84];
        public HCNetSDK.NET_DVR_PPPCFG_V30 struPPPConfig;

        public NET_DVR_RS232CFG_V30() {
        }
    }

    public static class NET_DVR_SINGLE_RS232 extends Structure {
        public int dwBaudRate;
        public byte byDataBit;
        public byte byStopBit;
        public byte byParity;
        public byte byFlowcontrol;
        public int dwWorkMode;

        public NET_DVR_SINGLE_RS232() {
        }
    }

    public static class NET_DVR_PPPCFG extends Structure {
        public byte[] sRemoteIP = new byte[16];
        public byte[] sLocalIP = new byte[16];
        public byte[] sLocalIPMask = new byte[16];
        public byte[] sUsername = new byte[32];
        public byte[] sPassword = new byte[16];
        public byte byPPPMode;
        public byte byRedial;
        public byte byRedialMode;
        public byte byDataEncrypt;
        public int dwMTU;
        public byte[] sTelephoneNumber = new byte[32];

        public NET_DVR_PPPCFG() {
        }
    }

    public static class NET_DVR_PPPCFG_V30 extends Structure {
        public HCNetSDK.NET_DVR_IPADDR struRemoteIP;
        public HCNetSDK.NET_DVR_IPADDR struLocalIP;
        public byte[] sLocalIPMask = new byte[16];
        public byte[] sUsername = new byte[32];
        public byte[] sPassword = new byte[16];
        public byte byPPPMode;
        public byte byRedial;
        public byte byRedialMode;
        public byte byDataEncrypt;
        public int dwMTU;
        public byte[] sTelephoneNumber = new byte[32];

        public NET_DVR_PPPCFG_V30() {
        }
    }

    public static class NET_DVR_DECODERCFG extends Structure {
        public int dwSize;
        public int dwBaudRate;
        public byte byDataBit;
        public byte byStopBit;
        public byte byParity;
        public byte byFlowcontrol;
        public short wDecoderType;
        public short wDecoderAddress;
        public byte[] bySetPreset = new byte[128];
        public byte[] bySetCruise = new byte[128];
        public byte[] bySetTrack = new byte[128];

        public NET_DVR_DECODERCFG() {
        }
    }

    public static class NET_DVR_DECODERCFG_V30 extends Structure {
        public int dwSize;
        public int dwBaudRate;
        public byte byDataBit;
        public byte byStopBit;
        public byte byParity;
        public byte byFlowcontrol;
        public short wDecoderType;
        public short wDecoderAddress;
        public byte[] bySetPreset = new byte[256];
        public byte[] bySetCruise = new byte[256];
        public byte[] bySetTrack = new byte[256];

        public NET_DVR_DECODERCFG_V30() {
        }
    }

    public static class NET_DVR_PTZCFG extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_PTZ_PROTOCOL[] struPtz = new HCNetSDK.NET_DVR_PTZ_PROTOCOL[200];
        public int dwPtzNum;
        public byte[] byRes = new byte[8];

        public NET_DVR_PTZCFG() {
        }
    }

    public static class NET_DVR_PTZ_PROTOCOL extends Structure {
        public int dwType;
        public byte[] byDescribe = new byte[16];

        public NET_DVR_PTZ_PROTOCOL() {
        }
    }

    public static class NET_DVR_PDC_ALRAM_INFO extends Structure {
        public int dwSize;
        public byte byMode;
        public byte byChannel;
        public byte bySmart;
        public byte byRes1;
        public HCNetSDK.NET_VCA_DEV_INFO struDevInfo = new HCNetSDK.NET_VCA_DEV_INFO();
        public HCNetSDK.UNION_PDC_STATPARAM uStatModeParam = new HCNetSDK.UNION_PDC_STATPARAM();
        public int dwLeaveNum;
        public int dwEnterNum;
        public byte byBrokenNetHttp;
        public byte byRes3;
        public short wDevInfoIvmsChannelEx;
        public int dwPassingNum;
        public int dwChildLeaveNum;
        public int dwChildEnterNum;
        public int dwDuplicatePeople;
        public int dwXmlLen;
        public Pointer pXmlBuf;
        public byte[] byRes2 = new byte[8];

        public NET_DVR_PDC_ALRAM_INFO() {
        }

        public void read() {
            super.read();
            switch(this.byMode) {
                case 0:
                    this.uStatModeParam.setType(HCNetSDK.NET_DVR_STATFRAME.class);
                    break;
                case 1:
                    this.uStatModeParam.setType(HCNetSDK.NET_DVR_STATTIME.class);
            }

            this.uStatModeParam.read();
        }

        public void write() {
            super.write();
            this.uStatModeParam.write();
        }
    }

    public static class UNION_PDC_STATPARAM extends Union {
        public HCNetSDK.NET_DVR_STATFRAME struStatFrame;
        public HCNetSDK.NET_DVR_STATTIME struStatTime;

        public UNION_PDC_STATPARAM() {
        }
    }

    public static class NET_DVR_STATTIME extends Structure {
        public HCNetSDK.NET_DVR_TIME tmStart;
        public HCNetSDK.NET_DVR_TIME tmEnd;
        public byte[] byRes = new byte[92];

        public NET_DVR_STATTIME() {
        }
    }

    public static class NET_DVR_STATFRAME extends Structure {
        public int dwRelativeTime;
        public int dwAbsTime;
        public byte[] byRes = new byte[92];

        public NET_DVR_STATFRAME() {
        }
    }

    public static class NET_DVR_RECORD extends Structure {
        public int dwSize;
        public int dwRecord;
        public HCNetSDK.NET_DVR_RECORDDAY[] struRecAllDay = new HCNetSDK.NET_DVR_RECORDDAY[7];
        public HCNetSDK.NET_DVR_RECORDSCHEDWEEK[] struRecordSched = new HCNetSDK.NET_DVR_RECORDSCHEDWEEK[7];
        public int dwRecordTime;
        public int dwPreRecordTime;

        public NET_DVR_RECORD() {
        }
    }

    public static class NET_DVR_RECORD_V30 extends Structure {
        public int dwSize;
        public int dwRecord;
        public HCNetSDK.NET_DVR_RECORDDAY[] struRecAllDay = new HCNetSDK.NET_DVR_RECORDDAY[7];
        public HCNetSDK.NET_DVR_RECORDSCHEDWEEK[] struRecordSched = new HCNetSDK.NET_DVR_RECORDSCHEDWEEK[7];
        public int dwRecordTime;
        public int dwPreRecordTime;
        public int dwRecorderDuration;
        public byte byRedundancyRec;
        public byte byAudioRec;
        public byte[] byReserve = new byte[10];

        public NET_DVR_RECORD_V30() {
        }
    }

    public static class NET_DVR_RECORDSCHEDWEEK extends Structure {
        public HCNetSDK.NET_DVR_RECORDSCHED[] struRecordSched = new HCNetSDK.NET_DVR_RECORDSCHED[8];

        public NET_DVR_RECORDSCHEDWEEK() {
        }
    }

    public static class NET_DVR_RECORDDAY extends Structure {
        public short wAllDayRecord;
        public byte byRecordType;
        public byte reservedData;

        public NET_DVR_RECORDDAY() {
        }
    }

    public static class NET_DVR_RECORDSCHED extends Structure {
        public HCNetSDK.NET_DVR_SCHEDTIME struRecordTime = new HCNetSDK.NET_DVR_SCHEDTIME();
        public byte byRecordType;
        public byte[] reservedData = new byte[3];

        public NET_DVR_RECORDSCHED() {
        }
    }

    public static class NET_DVR_COMPRESSION_INFO_EX extends Structure {
        public byte byStreamType;
        public byte byResolution;
        public byte byBitrateType;
        public byte byPicQuality;
        public int dwVideoBitrate;
        public int dwVideoFrameRate;
        public short wIntervalFrameI;
        public byte byIntervalBPFrame;
        public byte byENumber;

        public NET_DVR_COMPRESSION_INFO_EX() {
        }
    }

    public static class NET_DVR_COMPRESSIONCFG extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_COMPRESSION_INFO struRecordPara;
        public HCNetSDK.NET_DVR_COMPRESSION_INFO struNetPara;

        public NET_DVR_COMPRESSIONCFG() {
        }
    }

    public static class NET_DVR_COMPRESSION_INFO extends Structure {
        public byte byStreamType;
        public byte byResolution;
        public byte byBitrateType;
        public byte byPicQuality;
        public int dwVideoBitrate;
        public int dwVideoFrameRate;

        public NET_DVR_COMPRESSION_INFO() {
        }
    }

    public static class NET_DVR_COMPRESSIONCFG_V30 extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_COMPRESSION_INFO_V30 struNormHighRecordPara;
        public HCNetSDK.NET_DVR_COMPRESSION_INFO_V30 struRes;
        public HCNetSDK.NET_DVR_COMPRESSION_INFO_V30 struEventRecordPara;
        public HCNetSDK.NET_DVR_COMPRESSION_INFO_V30 struNetPara;

        public NET_DVR_COMPRESSIONCFG_V30() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("dwSize", "struEventRecordPara", "struNetPara", "struNormHighRecordPara", "struRes");
        }
    }

    public static class NET_DVR_COMPRESSION_INFO_V30 extends Structure {
        public byte byStreamType;
        public byte byResolution;
        public byte byBitrateType;
        public byte byPicQuality;
        public int dwVideoBitrate;
        public int dwVideoFrameRate;
        public short wIntervalFrameI;
        public byte byIntervalBPFrame;
        public byte byENumber;
        public byte byVideoEncType;
        public byte byAudioEncType;
        public byte[] byres = new byte[10];

        public NET_DVR_COMPRESSION_INFO_V30() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("byStreamType", "byResolution", "byBitrateType", "byPicQuality", "dwVideoBitrate", "dwVideoFrameRate", "wIntervalFrameI", "byIntervalBPFrame", "byENumber", "byVideoEncType", "byAudioEncType", "byres");
        }
    }

    public static class NET_DVR_MULTI_STREAM_COMPRESSIONCFG extends Structure {
        public int dwSize;
        public int dwStreamType;
        public HCNetSDK.NET_DVR_COMPRESSION_INFO_V30 struStreamPara = new HCNetSDK.NET_DVR_COMPRESSION_INFO_V30();
        public byte[] byRes = new byte[80];

        public NET_DVR_MULTI_STREAM_COMPRESSIONCFG() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("dwSize", "dwStreamType", "struStreamPara", "byRes");
        }
    }

    public static class NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_STREAM_INFO struStreamInfo = new HCNetSDK.NET_DVR_STREAM_INFO();
        public int dwStreamType;
        public byte[] byRes = new byte[32];

        public NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND() {
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("dwSize", "struStreamInfo", "dwStreamType", "byRes");
        }
    }

    public static class NET_DVR_PICCFG extends Structure {
        public int dwSize;
        public byte[] sChanName = new byte[32];
        public int dwVideoFormat;
        public byte byBrightness;
        public byte byContrast;
        public byte bySaturation;
        public byte byHue;
        public int dwShowChanName;
        public short wShowNameTopLeftX;
        public short wShowNameTopLeftY;
        public HCNetSDK.NET_DVR_VILOST struVILost;
        public HCNetSDK.NET_DVR_MOTION struMotion;
        public HCNetSDK.NET_DVR_HIDEALARM struHideAlarm;
        public int dwEnableHide;
        public short wHideAreaTopLeftX;
        public short wHideAreaTopLeftY;
        public short wHideAreaWidth;
        public short wHideAreaHeight;
        public int dwShowOsd;
        public short wOSDTopLeftX;
        public short wOSDTopLeftY;
        public byte byOSDType;
        byte byDispWeek;
        byte byOSDAttrib;
        public byte reservedData2;

        public NET_DVR_PICCFG() {
        }
    }

    public static class NET_DVR_PICCFG_EX extends Structure {
        public int dwSize;
        public byte[] sChanName = new byte[32];
        public int dwVideoFormat;
        public byte byBrightness;
        public byte byContrast;
        public byte bySaturation;
        public byte byHue;
        public int dwShowChanName;
        public short wShowNameTopLeftX;
        public short wShowNameTopLeftY;
        public HCNetSDK.NET_DVR_VILOST struVILost;
        public HCNetSDK.NET_DVR_MOTION struMotion;
        public HCNetSDK.NET_DVR_HIDEALARM struHideAlarm;
        public int dwEnableHide;
        public HCNetSDK.NET_DVR_SHELTER[] struShelter = new HCNetSDK.NET_DVR_SHELTER[4];
        public int dwShowOsd;
        public short wOSDTopLeftX;
        public short wOSDTopLeftY;
        public byte byOSDType;
        public byte byDispWeek;
        public byte byOSDAttrib;
        public byte byHourOsdType;

        public NET_DVR_PICCFG_EX() {
        }
    }

    public static class NET_DVR_PICCFG_V30 extends Structure {
        public int dwSize;
        public byte[] sChanName = new byte[32];
        public int dwVideoFormat;
        public HCNetSDK.NET_DVR_VICOLOR struViColor;
        public int dwShowChanName;
        public short wShowNameTopLeftX;
        public short wShowNameTopLeftY;
        public HCNetSDK.NET_DVR_VILOST_V30 struVILost;
        public HCNetSDK.NET_DVR_VILOST_V30 struAULost;
        public HCNetSDK.NET_DVR_MOTION_V30 struMotion;
        public HCNetSDK.NET_DVR_HIDEALARM_V30 struHideAlarm;
        public int dwEnableHide;
        public HCNetSDK.NET_DVR_SHELTER[] struShelter = new HCNetSDK.NET_DVR_SHELTER[4];
        public int dwShowOsd;
        public short wOSDTopLeftX;
        public short wOSDTopLeftY;
        public byte byOSDType;
        public byte byDispWeek;
        public byte byOSDAttrib;
        public byte byHourOSDType;
        public byte[] byRes = new byte[64];

        public NET_DVR_PICCFG_V30() {
        }
    }

    public static class NET_DVR_PICCFG_V40 extends Structure {
        public int dwSize;
        public byte[] sChanName = new byte[32];
        public int dwVideoFormat;
        public HCNetSDK.NET_DVR_VICOLOR struViColor = new HCNetSDK.NET_DVR_VICOLOR();
        public int dwShowChanName;
        public short wShowNameTopLeftX;
        public short wShowNameTopLeftY;
        public int dwEnableHide;
        public HCNetSDK.NET_DVR_SHELTER[] struShelter = new HCNetSDK.NET_DVR_SHELTER[4];
        public int dwShowOsd;
        public short wOSDTopLeftX;
        public short wOSDTopLeftY;
        public byte byOSDType;
        public byte byDispWeek;
        public byte byOSDAttrib;
        public byte byHourOSDType;
        public byte byFontSize;
        public byte byOSDColorType;
        public byte byAlignment;
        public byte byOSDMilliSecondEnable;
        public HCNetSDK.NET_DVR_VILOST_V40 struVILost = new HCNetSDK.NET_DVR_VILOST_V40();
        public HCNetSDK.NET_DVR_VILOST_V40 struAULost = new HCNetSDK.NET_DVR_VILOST_V40();
        public HCNetSDK.NET_DVR_MOTION_V40 struMotion = new HCNetSDK.NET_DVR_MOTION_V40();
        public HCNetSDK.NET_DVR_HIDEALARM_V40 struHideAlarm = new HCNetSDK.NET_DVR_HIDEALARM_V40();
        public HCNetSDK.NET_DVR_RGB_COLOR struOsdColor = new HCNetSDK.NET_DVR_RGB_COLOR();
        public int dwBoundary;
        public HCNetSDK.NET_DVR_RGB_COLOR struOsdBkColor = new HCNetSDK.NET_DVR_RGB_COLOR();
        public byte byOSDBkColorMode;
        public byte byUpDownBoundary;
        public byte byLeftRightBoundary;
        public byte[] byRes = new byte[113];

        public NET_DVR_PICCFG_V40() {
        }
    }

    public static class NET_DVR_HIDEALARM_V40 extends Structure {
        public int dwEnableHideAlarm;
        public short wHideAlarmAreaTopLeftX;
        public short wHideAlarmAreaTopLeftY;
        public short wHideAlarmAreaWidth;
        public short wHideAlarmAreaHeight;
        public int dwHandleType;
        public int dwMaxRelAlarmOutChanNum;
        public int[] dwRelAlarmOut = new int[4128];
        public HCNetSDK.NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new HCNetSDK.NET_DVR_SCHEDTIMEWEEK[7];
        public byte[] byRes = new byte[64];

        public NET_DVR_HIDEALARM_V40() {
        }
    }

    public static class NET_DVR_RGB_COLOR extends Structure {
        public byte byRed;
        public byte byGreen;
        public byte byBlue;
        public byte byRes;

        public NET_DVR_RGB_COLOR() {
        }
    }

    public static class NET_DVR_MOTION_V40 extends Structure {
        public HCNetSDK.NET_DVR_MOTION_MODE_PARAM struMotionMode = new HCNetSDK.NET_DVR_MOTION_MODE_PARAM();
        public byte byEnableHandleMotion;
        public byte byEnableDisplay;
        public byte byConfigurationMode;
        public byte byKeyingEnable;
        public int dwHandleType;
        public int dwMaxRelAlarmOutChanNum;
        public int[] dwRelAlarmOut = new int[4128];
        public HCNetSDK.NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new HCNetSDK.NET_DVR_SCHEDTIMEWEEK[7];
        public int dwMaxRecordChanNum;
        public int[] dwRelRecordChan = new int[512];
        public byte byDiscardFalseAlarm;
        public byte[] byRes = new byte[127];

        public NET_DVR_MOTION_V40() {
        }
    }

    public static class NET_DVR_MOTION_MODE_PARAM extends Structure {
        public HCNetSDK.NET_DVR_MOTION_SINGLE_AREA struMotionSingleArea = new HCNetSDK.NET_DVR_MOTION_SINGLE_AREA();
        public HCNetSDK.NET_DVR_MOTION_MULTI_AREA struMotionMultiArea = new HCNetSDK.NET_DVR_MOTION_MULTI_AREA();

        public NET_DVR_MOTION_MODE_PARAM() {
        }
    }

    public static class NET_DVR_MOTION_SINGLE_AREA extends Structure {
        public byte[] byMotionScope = new byte[6144];
        public byte byMotionSensitive;
        public byte[] byRes = new byte[3];

        public NET_DVR_MOTION_SINGLE_AREA() {
        }
    }

    public static class NET_DVR_MOTION_MULTI_AREA extends Structure {
        public byte byDayNightCtrl;
        public byte byAllMotionSensitive;
        public byte[] byRes = new byte[2];
        public HCNetSDK.NET_DVR_SCHEDULE_DAYTIME struScheduleTime = new HCNetSDK.NET_DVR_SCHEDULE_DAYTIME();
        public HCNetSDK.NET_DVR_MOTION_MULTI_AREAPARAM[] struMotionMultiAreaParam = new HCNetSDK.NET_DVR_MOTION_MULTI_AREAPARAM[24];
        public byte[] byRes1 = new byte[60];

        public NET_DVR_MOTION_MULTI_AREA() {
        }
    }

    public static class NET_DVR_MOTION_MULTI_AREAPARAM extends Structure {
        public byte byAreaNo;
        public byte[] byRes = new byte[3];
        public HCNetSDK.NET_VCA_RECT struRect = new HCNetSDK.NET_VCA_RECT();
        public HCNetSDK.NET_DVR_DNMODE struDayNightDisable = new HCNetSDK.NET_DVR_DNMODE();
        public HCNetSDK.NET_DVR_DNMODE struDayModeParam = new HCNetSDK.NET_DVR_DNMODE();
        public HCNetSDK.NET_DVR_DNMODE struNightModeParam = new HCNetSDK.NET_DVR_DNMODE();
        public byte[] byRes1 = new byte[8];

        public NET_DVR_MOTION_MULTI_AREAPARAM() {
        }
    }

    public static class NET_DVR_DNMODE extends Structure {
        public byte byObjectSize;
        public byte byMotionSensitive;
        public byte[] byRes = new byte[6];

        public NET_DVR_DNMODE() {
        }
    }

    public static class NET_DVR_VILOST_V40 extends Structure {
        public int dwEnableVILostAlarm;
        public int dwHandleType;
        public int dwMaxRelAlarmOutChanNum;
        public int[] dwRelAlarmOut = new int[4128];
        public HCNetSDK.NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new HCNetSDK.NET_DVR_SCHEDTIMEWEEK[7];
        public byte byVILostAlarmThreshold;
        public byte[] byRes = new byte[63];

        public NET_DVR_VILOST_V40() {
        }
    }

    public static class NET_DVR_VICOLOR extends Structure {
        public HCNetSDK.NET_DVR_COLOR[] struColor = new HCNetSDK.NET_DVR_COLOR[8];
        public HCNetSDK.NET_DVR_SCHEDTIME[] struHandleTime = new HCNetSDK.NET_DVR_SCHEDTIME[8];

        public NET_DVR_VICOLOR() {
        }
    }

    public static class NET_DVR_COLOR extends Structure {
        public byte byBrightness;
        public byte byContrast;
        public byte bySaturation;
        public byte byHue;

        public NET_DVR_COLOR() {
        }
    }

    public static class NET_DVR_SHELTER extends Structure {
        public short wHideAreaTopLeftX;
        public short wHideAreaTopLeftY;
        public short wHideAreaWidth;
        public short wHideAreaHeight;

        public NET_DVR_SHELTER() {
        }
    }

    public static class NET_DVR_VILOST extends Structure {
        public byte byEnableHandleVILost;
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION strVILostHandleType;

        public NET_DVR_VILOST() {
        }
    }

    public static class NET_DVR_VILOST_V30 extends Structure {
        public byte byEnableHandleVILost;
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION_V30 strVILostHandleType;
        public HCNetSDK.NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new HCNetSDK.NET_DVR_SCHEDTIMEWEEK[7];

        public NET_DVR_VILOST_V30() {
        }
    }

    public static class NET_DVR_HIDEALARM extends Structure {
        public int dwEnableHideAlarm;
        public short wHideAlarmAreaTopLeftX;
        public short wHideAlarmAreaTopLeftY;
        public short wHideAlarmAreaWidth;
        public short wHideAlarmAreaHeight;
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION strHideAlarmHandleType;

        public NET_DVR_HIDEALARM() {
        }
    }

    public static class NET_DVR_HIDEALARM_V30 extends Structure {
        public int dwEnableHideAlarm;
        public short wHideAlarmAreaTopLeftX;
        public short wHideAlarmAreaTopLeftY;
        public short wHideAlarmAreaWidth;
        public short wHideAlarmAreaHeight;
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION_V30 strHideAlarmHandleType;
        public HCNetSDK.NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new HCNetSDK.NET_DVR_SCHEDTIMEWEEK[7];

        public NET_DVR_HIDEALARM_V30() {
        }
    }

    public static class NET_DVR_MOTION extends Structure {
        public byte[] byMotionScope = new byte[396];
        public byte byMotionSensitive;
        public byte byEnableHandleMotion;
        public byte[] reservedData = new byte[2];
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION strMotionHandleType;
        public byte[] byRelRecordChan = new byte[16];

        public NET_DVR_MOTION() {
        }
    }

    public static class NET_DVR_MOTION_V30 extends Structure {
        public HCNetSDK.byte96[] byMotionScope = new HCNetSDK.byte96[64];
        public byte byMotionSensitive;
        public byte byEnableHandleMotion;
        public byte byPrecision;
        public byte reservedData;
        public HCNetSDK.NET_DVR_HANDLEEXCEPTION_V30 struMotionHandleType;
        public HCNetSDK.NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new HCNetSDK.NET_DVR_SCHEDTIMEWEEK[7];
        public byte[] byRelRecordChan = new byte[64];

        public NET_DVR_MOTION_V30() {
        }
    }

    public static class byte96 extends Structure {
        public byte[] byMotionScope = new byte[96];

        public byte96() {
        }
    }

    public static class NET_DVR_SCHEDTIMEWEEK extends Structure {
        public HCNetSDK.NET_DVR_SCHEDTIME[] struAlarmTime = new HCNetSDK.NET_DVR_SCHEDTIME[8];

        public NET_DVR_SCHEDTIMEWEEK() {
        }
    }

    public static class NET_DVR_NETCFG extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_ETHERNET[] struEtherNet = new HCNetSDK.NET_DVR_ETHERNET[2];
        public byte[] sManageHostIP = new byte[16];
        public short wManageHostPort;
        public byte[] sIPServerIP = new byte[16];
        public byte[] sMultiCastIP = new byte[16];
        public byte[] sGatewayIP = new byte[16];
        public byte[] sNFSIP = new byte[16];
        public byte[] sNFSDirectory = new byte[128];
        public int dwPPPOE;
        public byte[] sPPPoEUser = new byte[32];
        public byte[] sPPPoEPassword = new byte[16];
        public byte[] sPPPoEIP = new byte[16];

        public NET_DVR_NETCFG() {
        }
    }

    public static class NET_DVR_NETCFG_V30 extends Structure {
        public int dwSize;
        public HCNetSDK.NET_DVR_ETHERNET_V30[] struEtherNet = new HCNetSDK.NET_DVR_ETHERNET_V30[2];
        public HCNetSDK.NET_DVR_IPADDR[] struRes1 = new HCNetSDK.NET_DVR_IPADDR[2];
        public HCNetSDK.NET_DVR_IPADDR struAlarmHostIpAddr;
        public short[] wRes2 = new short[2];
        public short wAlarmHostIpPort;
        public byte byUseDhcp;
        public byte byRes3;
        public HCNetSDK.NET_DVR_IPADDR struDnsServer1IpAddr;
        public HCNetSDK.NET_DVR_IPADDR struDnsServer2IpAddr;
        public byte[] byIpResolver = new byte[64];
        public short wIpResolverPort;
        public short wHttpPortNo;
        public HCNetSDK.NET_DVR_IPADDR struMulticastIpAddr;
        public HCNetSDK.NET_DVR_IPADDR struGatewayIpAddr;
        public HCNetSDK.NET_DVR_PPPOECFG struPPPoE;
        public byte[] byRes = new byte[64];

        public NET_DVR_NETCFG_V30() {
        }

        public String toString() {
            return "NET_DVR_NETCFG_V30.dwSize: " + this.dwSize + "\nNET_DVR_NETCFG_V30.struEtherNet[0]: \n" + this.struEtherNet[0] + "\nNET_DVR_NETCFG_V30.struAlarmHostIpAddr: \n" + this.struAlarmHostIpAddr + "\nNET_DVR_NETCFG_V30.wAlarmHostIpPort: " + this.wAlarmHostIpPort + "\nNET_DVR_NETCFG_V30.wHttpPortNo: " + this.wHttpPortNo + "\nNET_DVR_NETCFG_V30.struGatewayIpAddr: \n" + this.struGatewayIpAddr + "\n";
        }
    }

    public static class NET_DVR_PPPOECFG extends Structure {
        public int dwPPPoE;
        public byte[] sPPPoEUser = new byte[32];
        public byte[] sPPPoEPassword = new byte[16];
        public HCNetSDK.NET_DVR_IPADDR struPPPoEIP;

        public NET_DVR_PPPOECFG() {
        }
    }

    public static class NET_DVR_ETHERNET extends Structure {
        public byte[] sDVRIP = new byte[16];
        public byte[] sDVRIPMask = new byte[16];
        public int dwNetInterface;
        public short wDVRPort;
        public byte[] byMACAddr = new byte[6];

        public NET_DVR_ETHERNET() {
        }
    }

    public static class NET_DVR_ETHERNET_V30 extends Structure {
        public HCNetSDK.NET_DVR_IPADDR struDVRIP;
        public HCNetSDK.NET_DVR_IPADDR struDVRIPMask;
        public int dwNetInterface;
        public short wDVRPort;
        public short wMTU;
        public byte[] byMACAddr = new byte[6];

        public NET_DVR_ETHERNET_V30() {
        }

        public String toString() {
            return "NET_DVR_ETHERNET_V30.struDVRIP: \n" + this.struDVRIP + "\nNET_DVR_ETHERNET_V30.struDVRIPMask: \n" + this.struDVRIPMask + "\nNET_DVR_ETHERNET_V30.dwNetInterface: " + this.dwNetInterface + "\nNET_DVR_ETHERNET_V30.wDVRPort: " + this.wDVRPort + "\nNET_DVR_ETHERNET_V30.wMTU: " + this.wMTU + "\nNET_DVR_ETHERNET_V30.byMACAddr: " + new String(this.byMACAddr) + "\n";
        }
    }

    public static class NET_DVR_IPADDR extends Structure {
        public byte[] sIpV4 = new byte[16];
        public byte[] byRes = new byte[128];

        public NET_DVR_IPADDR() {
        }

        public String toString() {
            return "NET_DVR_IPADDR.sIpV4: " + new String(this.sIpV4) + "\nNET_DVR_IPADDR.byRes: " + new String(this.byRes) + "\n";
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("sIpV4", "byRes");
        }
    }

    public static class NET_DVR_DEVICECFG_V40 extends Structure {
        public int dwSize;
        public byte[] sDVRName = new byte[32];
        public int dwDVRID;
        public int dwRecycleRecord;
        public byte[] sSerialNumber = new byte[48];
        public int dwSoftwareVersion;
        public int dwSoftwareBuildDate;
        public int dwDSPSoftwareVersion;
        public int dwDSPSoftwareBuildDate;
        public int dwPanelVersion;
        public int dwHardwareVersion;
        public byte byAlarmInPortNum;
        public byte byAlarmOutPortNum;
        public byte byRS232Num;
        public byte byRS485Num;
        public byte byNetworkPortNum;
        public byte byDiskCtrlNum;
        public byte byDiskNum;
        public byte byDVRType;
        public byte byChanNum;
        public byte byStartChan;
        public byte byDecordChans;
        public byte byVGANum;
        public byte byUSBNum;
        public byte byAuxoutNum;
        public byte byAudioNum;
        public byte byIPChanNum;
        public byte byZeroChanNum;
        public byte bySupport;
        public byte byEsataUseage;
        public byte byIPCPlug;
        public byte byStorageMode;
        public byte bySupport1;
        public short wDevType;
        public byte[] byDevTypeName = new byte[24];
        public byte bySupport2;
        public byte byAnalogAlarmInPortNum;
        public byte byStartAlarmInNo;
        public byte byStartAlarmOutNo;
        public byte byStartIPAlarmInNo;
        public byte byStartIPAlarmOutNo;
        public byte byHighIPChanNum;
        public byte byEnableRemotePowerOn;
        public short wDevClass;
        public byte[] byRes2 = new byte[6];

        public NET_DVR_DEVICECFG_V40() {
        }
    }

    public static class NET_DVR_DEVICECFG extends Structure {
        public int dwSize;
        public byte[] sDVRName = new byte[32];
        public int dwDVRID;
        public int dwRecycleRecord;
        public byte[] sSerialNumber = new byte[48];
        public int dwSoftwareVersion;
        public int dwSoftwareBuildDate;
        public int dwDSPSoftwareVersion;
        public int dwDSPSoftwareBuildDate;
        public int dwPanelVersion;
        public int dwHardwareVersion;
        public byte byAlarmInPortNum;
        public byte byAlarmOutPortNum;
        public byte byRS232Num;
        public byte byRS485Num;
        public byte byNetworkPortNum;
        public byte byDiskCtrlNum;
        public byte byDiskNum;
        public byte byDVRType;
        public byte byChanNum;
        public byte byStartChan;
        public byte byDecordChans;
        public byte byVGANum;
        public byte byUSBNum;
        public byte byAuxoutNum;
        public byte byAudioNum;
        public byte byIPChanNum;

        public NET_DVR_DEVICECFG() {
        }
    }

    public static class NET_DVR_HANDLEEXCEPTION extends Structure {
        public int dwHandleType;
        public byte[] byRelAlarmOut = new byte[4];

        public NET_DVR_HANDLEEXCEPTION() {
        }
    }

    public static class NET_DVR_HANDLEEXCEPTION_V30 extends Structure {
        public int dwHandleType;
        public byte[] byRelAlarmOut = new byte[96];

        public NET_DVR_HANDLEEXCEPTION_V30() {
        }
    }

    public static class NET_DVR_SCHEDTIME extends Structure {
        public byte byStartHour;
        public byte byStartMin;
        public byte byStopHour;
        public byte byStopMin;

        public NET_DVR_SCHEDTIME() {
        }
    }

    public static class NET_DVR_TIME extends Structure {
        public int dwYear;
        public int dwMonth;
        public int dwDay;
        public int dwHour;
        public int dwMinute;
        public int dwSecond;

        public NET_DVR_TIME() {
        }

        public String toString() {
            return "NET_DVR_TIME.dwYear: " + this.dwYear + "\nNET_DVR_TIME.dwMonth: \n" + this.dwMonth + "\nNET_DVR_TIME.dwDay: \n" + this.dwDay + "\nNET_DVR_TIME.dwHour: \n" + this.dwHour + "\nNET_DVR_TIME.dwMinute: \n" + this.dwMinute + "\nNET_DVR_TIME.dwSecond: \n" + this.dwSecond;
        }

        public String toStringTime() {
            return String.format("%02d/%02d/%02d%02d:%02d:%02d", this.dwYear, this.dwMonth, this.dwDay, this.dwHour, this.dwMinute, this.dwSecond);
        }

        public String toStringTitle() {
            return String.format("Time%02d%02d%02d%02d%02d%02d", this.dwYear, this.dwMonth, this.dwDay, this.dwHour, this.dwMinute, this.dwSecond);
        }

        protected List<String> getFieldOrder() {
            return Arrays.asList("dwYear", "dwMonth", "dwDay", "dwHour", "dwMinute", "dwSecond");
        }
    }
}

