private void btnDelete_Click(object sender, EventArgs e) { if (m_lDelCardCfgHandle != -1) { if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lDelCardCfgHandle)) { m_lDelCardCfgHandle = -1; } } CHCNetSDK.NET_DVR_CARD_COND struCond = new CHCNetSDK.NET_DVR_CARD_COND(); struCond.Init(); struCond.dwSize = (uint)Marshal.SizeOf(struCond); struCond.dwCardNum = 1; IntPtr ptrStruCond = Marshal.AllocHGlobal((int)struCond.dwSize); Marshal.StructureToPtr(struCond, ptrStruCond, false); CHCNetSDK.NET_DVR_CARD_SEND_DATA struSendData = new CHCNetSDK.NET_DVR_CARD_SEND_DATA(); struSendData.Init(); struSendData.dwSize = (uint)Marshal.SizeOf(struSendData); byte[] byTempCardNo = new byte[CHCNetSDK.ACS_CARD_NO_LEN]; byTempCardNo = System.Text.Encoding.UTF8.GetBytes(textBoxCardNo.Text); for (int i = 0; i < byTempCardNo.Length; i++) { struSendData.byCardNo[i] = byTempCardNo[i]; } IntPtr ptrStruSendData = Marshal.AllocHGlobal((int)struSendData.dwSize); Marshal.StructureToPtr(struSendData, ptrStruSendData, false); CHCNetSDK.NET_DVR_CARD_STATUS struStatus = new CHCNetSDK.NET_DVR_CARD_STATUS(); struStatus.Init(); struStatus.dwSize = (uint)Marshal.SizeOf(struStatus); IntPtr ptrdwState = Marshal.AllocHGlobal((int)struStatus.dwSize); Marshal.StructureToPtr(struStatus, ptrdwState, false); m_lGetCardCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_UserID, CHCNetSDK.NET_DVR_DEL_CARD, ptrStruCond, (int)struCond.dwSize, null, this.Handle); if (m_lGetCardCfgHandle < 0) { MessageBox.Show("NET_DVR_DEL_CARD error:" + CHCNetSDK.NET_DVR_GetLastError()); Marshal.FreeHGlobal(ptrStruCond); return; } else { int dwState = (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_SUCCESS; uint dwReturned = 0; while (true) { dwState = CHCNetSDK.NET_DVR_SendWithRecvRemoteConfig(m_lGetCardCfgHandle, ptrStruSendData, struSendData.dwSize, ptrdwState, struStatus.dwSize, ref dwReturned); if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_NEEDWAIT) { Thread.Sleep(10); continue; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_FAILED) { MessageBox.Show("NET_DVR_DEL_CARD fail error: " + CHCNetSDK.NET_DVR_GetLastError()); } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_SUCCESS) { MessageBox.Show("NET_DVR_DEL_CARD success"); } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_FINISH) { MessageBox.Show("NET_DVR_DEL_CARD finish"); break; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_EXCEPTION) { MessageBox.Show("NET_DVR_DEL_CARD exception error: " + CHCNetSDK.NET_DVR_GetLastError()); break; } else { MessageBox.Show("unknown status error: " + CHCNetSDK.NET_DVR_GetLastError()); break; } } } CHCNetSDK.NET_DVR_StopRemoteConfig(m_lDelCardCfgHandle); m_lDelCardCfgHandle = -1; Marshal.FreeHGlobal(ptrStruSendData); Marshal.FreeHGlobal(ptrdwState); }
/// <summary> /// Naudotojo pašalinimas iš įeigos kontrolės įrenginio. /// </summary> /// <param name="user">Pašalinimas naudotojas</param> /// <param name="accessController_user_id">Įeigos kontrolės įrenginio naudotojo ID</param> /// <param name="handle">Naudotojo pašalinimui iš įeigos kontrolės įrenginio reikalinga reikšmė</param> private static void AccessControllerDeleteUser(User user, int accessController_user_id, IntPtr handle) { Int32 setCardCfgHandle = -1; CHCNetSDK.NET_DVR_CARD_COND struCond = new CHCNetSDK.NET_DVR_CARD_COND(); struCond.Init(); struCond.dwSize = (uint)Marshal.SizeOf(struCond); struCond.dwCardNum = 1; IntPtr ptrStruCond = Marshal.AllocHGlobal((int)struCond.dwSize); Marshal.StructureToPtr(struCond, ptrStruCond, false); CHCNetSDK.NET_DVR_CARD_SEND_DATA struSendData = new CHCNetSDK.NET_DVR_CARD_SEND_DATA(); struSendData.Init(); struSendData.dwSize = (uint)Marshal.SizeOf(struSendData); byte[] byTempCardNo = new byte[CHCNetSDK.ACS_CARD_NO_LEN]; byTempCardNo = System.Text.Encoding.UTF8.GetBytes(user.card_id); for (int i = 0; i < byTempCardNo.Length; i++) { struSendData.byCardNo[i] = byTempCardNo[i]; } IntPtr ptrStruSendData = Marshal.AllocHGlobal((int)struSendData.dwSize); Marshal.StructureToPtr(struSendData, ptrStruSendData, false); CHCNetSDK.NET_DVR_CARD_STATUS struStatus = new CHCNetSDK.NET_DVR_CARD_STATUS(); struStatus.Init(); struStatus.dwSize = (uint)Marshal.SizeOf(struStatus); IntPtr ptrdwState = Marshal.AllocHGlobal((int)struStatus.dwSize); Marshal.StructureToPtr(struStatus, ptrdwState, false); setCardCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(accessController_user_id, CHCNetSDK.NET_DVR_DEL_CARD, ptrStruCond, (int)struCond.dwSize, null, handle); if (setCardCfgHandle < 0) { Marshal.FreeHGlobal(ptrStruCond); return; } else { int dwState = (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_SUCCESS; uint dwReturned = 0; while (true) { dwState = CHCNetSDK.NET_DVR_SendWithRecvRemoteConfig(setCardCfgHandle, ptrStruSendData, struSendData.dwSize, ptrdwState, struStatus.dwSize, ref dwReturned); if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_NEEDWAIT) { Thread.Sleep(10); continue; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_FAILED) { continue; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_SUCCESS) { continue; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_FINISH) { break; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_EXCEPTION) { break; } else { break; } } } CHCNetSDK.NET_DVR_StopRemoteConfig(setCardCfgHandle); setCardCfgHandle = -1; Marshal.FreeHGlobal(ptrStruSendData); Marshal.FreeHGlobal(ptrdwState); CHCNetSDK.NET_DVR_Logout_V30(accessController_user_id); CHCNetSDK.NET_DVR_Cleanup(); }