[BOOTLIB]:
authorAlex Ionescu <aionescu@gmail.com>
Mon, 5 Oct 2015 04:51:32 +0000 (04:51 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Mon, 5 Oct 2015 04:51:32 +0000 (04:51 +0000)
- Fix a regression
- Add a few more flags
- Don't look for BCD in "Microsoft" directory

svn path=/trunk/; revision=69451

reactos/boot/environ/app/bootmgr/bootmgr.c
reactos/boot/environ/include/bl.h
reactos/boot/environ/lib/io/device.c
reactos/boot/environ/lib/io/etfs.c
reactos/boot/environ/lib/io/file.c

index b4468af..0dbca2a 100644 (file)
@@ -196,7 +196,7 @@ BmFwInitializeBootDirectoryPath (
     }
 
     /* Save the boot directory */
-    BootDirectory = L"\\EFI\\Microsoft\\Boot";
+    BootDirectory = L"\\EFI\\Boot"; /* Should be EFI\\ReactOS\\Boot */
 
 Quickie:
     /* Free all the allocations we made */
@@ -560,7 +560,6 @@ BmOpenDataStore (
 
     /* Otherwise, compute the hardcoded path of the BCD */
     Status = BmpFwGetFullPath(L"\\BCD", &FullPath);
-    EfiPrintf(L"Status: %lx %s\r\n", Status, FullPath);
     if (!NT_SUCCESS(Status))
     {
         /* User the raw path */
@@ -686,7 +685,7 @@ BmMain (
     PBL_RETURN_ARGUMENTS ReturnArguments;
     BOOLEAN RebootOnError;
     PGUID AppIdentifier;
-    HANDLE BcdHandle;
+   // HANDLE BcdHandle;
 
     EfiPrintf(L"ReactOS UEFI Boot Manager Initializing...\n");
 
@@ -734,8 +733,8 @@ BmMain (
     BmFwInitializeBootDirectoryPath();
 
     /* Load and initialize the boot configuration database (BCD) */
-    Status = BmOpenDataStore(&BcdHandle);
-    EfiPrintf(L"BCD Open: %lx\r\n", Status);
+    //Status = BmOpenDataStore(&BcdHandle);
+    //EfiPrintf(L"BCD Open: %lx\r\n", Status);
 
     /* do more stuff!! */
     EfiPrintf(L"We are A-OK!\r\n");
index 99c6b55..025ff6d 100644 (file)
@@ -94,6 +94,9 @@
 #define BL_DIRECTORY_ACCESS                             0x04
 #define BL_UNKNOWN_ACCESS                               0x10
 
+#define BL_DEVICE_READ_ACCESS                           0x01
+#define BL_DEVICE_WRITE_ACCESS                          0x02
+
 #define BL_DEVICE_ENTRY_OPENED                          0x01
 #define BL_DEVICE_ENTRY_READ_ACCESS                     0x02
 #define BL_DEVICE_ENTRY_WRITE_ACCESS                    0x04
@@ -226,6 +229,7 @@ typedef enum _BL_MEMORY_TYPE
     BlLoaderReferencePage = 0xD0000007,
     BlLoaderRamDisk = 0xD0000008,
     BlLoaderData = 0xD000000A,
+    BlLoaderRegistry = 0xD000000B,
     BlLoaderBlockMemory = 0xD000000C,
     BlLoaderSelfMap = 0xD000000F,
 
@@ -1639,6 +1643,21 @@ BlDeviceReadAtOffset (
     _Out_ PULONG BytesRead
     );
 
+/* IMAGE ROUTINES ************************************************************/
+
+NTSTATUS
+BlImgLoadImageWithProgress2 (
+    _In_ ULONG DeviceId,
+    _In_ BL_MEMORY_TYPE MemoryType,
+    _In_ PWCHAR FileName,
+    _Inout_ PVOID* MappedBase,
+    _Inout_ PULONG MappedSize,
+    _In_ ULONG ImageFlags,
+    _In_ BOOLEAN ShowProgress,
+    _Out_opt_ PUCHAR* HashBuffer,
+    _Out_opt_ PULONG HashSize
+    );
+
 /* FILE I/O ROUTINES *********************************************************/
 
 NTSTATUS
index fdaf14e..131861e 100644 (file)
@@ -1914,8 +1914,8 @@ BlpDeviceOpen (
         goto Quickie;
     }
 
-    /* Check for unsupported flags */
-    if (!(Flags & 3))
+    /* Make sure both read and write access are set */
+    if (!(Flags & (BL_DEVICE_READ_ACCESS | BL_DEVICE_WRITE_ACCESS)))
     {
         /* Bail out */
         Status = STATUS_INVALID_PARAMETER;
@@ -1982,7 +1982,9 @@ BlpDeviceOpen (
     /* Fill it out */
     RtlZeroMemory(DeviceEntry, sizeof(*DeviceEntry));
     DeviceEntry->ReferenceCount = 1;
-    DeviceEntry->Flags |= 7;
+    DeviceEntry->Flags |= (BL_DEVICE_ENTRY_OPENED |
+                           BL_DEVICE_ENTRY_READ_ACCESS |
+                           BL_DEVICE_ENTRY_WRITE_ACCESS);
     DeviceEntry->Unknown = Unknown;
 
     /* Save flag 8 if needed */
index bd8e51b..bf07428 100644 (file)
@@ -797,7 +797,6 @@ EtfsMount (
     EtfsFile->Offset = EtfsDevice->RootDirOffset;
     EtfsFile->DirOffset = 0;
     EtfsFile->Size = EtfsDevice->RootDirSize;
-    EfiPrintf(L"Root offset: %I64x Size: %I64x\r\n", EtfsFile->Offset, EtfsFile->Size);
     EtfsFile->FsName = L"cdfs";
     *FileEntry = RootEntry;
 
index bcc7c07..ce0cb72 100644 (file)
@@ -345,7 +345,7 @@ FileIoOpen (
                             Unknown,
                             FileTableCompareWithSubsetAttributes,
                             &DirectoryEntry);
-        if (NT_SUCCESS(Status))
+        if (!NT_SUCCESS(Status))
         {
             goto Quickie;
         }