protected override void DefWndProc(ref Message m) { switch (m.Msg) { case 1001: int iErrorMsg = m.WParam.ToInt32(); if (iErrorMsg == 1) { ListViewItem listItem = new ListViewItem(); listItem.Text = "Fail"; string strTemp = string.Format("NET_SDK_CALLBACK_STATUS_FAILED"); listItem.SubItems.Add(strTemp); this.AddList(listViewResponse, listItem); } else if (iErrorMsg == 2) { ListViewItem listItem = new ListViewItem(); listItem.Text = "Fail"; string strTemp = string.Format("NET_SDK_CALLBACK_STATUS_EXCEPTION"); listItem.SubItems.Add(strTemp); this.AddList(listViewResponse, listItem); } else if (iErrorMsg == 3) { ListViewItem listItem = new ListViewItem(); listItem.Text = "Fail"; string strTemp = string.Format("NET_SDK_CALLBACK_OTHER_ERROR"); listItem.SubItems.Add(strTemp); this.AddList(listViewResponse, listItem); } else if (iErrorMsg == 4) { ListViewItem listItem = new ListViewItem(); listItem.Text = "Succ"; string strTemp = string.Format("NET_SDK_CALLBACK_FINISH"); listItem.SubItems.Add(strTemp); this.AddList(listViewResponse, listItem); } m_bStart = false; m_bFirst = true; if (-1 != m_lInfoSynHandle) { if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lInfoSynHandle)) { m_lInfoSynHandle = -1; } } break; case 1002: m_bGetResult = true; break; case 1003: IntPtr ptrResponse = (IntPtr)m.WParam.ToInt32(); string strResponseStatus = Marshal.PtrToStringAnsi(ptrResponse); string strResponse = null; if (m_bFirst) { m_bFirst = false; CResponseStatus JsonResponseStatus = new CResponseStatus(); strResponse = strResponseStatus; m_iCurProgress = 0; } else { if (m_command == SynInfoCommand.USER_INFO_SYN) { CUserInfoSyn JsonResponseStatus = new CUserInfoSyn(); JsonResponseStatus.UserInfoSync = new CUserInfoSynContent(); if (JsonResponseStatus.UserInfoSync != null) { strResponse = JsonConvert.SerializeObject(JsonResponseStatus.UserInfoSync.SyncInfo); m_iCurProgress = JsonResponseStatus.UserInfoSync.progressValue; } else { strResponse = strResponseStatus; } } else { CCardInfoSyn JsonResponseStatus = new CCardInfoSyn(); JsonResponseStatus = JsonConvert.DeserializeObject <CCardInfoSyn>(strResponseStatus); if (JsonResponseStatus.CardInfoSync != null) { strResponse = JsonConvert.SerializeObject(JsonResponseStatus.CardInfoSync.SyncInfo); m_iCurProgress = JsonResponseStatus.CardInfoSync.progressValue; } else { strResponse = strResponseStatus; } } } ListViewItem lvItem = new ListViewItem(); string strTmp = null; lvItem.Text = "Succ"; strTmp = string.Format("Percent:{0}-{1}", m_iCurProgress, strResponse); lvItem.SubItems.Add(strTmp); this.AddList(listViewResponse, lvItem); Marshal.FreeHGlobal(ptrResponse); break; default: base.DefWndProc(ref m); break; } }
private void ProcessInfoSynCallback(uint dwType, IntPtr lpBuffer, uint dwBufLen, IntPtr pUserData) { if (pUserData == null) { return; } if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_STATUS) { uint dwStatus = (uint)Marshal.ReadInt32(lpBuffer); if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_FAILED) { CHCNetSDK.PostMessage(pUserData, 1001, 1, 0); //可以结束了,异常结束 } else if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_EXCEPTION) { CHCNetSDK.PostMessage(pUserData, 1001, 2, 0); //可以结束了,异常结束 } else if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_PROCESSING) { ; } else { CHCNetSDK.PostMessage(pUserData, 1001, 3, 0); //可以结束了,异常结束 } } else if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_DATA) { //输出上一包解析信息, 1003 string strResponseStatus = Marshal.PtrToStringAnsi(lpBuffer); IntPtr response = IntPtr.Zero; if (m_bFirst) { m_bFirst = false; CResponseStatus JsonResponseStatus = new CResponseStatus(); JsonResponseStatus = JsonConvert.DeserializeObject <CResponseStatus>(strResponseStatus); response = Marshal.StringToHGlobalAnsi(strResponseStatus); } else { if (m_command == SynInfoCommand.USER_INFO_SYN) { CUserInfoSyn JsonResponseStatus = new CUserInfoSyn(); JsonResponseStatus = JsonConvert.DeserializeObject <CUserInfoSyn>(strResponseStatus); m_iCurProgress = JsonResponseStatus.UserInfoSync.progressValue; response = Marshal.StringToHGlobalAnsi(strResponseStatus); } else { CCardInfoSyn JsonResponseStatus = new CCardInfoSyn(); JsonResponseStatus = JsonConvert.DeserializeObject <CCardInfoSyn>(strResponseStatus); m_iCurProgress = JsonResponseStatus.CardInfoSync.progressValue; response = Marshal.StringToHGlobalAnsi(strResponseStatus); } } CHCNetSDK.PostMessage(pUserData, 1003, (int)response, 0); if (m_iCurProgress >= 100) { CHCNetSDK.PostMessage(pUserData, 1001, 4, 0); //可以结束了,正常(异常)结束 return; } CHCNetSDK.PostMessage(pUserData, 1002, 0, 0); //在主线程中发送下一个用户 } return; }