Пример #1
0
        public static TmUserInfo GetUserInfo(int tmCid,
                                             string serverName)
        {
            var nativeUserInfoSize = Marshal.SizeOf(typeof(TmNativeDefs.TExtendedUserInfo));
            var nativeUserInfoPtr  = Marshal.AllocHGlobal(nativeUserInfoSize);

            var cfCid = Native.TmcGetCfsHandle(tmCid);

            if (cfCid == IntPtr.Zero)
            {
                return(null);
            }

            var fetchResult = Native.CfsGetExtendedUserData(cfCid,
                                                            "tms$",
                                                            serverName,
                                                            nativeUserInfoPtr,
                                                            (uint)nativeUserInfoSize);

            if (fetchResult == 0)
            {
                return(null);
            }

            var extendedUserInfo = Marshal.PtrToStructure <TmNativeDefs.TExtendedUserInfo>(nativeUserInfoPtr);

            var userInfo = new TmNativeDefs.TUserInfo();

            if (!Native.TmcGetUserInfo(tmCid, 0, ref userInfo))
            {
                return(null);
            }

            return(new TmUserInfo(extendedUserInfo.UserId,
                                  Encoding.GetEncoding(1251).GetString(extendedUserInfo.UserName).Trim('\0'),
                                  Encoding.GetEncoding(1251).GetString(userInfo.UserCategory).Trim('\0'),
                                  Encoding.GetEncoding(1251).GetString(extendedUserInfo.KeyId).Trim('\0'),
                                  extendedUserInfo.Group,
                                  extendedUserInfo.Rights));
        }