public uint ClientStart(uint lUserID, string m_ip, uint m_port, CHANNEL_CLIENTINFO m_pChaninfo)
 {
     return VSNET_ClientStart(lUserID, m_ip, (ushort)m_port, ref m_pChaninfo);
 }
 private static extern uint VSNET_ClientStart(uint lUserID, string m_url, ushort m_port, ref CHANNEL_CLIENTINFO m_pChaninfo);
        /// <summary>
        /// 功能:启动图像实时预览
        /// </summary>
        /// <param name="IUserId">用户登录ID,DeviceLogin 的返回值.</param>
        /// <param name="lChannel">硬盘录像机通道号</param>
        /// <param name="stringbsFileName">文件名</param>
        /// <returns>返回值:-1 表示失败,其他值作为其它函数的参数</returns>
        public int SaveNoRealData(int IUserId, int lChannel,string stringbsFileName)
        {
            CHANNEL_CLIENTINFO m_pChaninfo = new CHANNEL_CLIENTINFO();
            m_pChaninfo.m_channelID = (byte)(lChannel - 1);
            m_pChaninfo.m_buffnum = 50;
            m_pChaninfo.m_hVideoWnd = IntPtr.Zero;
            m_pChaninfo.m_streamType = 0;
            m_pChaninfo.m_tranType = 1;
            m_pChaninfo.m_streamType = 0;
            m_pChaninfo.m_startplay = false;
            m_pChaninfo.m_sFilename = stringbsFileName;

            string m_url = "";

            ILoginData loginData = loginDataList.FindByLoginDataHandle(IUserId);

            if (loginData != null)
            {
                m_url = loginData.DeviceIP;
            }
            else
            {
                return -1;
            }

            uint realHandle = VSNET_ClientStart(loginData.LoginHandle, m_url, 5454, ref m_pChaninfo);

            if ((int)realHandle != -1 && (int)realHandle != 0)
            {
                RealHandleData realHandleData = new RealHandleData();
                realHandleData.WndHandle = IntPtr.Zero;
                realHandleData.ChannelNo = lChannel;
                realHandleData.LoginHandle = loginData.LoginDataHandle;
                realHandleData.RealHandle = realHandle;
                realHandleData.RealPlayHandle = realHandle.GetHashCode();

                if (!realHandleDataList.Contents(realHandleData))
                {
                    realHandleDataList.Add(realHandleData);
                }

                return realHandleData.RealPlayHandle;
            }
            else
            {
                return -1;
            }
        }
        /// <summary>
        /// 功能:启动图像实时预览
        /// </summary>
        /// <param name="IUserId">用户登录ID,DeviceLogin 的返回值.</param>
        /// <param name="lChannel">硬盘录像机通道号</param>
        /// <param name="hPlayWnd">播放窗口的句柄</param>
        /// <returns>返回值:-1 表示失败,其他值作为其它函数的参数</returns>
        public int RealPlay(int IUserId, int lChannel, IntPtr hPlayWnd)
        {
            CHANNEL_CLIENTINFO m_pChaninfo = new CHANNEL_CLIENTINFO();
            m_pChaninfo.m_channelID = (byte) (lChannel-1);
            m_pChaninfo.m_buffnum = 50;
            m_pChaninfo.m_hVideoWnd = hPlayWnd;
            m_pChaninfo.m_streamType = 0;
            m_pChaninfo.m_tranType = 1;
            m_pChaninfo.m_streamType = 0;
            m_pChaninfo.m_startplay = true;
            m_pChaninfo.m_sFilename = "";

            string m_url="";

            ILoginData loginData = loginDataList.FindByLoginDataHandle(IUserId);

             if (loginData != null)
            {
                m_url = loginData.DeviceIP;
            }
             else
             {
                 return -1;
             }

            uint realHandle = VSNET_ClientStart(loginData.LoginHandle, m_url, 5454, ref m_pChaninfo);

            if ((int)realHandle != -1 && (int)realHandle != 0)
            {
                RealHandleData realHandleData = new RealHandleData();
                realHandleData.WndHandle = hPlayWnd;
                realHandleData.ChannelNo = lChannel;
                realHandleData.LoginHandle = loginData.LoginDataHandle;
                realHandleData.RealHandle = realHandle;

                //realHandleData.RealPlayHandle = (int) lastRealPlayHandleHT[(int) hPlayWnd];

                if (!lastRealPlayHandleHT.Contains(hPlayWnd))
                {
                    realHandleData.RealPlayHandle = realHandle.GetHashCode();
                }
                else
                {
                    if ((int)lastRealPlayHandleHT[hPlayWnd] != -1)
                    {
                        realHandleData.RealPlayHandle = (int)lastRealPlayHandleHT[hPlayWnd];
                        lastRealPlayHandleHT[hPlayWnd] = -1;
                    }
                    else
                    {
                        realHandleData.RealPlayHandle = realHandle.GetHashCode();
                    }
                }

                //if (lastRealPlayHandle != -1)
                //{
                //    realHandleData.RealPlayHandle = lastRealPlayHandle;
                //    lastRealPlayHandle = -1;
                //}
                //else
                //{
                //    realHandleData.RealPlayHandle = realHandle.GetHashCode();
                //}

                if (!realHandleDataList.Contents(realHandleData))
                {
                    realHandleDataList.Add(realHandleData);
                }

                return realHandleData.RealPlayHandle;
            }
            else
            {
                return -1;
            }
        }
 private static extern int VSNET_InfoClientStart(string m_infourl, ref CHANNEL_CLIENTINFO m_pChaninfo,
     ushort winfoport, int streamtype);
 private static extern int VSNET_ClientStart(string m_url, ref CHANNEL_CLIENTINFO m_pChaninfo, ushort wserport);