starTime =new HCNetSDK.NET_DVR_TIME();
            starTime.dwYear = (uint)2010;
            starTime.dwMonth = (uint)09;
            starTime.dwDay = (uint)01;
            starTime.dwHour = (uint)09;
            starTime.dwMinute = (uint)47;
            starTime.dwSecond = (uint)00;            stopTime = new HCNetSDK.NET_DVR_TIME();
            stopTime.dwYear = (uint)2010;
            stopTime.dwMonth = (uint)09;
            stopTime.dwDay = (uint)01;
            stopTime.dwHour = (uint)09;
            stopTime.dwMinute = (uint)50;
            stopTime.dwSecond = (uint)00;            if (HCNetSDK.NET_DVR_PlayBackByTime(lUserID, 1, starTime, stopTime, pic_back.Handle) == -1)
            {
                MessageBox.Show("播放录像成功!");
            }
            else
            {
                MessageBox.Show("播放录像失败!");
            }这是我写的代码  
错误是:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。有用过这个的吗?怎么个情况 急

解决方案 »

  1.   

    对了那个if判断-1应该是失败 但无关紧要 根本就运行不到那 
    执行 HCNetSDK.NET_DVR_PlayBackByTime(lUserID, 1, starTime, stopTime, pic_back.Handle) 的时候出的错
      

  2.   

    http://topic.csdn.net/u/20090421/16/43e29371-abcb-40a5-b8f2-f2a8253122f1.html类型问题, 把DLL的代码贴出来。
      

  3.   

    dll代码来了
    /// 7.3.7   按时间回放
            ///     NET_DVR_API LONG __stdcall NET_DVR_PlayBackByTime(LONG lUserID,LONG lChannel, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime, HWND hWnd);
            /// </summary>
            /// <param name="lUserID">[in]NET_DVR_Login或者NET_DVR_Login_30的返回值</param>
            /// <param name="lChannel">[in]通道号</param>
            /// <param name="lpStartTime">[in]文件的开始时间</param>
            /// <param name="lpStopTime">[in]文件的结束时间</param>
            /// <param name="hWnd">[in]回放的窗口句柄</param>
            /// <returns></returns>
            [DllImport("HCNetSDK.dll")]
            public static extern int NET_DVR_PlayBackByTime(int lUserID, int lChannel, NET_DVR_TIME lpStartTime, NET_DVR_TIME lpStopTime, IntPtr hWnd);
      

  4.   

    先用 NET_DVR_GetLastError()  获取一下错误信息
      

  5.   

    public struct NET_DVR_TIME
            {
                /// <summary>
                /// 年
                /// </summary>
                public uint dwYear;
                /// <summary>
                /// 月
                /// </summary>
                public uint dwMonth;
                /// <summary>
                /// 日
                /// </summary>
                public uint dwDay;
                /// <summary>
                /// 时
                /// </summary>
                public uint dwHour;
                /// <summary>
                /// 分
                /// </summary>
                public uint dwMinute;
                /// <summary>
                /// 秒
                /// </summary>
                public uint dwSecond;
            }
      

  6.   

    该接口指定了当前要播放的录像文件,调用成功后,还必须调用NET_DVR_PlayBackControl接口的开始播放控制命令(NET_DVR_PLAYSTART)才能实现回放。
      

  7.   

    回复8楼 这个我知道,可是在指定的时候就出现错误了,我也怀疑是其中的参数哪个写错了,能帮我看看吗都在1楼的代码里,录制文件的时候,录好的文件时放在什么地方,我用web调用硬盘录像机的时候录像时放在我的本地c盘的,自己做的程序录得却不知道放在哪了
      

  8.   


    HCNetSDK.NET_DVR_PlayBackByTime(lUserID, 1, starTime, stopTime, pic_back.Handle)最后一个参数不对吧,应该是枚举类型的
      

  9.   

    最后一个参数是 HWND 类型,是回放的窗口句柄,若置为空,SDK仍能收到码流数据,但不解码显示 
      

  10.   


    视频文件到底是在硬盘录像机,还是在你本地?这个你得搞清楚,要是在本地NET_DVR_PlayBackByTime这个方法不可用前一阵我做的是DVR视频文件在本地,还是自己写的播放器
      

  11.   


    视频文件到底是在硬盘录像机,还是在你本地?这个你得搞清楚,要是在本地NET_DVR_P……
    [/Quote]这个硬盘录像机不是可以利用web访问吗,就是得装一个插件那个,我用那个录像就是保存在了本地,我自己写的手动录像:
     private void btn_play_Click(object sender, EventArgs e)
            {
                if (HCNetSDK.NET_DVR_StartDVRRecord(lUserID, 1, 0))
                {
                    MessageBox.Show("手动录像中!");
                }
                else
                {
                    MessageBox.Show("录像失败!");
                }
            }        private void btn_stopplay_Click(object sender, EventArgs e)
            {
                if (HCNetSDK.NET_DVR_StopDVRRecord(lUserID, 1))
                {
                    MessageBox.Show("手动录像停止!");
                }
                else
                {
                    MessageBox.Show("录像停止失败!");
                }
            }都显示成功了,本地文件夹里也没有,也不知道有没有在硬盘录像机里,悲剧了。
      

  12.   

    要是录像在本地,就用不着这个NET_DVR_PlayBackByTime方法了
    参数IUserID是登陆的返回值,你的录像都在本地  不用登陆了?
      

  13.   


    这个我没用过,我用的是DVR视频文件,就在本地存着