下面是我转好的Delphi的结构体  NAME_LEN=32;
  STREAM_ID_LEN= 32;
  MAX_DAYS=7;  //每周天数
  MAX_CHANNUM=16;
  MAX_CHANNUM_V40=512;
  MAX_TIMESEGMENT_V30=8;//9000设备最大时间段数
  MAX_SHELTERNUM=4;       //8000设备最大遮挡区域数
  NET_DVR_GET_PICCFG_V40=6179;    //获取图象参数 支持变长
  NET_DVR_SET_PICCFG_V40=6180;    //设置图象参数, 支持变长  LPNET_DVR_COLOR=^NET_DVR_COLOR;
  NET_DVR_COLOR= record
    byBrightness:Byte; //亮度,0-255
    byContrast:Byte;   //对比度,0-255
    bySaturation:Byte; //饱和度,0-255
    byHue:Byte;        //色调,0-255
  end;
  //时间段(子结构)
  LPNET_DVR_SCHEDTIME=^NET_DVR_SCHEDTIME;
  NET_DVR_SCHEDTIME= record
    byStartHour:Byte;//开始时间
    byStartMin:Byte;
    byStopHour:Byte;//结束时间
    byStopMin:Byte;
  end;
  LPNET_DVR_VICOLOR=^NET_DVR_VICOLOR;
  NET_DVR_VICOLOR= record
    struColor:Array[0..MACADDR_LEN-1] of NET_DVR_COLOR;//图象参数(第一个有效,其他三个保留)
    struHandleTime:Array[0..MAX_TIMESEGMENT_V30-1] of NET_DVR_SCHEDTIME; //处理时间段(保留)
  end;
  //遮挡区域(子结构)
  LPNET_DVR_SHELTER=^NET_DVR_SHELTER;
  NET_DVR_SHELTER= record
    wHideAreaTopLeftX:Word;//遮挡区域的x坐标
    wHideAreaTopLeftY:Word;//遮挡区域的y坐标
    wHideAreaWidth:Word;//遮挡区域的宽
    wHideAreaHeigh:Word;//遮挡区域的高
  end;
  //信号丢失报警
  LPNET_DVR_VILOST_V40=^NET_DVR_VILOST_V40;
  NET_DVR_VILOST_V40= record
    dwEnableVILostAlarm:LongWord;//是否启动信号丢失报警 ,0-否,1-是
    dwHandleType:LongWord;//异常处理,异常处理方式的"或"结果
    dwMaxRelAlarmOutChanNum:LongWord;//触发的报警输出通道数(只读)最大支持数量
    dwRelAlarmOut:array [0..MAX_ALARMOUT_V40-1] of LongWord;//触发报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效*/
    struAlarmTime:array [0..MAX_DAYS-1,0..MAX_TIMESEGMENT_V30-1] of NET_DVR_SCHEDTIME;//布防时间
    byRes:array [0..63] of Byte;//保留
  end;
  LPNET_DVR_MOTION_SINGLE_AREA=^NET_DVR_MOTION_SINGLE_AREA;
  NET_DVR_MOTION_SINGLE_AREA= record
    byMotionScope:array [0..63,0..95] of Byte;//侦测区域,0-96位,表示64行,共有96*64个小宏块,目前有效的是22*18,为1表示是移动侦测区域,0-表示不是
    byMotionSensitive:Byte;//移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭
    byRes:array [0..2] of Byte;
  end;
  //区域框结构
  LPNET_VCA_RECT=^NET_VCA_RECT;
  NET_VCA_RECT= record
    fX:LongWord;
    fY:LongWord;
    fWidth:LongWord;
    fHeight:LongWord;
  end;
  LPNET_DVR_DNMODE=^NET_DVR_DNMODE;
  NET_DVR_DNMODE= record
    byObjectSize:Byte;//占比参数(0~100)
    byMotionSensitive:Byte; //移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭
    byRes:array [0..5] of Byte;
  end;
  LPNET_DVR_MOTION_MULTI_AREAPARAM=^NET_DVR_MOTION_MULTI_AREAPARAM;
  NET_DVR_MOTION_MULTI_AREAPARAM= record
    byAreaNo:Byte;//区域编号(IPC- 1~8)
    byRes:array [0..2] of Byte;
    struRect:NET_VCA_RECT;//单个区域的坐标信息(矩形) size = 16;
    struDayNightDisable:NET_DVR_DNMODE;//关闭模式
    struDayModeParam:NET_DVR_DNMODE;//白天模式
    struNightModeParam:NET_DVR_DNMODE;//夜晚模式
    byRes1:array [0..7] of Byte;
  end;
  LPNET_DVR_MOTION_MULTI_AREA=^NET_DVR_MOTION_MULTI_AREA;
  NET_DVR_MOTION_MULTI_AREA= record
    byDayNightCtrl:Byte;//日夜控制 0~关闭,1~自动切换,2~定时切换(默认关闭)
    byRes:array [0..2] of Byte;
    struScheduleTime:NET_DVR_SCHEDULE_DAYTIME;//切换时间  16
    struMotionMultiAreaParam:array [0..MAX_MULTI_AREA_NUM-1] of NET_DVR_MOTION_MULTI_AREAPARAM;//最大支持24个区域
    byRes1:array [0..59] of Byte;
  end;  LPNET_DVR_MOTION_MODE_PARAM=^NET_DVR_MOTION_MODE_PARAM;
  NET_DVR_MOTION_MODE_PARAM= record
    struMotionSingleArea:NET_DVR_MOTION_SINGLE_AREA; //普通模式下的单区域设
    struMotionMultiArea:NET_DVR_MOTION_MULTI_AREA; //专家模式下的多区域设置
  end;
  LPNET_DVR_MOTION_V40=^NET_DVR_MOTION_V40;
  NET_DVR_MOTION_V40= record
    struMotionMode:NET_DVR_MOTION_MODE_PARAM;
    byEnableHandleMotion:Byte;  //是否处理移动侦测 0-否 1-是
    byEnableDisplay:Byte;    //启用移动侦测高亮显示,0-否,1-是
    byConfigurationMode:Byte; //0~普通,1~专家(5.1.0新增)
    byRes1:Byte;
    dwHandleType:LongWord; //异常处理,异常处理方式的"或"结果
    dwMaxRelAlarmOutChanNum:LongWord;
    dwRelAlarmOut:array [0..MAX_ALARMOUT_V40-1] of LongWord;//实际触发的报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效
    struAlarmTime:array [0..MAX_DAYS-1,0..MAX_TIMESEGMENT_V30-1] of NET_DVR_SCHEDTIME;//布防时间
    //触发的录像通道
    dwMaxRecordChanNum:LongWord;
    dwRelRecordChan:array [0..MAX_CHANNUM_V40-1] of LongWord;//实际触发录像通道,按值表示,采用紧凑型排列,从下标0 - dwRelRecordChan -1有效,如果中间遇到0xffffffff,则后续无效*/
    byRes:array [0..127] of Byte;
  end;
  //遮挡报警
  LPNET_DVR_HIDEALARM_V40=^NET_DVR_HIDEALARM_V40;
  NET_DVR_HIDEALARM_V40= record
    dwEnableHideAlarm:LongInt;//是否启动遮挡报警,0-否,1-低灵敏度,2-中灵敏度,3-高灵敏度
    wHideAlarmAreaTopLeftX:Word;  //遮挡区域的x坐标
    wHideAlarmAreaTopLeftY:Word;  //遮挡区域的y坐标
    wHideAlarmAreaWidth:Word;     //遮挡区域的宽
    wHideAlarmAreaHeight:Word;    //遮挡区域的高
    dwHandleType:LongInt;//信号丢失触发报警输出
    dwMaxRelAlarmOutChanNum:LongInt;//触发的报警输出通道数(只读)最大支持数量
    dwRelAlarmOut:array [0..MAX_ALARMOUT_V40] of LongInt;//触发报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效
    struAlarmTime:array [0..MAX_DAYS,0..MAX_TIMESEGMENT_V30] of NET_DVR_SCHEDTIME;//布防时间
    byRes:array [0..63] of Byte;
  end;
  LPNET_DVR_PICCFG_V40=^NET_DVR_PICCFG_V40;
  NET_DVR_PICCFG_V40= record
    dwSize:LongWord;
    sChanName:array[0..NAME_LEN-1] of Byte;
    dwVideoFormat:LongWord; //只读 视频制式 1-NTSC 2-PAL
    struViColor:NET_DVR_VICOLOR; // 图像参数按时间段设置
    //显示通道名
    dwShowChanName:LongWord; // 预览的图象上是否显示通道名称,0-不显示,1-显示
    wShowNameTopLeftX:Word; //通道名称显示位置的x坐标
    wShowNameTopLeftY:Word; //通道名称显示位置的y坐标
    //隐私遮挡
    dwEnableHide:LongWord;
    struShelter:Array[0..MAX_SHELTERNUM-1] of NET_DVR_SHELTER;
    //OSD
    dwShowOsd:LongWord;//预览的图象上是否显示OSD,0-不显示,1-显示
    wOSDTopLeftX:Word;//OSD的x坐标
    wOSDTopLeftY:Word;//OSD的y坐标
    byOSDType:Byte;//OSD类型(主要是年月日格式)
    byDispWeek:Byte;//是否显示星期
    byOSDAttrib:Byte;//OSD属性:透明,闪烁
    byHourOSDType:Byte;//OSD小时制:0-24小时制,1-12小时制
    byFontSize:Byte;//16*16(中)/8*16(英),1-32*32(中)/16*32(英),2-64*64(中)/32*64(英) FOR 91系列HD-SDI高清DVR
    byRes1array:array[0..2] of Byte;//保留
    struVILost:NET_DVR_VILOST_V40; //视频信号丢失报警(支持组)
    struAULost:NET_DVR_VILOST_V40; //音频信号丢失报警(支持组)
    struMotion:NET_DVR_MOTION_V40; //移动侦测报警(支持组)
    struHideAlarm:NET_DVR_HIDEALARM_V40; //遮挡报警(支持组)
    byRes:array[0..127] of Byte;
  end;

解决方案 »

  1.   

    我在Delphi中此函数的定义HK_DLL='HCNetSDK.dll';
    function NET_DVR_GetDVRConfig(lUserID:LongInt;
                                  dwCommand:LongWord;
                                  lChannel:LongInt;
                                  lpOutBuffer:Pointer;
                                  dwOutBufferSize:LongInt;
                                  lpBytesReturned:PWORD):Boolean ;stdcall;external HK_DLL
      

  2.   

    结构体太多了,补上两个  LPNET_DVR_DAYTIME=^NET_DVR_DAYTIME;
      NET_DVR_DAYTIME= record
        byHour:Byte;//0~24
        byMinute:Byte;//0~60
        bySecond:Byte;//0~60
        byRes:Byte;
        wMilliSecond:Word; //0~1000
        byRes1:array [0..1] of Byte;
      end;
      LPNET_DVR_SCHEDULE_DAYTIME=^NET_DVR_SCHEDULE_DAYTIME;
      NET_DVR_SCHEDULE_DAYTIME= record
        struStartTime:NET_DVR_DAYTIME;//开始时间
        struStopTime:NET_DVR_DAYTIME; //结束时间
      end;
      

  3.   

    返回值有问题,dwShowChanName,dwShowOsd都显示的是0,实际上我已经用客户端软件设置为1了