public static DisplaySettings?GetCurrentDisplaySettingsForDisplayAdapter(String displayAdapterName)
        {
            var displayAdapterNameAsCharArray = ConvertStringToNullTerminatedCharArray(displayAdapterName);

            var success = true;
            var devmode = new WindowsApi.DEVMODEW();

            devmode.Init();

            success = WindowsApi.EnumDisplaySettingsEx(displayAdapterNameAsCharArray, WindowsApi.ENUM_CURRENT_SETTINGS, ref devmode, 0);
            if (success == false)
            {
                return(null);
            }

            var displaySettings = DisplaySettings.CreateNew(devmode);

            if (displaySettings == null)
            {
                return(null);
            }

            return(displaySettings);
        }
        public static List <DisplaySettings> GetAllDisplaySettingsForDisplayAdapter(String displayAdapterName)
        {
            var result = new List <DisplaySettings>();

            var displayAdapterNameAsCharArray = ConvertStringToNullTerminatedCharArray(displayAdapterName);

            // get the display settings for each graphics mode of this display adapter
            UInt32 iGraphicsMode = 0;

            var success = true;

            while (success == true)
            {
                var devmode = new WindowsApi.DEVMODEW();
                devmode.Init();

                success = WindowsApi.EnumDisplaySettingsEx(displayAdapterNameAsCharArray, iGraphicsMode, ref devmode, 0);
                if (success == false)
                {
                    break;
                }

                var displaySettings = DisplaySettings.CreateNew(devmode);
                if (displaySettings == null)
                {
                    iGraphicsMode += 1;
                    continue;
                }

                result.Add(displaySettings.Value);

                iGraphicsMode += 1;
            }

            return(result);
        }