// NOTE: this function returns True if the display settings can be set, False otherwise
        // NOTE: this _might_ let us detect if a display change requires a reboot (although we don't yet return a result indicating that reality)
        public static Boolean TestDisplaySettings(String displayAdapterName, DisplaySettings settings)
        {
            var displayAdapterNameAsCharArray = ConvertStringToNullTerminatedCharArray(displayAdapterName);
            var devmode = settings.devmode;
            var result  = WindowsApi.ChangeDisplaySettingsEx(displayAdapterNameAsCharArray, ref devmode, IntPtr.Zero, (UInt32)WindowsApi.ChangeDisplaySettingsFlags.CDS_TEST, IntPtr.Zero);

            switch (result)
            {
            case WindowsApi.DISP_CHANGE_RESULT.DISP_CHANGE_SUCCESSFUL:
                return(true);

            //case WindowsApi.DISP_CHANGE_RESULT.DISP_CHANGE_RESTART:
            default:
                return(false);
            }
        }
        // NOTE: this function throws an exception if the settings could not be set successfully
        public static void SetCurrentDisplaySettings(String displayAdapterName, DisplaySettings settings)
        {
            /* OPTIONAL FLAGS:
             * CDS_GLOBAL | CDS_UPDATEREGISTRY  // save the updated resolution for all users
             * CDS_RESET                        // update the settings even if they're the same as the current settings
             * CDS_SET_PRIMARY                  // make this display adapter the primary display adapter
             * CDS_TEST                         // tests if the change would be valid [NOTE: this _might_ let us detect if a display change requires a reboot]
             * CDS_UPDATEREGISTRY               // save the display change in the system registry (for the user, unless also using CDS_GLOBAL)
             * CDS_DISABLE_UNSAFE_MODES         // prohibits us from accidentally using unsafe display modes
             */
            var displayAdapterNameAsCharArray = ConvertStringToNullTerminatedCharArray(displayAdapterName);
            var devmode = settings.devmode;
            var result  = WindowsApi.ChangeDisplaySettingsEx(displayAdapterNameAsCharArray, ref devmode, IntPtr.Zero, 0, IntPtr.Zero);

            switch (result)
            {
            case WindowsApi.DISP_CHANGE_RESULT.DISP_CHANGE_SUCCESSFUL:
                return;

            default:
                throw new Exception("Could not change screen settings; result: " + result);
            }
        }