internal static string GetDescription(Enum en)
        {
            Type type = en.GetType();

            MemberInfo[] memInfo = type.GetMember(en.ToString());
            if (memInfo != null && memInfo.Length > 0)
            {
                object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
                if (attrs != null && attrs.Length > 0)
                {
                    return(((System.ComponentModel.DescriptionAttribute)attrs[0]).Description);
                }
            }

            UnmarshaledString ptr          = (UnmarshaledString)InternalCAPI.GetLastErrorString();
            string            strLastError = Marshal.PtrToStringAuto(ptr);

            Marshal.FreeCoTaskMem(ptr);

            return(en.ToString() + " - \r\n" + strLastError);
        }