/// <summary> /// Correct user basic information/correct user password /// </summary> /// <param name="iLogin">DHLogin return value</param> /// <param name="userNewInfo">information after user changes</param> /// <param name="userOldInfo">information before user changes</param> /// <param name="waitTime">waiting time</param> /// <returns></returns> public static bool NETOperateUserInfo(int iLogin, USER_OPERATE operate, USER_INFO userNewInfo, USER_INFO userOldInfo, int waitTime) { bool retValue = false; IntPtr pBoxInfo = IntPtr.Zero; IntPtr pBoxInfo1 = IntPtr.Zero; try { pBoxInfo = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USER_INFO)));//Allocate fixed and specified memory space pBoxInfo1 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USER_INFO)));//Allocate fixed and specified memory space if (pBoxInfo != IntPtr.Zero & pBoxInfo1!=IntPtr.Zero) { Marshal.StructureToPtr(userNewInfo, pBoxInfo, true); Marshal.StructureToPtr(userOldInfo, pBoxInfo1, true); retValue = CLIENT_OperateUserInfo(iLogin, (int)operate, pBoxInfo, pBoxInfo1, waitTime); } NETThrowLastError(retValue); } catch (Exception e) { NETThrowLastError(e); retValue = false; } finally { Marshal.FreeHGlobal(pBoxInfo);//Release the fixed memory allocation pBoxInfo = IntPtr.Zero; Marshal.FreeHGlobal(pBoxInfo1);//Release the fixed memory allocation pBoxInfo1 = IntPtr.Zero; } return retValue; }
/// <summary> /// 修改用户基本信息/修改用户密码 /// </summary> /// <param name="iLogin">DHLogin返回值</param> /// <param name="userNewInfo">用户变更后信息</param> /// <param name="userOldInfo">用户变更前信息</param> /// <param name="waitTime">等待时间</param> /// <returns></returns> public static bool DHOperateUserInfo(int iLogin, USER_OPERATE operate, USER_INFO userNewInfo, USER_INFO userOldInfo, int waitTime) { bool retValue = false; IntPtr pBoxInfo = IntPtr.Zero; IntPtr pBoxInfo1 = IntPtr.Zero; try { pBoxInfo = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USER_INFO)));//分配固定的指定大小的内存空间 pBoxInfo1 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USER_INFO)));//分配固定的指定大小的内存空间 if (pBoxInfo != IntPtr.Zero & pBoxInfo1!=IntPtr.Zero) { Marshal.StructureToPtr(userNewInfo, pBoxInfo, true); Marshal.StructureToPtr(userOldInfo, pBoxInfo1, true); retValue = CLIENT_OperateUserInfo(iLogin, (int)operate, pBoxInfo, pBoxInfo1, waitTime); } DHThrowLastError(retValue); } catch (Exception e) { DHThrowLastError(e); retValue = false; } finally { Marshal.FreeHGlobal(pBoxInfo);//释放固定内存分配 pBoxInfo = IntPtr.Zero; Marshal.FreeHGlobal(pBoxInfo1);//释放固定内存分配 pBoxInfo1 = IntPtr.Zero; } return retValue; }