31#if DBG && defined(_M_IX86)
35#ifdef HAS_OPTION_MENU_EDIT_CMDLINE
36 ActionEditBootCmdLine,
63#if DBG && defined(_M_IX86)
66 {ActionBootAcpiApic,
NULL},
67 {ActionBootAcpiApic,
"Boot with ACPI APIC"},
68 {ActionBootAcpiSmp,
"Boot with ACPI Multiprocessor"},
73#ifdef HAS_OPTION_MENU_EDIT_CMDLINE
74 {ActionEditBootCmdLine,
"Edit Boot Command Line (F10)"},
83#if DBG && defined(_M_IX86)
84UCHAR HALAutoDetectMode = BOOT_AUTODETECT;
98 static const PCSTR* OptionNames[] =
108 if (BootOptsDescSize <
sizeof(
CHAR))
113#if DBG && defined(_M_IX86)
114 if ((HALAutoDetectMode != BOOT_AUTODETECT) && (HALAutoDetectMode <= BOOT_ACPI_SMP))
116 static const PCSTR AutoDetectNames[] = {
"",
"ACPI APIC",
"ACPI Multiprocessor"};
117 RtlStringCbCatA(BootOptsDesc, BootOptsDescSize, AutoDetectNames[HALAutoDetectMode]);
166 ULONG SelectedMenuItem = 0;
175#if DBG && defined(_M_IX86)
181#if defined(SARCH_XBOX) || defined(SARCH_PC98) || defined(UEFIBOOT)
189 SelectedMenuItem = MenuItemCount;
205 SelectedMenuItem, -1,
214 switch (MenuActionsMap[SelectedMenuItem])
243#if DBG && defined(_M_IX86)
244 case ActionBootAcpiApic:
245 HALAutoDetectMode = BOOT_ACPI_APIC;
247 case ActionBootAcpiSmp:
248 HALAutoDetectMode = BOOT_ACPI_SMP;
251#ifdef HAS_OPTION_MENU_EDIT_CMDLINE
252 case ActionEditBootCmdLine:
254 EditOperatingSystemEntry(OperatingSystem);
260#if DBG && defined(_M_IX86)
261 HALAutoDetectMode = BOOT_AUTODETECT;
277 sizeof(OperatingSystem->AdvBootOptsDesc));
288 static const PCSTR OptionsStr[] =
291 "SAFEBOOT:MINIMAL SOS NOGUIBOOT",
292 "SAFEBOOT:NETWORK SOS NOGUIBOOT",
293 "SAFEBOOT:MINIMAL(ALTERNATESHELL) SOS NOGUIBOOT",
294 "SAFEBOOT:DSREPAIR SOS",
301 if (BootOptionsSize <
sizeof(
CHAR))
304#if DBG && defined(_M_IX86)
305 if ((HALAutoDetectMode != BOOT_AUTODETECT) && (HALAutoDetectMode <= BOOT_ACPI_SMP))
307 static const PCSTR AutoDetectOptions[] =
311 "HAL=halmacpi.dll KERNEL=ntkrnlmp.exe",
313 PCSTR OptionsToRemove[] = {
"/HAL=/KERNEL=",
"/DETECTHAL",
NULL};
315 OptionsToAdd[0] = AutoDetectOptions[HALAutoDetectMode];
317 OptionsToAdd, OptionsToRemove);
332 OptionsToRemove[0] =
"/SAFEBOOT/SAFEBOOT:";
334 OptionsToAdd, OptionsToRemove);
339 DbgPrint(
"Last known good configuration is not yet supported!\n");
355 OptionsToAdd[0] =
"DEBUG";
356 OptionsToRemove[0] =
"NODEBUG";
358 OptionsToAdd, OptionsToRemove);
static ADVBOOT_OPTIONS AdvBootOptions[]
struct _ADVBOOT_OPTIONS ADVBOOT_OPTIONS
static VOID GetBootOptionsDescription(_Inout_z_bytecount_(BootOptsDescSize) PSTR BootOptsDesc, _In_ SIZE_T BootOptsDescSize)
enum _ADVOPTS_ACTION ADVOPTS_ACTION
VOID AppendBootTimeOptions(_Inout_z_bytecount_(BootOptionsSize) PSTR BootOptions, _In_ SIZE_T BootOptionsSize)
VOID MenuNTOptions(_Inout_opt_ OperatingSystemItem *OperatingSystem)
enum SAFEBOOT_MODE BootOptionChoice
VOID OptionMenuReboot(VOID)
VOID DisplayBootTimeOptions(_In_ OperatingSystemItem *OperatingSystem)
VOID UiDrawBackdrop(ULONG DrawHeight)
ULONG UiGetScreenHeight(VOID)
BOOLEAN UiDisplayMenu(IN PCSTR MenuHeader, IN PCSTR MenuFooter OPTIONAL, IN PCSTR MenuItemList[], IN ULONG MenuItemCount, IN ULONG DefaultMenuItem, IN LONG MenuTimeOut, OUT PULONG SelectedMenuItem, IN BOOLEAN CanEscape, IN UiMenuKeyPressFilterCallback KeyPressFilter OPTIONAL, IN PVOID Context OPTIONAL)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define _Inout_z_bytecount_(size)
#define DEFAULT_UNREACHABLE
VOID NtLdrUpdateOptions(_Inout_updates_z_(BufferSize) PSTR LoadOptions, _In_ ULONG BufferSize, _In_ BOOLEAN Append, _In_opt_ PCSTR OptionsToAdd[], _In_opt_ PCSTR OptionsToRemove[])
Updates the options in the buffer pointed by LoadOptions, of maximum size BufferSize,...
VOID NtLdrAddOptions(_Inout_updates_z_(BufferSize) PSTR Options, _In_ ULONG BufferSize, _In_ BOOLEAN Append, _In_opt_ PCSTR NewOptions)
Appends or prepends new options to the ones originally contained in the buffer pointed by Options,...
NTSTRSAFEAPI RtlStringCbCatA(_Inout_updates_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCSTR pszSrc)
_In_ WDFCOLLECTION _In_ WDFOBJECT Item