ReactOS  0.4.14-dev-49-gfb4591c
bootmgr.c File Reference
#include <freeldr.h>
#include <debug.h>
Include dependency graph for bootmgr.c:

Go to the source code of this file.

Typedefs

typedef VOID(* EDIT_OS_ENTRY_PROC) (IN OUT OperatingSystemItem *OperatingSystem)
 

Functions

 DBG_DEFAULT_CHANNEL (WARNING)
 
static VOID EditCustomBootReactOSSetup (IN OUT OperatingSystemItem *OperatingSystem)
 
static VOID EditCustomBootNTOS (IN OUT OperatingSystemItem *OperatingSystem)
 
PCHARBuildArgvForOsLoader (IN PCSTR LoadIdentifier, IN ULONG_PTR SectionId, OUT PULONG pArgc)
 
VOID LoadOperatingSystem (IN OperatingSystemItem *OperatingSystem)
 
static LONG GetTimeOut (IN ULONG_PTR FrLdrSectionId)
 
BOOLEAN MainBootMenuKeyPressFilter (IN ULONG KeyPress, IN ULONG SelectedMenuItem, IN PVOID Context OPTIONAL)
 
VOID RunLoader (VOID)
 

Variables

struct {
   PCSTR   BootType
 
   EDIT_OS_ENTRY_PROC   EditOsEntry
 
   ARC_ENTRY_POINT   OsLoader
 
OSLoadingMethods []
 

Typedef Documentation

◆ EDIT_OS_ENTRY_PROC

typedef VOID(* EDIT_OS_ENTRY_PROC) (IN OUT OperatingSystemItem *OperatingSystem)

Definition at line 31 of file bootmgr.c.

Function Documentation

◆ BuildArgvForOsLoader()

PCHAR* BuildArgvForOsLoader ( IN PCSTR  LoadIdentifier,
IN ULONG_PTR  SectionId,
OUT PULONG  pArgc 
)

Definition at line 79 of file bootmgr.c.

83 {
84  SIZE_T Size;
85  ULONG Count;
86  ULONG i;
87  ULONG Argc;
88  PCHAR* Argv;
89  PCHAR* Args;
90  PCHAR SettingName, SettingValue;
91 
92  *pArgc = 0;
93 
94  ASSERT(SectionId != 0);
95 
96  /* Validate the LoadIdentifier (to make tests simpler later) */
97  if (LoadIdentifier && !*LoadIdentifier)
98  LoadIdentifier = NULL;
99 
100  /* Count the number of operating systems in the section */
101  Count = IniGetNumSectionItems(SectionId);
102 
103  /*
104  * The argument vector contains the program name, the SystemPartition,
105  * the LoadIdentifier (optional), and the items in the OS section.
106  */
107  Argc = 2 + (LoadIdentifier ? 1 : 0) + Count;
108 
109  /* Calculate the total size needed for the string buffer of the argument vector */
110  Size = 0;
111  /* i == 0: Program name */
112  /* i == 1: SystemPartition : from where FreeLdr has been started */
113  Size += (strlen("SystemPartition=") + strlen(FrLdrBootPath) + 1) * sizeof(CHAR);
114  /* i == 2: LoadIdentifier : ASCII string that may be used to associate an identifier with a set of load parameters */
115  if (LoadIdentifier)
116  {
117  Size += (strlen("LoadIdentifier=") + strlen(LoadIdentifier) + 1) * sizeof(CHAR);
118  }
119  for (i = 0; i < Count; ++i)
120  {
121  Size += IniGetSectionSettingNameSize(SectionId, i); // Counts also the NULL-terminator, that we transform into the '=' sign separator.
122  Size += IniGetSectionSettingValueSize(SectionId, i); // Counts also the NULL-terminator.
123  }
124  Size += sizeof(ANSI_NULL); // Final NULL-terminator.
125 
126  /* Allocate memory to hold the argument vector: pointers and string buffer */
127  Argv = FrLdrHeapAlloc(Argc * sizeof(PCHAR) + Size, TAG_STRING);
128  if (!Argv)
129  return NULL;
130 
131  /* Initialize the argument vector: loop through the section and copy the key=value options */
132  SettingName = (PCHAR)((ULONG_PTR)Argv + (Argc * sizeof(PCHAR)));
133  Args = Argv;
134  /* i == 0: Program name */
135  *Args++ = NULL;
136  /* i == 1: SystemPartition */
137  {
138  strcpy(SettingName, "SystemPartition=");
139  strcat(SettingName, FrLdrBootPath);
140 
141  *Args++ = SettingName;
142  SettingName += (strlen(SettingName) + 1);
143  }
144  /* i == 2: LoadIdentifier */
145  if (LoadIdentifier)
146  {
147  strcpy(SettingName, "LoadIdentifier=");
148  strcat(SettingName, LoadIdentifier);
149 
150  *Args++ = SettingName;
151  SettingName += (strlen(SettingName) + 1);
152  }
153  for (i = 0; i < Count; ++i)
154  {
155  Size = IniGetSectionSettingNameSize(SectionId, i);
156  SettingValue = SettingName + Size;
157  IniReadSettingByNumber(SectionId, i,
158  SettingName, Size,
159  SettingValue, IniGetSectionSettingValueSize(SectionId, i));
160  SettingName[Size - 1] = '=';
161 
162  *Args++ = SettingName;
163  SettingName += (strlen(SettingName) + 1);
164  }
165 
166 #if DBG
167  /* Dump the argument vector for debugging */
168  for (i = 0; i < Argc; ++i)
169  {
170  TRACE("Argv[%lu]: '%s'\n", i, Argv[i]);
171  }
172 #endif
173 
174  *pArgc = Argc;
175  return Argv;
176 }
signed char * PCHAR
Definition: retypes.h:7
char * strcat(char *DstString, const char *SrcString)
Definition: utclib.c:568
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
char CHAR
Definition: xmlstorage.h:175
_Inout_ __drv_aliasesMem PSLIST_ENTRY _Inout_ PSLIST_ENTRY _In_ ULONG Count
Definition: exfuncs.h:1015
uint32_t ULONG_PTR
Definition: typedefs.h:63
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
Definition: glfuncs.h:248
#define ANSI_NULL
#define TAG_STRING
Definition: oslist.h:22
smooth NULL
Definition: ftsmooth.c:416
char ** Args
Definition: acdebug.h:343
#define PCHAR
Definition: match.c:90
#define TRACE(s)
Definition: solgame.cpp:4
FORCEINLINE PVOID FrLdrHeapAlloc(SIZE_T MemorySize, ULONG Tag)
Definition: mm.h:163
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
ULONG IniGetSectionSettingValueSize(ULONG_PTR SectionId, ULONG SettingIndex)
Definition: inifile.c:101
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:359
ULONG_PTR SIZE_T
Definition: typedefs.h:78
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
unsigned int ULONG
Definition: retypes.h:1
ULONG IniGetSectionSettingNameSize(ULONG_PTR SectionId, ULONG SettingIndex)
Definition: inifile.c:88
ULONG IniGetNumSectionItems(ULONG_PTR SectionId)
Definition: inifile.c:54
CHAR FrLdrBootPath[MAX_PATH]
Definition: mach.c:34
BOOLEAN IniReadSettingByNumber(ULONG_PTR SectionId, ULONG SettingNumber, PCHAR SettingName, ULONG NameSize, PCHAR SettingValue, ULONG ValueSize)
Definition: inifile.c:114

Referenced by LoadOperatingSystem().

◆ DBG_DEFAULT_CHANNEL()

DBG_DEFAULT_CHANNEL ( WARNING  )

◆ EditCustomBootNTOS()

static VOID EditCustomBootNTOS ( IN OUT OperatingSystemItem OperatingSystem)
static

Definition at line 42 of file bootmgr.c.

44 {
45  EditCustomBootReactOS(OperatingSystem, FALSE);
46 }
VOID EditCustomBootReactOS(IN OUT OperatingSystemItem *OperatingSystem, IN BOOLEAN IsSetup)
Definition: custom.c:618

◆ EditCustomBootReactOSSetup()

static VOID EditCustomBootReactOSSetup ( IN OUT OperatingSystemItem OperatingSystem)
static

Definition at line 35 of file bootmgr.c.

37 {
38  EditCustomBootReactOS(OperatingSystem, TRUE);
39 }
#define TRUE
Definition: types.h:120
VOID EditCustomBootReactOS(IN OUT OperatingSystemItem *OperatingSystem, IN BOOLEAN IsSetup)
Definition: custom.c:618

◆ GetTimeOut()

static LONG GetTimeOut ( IN ULONG_PTR  FrLdrSectionId)
static

Definition at line 254 of file bootmgr.c.

256 {
257  LONG TimeOut = -1;
258  CHAR TimeOutText[20];
259 
260  TimeOut = CmdLineGetTimeOut();
261  if (TimeOut >= 0)
262  return TimeOut;
263 
264  TimeOut = -1;
265 
266  if ((FrLdrSectionId != 0) &&
267  IniReadSettingByName(FrLdrSectionId, "TimeOut", TimeOutText, sizeof(TimeOutText)))
268  {
269  TimeOut = atoi(TimeOutText);
270  }
271 
272  return TimeOut;
273 }
LONG CmdLineGetTimeOut(VOID)
Definition: cmdline.c:135
char CHAR
Definition: xmlstorage.h:175
long LONG
Definition: pedump.c:60
BOOLEAN IniReadSettingByName(ULONG_PTR SectionId, PCSTR SettingName, PCHAR Buffer, ULONG BufferSize)
Definition: inifile.c:147
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)

Referenced by RunLoader().

◆ LoadOperatingSystem()

VOID LoadOperatingSystem ( IN OperatingSystemItem OperatingSystem)

Definition at line 178 of file bootmgr.c.

179 {
180  ULONG_PTR SectionId = OperatingSystem->SectionId;
181  ULONG i;
182  ULONG Argc;
183  PCHAR* Argv;
184  CHAR BootType[80];
185 
186  /* The operating system section has been opened by InitOperatingSystemList() */
187  ASSERT(SectionId != 0);
188 
189  /* Try to read the boot type */
190  *BootType = ANSI_NULL;
191  IniReadSettingByName(SectionId, "BootType", BootType, sizeof(BootType));
192 
193  /* We must have the "BootType" value (it has been possibly added by InitOperatingSystemList()) */
194  ASSERT(*BootType);
195 
196 #ifdef _M_IX86
197  /* Install the drive mapper according to this section drive mappings */
198  DriveMapMapDrivesInSection(SectionId);
199 #endif
200 
201  /* Find the suitable OS loader to start */
202  for (i = 0; ; ++i)
203  {
205  return;
207  break;
208  }
209 
210  /* Build the ARC-compatible argument vector */
211  Argv = BuildArgvForOsLoader(OperatingSystem->LoadIdentifier, SectionId, &Argc);
212  if (!Argv)
213  return; // Unexpected failure.
214 
215  /* Start the OS loader */
216  OSLoadingMethods[i].OsLoader(Argc, Argv, NULL);
217  FrLdrHeapFree(Argv, TAG_STRING);
218 }
signed char * PCHAR
Definition: retypes.h:7
FORCEINLINE VOID FrLdrHeapFree(PVOID MemoryPointer, ULONG Tag)
Definition: mm.h:170
char CHAR
Definition: xmlstorage.h:175
#define _stricmp
Definition: cat.c:22
uint32_t ULONG_PTR
Definition: typedefs.h:63
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
Definition: glfuncs.h:248
#define ANSI_NULL
#define TAG_STRING
Definition: oslist.h:22
smooth NULL
Definition: ftsmooth.c:416
BOOLEAN IniReadSettingByName(ULONG_PTR SectionId, PCSTR SettingName, PCHAR Buffer, ULONG BufferSize)
Definition: inifile.c:147
PCSTR BootType
Definition: bootmgr.c:50
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
static const struct @151 OSLoadingMethods[]
#define RTL_NUMBER_OF(x)
Definition: RtlRegistry.c:12
unsigned int ULONG
Definition: retypes.h:1
PCHAR * BuildArgvForOsLoader(IN PCSTR LoadIdentifier, IN ULONG_PTR SectionId, OUT PULONG pArgc)
Definition: bootmgr.c:79

Referenced by RunLoader().

◆ MainBootMenuKeyPressFilter()

BOOLEAN MainBootMenuKeyPressFilter ( IN ULONG  KeyPress,
IN ULONG  SelectedMenuItem,
IN PVOID Context  OPTIONAL 
)

Definition at line 276 of file bootmgr.c.

280 {
281  switch (KeyPress)
282  {
283  case KEY_F8:
284  DoOptionsMenu(&((OperatingSystemItem*)Context)[SelectedMenuItem]);
285  return TRUE;
286 
287 #ifdef HAS_OPTION_MENU_EDIT_CMDLINE
288  case KEY_F10:
289  EditOperatingSystemEntry(&((OperatingSystemItem*)Context)[SelectedMenuItem]);
290  return TRUE;
291 #endif
292 
293  default:
294  /* We didn't handle the key */
295  return FALSE;
296  }
297 }
VOID EditOperatingSystemEntry(IN OperatingSystemItem *OperatingSystem)
#define TRUE
Definition: types.h:120
#define KEY_F8
Definition: keycodes.h:43
#define KEY_F10
Definition: keycodes.h:45
VOID DoOptionsMenu(IN OperatingSystemItem *OperatingSystem)
Definition: options.c:92

Referenced by RunLoader().

◆ RunLoader()

VOID RunLoader ( VOID  )

Definition at line 299 of file bootmgr.c.

300 {
301  ULONG_PTR SectionId;
302  LONG TimeOut;
303  ULONG OperatingSystemCount;
304  OperatingSystemItem* OperatingSystemList;
305  PCSTR* OperatingSystemDisplayNames;
306  ULONG DefaultOperatingSystem;
307  ULONG SelectedOperatingSystem;
308  ULONG i;
309 
311  {
312  UiMessageBoxCritical("Error when detecting hardware.");
313  return;
314  }
315 
316 #ifdef _M_IX86
317  /* Load additional SCSI driver (if any) */
319  {
320  UiMessageBoxCritical("Unable to load additional boot device drivers.");
321  }
322 #endif
323 
324  if (!IniFileInitialize())
325  {
326  UiMessageBoxCritical("Error initializing .ini file.");
327  return;
328  }
329 
330  /* Open the [FreeLoader] section */
331  if (!IniOpenSection("FreeLoader", &SectionId))
332  {
333  UiMessageBoxCritical("Section [FreeLoader] not found in freeldr.ini.");
334  return;
335  }
336 
337  /* Debugger main initialization */
338  DebugInit(SectionId);
339 
340  /* Retrieve the default timeout */
341  TimeOut = GetTimeOut(SectionId);
342 
343  /* UI main initialization */
344  if (!UiInitialize(TRUE))
345  {
346  UiMessageBoxCritical("Unable to initialize UI.");
347  return;
348  }
349 
350  OperatingSystemList = InitOperatingSystemList(SectionId,
351  &OperatingSystemCount,
352  &DefaultOperatingSystem);
353  if (!OperatingSystemList)
354  {
355  UiMessageBox("Unable to read operating systems section in freeldr.ini.\nPress ENTER to reboot.");
356  goto Reboot;
357  }
358  if (OperatingSystemCount == 0)
359  {
360  UiMessageBox("There were no operating systems listed in freeldr.ini.\nPress ENTER to reboot.");
361  goto Reboot;
362  }
363 
364  /* Create list of display names */
365  OperatingSystemDisplayNames = FrLdrTempAlloc(sizeof(PCSTR) * OperatingSystemCount, 'mNSO');
366  if (!OperatingSystemDisplayNames)
367  goto Reboot;
368 
369  for (i = 0; i < OperatingSystemCount; i++)
370  {
371  OperatingSystemDisplayNames[i] = OperatingSystemList[i].LoadIdentifier;
372  }
373 
374  /* Find all the message box settings and run them */
375  UiShowMessageBoxesInSection(SectionId);
376 
377  for (;;)
378  {
379  /* Redraw the backdrop */
380  UiDrawBackdrop();
381 
382  /* Show the operating system list menu */
383  if (!UiDisplayMenu("Please select the operating system to start:",
384  "For troubleshooting and advanced startup options for "
385  "ReactOS, press F8.",
386  TRUE,
387  OperatingSystemDisplayNames,
388  OperatingSystemCount,
389  DefaultOperatingSystem,
390  TimeOut,
391  &SelectedOperatingSystem,
392  FALSE,
394  OperatingSystemList))
395  {
396  UiMessageBox("Press ENTER to reboot.");
397  goto Reboot;
398  }
399 
400  TimeOut = -1;
401 
402  /* Load the chosen operating system */
403  LoadOperatingSystem(&OperatingSystemList[SelectedOperatingSystem]);
404  }
405 
406 Reboot:
407  UiUnInitialize("Rebooting...");
408  IniCleanup();
409  return;
410 }
static LONG GetTimeOut(IN ULONG_PTR FrLdrSectionId)
Definition: bootmgr.c:254
#define TRUE
Definition: types.h:120
Definition: arc.h:32
BOOLEAN UiInitialize(BOOLEAN ShowGui)
Definition: ui.c:84
#define DebugInit(FrLdrSectionId)
Definition: debug.h:116
ULONG LoadBootDeviceDriver(VOID)
Definition: scsiport.c:1619
BOOLEAN UiDisplayMenu(IN PCSTR MenuHeader, IN PCSTR MenuFooter OPTIONAL, IN BOOLEAN ShowBootOptions, 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)
Definition: ui.c:463
uint32_t ULONG_PTR
Definition: typedefs.h:63
#define MachInitializeBootDevices()
Definition: machine.h:133
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
Definition: glfuncs.h:248
long LONG
Definition: pedump.c:60
VOID UiMessageBox(PCSTR Format,...)
Definition: ui.c:320
FORCEINLINE PVOID FrLdrTempAlloc(_In_ SIZE_T Size, _In_ ULONG Tag)
Definition: mm.h:177
Definition: bl.h:892
BOOLEAN IniOpenSection(PCSTR SectionName, ULONG_PTR *SectionId)
Definition: inifile.c:25
VOID UiShowMessageBoxesInSection(IN ULONG_PTR SectionId)
Definition: ui.c:357
VOID IniCleanup(VOID)
Definition: inifile.c:235
VOID UiUnInitialize(PCSTR BootText)
Definition: ui.c:205
VOID UiDrawBackdrop(VOID)
Definition: ui.c:214
BOOLEAN IniFileInitialize(VOID)
Definition: ini_init.c:25
unsigned int ULONG
Definition: retypes.h:1
VOID LoadOperatingSystem(IN OperatingSystemItem *OperatingSystem)
Definition: bootmgr.c:178
const char * PCSTR
Definition: typedefs.h:51
OperatingSystemItem * InitOperatingSystemList(IN ULONG_PTR FrLdrSectionId, OUT PULONG OperatingSystemCount, OUT PULONG DefaultOperatingSystem)
Definition: oslist.c:46
BOOLEAN MainBootMenuKeyPressFilter(IN ULONG KeyPress, IN ULONG SelectedMenuItem, IN PVOID Context OPTIONAL)
Definition: bootmgr.c:276
VOID UiMessageBoxCritical(PCSTR MessageText)
Definition: ui.c:331

Referenced by BootMain().

Variable Documentation

◆ BootType

PCSTR BootType

Definition at line 50 of file bootmgr.c.

Referenced by InitOperatingSystemList(), and LoadOperatingSystem().

◆ EditOsEntry

EDIT_OS_ENTRY_PROC EditOsEntry

Definition at line 51 of file bootmgr.c.

◆ OsLoader

ARC_ENTRY_POINT OsLoader

Definition at line 52 of file bootmgr.c.

Referenced by LlbVideoClearScreen().

◆ OSLoadingMethods

const { ... } OSLoadingMethods[]
Initial value:
=
{
}
ARC_STATUS LoadAndBootWindows(IN ULONG Argc, IN PCHAR Argv[], IN PCHAR Envp[])
Definition: winldr.c:722
static VOID EditCustomBootNTOS(IN OUT OperatingSystemItem *OperatingSystem)
Definition: bootmgr.c:42
static VOID EditCustomBootReactOSSetup(IN OUT OperatingSystemItem *OperatingSystem)
Definition: bootmgr.c:35
ARC_STATUS LoadReactOSSetup(IN ULONG Argc, IN PCHAR Argv[], IN PCHAR Envp[])
Definition: setupldr.c:178

Referenced by LoadOperatingSystem().