public void QueryConferenceHistory(int page, bool refresh = false)
        {
            List<ConferenceItem> list = new List<ConferenceItem>();
            int iSizeSTConvHistroyData = Marshal.SizeOf(typeof(STConvHistroyData));
            int iSizeSTConvHistroyItem = Marshal.SizeOf(typeof(STConvHistroyItem));
            int uiBufSize = (iSizeSTConvHistroyData + iSizeSTConvHistroyItem * (count - 1));
            byte[] pCallHistory = new byte[uiBufSize];

            UCServiceRetvCode iRet = (UCServiceRetvCode)query.QueryConvHistory(page * count, (page + 1) * count - 1, pCallHistory, uiBufSize);
            if (UCServiceRetvCode.UC_SDK_Success == iRet)
            {
                IntPtr tempInfoIntPtr = Marshal.AllocHGlobal((int)iSizeSTConvHistroyData);
                byte[] tempInfoByte = new byte[iSizeSTConvHistroyData];

                Marshal.Copy(pCallHistory, 0, tempInfoIntPtr, (int)iSizeSTConvHistroyData);
                STConvHistroyData head = (STConvHistroyData)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STConvHistroyData));

                winHisitory.labTotal.Content = "/" + ((head.iTotal % count) == 0 ? (head.iTotal / count == 0 ? 1 : head.iTotal / count).ToString() : (head.iTotal / count + 1).ToString());
                winHisitory.txtPage.Text = (page + 1).ToString();
                int second = 0;
                for (int i = -1; i < head.iTotal - 1 && i < head.iTo - head.iFrom; i++)
                {
                    Marshal.Copy(pCallHistory, iSizeSTConvHistroyData + iSizeSTConvHistroyItem * i, tempInfoIntPtr, (int)iSizeSTConvHistroyItem);
                    STConvHistroyItem item = (STConvHistroyItem)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STConvHistroyItem));

                    ConferenceItem it = new ConferenceItem();
                    //2015/8/24    UTF8 转码UNICODE
                    //byte[] buffer1 = Encoding.Default.GetBytes(item.compereName);
                    //byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.Default, buffer1, 0, buffer1.Length);
                    //string item1 = Encoding.Default.GetString(buffer2, 0, buffer2.Length);
                    //it.Initiator = item1;
                    it.Initiator = item.compereName;

                    DateTime dt = DateTime.Parse(item.startTime.year.ToString() + "-" + item.startTime.month + "-" + item.startTime.day
                                    + " " + item.startTime.hour + ":" + item.startTime.minute + ":" + item.startTime.second);
                    it.StartTime = dt.ToString("yyyy-MM-dd HH:mm:ss");
                    second = Convert.ToInt32(item.duration);
                    it.Duration = (second == -1 ? "00:00:00" : DateTime.Today.AddSeconds(second).ToString("HH:mm:ss"));
                    it.ConvID = item.convID;

                    list.Add(it);
                }

                winHisitory.listConference.ItemsSource = null;
                winHisitory.listConference.ItemsSource = list;
                Marshal.Release(tempInfoIntPtr);
            }
            else
            {
                winHisitory.labTotal.Content = "/1";
                winHisitory.txtPage.Text = "1";
            }
            if (list.Count > 0)
            {
                string _convID = list[0].ConvID;
                string initiator = list[0].Initiator;
                QueryHisConvPartByID(_convID, initiator);
            }
            else
            {
                winHisitory.listParticipants.ItemsSource = null;
            }
        }
        public void QueryConferenceHistory(int page, bool refresh = false)
        {
            List <ConferenceItem> list = new List <ConferenceItem>();
            int iSizeSTConvHistroyData = Marshal.SizeOf(typeof(STConvHistroyData));
            int iSizeSTConvHistroyItem = Marshal.SizeOf(typeof(STConvHistroyItem));
            int uiBufSize = (iSizeSTConvHistroyData + iSizeSTConvHistroyItem * (count - 1));

            byte[] pCallHistory = new byte[uiBufSize];

            UCServiceRetvCode iRet = (UCServiceRetvCode)query.QueryConvHistory(page * count, (page + 1) * count - 1, pCallHistory, uiBufSize);

            if (UCServiceRetvCode.UC_SDK_Success == iRet)
            {
                IntPtr tempInfoIntPtr = Marshal.AllocHGlobal((int)iSizeSTConvHistroyData);
                byte[] tempInfoByte   = new byte[iSizeSTConvHistroyData];

                Marshal.Copy(pCallHistory, 0, tempInfoIntPtr, (int)iSizeSTConvHistroyData);
                STConvHistroyData head = (STConvHistroyData)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STConvHistroyData));

                winHisitory.labTotal.Content = "/" + ((head.iTotal % count) == 0 ? (head.iTotal / count == 0 ? 1 : head.iTotal / count).ToString() : (head.iTotal / count + 1).ToString());
                winHisitory.txtPage.Text     = (page + 1).ToString();
                int second = 0;
                for (int i = -1; i < head.iTotal - 1 && i < head.iTo - head.iFrom; i++)
                {
                    Marshal.Copy(pCallHistory, iSizeSTConvHistroyData + iSizeSTConvHistroyItem * i, tempInfoIntPtr, (int)iSizeSTConvHistroyItem);
                    STConvHistroyItem item = (STConvHistroyItem)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STConvHistroyItem));

                    ConferenceItem it = new ConferenceItem();
                    //2015/8/24    UTF8 转码UNICODE
                    //byte[] buffer1 = Encoding.Default.GetBytes(item.compereName);
                    //byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.Default, buffer1, 0, buffer1.Length);
                    //string item1 = Encoding.Default.GetString(buffer2, 0, buffer2.Length);
                    //it.Initiator = item1;
                    it.Initiator = item.compereName;

                    DateTime dt = DateTime.Parse(item.startTime.year.ToString() + "-" + item.startTime.month + "-" + item.startTime.day
                                                 + " " + item.startTime.hour + ":" + item.startTime.minute + ":" + item.startTime.second);
                    it.StartTime = dt.ToString("yyyy-MM-dd HH:mm:ss");
                    second       = Convert.ToInt32(item.duration);
                    it.Duration  = (second == -1 ? "00:00:00" : DateTime.Today.AddSeconds(second).ToString("HH:mm:ss"));
                    it.ConvID    = item.convID;

                    list.Add(it);
                }

                winHisitory.listConference.ItemsSource = null;
                winHisitory.listConference.ItemsSource = list;
                Marshal.Release(tempInfoIntPtr);
            }
            else
            {
                winHisitory.labTotal.Content = "/1";
                winHisitory.txtPage.Text     = "1";
            }
            if (list.Count > 0)
            {
                string _convID   = list[0].ConvID;
                string initiator = list[0].Initiator;
                QueryHisConvPartByID(_convID, initiator);
            }
            else
            {
                winHisitory.listParticipants.ItemsSource = null;
            }
        }