case 2: // Boot Sector File
OptionMenuCustomBootBootSectorFile();
break;
+ case 3: // ReactOS
+ OptionMenuCustomBootReactOS();
+ break;
case 4: // Linux
OptionMenuCustomBootLinux();
break;
OperatingSystem.LoadIdentifier = NULL;
OperatingSystem.OsLoadOptions = NULL;
- LoadAndBootDrive(&OperatingSystem, 0);
+ // LoadAndBootDrive(&OperatingSystem, 0);
+ LoadOperatingSystem(&OperatingSystem);
}
VOID OptionMenuCustomBootPartition(VOID)
OperatingSystem.LoadIdentifier = NULL;
OperatingSystem.OsLoadOptions = NULL;
- LoadAndBootPartition(&OperatingSystem, 0);
+ // LoadAndBootPartition(&OperatingSystem, 0);
+ LoadOperatingSystem(&OperatingSystem);
}
VOID OptionMenuCustomBootBootSectorFile(VOID)
OperatingSystem.LoadIdentifier = NULL;
OperatingSystem.OsLoadOptions = NULL;
- LoadAndBootBootSector(&OperatingSystem, 0);
+ // LoadAndBootBootSector(&OperatingSystem, 0);
+ LoadOperatingSystem(&OperatingSystem);
+}
+
+VOID OptionMenuCustomBootReactOS(VOID)
+{
+ ULONG_PTR SectionId;
+ CHAR SectionName[100];
+ CHAR BootDriveString[20];
+ CHAR BootPartitionString[20];
+ CHAR ReactOSSystemPath[200];
+ CHAR ReactOSARCPath[200];
+ CHAR ReactOSOptions[200];
+ TIMEINFO* TimeInfo;
+ OperatingSystemItem OperatingSystem;
+
+ RtlZeroMemory(SectionName, sizeof(SectionName));
+ RtlZeroMemory(BootDriveString, sizeof(BootDriveString));
+ RtlZeroMemory(BootPartitionString, sizeof(BootPartitionString));
+ RtlZeroMemory(ReactOSSystemPath, sizeof(ReactOSSystemPath));
+ RtlZeroMemory(ReactOSOptions, sizeof(ReactOSOptions));
+
+ if (!UiEditBox(BootDrivePrompt, BootDriveString, 20))
+ {
+ return;
+ }
+
+ if (!UiEditBox(BootPartitionPrompt, BootPartitionString, 20))
+ {
+ return;
+ }
+
+ if (!UiEditBox(ReactOSSystemPathPrompt, ReactOSSystemPath, 200))
+ {
+ return;
+ }
+
+ if (!UiEditBox(ReactOSOptionsPrompt, ReactOSOptions, 200))
+ {
+ return;
+ }
+
+ // Generate a unique section name
+ TimeInfo = ArcGetTime();
+ sprintf(SectionName, "CustomReactOS%u%u%u%u%u%u", TimeInfo->Year, TimeInfo->Day, TimeInfo->Month, TimeInfo->Hour, TimeInfo->Minute, TimeInfo->Second);
+
+ // Add the section
+ if (!IniAddSection(SectionName, &SectionId))
+ {
+ return;
+ }
+
+ // Add the BootType
+ if (!IniAddSettingValueToSection(SectionId, "BootType", "Windows2003"))
+ {
+ return;
+ }
+
+ // Construct the ReactOS ARC system path
+ ConstructArcPath(ReactOSARCPath, ReactOSSystemPath, DriveMapGetBiosDriveNumber(BootDriveString), atoi(BootPartitionString));
+
+ // Add the system path
+ if (!IniAddSettingValueToSection(SectionId, "SystemPath", ReactOSARCPath))
+ {
+ return;
+ }
+
+ // Add the CommandLine
+ if (!IniAddSettingValueToSection(SectionId, "Options", ReactOSOptions))
+ {
+ return;
+ }
+
+ UiMessageBox(CustomBootPrompt);
+
+ OperatingSystem.SystemPartition = SectionName;
+ OperatingSystem.LoadIdentifier = NULL;
+ OperatingSystem.OsLoadOptions = NULL; // ReactOSOptions
+
+ // LoadAndBootWindows(&OperatingSystem, _WIN32_WINNT_WS03);
+ LoadOperatingSystem(&OperatingSystem);
}
VOID OptionMenuCustomBootLinux(VOID)
OperatingSystem.LoadIdentifier = "Custom Linux Setup";
OperatingSystem.OsLoadOptions = NULL;
- LoadAndBootLinux(&OperatingSystem, 0);
+ // LoadAndBootLinux(&OperatingSystem, 0);
+ LoadOperatingSystem(&OperatingSystem);
}
VOID OptionMenuReboot(VOID)