/// <summary> /// correct user group /// </summary> /// <param name="iLogin"></param> /// <param name="grpInfo"></param> /// <param name="waitTime"></param> /// <returns></returns> public static bool NETOperateUserInfo(int iLogin, USER_OPERATE operate, USER_GROUP_INFO grpNewInfo, USER_GROUP_INFO grpOldInfo, int waitTime) { bool retValue = false; IntPtr pBoxInfo = IntPtr.Zero; IntPtr pBoxInfo1 = IntPtr.Zero; try { pBoxInfo = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USER_GROUP_INFO)));//Allocate fixed and specified memory space pBoxInfo1 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USER_GROUP_INFO)));//Allocate fixed and specified memory space if (pBoxInfo != IntPtr.Zero && pBoxInfo1!=IntPtr.Zero) { Marshal.StructureToPtr(grpNewInfo, pBoxInfo, true); Marshal.StructureToPtr(grpOldInfo, 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 pBoxInfo = IntPtr.Zero; } return retValue; }
/// <summary> /// 修改用户组 /// </summary> /// <param name="iLogin"></param> /// <param name="grpInfo"></param> /// <param name="waitTime"></param> /// <returns></returns> public static bool DHOperateUserInfo(int iLogin, USER_OPERATE operate, USER_GROUP_INFO grpNewInfo, USER_GROUP_INFO grpOldInfo, int waitTime) { bool retValue = false; IntPtr pBoxInfo = IntPtr.Zero; IntPtr pBoxInfo1 = IntPtr.Zero; try { pBoxInfo = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USER_GROUP_INFO)));//分配固定的指定大小的内存空间 pBoxInfo1 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(USER_GROUP_INFO)));//分配固定的指定大小的内存空间 if (pBoxInfo != IntPtr.Zero && pBoxInfo1!=IntPtr.Zero) { Marshal.StructureToPtr(grpNewInfo, pBoxInfo, true); Marshal.StructureToPtr(grpOldInfo, 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);//释放固定内存分配 pBoxInfo = IntPtr.Zero; } return retValue; }