372{
375 ULONG OperatingSystemCount;
377 PCSTR* OperatingSystemDisplayNames;
378 ULONG DefaultOperatingSystem;
379 ULONG SelectedOperatingSystem;
381
383 {
385 return;
386 }
387
388#ifdef _M_IX86
389#ifndef UEFIBOOT
390
392 {
394 }
395#endif
396#endif
397
399 {
401 return;
402 }
403
404
406 {
408 return;
409 }
410
411
413
414
416
417
419 {
421 return;
422 }
423
425 &OperatingSystemCount,
426 &DefaultOperatingSystem);
427 if (!OperatingSystemList)
428 {
429 UiMessageBox(
"Unable to read operating systems section in freeldr.ini.\nPress ENTER to reboot.");
431 }
432 if (OperatingSystemCount == 0)
433 {
434 UiMessageBox(
"There were no operating systems listed in freeldr.ini.\nPress ENTER to reboot.");
436 }
437
438
439 OperatingSystemDisplayNames =
FrLdrTempAlloc(
sizeof(
PCSTR) * OperatingSystemCount,
'mNSO');
440 if (!OperatingSystemDisplayNames)
442
443 for (
i = 0;
i < OperatingSystemCount;
i++)
444 {
446 }
447
448
450
451 for (;;)
452 {
453
455
456
457 if (!
UiDisplayMenu(
"Please select the operating system to start:",
458 "For troubleshooting and advanced startup options for "
459 "ReactOS, press F8.",
461 OperatingSystemDisplayNames,
462 OperatingSystemCount,
463 DefaultOperatingSystem,
464 TimeOut,
465 &SelectedOperatingSystem,
468 OperatingSystemList))
469 {
472 }
473
474 TimeOut = -1;
475
476
478
479
480
481#ifndef _M_ARM
483#endif
485 }
486
490 return;
491}
ULONG LoadBootDeviceDriver(VOID)
#define DebugInit(FrLdrSectionId)
#define MachInitializeBootDevices()
FORCEINLINE PVOID FrLdrTempAlloc(_In_ SIZE_T Size, _In_ ULONG Tag)
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)
VOID UiShowMessageBoxesInSection(IN ULONG_PTR SectionId)
VOID UiMessageBoxCritical(_In_ PCSTR MessageText)
VOID UiUnInitialize(PCSTR BootText)
VOID UiDrawBackdrop(VOID)
BOOLEAN UiInitialize(BOOLEAN ShowUi)
VOID LoadOperatingSystem(_In_ OperatingSystemItem *OperatingSystem)
BOOLEAN MainBootMenuKeyPressFilter(IN ULONG KeyPress, IN ULONG SelectedMenuItem, IN PVOID Context OPTIONAL)
static LONG GetTimeOut(IN ULONG_PTR FrLdrSectionId)
BOOLEAN IniFileInitialize(VOID)
BOOLEAN IniOpenSection(PCSTR SectionName, ULONG_PTR *SectionId)
OperatingSystemItem * InitOperatingSystemList(IN ULONG_PTR FrLdrSectionId, OUT PULONG OperatingSystemCount, OUT PULONG DefaultOperatingSystem)
VOID(* UnInitialize)(VOID)