解决方案 »

  1.   

    struct DEV_ENCODER_INFO{
      char   szDevIp[DH_MAX_IPADDR_LEN];
      WORD   wDevPort;
      BYTE   bDevChnEnable;
      BYTE   byDecoderID;
      char   szDevUser[DH_USER_NAME_LENGTH_EX];
      char   szDevPwd[DH_USER_PSW_LENGTH_EX];
      int    nDevChannel;
      int    nStreamType;
      BYTE   byConnType;
      BYTE   byWorkMode;
      WORD   wListenPort;
      DWORD  dwProtoType;
      char   szDevName[64];
      BYTE   byVideoInType;
      char   szDevIpEx[DH_MAX_IPADDR_OR_DOMAIN_LEN];
      BYTE   bySnapMode;
      BYTE   byManuFactory;
      BYTE   byDeviceType;
      BYTE   byDecodePolicy;
      BYTE   bReserved[3];
      DWORD   dwHttpPort;
      DWORD   dwRtspPort;
      char   reserved[36];
    };
    上面是c++的结构体定义
    下面是我在c#中的定义
     /// <summary>
        /// 编码器信息
        /// </summary>
          [StructLayout(LayoutKind.Sequential)]
        public struct DEV_ENCODER_INFO 
        {
            /// <summary>
            /// 前端DVR的IP地址
            /// </summary>
           [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
              public string szDevIP;
            /// <summary>
            /// 前端DVR的端口号
            /// </summary>
        //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
              public  ushort wDevPort;
            /// <summary>
            /// 解码通道使能
            /// </summary>
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
              public Byte[] bDevChnEnable;
          // public byte bDevChnEnable;
            /// <summary>
            /// 对应解码通道号
            /// </summary>
          // public byte byDecoderID;
           [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
           public Byte[] byDecoderID;
            /// <summary>
            /// 用户名
            /// </summary>
           [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
              public string szDevUser;
            /// <summary>
            /// 密码
            /// </summary>
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
              public string szDevPwd;
            /// <summary>
            /// 通道号
            /// </summary>
           public int    nDevChannel;
            /// <summary>
            /// 码流类型
            /// </summary>
           public int    nStreamType;
            /// <summary>
            /// 链接类型 0:TCP   1:UDP   2:组播
            /// </summary>
           // public byte  byConnType;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
            public Byte[] byConnType;
            /// <summary>
            /// 0:直连   1:转发
            /// </summary>
           //public byte   byWorkMode;
           [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
           public Byte[] byWorkMode;
            /// <summary>
            /// 指示侦听服务的端口,转发时有效
            /// </summary>
          // [MarshalAs(UnmanagedType.ByValArray ,SizeConst = 64)]
              public ushort   wListenPort;
            /// <summary>
            /// 0:兼容以前  1:大华二代协议  2:大华系统集成协议  3:大华DSS协议   4:大华rtsp协议
            /// </summary>
           //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
              public uint dwProtoType;
            /// <summary>
            /// 前端设备名称
            /// </summary>
           [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
              public string   szDevName;
            /// <summary>
            /// 该解码通道当前视频源类型:0-标清(SD)  1-高清(HD) 注:设备支持高清通道才有效
            /// </summary>
           //public byte   byVideoInType;
           [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
           public Byte[] byVideoInType;
            /// <summary>
            /// szDevip扩展,前端DVR的IP地址(可以输入域名)
            /// </summary>
           [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
              public string   szDevIpEx;
            /// <summary>
            /// 抓图模式(nStreamType==2时有效) 0:表示请求一帧,1:表示定时发送请求 
            /// </summary>
          // public byte   bySnapMode;
           [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
           public Byte[] bySnapMode;
            /// <summary>
            /// 目标设备的生产厂商,0:Private(大华私有),1: AEBell(美电) 
            /// </summary>
          // public byte   byManuFactory;
           [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
           public Byte[] byManuFactory;
            /// <summary>
            /// 目标设备的设备类型,0:IPC 
            /// </summary>
         //  public byte   byDeviceType;
           [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
           public Byte[] byDeviceType;
            /// <summary>
            /// 目标设备的解码策略,0:兼容以前 1:实时等级高 2:实时等级中 3:实时等级低 4:默认等级 5:流畅等级高 6:流畅等级中 7:流畅等级低 
            /// </summary>
          // public byte   byDecodePolicy;
           [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
           public Byte[] byDecodePolicy;
            /// <summary>
            /// 保留 
            /// </summary>       [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
           public string bReserved;
            /// <summary>
            /// Http端口号,0-65535 
            /// </summary>
          // [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
              public uint dwHttpPort;
            /// <summary>
            /// Rtsp端口号,0-65535 
            /// </summary>
           //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
              public uint  dwRtspPort;
            ///// <summary>
            ///// 
            ///// </summary>
            //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
            //  public string   szChnName;
            /// <summary>
            /// 
            /// </summary
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
              public string  reserved;    }我自己分析  是数据类型的问题  但我不知道 具体到哪个   急用 在线等