mirror of
https://github.com/reactos/reactos.git
synced 2024-07-02 02:34:53 +00:00
[FREELOADER]
- Fix DoOptionsMenu and implement AppendBootOptions to support F8 boot options - Fixes bug 5363 svn path=/trunk/; revision=47387
This commit is contained in:
parent
18c065e00d
commit
799b6ad5b8
|
@ -20,3 +20,4 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
VOID DoOptionsMenu(VOID);
|
VOID DoOptionsMenu(VOID);
|
||||||
|
VOID AppendBootTimeOptions(PCHAR BootOptions);
|
||||||
|
|
|
@ -69,6 +69,15 @@ enum OptionMenuItems
|
||||||
|
|
||||||
ULONG OptionsMenuItemCount = sizeof(OptionsMenuList) / sizeof(OptionsMenuList[0]);
|
ULONG OptionsMenuItemCount = sizeof(OptionsMenuList) / sizeof(OptionsMenuList[0]);
|
||||||
|
|
||||||
|
BOOLEAN SafeMode = FALSE;
|
||||||
|
BOOLEAN SafeModeWithNetworking = FALSE;
|
||||||
|
BOOLEAN SafeModeWithCommandPrompt = FALSE;
|
||||||
|
BOOLEAN BootLogging = FALSE;
|
||||||
|
BOOLEAN VgaMode = FALSE;
|
||||||
|
BOOLEAN LastKnownGoodConfiguration = FALSE;
|
||||||
|
BOOLEAN DirectoryServicesRepairMode = FALSE;
|
||||||
|
BOOLEAN DebuggingMode = FALSE;
|
||||||
|
|
||||||
VOID DoOptionsMenu(VOID)
|
VOID DoOptionsMenu(VOID)
|
||||||
{
|
{
|
||||||
ULONG SelectedMenuItem;
|
ULONG SelectedMenuItem;
|
||||||
|
@ -85,22 +94,33 @@ VOID DoOptionsMenu(VOID)
|
||||||
switch (SelectedMenuItem)
|
switch (SelectedMenuItem)
|
||||||
{
|
{
|
||||||
case SAFE_MODE:
|
case SAFE_MODE:
|
||||||
|
SafeMode = TRUE;
|
||||||
|
BootLogging = TRUE;
|
||||||
break;
|
break;
|
||||||
case SAFE_MODE_WITH_NETWORKING:
|
case SAFE_MODE_WITH_NETWORKING:
|
||||||
|
SafeModeWithNetworking = TRUE;
|
||||||
|
BootLogging = TRUE;
|
||||||
break;
|
break;
|
||||||
case SAFE_MODE_WITH_COMMAND_PROMPT:
|
case SAFE_MODE_WITH_COMMAND_PROMPT:
|
||||||
|
SafeModeWithCommandPrompt = TRUE;
|
||||||
|
BootLogging = TRUE;
|
||||||
break;
|
break;
|
||||||
//case SEPARATOR1:
|
//case SEPARATOR1:
|
||||||
// break;
|
// break;
|
||||||
case ENABLE_BOOT_LOGGING:
|
case ENABLE_BOOT_LOGGING:
|
||||||
|
BootLogging = TRUE;
|
||||||
break;
|
break;
|
||||||
case ENABLE_VGA_MODE:
|
case ENABLE_VGA_MODE:
|
||||||
|
VgaMode = TRUE;
|
||||||
break;
|
break;
|
||||||
case LAST_KNOWN_GOOD_CONFIGURATION:
|
case LAST_KNOWN_GOOD_CONFIGURATION:
|
||||||
|
LastKnownGoodConfiguration = TRUE;
|
||||||
break;
|
break;
|
||||||
case DIRECTORY_SERVICES_RESTORE_MODE:
|
case DIRECTORY_SERVICES_RESTORE_MODE:
|
||||||
|
DirectoryServicesRepairMode = TRUE;
|
||||||
break;
|
break;
|
||||||
case DEBUGGING_MODE:
|
case DEBUGGING_MODE:
|
||||||
|
DebuggingMode = TRUE;
|
||||||
break;
|
break;
|
||||||
//case SEPARATOR2:
|
//case SEPARATOR2:
|
||||||
// break;
|
// break;
|
||||||
|
@ -117,3 +137,29 @@ VOID DoOptionsMenu(VOID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VOID AppendBootTimeOptions(PCHAR BootOptions)
|
||||||
|
{
|
||||||
|
if (SafeMode)
|
||||||
|
strcat(BootOptions, " /SAFEBOOT:MINIMAL /SOS"); //FIXME: NOGUIBOOT should also be specified
|
||||||
|
|
||||||
|
if (SafeModeWithNetworking)
|
||||||
|
strcat(BootOptions, " /SAFEBOOT:NETWORK /SOS"); //FIXME: NOGUIBOOT should also be specified
|
||||||
|
|
||||||
|
if (SafeModeWithCommandPrompt)
|
||||||
|
strcat(BootOptions, " /SAFEBOOT:MINIMAL(ALTERNATESHELL) /SOS"); //FIXME: NOGUIBOOT should also be specified
|
||||||
|
|
||||||
|
if (BootLogging)
|
||||||
|
strcat(BootOptions, " /BOOTLOG");
|
||||||
|
|
||||||
|
if (VgaMode)
|
||||||
|
strcat(BootOptions, " /BASEVIDEO");
|
||||||
|
|
||||||
|
if (LastKnownGoodConfiguration)
|
||||||
|
DbgPrint("Last known good configuration is not supported yet!\n");
|
||||||
|
|
||||||
|
if (DirectoryServicesRepairMode)
|
||||||
|
strcat(BootOptions, " /SAFEBOOT:DSREPAIR /SOS");
|
||||||
|
|
||||||
|
if (DebuggingMode)
|
||||||
|
strcat(BootOptions, " /DEBUG");
|
||||||
|
}
|
||||||
|
|
|
@ -606,6 +606,11 @@ LoadAndBootReactOS(PCSTR OperatingSystemName)
|
||||||
//
|
//
|
||||||
if (IniReadSettingByName(SectionId, "Options", value, sizeof(value)))
|
if (IniReadSettingByName(SectionId, "Options", value, sizeof(value)))
|
||||||
{
|
{
|
||||||
|
//
|
||||||
|
// Append boot-time options
|
||||||
|
//
|
||||||
|
AppendBootTimeOptions(value);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check if a ramdisk file was given
|
// Check if a ramdisk file was given
|
||||||
//
|
//
|
||||||
|
|
|
@ -475,6 +475,9 @@ LoadAndBootWindows(PCSTR OperatingSystemName,
|
||||||
DPRINTM(DPRINT_WINDOWS,"BootOptions: '%s'\n", BootOptions);
|
DPRINTM(DPRINT_WINDOWS,"BootOptions: '%s'\n", BootOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Append boot-time options */
|
||||||
|
AppendBootTimeOptions(BootOptions);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check if a ramdisk file was given
|
// Check if a ramdisk file was given
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue