62#if defined(_M_IX86) || defined(_M_AMD64)
64 {
"BootSector", EditCustomBootSector,
NULL, LoadAndBootSector},
65 {
"Linux" , EditCustomBootLinux ,
NULL, LoadAndBootLinux },
79#ifdef HAS_DEPRECATED_OPTIONS
105 "Should you need assistance, please contact ReactOS developers\n"
106 "on the official ReactOS Mattermost server <chat.reactos.org>.",
128#ifdef HAS_DEPRECATED_OPTIONS
129 if ((
_stricmp(BootType,
"Drive") == 0) ||
130 (
_stricmp(BootType,
"Partition") == 0))
134 "The '%s' configuration you are booting into is no longer\n"
135 "supported and will be removed in future FreeLoader versions.\n"
137 "Please edit FREELDR.INI to replace all occurrences of\n"
140 " BootType=%s ------> BootType=BootSector",
146 strcpy(BootType,
"BootSector");
149 ERR(
"Could not fixup the BootType entry for OS '%s', ignoring.\n",
189 PCHAR SettingName, SettingValue;
197 if (LoadIdentifier && !*LoadIdentifier)
198 LoadIdentifier =
NULL;
209 Argc = 2 + (LoadIdentifier ? 1 : 0) +
Count;
243 strcpy(SettingName,
"SystemPartition=");
244 strcat(SettingName, BootPath);
246 *
Args++ = SettingName;
247 SettingName += (
strlen(SettingName) + 1);
252 strcpy(SettingName,
"LoadIdentifier=");
253 strcat(SettingName, LoadIdentifier);
255 *
Args++ = SettingName;
256 SettingName += (
strlen(SettingName) + 1);
262 SettingValue = SettingName +
Size;
266 SettingName[
Size - 1] =
'=';
268 *
Args++ = SettingName;
269 SettingName += (
strlen(SettingName) + 1);
276 for (
i = 0;
i < Argc; ++
i)
278 TRACE(
"Argv[%lu]: '%s'\n",
i, Argv[
i]);
290 ULONG_PTR SectionId = OperatingSystem->SectionId;
297 if (!OSLoadingMethod)
309 DriveMapMapDrivesInSection(SectionId);
318#ifdef HAS_OPTION_MENU_EDIT_CMDLINE
320EditOperatingSystemEntry(
367 if (OSLoadingMethod && OSLoadingMethod->OsMenu)
368 OSLoadingMethod->OsMenu(OperatingSystem);
373#ifdef HAS_OPTION_MENU_EDIT_CMDLINE
376 EditOperatingSystemEntry(OperatingSystem);
389 PCSTR* OperatingSystemDisplayNames;
390 ULONG OperatingSystemCount;
391 ULONG SelectedOperatingSystem;
427 &SelectedOperatingSystem);
428 if (!OperatingSystemList)
430 UiMessageBox(
"There are no operating systems listed in freeldr.ini.");
433 ASSERT(OperatingSystemCount != 0);
436 OperatingSystemDisplayNames =
FrLdrTempAlloc(
sizeof(
PCSTR) * OperatingSystemCount,
'mNSO');
437 if (!OperatingSystemDisplayNames)
440 for (
i = 0;
i < OperatingSystemCount;
i++)
452 if (!
UiDisplayMenu(
"Please select the operating system to start:",
454 "Press F8 for troubleshooting and advanced startup options."
455 " F2: FreeLdr SETUP",
456 OperatingSystemDisplayNames,
457 OperatingSystemCount,
458 SelectedOperatingSystem,
460 &SelectedOperatingSystem,
463 OperatingSystemList))
xD9 x84 xD8 xAD xD9 x80 xF0 x90 xAC x9A xE0 xA7 xA6 xE0 xA7 xAA xF0 x91 x84 xA4 xF0 x91 x84 x89 xF0 x91 x84 x9B xF0 x90 x8A xAB xF0 x90 x8B x89 xE2 xB2 x9E xE2 xB2 x9F xD0 xBE xD0 x9E xF0 x90 x90 x84 xF0 x90 x90 xAC xE1 x83 x98 xE1 x83 x94 xE1 x83 x90 xE1 xB2 xBF xE2 xB0 x95 xE2 xB1 x85 xCE xBF xCE x9F xE0 xA8 xA0 xE0 xA8 xB0 xE0 xA9 xA6 Kayah xEA xA4 x8D xEA xA4 x80 Khmer xE1 xA7 xA1 xE1 xA7 xAA xE0 xBB x90 Latin Subscript Fallback
ARC_STATUS(__cdecl * ARC_ENTRY_POINT)(_In_ ULONG Argc, _In_ PCHAR Argv[], _In_ PCHAR Envp[])
VOID EditCustomBootReactOS(IN OUT OperatingSystemItem *OperatingSystem, IN BOOLEAN IsSetup)
ULONG LoadBootDeviceDriver(VOID)
#define DebugInit(DebugString)
#define DBG_DEFAULT_CHANNEL(ch)
VOID FrLdrHeapFree(PVOID MemoryPointer, ULONG Tag)
PVOID FrLdrHeapAlloc(SIZE_T MemorySize, ULONG Tag)
PVOID FrLdrTempAlloc(_In_ SIZE_T Size, _In_ ULONG Tag)
VOID FreeLdrSetupMenu(_In_opt_ OperatingSystemItem *OperatingSystem)
VOID DisplayBootTimeOptions(_In_ OperatingSystemItem *OperatingSystem)
PBOOTMGRINFO GetBootMgrInfo(VOID)
VOID UiShowMessageBoxesInSection(IN ULONG_PTR SectionId)
VOID UiDrawBackdrop(ULONG DrawHeight)
VOID UiMessageBoxCritical(_In_ PCSTR MessageText)
ULONG UiGetScreenHeight(VOID)
VOID UiUnInitialize(PCSTR BootText)
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)
BOOLEAN UiInitialize(BOOLEAN ShowUi)
VOID UiMessageBox(_In_ PCSTR Format,...)
static CCHAR DebugString[256]
static VOID EditCustomBootNTOS(_Inout_ OperatingSystemItem *OperatingSystem)
VOID(* OS_MENU_PROC)(_Inout_ OperatingSystemItem *OperatingSystem)
VOID LoadOperatingSystem(_In_ OperatingSystemItem *OperatingSystem)
BOOLEAN MainBootMenuKeyPressFilter(IN ULONG KeyPress, IN ULONG SelectedMenuItem, IN PVOID Context OPTIONAL)
static PCHAR * BuildArgvForOsLoader(_In_ PCSTR LoadIdentifier, _In_ ULONG_PTR SectionId, _Out_ PULONG pArgc)
This function converts the list of Key=Value options in the given operating system section into an AR...
struct _OS_LOADING_METHOD * POS_LOADING_METHOD
static const OS_LOADING_METHOD * GetOSLoadingMethod(_In_ ULONG_PTR SectionId)
static const OS_LOADING_METHOD OSLoadingMethods[]
struct _OS_LOADING_METHOD OS_LOADING_METHOD
static VOID EditCustomBootReactOSSetup(_Inout_ OperatingSystemItem *OperatingSystem)
VOID(* EDIT_OS_ENTRY_PROC)(_Inout_ OperatingSystemItem *OperatingSystem)
_ACRTIMP size_t __cdecl strlen(const char *)
#define IsListEmpty(ListHead)
PCCHAR FrLdrGetBootPath(VOID)
VOID WarnDeprecated(_In_ PCSTR MsgFmt,...)
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
ARC_STATUS LoadReactOSSetup(IN ULONG Argc, IN PCHAR Argv[], IN PCHAR Envp[])
ARC_STATUS LoadAndBootWindows(IN ULONG Argc, IN PCHAR Argv[], IN PCHAR Envp[])
VOID MenuNTOptions(_Inout_ OperatingSystemItem *OperatingSystem)
ULONG IniGetSectionSettingValueSize(ULONG_PTR SectionId, ULONG SettingIndex)
ULONG IniGetNumSectionItems(ULONG_PTR SectionId)
BOOLEAN IniFileInitialize(VOID)
BOOLEAN IniModifySettingValue(ULONG_PTR SectionId, PCSTR SettingName, PCSTR SettingValue)
ULONG IniGetSectionSettingNameSize(ULONG_PTR SectionId, ULONG SettingIndex)
BOOLEAN IniReadSettingByNumber(ULONG_PTR SectionId, ULONG SettingNumber, PCHAR SettingName, ULONG NameSize, PCHAR SettingValue, ULONG ValueSize)
BOOLEAN IniReadSettingByName(ULONG_PTR SectionId, PCSTR SettingName, PCHAR Buffer, ULONG BufferSize)
PLIST_ENTRY IniGetFileSectionListHead(VOID)
NTSTRSAFEAPI RtlStringCbVPrintfA(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCSTR pszFormat, _In_ va_list argList)
OperatingSystemItem * InitOperatingSystemList(_Out_ PULONG OperatingSystemCount, _Out_ PULONG DefaultOperatingSystem)
PULONG MinorVersion OPTIONAL
EDIT_OS_ENTRY_PROC EditOsEntry
OS_MENU_PROC OsMenu OPTIONAL
DECLSPEC_NORETURN VOID __cdecl Reboot(VOID)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
void int int ULONGLONG int va_list * ap