Sync with trunk r63270.
[reactos.git] / base / setup / usetup / bootsup.c
index 17216ab..74d5ad3 100644 (file)
@@ -87,7 +87,8 @@ extern PPARTLIST PartitionList;
 
 static
 VOID
-CreateCommonFreeLoaderSections(PINICACHE IniCache)
+CreateCommonFreeLoaderSections(
+    PINICACHE IniCache)
 {
     PINICACHESECTION IniSection;
 
@@ -501,8 +502,14 @@ CreateFreeLoaderIniForReactos(
     /* ReactOS_Ram */
     CreateFreeLoaderEntry(IniCache, IniSection,
                           L"ReactOS_Ram", L"\"ReactOS (RAM Disk)\"",
-                          L"ReactOS", L"ramdisk(0)\\ReactOS",
+                          L"Windows2003", L"ramdisk(0)\\ReactOS",
                           L"/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS /RDIMAGEPATH=reactos.img /RDIMAGEOFFSET=32256");
+
+    /* ReactOS_EMS */
+    CreateFreeLoaderEntry(IniCache, IniSection,
+                          L"ReactOS_EMS", L"\"ReactOS (Emergency Management Services)\"",
+                          L"Windows2003", ArcPath,
+                          L"/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS /redirect=com2 /redirectbaudrate=115200");
 #endif
 
     /* Save the ini file */
@@ -683,7 +690,7 @@ SaveCurrentBootSector(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ,
+                        GENERIC_READ | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -720,7 +727,7 @@ SaveCurrentBootSector(
                                NULL);
 
     Status = NtCreateFile(&FileHandle,
-                          GENERIC_WRITE,
+                          GENERIC_WRITE | SYNCHRONIZE,
                           &ObjectAttributes,
                           &IoStatusBlock,
                           NULL,
@@ -783,7 +790,7 @@ InstallFat16BootCodeToFile(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ,
+                        GENERIC_READ | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -828,7 +835,7 @@ InstallFat16BootCodeToFile(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ,
+                        GENERIC_READ | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -876,7 +883,7 @@ InstallFat16BootCodeToFile(
                                NULL);
 
     Status = NtCreateFile(&FileHandle,
-                          GENERIC_WRITE,
+                          GENERIC_WRITE | SYNCHRONIZE,
                           &ObjectAttributes,
                           &IoStatusBlock,
                           NULL,
@@ -943,7 +950,7 @@ InstallFat32BootCodeToFile(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ,
+                        GENERIC_READ | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -988,7 +995,7 @@ InstallFat32BootCodeToFile(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ,
+                        GENERIC_READ | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1039,7 +1046,7 @@ InstallFat32BootCodeToFile(
                                NULL);
 
     Status = NtCreateFile(&FileHandle,
-                          GENERIC_WRITE,
+                          GENERIC_WRITE | SYNCHRONIZE,
                           &ObjectAttributes,
                           &IoStatusBlock,
                           NULL,
@@ -1081,7 +1088,7 @@ InstallFat32BootCodeToFile(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_WRITE,
+                        GENERIC_WRITE | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1145,7 +1152,7 @@ InstallMbrBootCodeToDisk(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ,
+                        GENERIC_READ | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1172,7 +1179,6 @@ InstallMbrBootCodeToDisk(
         return Status;
     }
 
-
     /* Allocate buffer for new bootsector */
     NewBootSector = (PPARTITION_SECTOR)RtlAllocateHeap(ProcessHeap,
                     0,
@@ -1193,7 +1199,7 @@ InstallMbrBootCodeToDisk(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ,
+                        GENERIC_READ | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1240,7 +1246,7 @@ InstallMbrBootCodeToDisk(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_WRITE,
+                        GENERIC_WRITE | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1269,9 +1275,11 @@ InstallMbrBootCodeToDisk(
     return Status;
 }
 
+
 NTSTATUS
-InstallFat12BootCodeToFloppy(PWSTR SrcPath,
-                             PWSTR RootPath)
+InstallFat12BootCodeToFloppy(
+    PWSTR SrcPath,
+    PWSTR RootPath)
 {
     OBJECT_ATTRIBUTES ObjectAttributes;
     IO_STATUS_BLOCK IoStatusBlock;
@@ -1280,23 +1288,23 @@ InstallFat12BootCodeToFloppy(PWSTR SrcPath,
     NTSTATUS Status;
     PFAT_BOOTSECTOR OrigBootSector;
     PFAT_BOOTSECTOR NewBootSector;
-    
+
     /* Allocate buffer for original bootsector */
     OrigBootSector = RtlAllocateHeap(ProcessHeap, 0, SECTORSIZE);
     if (OrigBootSector == NULL)
         return STATUS_INSUFFICIENT_RESOURCES;
-    
+
     /* Read current boot sector into buffer */
     RtlInitUnicodeString(&Name, RootPath);
-    
+
     InitializeObjectAttributes(&ObjectAttributes,
                                &Name,
                                OBJ_CASE_INSENSITIVE,
                                NULL,
                                NULL);
-    
+
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ,
+                        GENERIC_READ | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1306,7 +1314,7 @@ InstallFat12BootCodeToFloppy(PWSTR SrcPath,
         RtlFreeHeap(ProcessHeap, 0, OrigBootSector);
         return Status;
     }
-    
+
     Status = NtReadFile(FileHandle,
                         NULL,
                         NULL,
@@ -1322,8 +1330,7 @@ InstallFat12BootCodeToFloppy(PWSTR SrcPath,
         RtlFreeHeap(ProcessHeap, 0, OrigBootSector);
         return Status;
     }
-    
-    
+
     /* Allocate buffer for new bootsector */
     NewBootSector = RtlAllocateHeap(ProcessHeap,
                                     0,
@@ -1333,18 +1340,18 @@ InstallFat12BootCodeToFloppy(PWSTR SrcPath,
         RtlFreeHeap(ProcessHeap, 0, OrigBootSector);
         return STATUS_INSUFFICIENT_RESOURCES;
     }
-    
+
     /* Read new bootsector from SrcPath */
     RtlInitUnicodeString(&Name, SrcPath);
-    
+
     InitializeObjectAttributes(&ObjectAttributes,
                                &Name,
                                OBJ_CASE_INSENSITIVE,
                                NULL,
                                NULL);
-    
+
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ,
+                        GENERIC_READ | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1355,7 +1362,7 @@ InstallFat12BootCodeToFloppy(PWSTR SrcPath,
         RtlFreeHeap(ProcessHeap, 0, NewBootSector);
         return Status;
     }
-    
+
     Status = NtReadFile(FileHandle,
                         NULL,
                         NULL,
@@ -1372,27 +1379,27 @@ InstallFat12BootCodeToFloppy(PWSTR SrcPath,
         RtlFreeHeap(ProcessHeap, 0, NewBootSector);
         return Status;
     }
-    
+
     /* Adjust bootsector (copy a part of the FAT16 BPB) */
     memcpy(&NewBootSector->OemName,
            &OrigBootSector->OemName,
            FIELD_OFFSET(FAT_BOOTSECTOR, BootCodeAndData) -
            FIELD_OFFSET(FAT_BOOTSECTOR, OemName));
-    
+
     /* Free the original boot sector */
     RtlFreeHeap(ProcessHeap, 0, OrigBootSector);
-    
+
     /* Write new bootsector to RootPath */
     RtlInitUnicodeString(&Name, RootPath);
-    
+
     InitializeObjectAttributes(&ObjectAttributes,
                                &Name,
                                0,
                                NULL,
                                NULL);
-    
+
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_WRITE,
+                        GENERIC_WRITE | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1403,7 +1410,7 @@ InstallFat12BootCodeToFloppy(PWSTR SrcPath,
         RtlFreeHeap(ProcessHeap, 0, NewBootSector);
         return Status;
     }
-    
+
 #if 0
     FilePosition.QuadPart = 0;
 #endif
@@ -1417,10 +1424,10 @@ InstallFat12BootCodeToFloppy(PWSTR SrcPath,
                          NULL,
                          NULL);
     NtClose(FileHandle);
-    
+
     /* Free the new boot sector */
     RtlFreeHeap(ProcessHeap, 0, NewBootSector);
-    
+
     return Status;
 }
 
@@ -1454,7 +1461,7 @@ InstallFat16BootCodeToDisk(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ,
+                        GENERIC_READ | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1481,7 +1488,6 @@ InstallFat16BootCodeToDisk(
         return Status;
     }
 
-
     /* Allocate buffer for new bootsector */
     NewBootSector = RtlAllocateHeap(ProcessHeap,
                                     0,
@@ -1502,7 +1508,7 @@ InstallFat16BootCodeToDisk(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ,
+                        GENERIC_READ | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1553,7 +1559,7 @@ InstallFat16BootCodeToDisk(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_WRITE,
+                        GENERIC_WRITE | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1617,7 +1623,7 @@ InstallFat32BootCodeToDisk(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ,
+                        GENERIC_READ | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1663,7 +1669,7 @@ InstallFat32BootCodeToDisk(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ,
+                        GENERIC_READ | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1717,7 +1723,7 @@ InstallFat32BootCodeToDisk(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_WRITE,
+                        GENERIC_WRITE | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1816,7 +1822,7 @@ UnprotectBootIni(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ|GENERIC_WRITE,
+                        GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1890,7 +1896,7 @@ ProtectBootIni(
                                NULL);
 
     Status = NtOpenFile(&FileHandle,
-                        GENERIC_READ|GENERIC_WRITE,
+                        GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE,
                         &ObjectAttributes,
                         &IoStatusBlock,
                         0,
@@ -1995,6 +2001,7 @@ UpdateBootIni(
     return Status;
 }
 
+
 BOOLEAN
 CheckInstallFatBootcodeToPartition(
     PUNICODE_STRING SystemRootPath)
@@ -2333,6 +2340,7 @@ InstallFatBootcodeToPartition(
 #endif
 }
 
+
 NTSTATUS
 InstallVBRToPartition(
     PUNICODE_STRING SystemRootPath,
@@ -2367,7 +2375,7 @@ InstallFatBootcodeToFloppy(
     WCHAR SrcPath[MAX_PATH];
     WCHAR DstPath[MAX_PATH];
     NTSTATUS Status;
-    
+
     /* Format the floppy first */
     Status = VfatFormat(&FloppyDevice,
                         FMIFS_FLOPPY,